summaryrefslogtreecommitdiffstats
path: root/contrib/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/gcc')
-rw-r--r--contrib/gcc/.brik14448
-rw-r--r--contrib/gcc/.cvsignore32
-rw-r--r--contrib/gcc/BUGS594
-rw-r--r--contrib/gcc/FREEBSD-Xlist91
-rw-r--r--contrib/gcc/FREEBSD-deletelist86
-rw-r--r--contrib/gcc/FREEBSD-libiberty37
-rw-r--r--contrib/gcc/FREEBSD-upgrade13
-rw-r--r--contrib/gcc/Makefile.in1187
-rw-r--r--contrib/gcc/NEWS2446
-rw-r--r--contrib/gcc/README17
-rw-r--r--contrib/gcc/builtins.c578
-rw-r--r--contrib/gcc/c-common.c3549
-rw-r--r--contrib/gcc/c-common.h531
-rw-r--r--contrib/gcc/c-decl.c1407
-rw-r--r--contrib/gcc/c-format.c287
-rw-r--r--contrib/gcc/c-lex.c862
-rw-r--r--contrib/gcc/c-tree.h154
-rw-r--r--contrib/gcc/cccp.114
-rw-r--r--contrib/gcc/choose-temp.c2
-rw-r--r--contrib/gcc/config/alpha/alpha.c2046
-rw-r--r--contrib/gcc/config/alpha/crtbegin.asm192
-rw-r--r--contrib/gcc/config/alpha/crtend.asm108
-rw-r--r--contrib/gcc/config/alpha/elf.h265
-rw-r--r--contrib/gcc/config/alpha/freebsd.h70
-rw-r--r--contrib/gcc/config/alpha/gdb-osf12.h26
-rw-r--r--contrib/gcc/config/alpha/gdb-osf2.h26
-rw-r--r--contrib/gcc/config/alpha/gdb.h26
-rw-r--r--contrib/gcc/config/alpha/osf2.h32
-rw-r--r--contrib/gcc/config/freebsd-spec.h80
-rw-r--r--contrib/gcc/config/freebsd.h35
-rw-r--r--contrib/gcc/config/i386/freebsd-elf.h257
-rw-r--r--contrib/gcc/config/i386/freebsd.h308
-rw-r--r--contrib/gcc/config/i386/freebsd64.h6
-rw-r--r--contrib/gcc/config/i386/i386.c4205
-rw-r--r--contrib/gcc/config/i386/i386.h1150
-rw-r--r--contrib/gcc/config/i386/i386.md5687
-rw-r--r--contrib/gcc/config/i386/x-freebsd3
-rw-r--r--contrib/gcc/config/i386/x86-64.h29
-rw-r--r--contrib/gcc/config/sparc/freebsd.h13
-rwxr-xr-xcontrib/gcc/configure2433
-rw-r--r--contrib/gcc/cp/cfns.h467
-rw-r--r--contrib/gcc/cp/decl.c3723
-rw-r--r--contrib/gcc/cp/except.c173
-rw-r--r--contrib/gcc/cp/g++.c582
-rw-r--r--contrib/gcc/cp/ptree.c33
-rw-r--r--contrib/gcc/cp/reno.texi752
-rw-r--r--contrib/gcc/cppinit.c1115
-rw-r--r--contrib/gcc/dbxout.c103
-rw-r--r--contrib/gcc/dwarfout.c237
-rw-r--r--contrib/gcc/emit-rtl.c1818
-rw-r--r--contrib/gcc/f/BUGS130
-rw-r--r--contrib/gcc/f/NEWS531
-rw-r--r--contrib/gcc/f/g77spec.c75
-rw-r--r--contrib/gcc/final.c544
-rw-r--r--contrib/gcc/flags.h91
-rw-r--r--contrib/gcc/function.c799
-rw-r--r--contrib/gcc/gcc.196
-rw-r--r--contrib/gcc/gcc.c1042
-rw-r--r--contrib/gcc/ginclude/stdarg.h15
-rw-r--r--contrib/gcc/ginclude/varargs.h141
-rw-r--r--contrib/gcc/libgcc2.c593
-rw-r--r--contrib/gcc/make-temp-file.c6
-rw-r--r--contrib/gcc/objc/sendmsg.c651
-rw-r--r--contrib/gcc/pexecute.c4
-rw-r--r--contrib/gcc/print-tree.c68
-rw-r--r--contrib/gcc/recog.c376
-rw-r--r--contrib/gcc/reload.c346
-rw-r--r--contrib/gcc/toplev.c1460
-rw-r--r--contrib/gcc/version.c18
69 files changed, 15319 insertions, 44002 deletions
diff --git a/contrib/gcc/.brik b/contrib/gcc/.brik
deleted file mode 100644
index 112cead..0000000
--- a/contrib/gcc/.brik
+++ /dev/null
@@ -1,14448 +0,0 @@
-# Whole file CRCs generated by Brik v2.0. Use "brik -C" to verify them.
-
-# CRC-32 filename
-# ------ --------
-
- 643045998b ./boehm-gc/acinclude.m4
-2700729979b ./boehm-gc/aclocal.m4
- 971051254b ./boehm-gc/add_gc_prefix.c
-2056900000b ./boehm-gc/allchblk.c
- 182725132b ./boehm-gc/alloc.c
-1198071641b ./boehm-gc/alpha_mach_dep.s
- 655018850b ./boehm-gc/AmigaOS.c
-3099799990b ./boehm-gc/backgraph.c
-2411687152b ./boehm-gc/BCC_MAKEFILE
- 394605993b ./boehm-gc/blacklst.c
- 971406525b ./boehm-gc/callprocs
-2840737175b ./boehm-gc/ChangeLog
-2542310219b ./boehm-gc/checksums.c
-1272640704b ./boehm-gc/config.guess
-4182969326b ./boehm-gc/config.sub
-1543515895b ./boehm-gc/configure
-2331870630b ./boehm-gc/configure.host
-2767393649b ./boehm-gc/configure.in
-3430717956b ./boehm-gc/cord/cordbscs.c
- 473686535b ./boehm-gc/cord/cordprnt.c
-1796537586b ./boehm-gc/cord/cordtest.c
-3610557498b ./boehm-gc/cord/cordxtra.c
-1399512076b ./boehm-gc/cord/de.c
-3493089115b ./boehm-gc/cord/de_cmds.h
-1274913051b ./boehm-gc/cord/de_win.c
-1969645283b ./boehm-gc/cord/de_win.h
-2226183422b ./boehm-gc/cord/de_win.ICO
-2296745137b ./boehm-gc/cord/de_win.RC
-3479570773b ./boehm-gc/dbg_mlc.c
-4155306217b ./boehm-gc/digimars.mak
- 602673483b ./boehm-gc/doc/barrett_diagram
-2134574438b ./boehm-gc/doc/debugging.html
-4112273729b ./boehm-gc/doc/gcdescr.html
-2587456343b ./boehm-gc/doc/gc.man
-1852147885b ./boehm-gc/doc/README
-1398938057b ./boehm-gc/doc/README.amiga
-3968038895b ./boehm-gc/doc/README.autoconf
- 609394135b ./boehm-gc/doc/README.changes
- 124254120b ./boehm-gc/doc/README.contributors
-2337143875b ./boehm-gc/doc/README.cords
-2101980206b ./boehm-gc/doc/README.dj
-1564073111b ./boehm-gc/doc/README.environment
-1544667036b ./boehm-gc/doc/README.ews4800
-2032435380b ./boehm-gc/doc/README.hp
- 261398962b ./boehm-gc/doc/README.linux
-2912965872b ./boehm-gc/doc/README.Mac
-3192387476b ./boehm-gc/doc/README.MacOSX
-3651372180b ./boehm-gc/doc/README.macros
-1009764294b ./boehm-gc/doc/README.OS2
-3249391671b ./boehm-gc/doc/README.rs6000
-2157435131b ./boehm-gc/doc/README.sgi
-2210572734b ./boehm-gc/doc/README.solaris2
-1044770375b ./boehm-gc/doc/README.uts
-3162142981b ./boehm-gc/doc/README.win32
-1244216301b ./boehm-gc/doc/tree.html
-1267269518b ./boehm-gc/dyn_load.c
-3428452570b ./boehm-gc/EMX_MAKEFILE
- 110360283b ./boehm-gc/finalize.c
-3449835837b ./boehm-gc/gc_cpp.cc
- 231223753b ./boehm-gc/gc_cpp.cpp
-3458300802b ./boehm-gc/gcc_support.c
- 145159317b ./boehm-gc/gc_dlopen.c
-4111426693b ./boehm-gc/gcj_mlc.c
-3607948475b ./boehm-gc/gc.mak
-3106502053b ./boehm-gc/gcname.c
-1644234138b ./boehm-gc/headers.c
-1596485799b ./boehm-gc/hpux_test_and_clear.s
-1676909184b ./boehm-gc/ia64_save_regs_in_stack.s
-3582080946b ./boehm-gc/if_mach.c
- 387600055b ./boehm-gc/if_not_there.c
-3897882033b ./boehm-gc/include/cord.h
- 214150158b ./boehm-gc/include/ec.h
-2874534410b ./boehm-gc/include/gc_alloc.h
-1922524680b ./boehm-gc/include/gc_amiga_redirects.h
-3531915622b ./boehm-gc/include/gc_backptr.h
-1564499082b ./boehm-gc/include/gc_cpp.h
-2080667503b ./boehm-gc/include/gc_gcj.h
- 61666144b ./boehm-gc/include/gc.h
- 30043067b ./boehm-gc/include/gc_inl.h
- 601682422b ./boehm-gc/include/gc_inline.h
-2851726125b ./boehm-gc/include/gc_local_alloc.h
-3323450216b ./boehm-gc/include/gc_mark.h
-4062216651b ./boehm-gc/include/gc_pthread_redirects.h
-3286861254b ./boehm-gc/include/gc_typed.h
-2246764458b ./boehm-gc/include/javaxfc.h
-4237951566b ./boehm-gc/include/leak_detector.h
- 695561534b ./boehm-gc/include/Makefile.am
-3142769731b ./boehm-gc/include/Makefile.in
-3792791209b ./boehm-gc/include/new_gc_alloc.h
-1547838704b ./boehm-gc/include/private/cord_pos.h
- 902196938b ./boehm-gc/include/private/dbg_mlc.h
-1218966353b ./boehm-gc/include/private/gcconfig.h
-1215170430b ./boehm-gc/include/private/gc_hdrs.h
- 687589575b ./boehm-gc/include/private/gc_locks.h
- 583510369b ./boehm-gc/include/private/gc_pmark.h
-2936482199b ./boehm-gc/include/private/gc_priv.h
-2686914147b ./boehm-gc/include/private/solaris_threads.h
-3935909412b ./boehm-gc/include/private/specific.h
-2262051120b ./boehm-gc/include/weakpointer.h
-4171599065b ./boehm-gc/install-sh
-3059795267b ./boehm-gc/irix_threads.c
-1133052236b ./boehm-gc/libtool.m4
-3750760998b ./boehm-gc/linux_threads.c
-3535854335b ./boehm-gc/ltconfig
-2828184627b ./boehm-gc/ltmain.sh
- 789649079b ./boehm-gc/Mac_files/dataend.c
-3520138091b ./boehm-gc/Mac_files/datastart.c
- 537693184b ./boehm-gc/Mac_files/MacOS_config.h
-3338272940b ./boehm-gc/Mac_files/MacOS_Test_config.h
-2932074179b ./boehm-gc/mach_dep.c
- 145946109b ./boehm-gc/MacOS.c
- 591574792b ./boehm-gc/MacProjects.sit.hqx
-3930151010b ./boehm-gc/Makefile.am
-3148936110b ./boehm-gc/Makefile.direct
-3806813747b ./boehm-gc/Makefile.dist
- 87051491b ./boehm-gc/Makefile.dj
-2647418481b ./boehm-gc/Makefile.DLLs
-1617270503b ./boehm-gc/Makefile.in
-4270565414b ./boehm-gc/malloc.c
-3656007348b ./boehm-gc/mallocx.c
-2488176063b ./boehm-gc/mark.c
-4184892336b ./boehm-gc/mark_rts.c
-2792262463b ./boehm-gc/mips_sgi_mach_dep.S
- 447949782b ./boehm-gc/mips_ultrix_mach_dep.s
-1352116856b ./boehm-gc/misc.c
-4236112450b ./boehm-gc/mkinstalldirs
-2583630088b ./boehm-gc/new_hblk.c
-3941839401b ./boehm-gc/NT_MAKEFILE
-3607948475b ./boehm-gc/NT_THREADS_MAKEFILE
-1361724709b ./boehm-gc/obj_map.c
-3289014202b ./boehm-gc/OS2_MAKEFILE
-3844001122b ./boehm-gc/os_dep.c
- 600864111b ./boehm-gc/pc_excludes
- 735852084b ./boehm-gc/pcr_interface.c
-2438519321b ./boehm-gc/PCR-Makefile
- 811834911b ./boehm-gc/powerpc_macosx_mach_dep.s
- 105828241b ./boehm-gc/ptr_chck.c
-3988382907b ./boehm-gc/real_malloc.c
-2946495074b ./boehm-gc/reclaim.c
-2737439630b ./boehm-gc/rs6000_mach_dep.s
- 636267038b ./boehm-gc/setjmp_t.c
-2956367466b ./boehm-gc/SMakefile.amiga
- 751650501b ./boehm-gc/solaris_pthreads.c
- 275051372b ./boehm-gc/solaris_threads.c
-1425695416b ./boehm-gc/sparc_mach_dep.S
- 551455534b ./boehm-gc/sparc_netbsd_mach_dep.s
- 293721320b ./boehm-gc/sparc_sunos4_mach_dep.s
-3072675593b ./boehm-gc/specific.c
- 644387711b ./boehm-gc/stubborn.c
-1440779450b ./boehm-gc/tests/leak_test.c
-1742599416b ./boehm-gc/tests/test.c
-3630296235b ./boehm-gc/tests/test_cpp.cc
- 14580047b ./boehm-gc/tests/thread_leak_test.c
-1499257362b ./boehm-gc/tests/trace_test.c
-3287937987b ./boehm-gc/threadlibs.c
-2467355438b ./boehm-gc/typd_mlc.c
- 332085760b ./boehm-gc/version.h
- 205379550b ./boehm-gc/WCC_MAKEFILE
-3326583566b ./boehm-gc/win32_threads.c
-1610170592b ./BUGS
-3809269006b ./bugs.html
-3781032226b ./ChangeLog
-3004978457b ./config/acinclude.m4
-3317944764b ./config/ChangeLog
-1242784498b ./config.guess
-1864899138b ./config.if
-3007349820b ./config/mh-a68bsd
-1442196770b ./config/mh-aix386
-3054121875b ./config/mh-apollo68
-3478341494b ./config/mh-armpic
-1811916229b ./config/mh-cxux
-3020282061b ./config/mh-cygwin
-2180612469b ./config/mh-decstation
- 973727842b ./config/mh-delta88
-2133351807b ./config/mh-dgux
- 746894734b ./config/mh-dgux386
-3870705974b ./config/mh-djgpp
-3478341494b ./config/mh-elfalphapic
- 41994544b ./config/mh-hp300
- 318860404b ./config/mh-hpux
- 318860404b ./config/mh-hpux8
-3478341494b ./config/mh-i370pic
-3265825290b ./config/mh-ia64pic
-2339341800b ./config/mh-interix
-3277888801b ./config/mh-irix4
-1357357208b ./config/mh-irix5
- 200282509b ./config/mh-irix6
-2624861245b ./config/mh-lynxos
-1194372982b ./config/mh-lynxrs6k
-3265825290b ./config/mh-m68kpic
-1904254329b ./config/mh-mingw32
-3317263548b ./config/mh-ncr3000
-2638893829b ./config/mh-ncrsvr43
-4287527672b ./config/mh-necv4
-3000874205b ./config/mh-openedition
-3478341494b ./config/mh-papic
-3478341494b ./config/mh-ppcpic
- 136062744b ./config/mh-riscos
- 407821128b ./config/mh-sco
-2015316329b ./config/mh-solaris
-1399222241b ./config/mh-sparcpic
- 889431517b ./config/mh-sun3
-1253937510b ./config/mh-sysv
-3104599531b ./config/mh-sysv4
-2519884023b ./config/mh-sysv5
- 456622165b ./config/mh-vaxult2
-3265825290b ./config/mh-x86pic
-3139906847b ./config-ml.in
-2319412792b ./config/mpw/ChangeLog
-4005879853b ./config/mpw/forward-include
- 439409833b ./config/mpw/g-mpw-make.sed
- 198559626b ./config/mpw-mh-mpw
-3145098931b ./config/mpw/MoveIfChange
-2800114792b ./config/mpw/mpw-touch
-3832565257b ./config/mpw/mpw-true
- 792347706b ./config/mpw/null-command
-3439853311b ./config/mpw/open-brace
-1476422091b ./config/mpw/README
- 779160003b ./config/mpw/tr-7to8-src
-3832565257b ./config/mpw/true
-2474610656b ./config/mt-aix43
-3955224621b ./config/mt-alphaieee
- 536974328b ./config/mt-armpic
-1487563357b ./config/mt-d30v
- 536974328b ./config/mt-elfalphapic
- 536974328b ./config/mt-i370pic
- 771382916b ./config/mt-ia64pic
-3571760336b ./config/mt-linux
- 771382916b ./config/mt-m68kpic
-2548851201b ./config/mt-netware
- 971016637b ./config/mt-ospace
- 536974328b ./config/mt-papic
- 536974328b ./config/mt-ppcpic
-1847648786b ./config/mt-sparcpic
- 787786243b ./config/mt-v810
-2659154290b ./config/mt-wince
- 771382916b ./config/mt-x86pic
-3897683520b ./config.sub
-2416042097b ./configure
-3230279174b ./configure.in
-1948950130b ./contrib/analyze_brprob
-3428325838b ./contrib/ChangeLog
- 550196746b ./contrib/compare_tests
-2828387446b ./contrib/convert_to_f2c
-2929939770b ./contrib/convert_to_g2c
-2025073358b ./contrib/download_f2c
-1336632236b ./contrib/gccbug.el
-2292355102b ./contrib/gcc_build
-2687391969b ./contrib/gcc_update
- 109296376b ./contrib/gennews
-4256039795b ./contrib/index-prop
-3683285493b ./contrib/newcvsroot
-1596938872b ./contrib/regression/btest-gcc.sh
-2896767265b ./contrib/regression/ChangeLog
-4208566980b ./contrib/regression/objs-gcc.sh
-1757898889b ./contrib/regression/README
-1865505596b ./contrib/regression/site.exp
-1623905231b ./contrib/test_installed
-2523431553b ./contrib/test_summary
-3362750683b ./contrib/texi2pod.pl
-4228623080b ./contrib/warn_summary
-2171125041b ./COPYING
- 508743035b ./COPYING.LIB
-3205162104b ./.cvsignore
-3112237745b ./FAQ
- 118439247b ./faq.html
-3513702948b ./fastjar/aclocal.m4
-1005262133b ./fastjar/AUTHORS
- 640599037b ./fastjar/ChangeLog
-1745615150b ./fastjar/CHANGES
-3743222129b ./fastjar/compress.c
-1169302702b ./fastjar/compress.h
- 754715889b ./fastjar/config.h.in
-1796406241b ./fastjar/configure
-1220094724b ./fastjar/configure.in
-1396100520b ./fastjar/COPYING
-3353116274b ./fastjar/dostime.c
- 446939748b ./fastjar/dostime.h
-2770615802b ./fastjar/INSTALL
-2331671736b ./fastjar/install-defs.sh.in
-1178077958b ./fastjar/install-sh
-1960714715b ./fastjar/jargrep.c
-4062871816b ./fastjar/jargrep.h
-2153374785b ./fastjar/jartool.c
-2754304773b ./fastjar/jartool.h
-3714739366b ./fastjar/Makefile.am
- 39617579b ./fastjar/Makefile.in
- 990942143b ./fastjar/missing
-1455437353b ./fastjar/mkinstalldirs
-4038493440b ./fastjar/NEWS
-1315168235b ./fastjar/pushback.c
- 302085493b ./fastjar/pushback.h
-3780741064b ./fastjar/README
- 216805921b ./fastjar/stamp-h.in
-3071504729b ./fastjar/zipfile.h
-2539671184b ./gcc/ABOUT-GCC-NLS
-1758308615b ./gcc/ABOUT-NLS
-3729933059b ./gcc/acconfig.h
-3650551157b ./gcc/aclocal.m4
-4242669380b ./gcc/ada/1aexcept.adb
- 956455478b ./gcc/ada/1aexcept.ads
-1459838793b ./gcc/ada/1ic.ads
-3953623706b ./gcc/ada/31soccon.ads
-2884972597b ./gcc/ada/31soliop.ads
-4248758801b ./gcc/ada/3asoccon.ads
-3931896843b ./gcc/ada/3bsoccon.ads
-3560754896b ./gcc/ada/3gsoccon.ads
- 580031672b ./gcc/ada/3hsoccon.ads
- 229359869b ./gcc/ada/3lsoccon.ads
-2442231443b ./gcc/ada/3ssoccon.ads
-1502394419b ./gcc/ada/3ssoliop.ads
-3387310401b ./gcc/ada/3wsoccon.ads
- 391658942b ./gcc/ada/3wsocthi.adb
-1356739718b ./gcc/ada/3wsocthi.ads
- 681502184b ./gcc/ada/3wsoliop.ads
-3245682325b ./gcc/ada/41intnam.ads
-2662178618b ./gcc/ada/42intnam.ads
- 959518590b ./gcc/ada/4aintnam.ads
-3097801335b ./gcc/ada/4cintnam.ads
- 481858334b ./gcc/ada/4dintnam.ads
-4162574675b ./gcc/ada/4gintnam.ads
-2002752921b ./gcc/ada/4hexcpol.adb
-2499132704b ./gcc/ada/4hintnam.ads
- 222726646b ./gcc/ada/4lintnam.ads
- 374384539b ./gcc/ada/4mintnam.ads
-3241941732b ./gcc/ada/4nintnam.ads
- 620116621b ./gcc/ada/4ointnam.ads
-3443503753b ./gcc/ada/4onumaux.ads
-1566782773b ./gcc/ada/4pintnam.ads
-3406122898b ./gcc/ada/4rintnam.ads
- 459655329b ./gcc/ada/4sintnam.ads
- 719827780b ./gcc/ada/4uintnam.ads
-1115932068b ./gcc/ada/4vcaldel.adb
-4160669776b ./gcc/ada/4vcalend.adb
-2943884446b ./gcc/ada/4vcalend.ads
-1904156899b ./gcc/ada/4vintnam.ads
- 594124201b ./gcc/ada/4wcalend.adb
-3762378663b ./gcc/ada/4wexcpol.adb
-1710451163b ./gcc/ada/4wintnam.ads
- 548303504b ./gcc/ada/4zintnam.ads
- 770211451b ./gcc/ada/4znumaux.ads
- 930797522b ./gcc/ada/4zsytaco.adb
-3071531568b ./gcc/ada/4zsytaco.ads
-3569647494b ./gcc/ada/51osinte.adb
-2532503682b ./gcc/ada/51osinte.ads
-3468089494b ./gcc/ada/52osinte.adb
-2083506135b ./gcc/ada/52osinte.ads
- 765740382b ./gcc/ada/52system.ads
-3057318985b ./gcc/ada/53osinte.ads
-3513991105b ./gcc/ada/54osinte.ads
- 249779471b ./gcc/ada/5amastop.adb
-1653378497b ./gcc/ada/5aosinte.adb
-3367754742b ./gcc/ada/5aosinte.ads
-3819202190b ./gcc/ada/5asystem.ads
- 613172531b ./gcc/ada/5ataprop.adb
-3013377906b ./gcc/ada/5atasinf.ads
-3014755298b ./gcc/ada/5ataspri.ads
-3667261101b ./gcc/ada/5atpopsp.adb
-3916423708b ./gcc/ada/5avxwork.ads
-3659011384b ./gcc/ada/5bosinte.adb
-2779241737b ./gcc/ada/5bosinte.ads
-2308169616b ./gcc/ada/5bsystem.ads
-1335114659b ./gcc/ada/5cosinte.ads
-2058704820b ./gcc/ada/5dosinte.ads
-1118228281b ./gcc/ada/5esystem.ads
- 74251179b ./gcc/ada/5etpopse.adb
- 745978377b ./gcc/ada/5fintman.adb
-3658042447b ./gcc/ada/5fosinte.ads
-3136371085b ./gcc/ada/5fsystem.ads
-1678802713b ./gcc/ada/5ftaprop.adb
-2739603168b ./gcc/ada/5ftasinf.ads
-3610821942b ./gcc/ada/5ginterr.adb
- 975866538b ./gcc/ada/5gintman.adb
-1378115556b ./gcc/ada/5gmastop.adb
-2183233435b ./gcc/ada/5gosinte.ads
- 571431837b ./gcc/ada/5gproinf.adb
-3191048862b ./gcc/ada/5gproinf.ads
- 693393540b ./gcc/ada/5gsystem.ads
-2970373496b ./gcc/ada/5gtaprop.adb
-2321444413b ./gcc/ada/5gtasinf.adb
-3287583301b ./gcc/ada/5gtasinf.ads
-2785741821b ./gcc/ada/5gtpgetc.adb
-3503873280b ./gcc/ada/5hosinte.adb
-2098542990b ./gcc/ada/5hosinte.ads
-2099158447b ./gcc/ada/5hparame.ads
-3465869647b ./gcc/ada/5hsystem.ads
-1377954775b ./gcc/ada/5htaprop.adb
- 158492006b ./gcc/ada/5htaspri.ads
- 58230655b ./gcc/ada/5htraceb.adb
- 703108891b ./gcc/ada/5iosinte.adb
-3200296303b ./gcc/ada/5iosinte.ads
-1823263396b ./gcc/ada/5itaprop.adb
-2428441881b ./gcc/ada/5itaspri.ads
- 258764448b ./gcc/ada/5ksystem.ads
- 801131281b ./gcc/ada/5kvxwork.ads
-3740352184b ./gcc/ada/5lintman.adb
-2092578045b ./gcc/ada/5lml-tgt.adb
-1560385947b ./gcc/ada/5losinte.ads
- 566581471b ./gcc/ada/5lsystem.ads
-3212004635b ./gcc/ada/5mosinte.ads
-2556228116b ./gcc/ada/5mvxwork.ads
-1277970924b ./gcc/ada/5ninmaop.adb
- 921618338b ./gcc/ada/5nintman.adb
-2773599964b ./gcc/ada/5nosinte.ads
-2606543337b ./gcc/ada/5ntaprop.adb
-3755362459b ./gcc/ada/5ntaspri.ads
-2203283165b ./gcc/ada/5ointerr.adb
-4214075066b ./gcc/ada/5omastop.adb
- 51561081b ./gcc/ada/5oosinte.adb
-3809744645b ./gcc/ada/5oosinte.ads
-2928684265b ./gcc/ada/5oosprim.adb
-2072280969b ./gcc/ada/5oparame.adb
-3575712341b ./gcc/ada/5osystem.ads
- 679733143b ./gcc/ada/5otaprop.adb
-1685662286b ./gcc/ada/5otaspri.ads
- 656589266b ./gcc/ada/5posinte.ads
-3394687510b ./gcc/ada/5posprim.adb
-1947102917b ./gcc/ada/5pvxwork.ads
-2218896062b ./gcc/ada/5qosinte.adb
- 147874672b ./gcc/ada/5qosinte.ads
- 487900047b ./gcc/ada/5qparame.ads
-1923594129b ./gcc/ada/5qstache.adb
-2941573152b ./gcc/ada/5qtaprop.adb
-3425306326b ./gcc/ada/5qtaspri.ads
-3925078434b ./gcc/ada/5qvxwork.ads
-3811279815b ./gcc/ada/5rosinte.adb
-4146733644b ./gcc/ada/5rosinte.ads
- 341619696b ./gcc/ada/5rparame.adb
-3395974413b ./gcc/ada/5sintman.adb
-2666853386b ./gcc/ada/5smastop.adb
- 946915847b ./gcc/ada/5sosinte.adb
-1686512140b ./gcc/ada/5sosinte.ads
-1089056181b ./gcc/ada/5sparame.adb
-1789906565b ./gcc/ada/5ssystem.ads
-1618657802b ./gcc/ada/5staprop.adb
-2345225497b ./gcc/ada/5stasinf.adb
-2933480236b ./gcc/ada/5stasinf.ads
-3413502572b ./gcc/ada/5staspri.ads
-1154412482b ./gcc/ada/5stpopse.adb
- 67524432b ./gcc/ada/5svxwork.ads
-3415155229b ./gcc/ada/5tosinte.ads
- 512605178b ./gcc/ada/5uintman.adb
-4009109831b ./gcc/ada/5uosinte.ads
- 20834007b ./gcc/ada/5vasthan.adb
-2828545983b ./gcc/ada/5vinmaop.adb
- 757746642b ./gcc/ada/5vinterr.adb
-3554377996b ./gcc/ada/5vintman.adb
-4186329246b ./gcc/ada/5vintman.ads
-1363122615b ./gcc/ada/5vmastop.adb
-2126801266b ./gcc/ada/5vosinte.adb
- 257481916b ./gcc/ada/5vosinte.ads
-2697009894b ./gcc/ada/5vosprim.adb
-3173364854b ./gcc/ada/5vosprim.ads
-1485530536b ./gcc/ada/5vparame.ads
- 477268412b ./gcc/ada/5vsystem.ads
- 880665297b ./gcc/ada/5vtaprop.adb
-2017768241b ./gcc/ada/5vtaspri.ads
-1524831970b ./gcc/ada/5vtpopde.adb
-2510422485b ./gcc/ada/5vtpopde.ads
-1323493335b ./gcc/ada/5vvaflop.adb
-2061622518b ./gcc/ada/5wgloloc.adb
-2867255266b ./gcc/ada/5wintman.adb
- 379035915b ./gcc/ada/5wmemory.adb
-1635278585b ./gcc/ada/5wosinte.ads
-2409163205b ./gcc/ada/5wosprim.adb
- 478208583b ./gcc/ada/5wsystem.ads
-3106892401b ./gcc/ada/5wtaprop.adb
-4085824633b ./gcc/ada/5wtaspri.ads
-3290324010b ./gcc/ada/5ysystem.ads
- 218453075b ./gcc/ada/5zinterr.adb
-2488090528b ./gcc/ada/5zintman.adb
-3420496615b ./gcc/ada/5zosinte.adb
- 217803163b ./gcc/ada/5zosinte.ads
-2386679201b ./gcc/ada/5zosprim.adb
-4153514169b ./gcc/ada/5zparame.ads
-2955891758b ./gcc/ada/5zsystem.ads
-1056290651b ./gcc/ada/5ztaprop.adb
-2493859349b ./gcc/ada/6vcpp.adb
-3764631364b ./gcc/ada/6vcstrea.adb
-1298363378b ./gcc/ada/6vinterf.ads
-4042684575b ./gcc/ada/7sinmaop.adb
- 784835892b ./gcc/ada/7sintman.adb
-3674994444b ./gcc/ada/7sosinte.adb
-1201544504b ./gcc/ada/7sosprim.adb
-2188892819b ./gcc/ada/7staprop.adb
-2314536447b ./gcc/ada/7staspri.ads
-2244813175b ./gcc/ada/7stpopsp.adb
-1360717481b ./gcc/ada/7straceb.adb
-1989930650b ./gcc/ada/86numaux.adb
-4223067829b ./gcc/ada/86numaux.ads
- 176063031b ./gcc/ada/9drpc.adb
-1238937539b ./gcc/ada/a-astaco.adb
-4160306902b ./gcc/ada/a-astaco.ads
-1228169839b ./gcc/ada/a-caldel.adb
-2176358398b ./gcc/ada/a-caldel.ads
-3780985610b ./gcc/ada/a-calend.adb
-3197442795b ./gcc/ada/a-calend.ads
-1974463316b ./gcc/ada/a-chahan.adb
-3292743834b ./gcc/ada/a-chahan.ads
- 825575293b ./gcc/ada/a-charac.ads
-3290669737b ./gcc/ada/a-chlat1.ads
-4141698919b ./gcc/ada/a-colien.adb
-1708206584b ./gcc/ada/a-colien.ads
-2886731379b ./gcc/ada/a-colire.adb
- 632756715b ./gcc/ada/a-colire.ads
-4188471995b ./gcc/ada/a-comlin.adb
-1346248274b ./gcc/ada/a-comlin.ads
-3629140421b ./gcc/ada/a-cwila1.ads
- 307313649b ./gcc/ada/ada.ads
-4047226521b ./gcc/ada/ada.h
- 885231182b ./gcc/ada/adaint.c
-2846678559b ./gcc/ada/adaint.h
- 512963659b ./gcc/ada/ada-tree.def
- 804772500b ./gcc/ada/ada-tree.h
-3138793590b ./gcc/ada/a-decima.adb
-1463764551b ./gcc/ada/a-decima.ads
-2965106267b ./gcc/ada/a-diocst.adb
-1351302553b ./gcc/ada/a-diocst.ads
-2204236254b ./gcc/ada/a-direio.adb
-2663951086b ./gcc/ada/a-direio.ads
-2899453035b ./gcc/ada/a-dynpri.adb
-1808034404b ./gcc/ada/a-dynpri.ads
-1930539183b ./gcc/ada/a-einuoc.adb
-2923383870b ./gcc/ada/a-einuoc.ads
-3811259854b ./gcc/ada/a-except.adb
-4208405793b ./gcc/ada/a-except.ads
-4151617553b ./gcc/ada/a-excpol.adb
-1040381731b ./gcc/ada/a-exctra.adb
- 87828562b ./gcc/ada/a-exctra.ads
-2225675502b ./gcc/ada/a-filico.adb
-3260597455b ./gcc/ada/a-filico.ads
- 907923324b ./gcc/ada/a-finali.adb
-3572535024b ./gcc/ada/a-finali.ads
-2422945006b ./gcc/ada/a-flteio.ads
-3013254494b ./gcc/ada/a-fwteio.ads
-1706398574b ./gcc/ada/a-inteio.ads
-2001069544b ./gcc/ada/a-interr.adb
-2400554368b ./gcc/ada/a-interr.ads
-3855829577b ./gcc/ada/a-intnam.ads
-1774182036b ./gcc/ada/a-intsig.adb
-2389005781b ./gcc/ada/a-intsig.ads
-2978442327b ./gcc/ada/a-ioexce.ads
-2820771598b ./gcc/ada/a-iwteio.ads
-2695025338b ./gcc/ada/a-lfteio.ads
- 68898824b ./gcc/ada/a-lfwtio.ads
-1582815074b ./gcc/ada/ali.adb
-1110656306b ./gcc/ada/ali.ads
-3958947062b ./gcc/ada/a-liteio.ads
-3701505690b ./gcc/ada/ali-util.adb
- 534404399b ./gcc/ada/ali-util.ads
-3989352502b ./gcc/ada/a-liwtio.ads
- 706064852b ./gcc/ada/a-llftio.ads
-1760483522b ./gcc/ada/a-llfwti.ads
-1685529166b ./gcc/ada/a-llitio.ads
-1092110807b ./gcc/ada/a-lliwti.ads
-1648510288b ./gcc/ada/alloc.ads
-3751218976b ./gcc/ada/a-ncelfu.ads
-3307386742b ./gcc/ada/a-ngcefu.adb
-3410028763b ./gcc/ada/a-ngcefu.ads
-1098245021b ./gcc/ada/a-ngcoty.adb
-3206810014b ./gcc/ada/a-ngcoty.ads
-3316580416b ./gcc/ada/a-ngelfu.adb
-3094594364b ./gcc/ada/a-ngelfu.ads
- 238508204b ./gcc/ada/a-nlcefu.ads
-4084493045b ./gcc/ada/a-nlcoty.ads
-2627472219b ./gcc/ada/a-nlelfu.ads
-4117474264b ./gcc/ada/a-nllcef.ads
-2318923524b ./gcc/ada/a-nllcty.ads
-2611968609b ./gcc/ada/a-nllefu.ads
-1082074441b ./gcc/ada/a-nscefu.ads
-3357121256b ./gcc/ada/a-nscoty.ads
-3712559791b ./gcc/ada/a-nselfu.ads
-1597516775b ./gcc/ada/a-nucoty.ads
-1662364886b ./gcc/ada/a-nudira.adb
-3453922662b ./gcc/ada/a-nudira.ads
-4261702712b ./gcc/ada/a-nuelfu.ads
-2981834359b ./gcc/ada/a-nuflra.adb
- 197186767b ./gcc/ada/a-nuflra.ads
-3913215245b ./gcc/ada/a-numaux.ads
-1796312085b ./gcc/ada/a-numeri.ads
-1699976913b ./gcc/ada/a-reatim.adb
-2826402039b ./gcc/ada/a-reatim.ads
-4184054556b ./gcc/ada/a-retide.adb
-1321308146b ./gcc/ada/a-retide.ads
- 151152579b ./gcc/ada/argv.c
-4225555660b ./gcc/ada/a-sequio.adb
-3093499209b ./gcc/ada/a-sequio.ads
- 201813662b ./gcc/ada/a-sfteio.ads
- 768813005b ./gcc/ada/a-sfwtio.ads
-3107027497b ./gcc/ada/a-siocst.adb
-4067781141b ./gcc/ada/a-siocst.ads
-2998945311b ./gcc/ada/a-siteio.ads
- 764480998b ./gcc/ada/a-siwtio.ads
- 164767602b ./gcc/ada/a-ssicst.adb
-2673543741b ./gcc/ada/a-ssicst.ads
- 6703000b ./gcc/ada/a-ssitio.ads
- 597839343b ./gcc/ada/a-ssiwti.ads
- 358760311b ./gcc/ada/a-stmaco.ads
-3991680331b ./gcc/ada/a-storio.adb
-3996647403b ./gcc/ada/a-storio.ads
- 850701758b ./gcc/ada/a-strbou.adb
- 209100723b ./gcc/ada/a-strbou.ads
-2712052749b ./gcc/ada/a-stream.ads
-3445389326b ./gcc/ada/a-strfix.adb
-2291830284b ./gcc/ada/a-strfix.ads
-3358703553b ./gcc/ada/a-string.ads
-1074484976b ./gcc/ada/a-strmap.adb
-3962780233b ./gcc/ada/a-strmap.ads
-2443268654b ./gcc/ada/a-strsea.adb
- 294757473b ./gcc/ada/a-strsea.ads
-1067561841b ./gcc/ada/a-strunb.adb
-4156134282b ./gcc/ada/a-strunb.ads
-4032395003b ./gcc/ada/a-ststio.adb
-1884417935b ./gcc/ada/a-ststio.ads
-3010897568b ./gcc/ada/a-stunau.adb
-3715203779b ./gcc/ada/a-stunau.ads
-2054174824b ./gcc/ada/a-stwibo.adb
- 744358246b ./gcc/ada/a-stwibo.ads
-3330826391b ./gcc/ada/a-stwifi.adb
-2923302688b ./gcc/ada/a-stwifi.ads
-3258659279b ./gcc/ada/a-stwima.adb
-1429080954b ./gcc/ada/a-stwima.ads
-1405535584b ./gcc/ada/a-stwise.adb
-2375036092b ./gcc/ada/a-stwise.ads
-3573494769b ./gcc/ada/a-stwiun.adb
-4063750480b ./gcc/ada/a-stwiun.ads
-1857462924b ./gcc/ada/a-suteio.adb
- 988077225b ./gcc/ada/a-suteio.ads
-3427083052b ./gcc/ada/a-swmwco.ads
- 247624637b ./gcc/ada/a-swuwti.adb
-1326104524b ./gcc/ada/a-swuwti.ads
-3992727238b ./gcc/ada/a-sytaco.adb
-4059971314b ./gcc/ada/a-sytaco.ads
-2394326814b ./gcc/ada/a-tags.adb
-3486033137b ./gcc/ada/a-tags.ads
-1194894578b ./gcc/ada/a-tasatt.adb
-2943432852b ./gcc/ada/a-tasatt.ads
-2912651322b ./gcc/ada/a-taside.adb
- 646153741b ./gcc/ada/a-taside.ads
-3438800004b ./gcc/ada/a-teioed.adb
-1748001536b ./gcc/ada/a-teioed.ads
-1427379759b ./gcc/ada/a-textio.adb
-1210750137b ./gcc/ada/a-textio.ads
-1749119361b ./gcc/ada/a-ticoau.adb
-2222697472b ./gcc/ada/a-ticoau.ads
-1221231446b ./gcc/ada/a-ticoio.adb
-1223874862b ./gcc/ada/a-ticoio.ads
-4279581986b ./gcc/ada/a-tideau.adb
- 434050393b ./gcc/ada/a-tideau.ads
-2037256210b ./gcc/ada/a-tideio.adb
-1718502310b ./gcc/ada/a-tideio.ads
- 529543928b ./gcc/ada/a-tienau.adb
-3941439160b ./gcc/ada/a-tienau.ads
-3371851163b ./gcc/ada/a-tienio.adb
-3974972174b ./gcc/ada/a-tienio.ads
-4188977439b ./gcc/ada/a-tifiio.adb
-1786065440b ./gcc/ada/a-tifiio.ads
-3558731868b ./gcc/ada/a-tiflau.adb
-1745997125b ./gcc/ada/a-tiflau.ads
-1485143016b ./gcc/ada/a-tiflio.adb
-3470894323b ./gcc/ada/a-tiflio.ads
-3323143227b ./gcc/ada/a-tigeau.adb
-1729452158b ./gcc/ada/a-tigeau.ads
-3932871049b ./gcc/ada/a-tiinau.adb
-2369391467b ./gcc/ada/a-tiinau.ads
-1924191553b ./gcc/ada/a-tiinio.adb
-2729601893b ./gcc/ada/a-tiinio.ads
- 934261002b ./gcc/ada/a-timoau.adb
-1113536362b ./gcc/ada/a-timoau.ads
-4264051069b ./gcc/ada/a-timoio.adb
- 805418156b ./gcc/ada/a-timoio.ads
-3870116277b ./gcc/ada/a-tiocst.adb
-1562031680b ./gcc/ada/a-tiocst.ads
- 622798727b ./gcc/ada/a-titest.adb
-1725647162b ./gcc/ada/a-titest.ads
-2460925843b ./gcc/ada/atree.adb
-1541614871b ./gcc/ada/atree.ads
-1078226318b ./gcc/ada/atree.h
- 278716747b ./gcc/ada/a-unccon.ads
-1157859592b ./gcc/ada/a-uncdea.ads
-3576417048b ./gcc/ada/a-witeio.adb
-3179602980b ./gcc/ada/a-witeio.ads
-3259356202b ./gcc/ada/a-wtcoau.adb
-4157240054b ./gcc/ada/a-wtcoau.ads
-2649721481b ./gcc/ada/a-wtcoio.adb
-3041062214b ./gcc/ada/a-wtcoio.ads
-2350995641b ./gcc/ada/a-wtcstr.adb
-4151370387b ./gcc/ada/a-wtcstr.ads
- 737993830b ./gcc/ada/a-wtdeau.adb
-1297223500b ./gcc/ada/a-wtdeau.ads
- 317498445b ./gcc/ada/a-wtdeio.adb
-2698675362b ./gcc/ada/a-wtdeio.ads
-1920359111b ./gcc/ada/a-wtedit.adb
-4233035352b ./gcc/ada/a-wtedit.ads
-3733610031b ./gcc/ada/a-wtenau.adb
-1209649592b ./gcc/ada/a-wtenau.ads
-1772371901b ./gcc/ada/a-wtenio.adb
-3345087568b ./gcc/ada/a-wtenio.ads
-3955231020b ./gcc/ada/a-wtfiio.adb
-2966383122b ./gcc/ada/a-wtfiio.ads
-3172802882b ./gcc/ada/a-wtflau.adb
-2847914558b ./gcc/ada/a-wtflau.ads
-1430031960b ./gcc/ada/a-wtflio.adb
-3504471884b ./gcc/ada/a-wtflio.ads
- 146615287b ./gcc/ada/a-wtgeau.adb
-3202407425b ./gcc/ada/a-wtgeau.ads
-1556046286b ./gcc/ada/a-wtinau.adb
- 620705682b ./gcc/ada/a-wtinau.ads
-3330610374b ./gcc/ada/a-wtinio.adb
-1587983670b ./gcc/ada/a-wtinio.ads
- 585816566b ./gcc/ada/a-wtmoau.adb
-2360842842b ./gcc/ada/a-wtmoau.ads
-2728837322b ./gcc/ada/a-wtmoio.adb
- 994042627b ./gcc/ada/a-wtmoio.ads
- 10193259b ./gcc/ada/a-wttest.adb
-3792433389b ./gcc/ada/a-wttest.ads
-3092527849b ./gcc/ada/back_end.adb
- 477747165b ./gcc/ada/back_end.ads
- 554760143b ./gcc/ada/bcheck.adb
-1423149518b ./gcc/ada/bcheck.ads
- 603483282b ./gcc/ada/binde.adb
- 608595938b ./gcc/ada/binde.ads
-3034016752b ./gcc/ada/binderr.adb
- 861498600b ./gcc/ada/binderr.ads
-3217748288b ./gcc/ada/bindgen.adb
-3453434027b ./gcc/ada/bindgen.ads
- 715016497b ./gcc/ada/bindusg.adb
-2507691128b ./gcc/ada/bindusg.ads
-1055153314b ./gcc/ada/butil.adb
-2616385499b ./gcc/ada/butil.ads
- 322199477b ./gcc/ada/cal.c
-3874049157b ./gcc/ada/calendar.ads
-3825818772b ./gcc/ada/casing.adb
-2190810584b ./gcc/ada/casing.ads
-3750437973b ./gcc/ada/ceinfo.adb
-2529867828b ./gcc/ada/ChangeLog
- 869185536b ./gcc/ada/checks.adb
- 440073759b ./gcc/ada/checks.ads
- 401488734b ./gcc/ada/cio.c
-1870694279b ./gcc/ada/comperr.adb
-1643780092b ./gcc/ada/comperr.ads
-1676023100b ./gcc/ada/config-lang.in
-3110809717b ./gcc/ada/csets.adb
- 519863585b ./gcc/ada/csets.ads
-1124381824b ./gcc/ada/csinfo.adb
- 853889379b ./gcc/ada/cstand.adb
- 276146343b ./gcc/ada/cstand.ads
-1520807724b ./gcc/ada/cstreams.c
-1822736202b ./gcc/ada/cuintp.c
- 579009580b ./gcc/ada/debug_a.adb
- 799315376b ./gcc/ada/debug_a.ads
-2435692819b ./gcc/ada/debug.adb
- 638126818b ./gcc/ada/debug.ads
-1459266024b ./gcc/ada/dec.ads
-3565371015b ./gcc/ada/dec-io.adb
-2106947862b ./gcc/ada/dec-io.ads
-2132162623b ./gcc/ada/decl.c
-1390338918b ./gcc/ada/deftarg.c
-1749835375b ./gcc/ada/directio.ads
-2461185080b ./gcc/ada/einfo.adb
-3725314637b ./gcc/ada/einfo.ads
-1040486350b ./gcc/ada/einfo.h
-3827088848b ./gcc/ada/elists.adb
-2003740348b ./gcc/ada/elists.ads
-1105190374b ./gcc/ada/elists.h
- 204753916b ./gcc/ada/errno.c
-4008402022b ./gcc/ada/errout.adb
- 320928564b ./gcc/ada/errout.ads
-2999271413b ./gcc/ada/eval_fat.adb
-2463431696b ./gcc/ada/eval_fat.ads
-3517544739b ./gcc/ada/exit.c
-2311141325b ./gcc/ada/exp_aggr.adb
-2860900195b ./gcc/ada/exp_aggr.ads
-2681017510b ./gcc/ada/expander.adb
-2575484225b ./gcc/ada/expander.ads
-2455995554b ./gcc/ada/exp_attr.adb
-2274665870b ./gcc/ada/exp_attr.ads
-3788438274b ./gcc/ada/exp_ch10.ads
-1959020568b ./gcc/ada/exp_ch11.adb
-1356092263b ./gcc/ada/exp_ch11.ads
-2662303632b ./gcc/ada/exp_ch12.adb
-1677837106b ./gcc/ada/exp_ch12.ads
-1201493881b ./gcc/ada/exp_ch13.adb
-2523628624b ./gcc/ada/exp_ch13.ads
-2836932963b ./gcc/ada/exp_ch2.adb
-1920342641b ./gcc/ada/exp_ch2.ads
-2780430528b ./gcc/ada/exp_ch3.adb
-3277988254b ./gcc/ada/exp_ch3.ads
- 423127048b ./gcc/ada/exp_ch4.adb
- 630544925b ./gcc/ada/exp_ch4.ads
-1300859159b ./gcc/ada/exp_ch5.adb
-3884008715b ./gcc/ada/exp_ch5.ads
-1421574227b ./gcc/ada/exp_ch6.adb
-2978408620b ./gcc/ada/exp_ch6.ads
-1516530505b ./gcc/ada/exp_ch7.adb
-4029388464b ./gcc/ada/exp_ch7.ads
- 806341254b ./gcc/ada/exp_ch8.adb
-2493548378b ./gcc/ada/exp_ch8.ads
- 947069359b ./gcc/ada/exp_ch9.adb
-3130662329b ./gcc/ada/exp_ch9.ads
-2689298271b ./gcc/ada/exp_code.adb
-3591911170b ./gcc/ada/exp_code.ads
-3574458760b ./gcc/ada/exp_dbug.adb
-4105290806b ./gcc/ada/exp_dbug.ads
-3835417459b ./gcc/ada/exp_disp.adb
-1460989777b ./gcc/ada/exp_disp.ads
-4152673151b ./gcc/ada/exp_dist.adb
-2224744101b ./gcc/ada/exp_dist.ads
- 196370175b ./gcc/ada/expect.c
-2380394819b ./gcc/ada/exp_fixd.adb
-2971633787b ./gcc/ada/exp_fixd.ads
- 383808865b ./gcc/ada/exp_imgv.adb
- 107414456b ./gcc/ada/exp_imgv.ads
- 533490453b ./gcc/ada/exp_intr.adb
- 603944530b ./gcc/ada/exp_intr.ads
-1223570350b ./gcc/ada/exp_pakd.adb
-3169217058b ./gcc/ada/exp_pakd.ads
- 561903948b ./gcc/ada/exp_prag.adb
-2726623065b ./gcc/ada/exp_prag.ads
-2694622276b ./gcc/ada/exp_smem.adb
-4102883600b ./gcc/ada/exp_smem.ads
-3367849671b ./gcc/ada/exp_strm.adb
- 508903407b ./gcc/ada/exp_strm.ads
-4061285632b ./gcc/ada/exp_tss.adb
- 802174414b ./gcc/ada/exp_tss.ads
-4294889971b ./gcc/ada/exp_util.adb
-2588841819b ./gcc/ada/exp_util.ads
- 732650724b ./gcc/ada/exp_vfpt.adb
-3158703166b ./gcc/ada/exp_vfpt.ads
-3730235790b ./gcc/ada/fe.h
- 742167588b ./gcc/ada/final.c
-2410826795b ./gcc/ada/fmap.adb
-1989849769b ./gcc/ada/fmap.ads
-4193711832b ./gcc/ada/fname.adb
-3581054847b ./gcc/ada/fname.ads
-2554721004b ./gcc/ada/fname-sf.adb
-3385587425b ./gcc/ada/fname-sf.ads
- 152433494b ./gcc/ada/fname-uf.adb
-2869979673b ./gcc/ada/fname-uf.ads
- 165073793b ./gcc/ada/freeze.adb
- 286956192b ./gcc/ada/freeze.ads
- 146613934b ./gcc/ada/frontend.adb
-1342421440b ./gcc/ada/frontend.ads
-4158577973b ./gcc/ada/g-awk.adb
- 609310253b ./gcc/ada/g-awk.ads
- 606317350b ./gcc/ada/g-busora.adb
-2327940372b ./gcc/ada/g-busora.ads
- 614263783b ./gcc/ada/g-busorg.adb
-2383765954b ./gcc/ada/g-busorg.ads
-2310918787b ./gcc/ada/g-calend.adb
- 775102218b ./gcc/ada/g-calend.ads
-4188678555b ./gcc/ada/g-casuti.adb
-1046751589b ./gcc/ada/g-casuti.ads
-2508275788b ./gcc/ada/g-catiio.adb
-1700304817b ./gcc/ada/g-catiio.ads
- 153263812b ./gcc/ada/g-cgi.adb
- 491501987b ./gcc/ada/g-cgi.ads
-1552120806b ./gcc/ada/g-cgicoo.adb
- 514376152b ./gcc/ada/g-cgicoo.ads
-2079055740b ./gcc/ada/g-cgideb.adb
-3073151229b ./gcc/ada/g-cgideb.ads
-1337328080b ./gcc/ada/g-comlin.adb
- 762947182b ./gcc/ada/g-comlin.ads
-3063697563b ./gcc/ada/g-crc32.adb
-4042174606b ./gcc/ada/g-crc32.ads
- 123778282b ./gcc/ada/g-curexc.ads
-1009530951b ./gcc/ada/g-debpoo.adb
-2797049575b ./gcc/ada/g-debpoo.ads
-2483821241b ./gcc/ada/g-debuti.adb
-2759144883b ./gcc/ada/g-debuti.ads
-1479126304b ./gcc/ada/g-diopit.adb
-2613579847b ./gcc/ada/g-diopit.ads
-1351705587b ./gcc/ada/g-dirope.adb
-1843551212b ./gcc/ada/g-dirope.ads
-2129456205b ./gcc/ada/g-dyntab.adb
-2301313958b ./gcc/ada/g-dyntab.ads
-2000619828b ./gcc/ada/get_targ.adb
-4235434426b ./gcc/ada/get_targ.ads
- 240250153b ./gcc/ada/g-except.ads
- 311327188b ./gcc/ada/g-exctra.adb
- 696104010b ./gcc/ada/g-exctra.ads
-2021399770b ./gcc/ada/g-expect.adb
-3670453648b ./gcc/ada/g-expect.ads
- 115710627b ./gcc/ada/g-flocon.ads
-1241285700b ./gcc/ada/g-hesora.adb
-1954443348b ./gcc/ada/g-hesora.ads
-2162133654b ./gcc/ada/g-hesorg.adb
-1899093730b ./gcc/ada/g-hesorg.ads
- 615231546b ./gcc/ada/g-htable.adb
-1147404231b ./gcc/ada/g-htable.ads
-3771528129b ./gcc/ada/gigi.h
-4074378557b ./gcc/ada/g-io.adb
-2059397144b ./gcc/ada/g-io.ads
-3075502902b ./gcc/ada/g-io_aux.adb
-2987271187b ./gcc/ada/g-io_aux.ads
-2315560945b ./gcc/ada/g-locfil.adb
-3845793000b ./gcc/ada/g-locfil.ads
-3781796779b ./gcc/ada/gmem.c
-2382601227b ./gcc/ada/g-moreex.adb
-1324668450b ./gcc/ada/g-moreex.ads
-3331018174b ./gcc/ada/gnat1drv.adb
-1236781124b ./gcc/ada/gnat1drv.ads
-3338432106b ./gcc/ada/gnat.ads
-2299667202b ./gcc/ada/gnatbind.adb
- 104731427b ./gcc/ada/gnatbind.ads
-4059170038b ./gcc/ada/gnatbl.c
-3226234054b ./gcc/ada/gnatchop.adb
-3118972477b ./gcc/ada/gnatcmd.adb
-3908617844b ./gcc/ada/gnatcmd.ads
-2796597452b ./gcc/ada/gnatdll.adb
-1086468102b ./gcc/ada/gnatfind.adb
-3373987329b ./gcc/ada/gnatkr.adb
-3373093353b ./gcc/ada/gnatkr.ads
- 616714676b ./gcc/ada/gnatlbr.adb
-2504670692b ./gcc/ada/gnatlink.adb
-2544717462b ./gcc/ada/gnatlink.ads
-4282914717b ./gcc/ada/gnatls.adb
-1758666063b ./gcc/ada/gnatls.ads
-1542183559b ./gcc/ada/gnatmain.adb
-3283765307b ./gcc/ada/gnatmain.ads
-2033004516b ./gcc/ada/gnatmake.adb
- 145840748b ./gcc/ada/gnatmake.ads
-1758767486b ./gcc/ada/gnatmem.adb
-2813528580b ./gcc/ada/gnatprep.adb
-2835105488b ./gcc/ada/gnatprep.ads
-3865862564b ./gcc/ada/gnatpsta.adb
-3829654473b ./gcc/ada/gnatpsys.adb
-2787179765b ./gcc/ada/gnat_rm.texi
-1099903949b ./gcc/ada/gnat-style.texi
-3866519797b ./gcc/ada/gnat_ug.texi
-2880471508b ./gcc/ada/gnatvsn.ads
-2692053620b ./gcc/ada/gnatxref.adb
-1804647254b ./gcc/ada/g-os_lib.adb
-3221085683b ./gcc/ada/g-os_lib.ads
-1185528967b ./gcc/ada/g-regexp.adb
-1629361223b ./gcc/ada/g-regexp.ads
-3390523966b ./gcc/ada/g-regist.adb
-3208719885b ./gcc/ada/g-regist.ads
-1577468709b ./gcc/ada/g-regpat.adb
- 582026880b ./gcc/ada/g-regpat.ads
-2451205314b ./gcc/ada/g-soccon.ads
-2575242004b ./gcc/ada/g-socket.adb
-1535656165b ./gcc/ada/g-socket.ads
-2293859502b ./gcc/ada/g-socthi.adb
- 651912058b ./gcc/ada/g-socthi.ads
-3350030780b ./gcc/ada/g-soliop.ads
- 758288908b ./gcc/ada/g-souinf.ads
- 581975334b ./gcc/ada/g-speche.adb
-2314638139b ./gcc/ada/g-speche.ads
-2855842118b ./gcc/ada/g-spipat.adb
- 791106872b ./gcc/ada/g-spipat.ads
-3318271323b ./gcc/ada/g-spitbo.adb
- 605302019b ./gcc/ada/g-spitbo.ads
-2302115365b ./gcc/ada/g-sptabo.ads
- 795251741b ./gcc/ada/g-sptain.ads
-2860049437b ./gcc/ada/g-sptavs.ads
-2522673043b ./gcc/ada/g-table.adb
-4247473857b ./gcc/ada/g-table.ads
- 963828728b ./gcc/ada/g-tasloc.adb
-3443589956b ./gcc/ada/g-tasloc.ads
-4222037032b ./gcc/ada/g-thread.adb
-2926605455b ./gcc/ada/g-thread.ads
-1214503882b ./gcc/ada/g-traceb.adb
-3641101501b ./gcc/ada/g-traceb.ads
-4093206552b ./gcc/ada/g-trasym.adb
- 344030511b ./gcc/ada/g-trasym.ads
- 577038397b ./gcc/ada/hlo.adb
- 991320325b ./gcc/ada/hlo.ads
-1962035170b ./gcc/ada/hostparm.ads
-2031335613b ./gcc/ada/i-c.adb
-1630163220b ./gcc/ada/i-c.ads
-1541946831b ./gcc/ada/i-cexten.ads
-3090969270b ./gcc/ada/i-cobol.adb
-2496712247b ./gcc/ada/i-cobol.ads
-2325074871b ./gcc/ada/i-cpoint.adb
-1699793483b ./gcc/ada/i-cpoint.ads
- 214865019b ./gcc/ada/i-cpp.adb
-2912941503b ./gcc/ada/i-cpp.ads
-3140439521b ./gcc/ada/i-cstrea.adb
-1842827516b ./gcc/ada/i-cstrea.ads
-1294230726b ./gcc/ada/i-cstrin.adb
-3630365631b ./gcc/ada/i-cstrin.ads
-3233154322b ./gcc/ada/i-fortra.adb
-3862297824b ./gcc/ada/i-fortra.ads
-2205213686b ./gcc/ada/impunit.adb
-3867557683b ./gcc/ada/impunit.ads
-1455106367b ./gcc/ada/init.c
-2729724075b ./gcc/ada/inline.adb
- 409617942b ./gcc/ada/inline.ads
-2710275605b ./gcc/ada/interfac.ads
- 304019218b ./gcc/ada/io-aux.c
- 182695114b ./gcc/ada/ioexcept.ads
-2660299838b ./gcc/ada/i-os2err.ads
-1001031450b ./gcc/ada/i-os2lib.adb
-3863909326b ./gcc/ada/i-os2lib.ads
-2629699505b ./gcc/ada/i-os2syn.ads
-2757162007b ./gcc/ada/i-os2thr.ads
- 10095810b ./gcc/ada/i-pacdec.adb
-4204365106b ./gcc/ada/i-pacdec.ads
-3730121014b ./gcc/ada/itypes.adb
-1791965281b ./gcc/ada/itypes.ads
-2079820695b ./gcc/ada/i-vxwork.ads
-1636222037b ./gcc/ada/krunch.adb
-3193149413b ./gcc/ada/krunch.ads
-3877739435b ./gcc/ada/lang-options.h
-2419758820b ./gcc/ada/lang-specs.h
- 731292528b ./gcc/ada/layout.adb
-2930468142b ./gcc/ada/layout.ads
-1029825782b ./gcc/ada/lib.adb
-1122008701b ./gcc/ada/lib.ads
-3615838165b ./gcc/ada/lib-list.adb
- 13730108b ./gcc/ada/lib-load.adb
-2583052213b ./gcc/ada/lib-load.ads
-1127145456b ./gcc/ada/lib-sort.adb
-1302172495b ./gcc/ada/lib-util.adb
-1970877184b ./gcc/ada/lib-util.ads
-1719338144b ./gcc/ada/lib-writ.adb
-3384492892b ./gcc/ada/lib-writ.ads
-1654030036b ./gcc/ada/lib-xref.adb
-2167962937b ./gcc/ada/lib-xref.ads
-3576767122b ./gcc/ada/link.c
-1382287720b ./gcc/ada/live.adb
- 241788297b ./gcc/ada/live.ads
-2349274909b ./gcc/ada/machcode.ads
-1702260548b ./gcc/ada/make.adb
-3505443302b ./gcc/ada/make.ads
- 82447397b ./gcc/ada/Makefile.adalib
-2651233511b ./gcc/ada/Makefile.in
-1732491936b ./gcc/ada/Make-lang.in
-2073972201b ./gcc/ada/makeusg.adb
-2946385998b ./gcc/ada/makeusg.ads
-1369191481b ./gcc/ada/math_lib.adb
-3431850830b ./gcc/ada/mdll.adb
-3403824619b ./gcc/ada/mdll.ads
- 63072210b ./gcc/ada/mdllfile.adb
-1377024247b ./gcc/ada/mdllfile.ads
- 271650509b ./gcc/ada/mdlltool.adb
-3822656791b ./gcc/ada/mdlltool.ads
-2562707248b ./gcc/ada/memroot.adb
-3394187078b ./gcc/ada/memroot.ads
-3285031453b ./gcc/ada/memtrack.adb
-2151760376b ./gcc/ada/misc.c
-2389340576b ./gcc/ada/mlib.adb
-3760284379b ./gcc/ada/mlib.ads
-3038778953b ./gcc/ada/mlib-fil.adb
-1806810212b ./gcc/ada/mlib-fil.ads
- 222091384b ./gcc/ada/mlib-prj.adb
-2968654783b ./gcc/ada/mlib-prj.ads
- 882896001b ./gcc/ada/mlib-tgt.adb
-3995257659b ./gcc/ada/mlib-tgt.ads
- 557486163b ./gcc/ada/mlib-utl.adb
-3132611148b ./gcc/ada/mlib-utl.ads
-2192832241b ./gcc/ada/namet.adb
-4115408171b ./gcc/ada/namet.ads
-1021113274b ./gcc/ada/namet.h
-2786583125b ./gcc/ada/nlists.adb
-3207616321b ./gcc/ada/nlists.ads
-4207230567b ./gcc/ada/nlists.h
-1668172920b ./gcc/ada/nmake.adb
-3530016949b ./gcc/ada/nmake.ads
- 810039548b ./gcc/ada/nmake.adt
- 603482997b ./gcc/ada/opt.adb
- 272528391b ./gcc/ada/opt.ads
- 757957959b ./gcc/ada/osint.adb
- 124998996b ./gcc/ada/osint.ads
-1444051127b ./gcc/ada/output.adb
-4192286483b ./gcc/ada/output.ads
- 667325059b ./gcc/ada/par.adb
- 890918457b ./gcc/ada/par.ads
- 286171607b ./gcc/ada/par-ch10.adb
- 82263454b ./gcc/ada/par-ch11.adb
- 977429014b ./gcc/ada/par-ch12.adb
-1605568863b ./gcc/ada/par-ch13.adb
-2759284176b ./gcc/ada/par-ch2.adb
-3744247741b ./gcc/ada/par-ch3.adb
-2502332261b ./gcc/ada/par-ch4.adb
-2508708623b ./gcc/ada/par-ch5.adb
-3460173897b ./gcc/ada/par-ch6.adb
-2558917702b ./gcc/ada/par-ch7.adb
-1991687801b ./gcc/ada/par-ch8.adb
-2902683544b ./gcc/ada/par-ch9.adb
-1736379569b ./gcc/ada/par-endh.adb
-2386370437b ./gcc/ada/par-labl.adb
-2191110385b ./gcc/ada/par-load.adb
-3989665290b ./gcc/ada/par-prag.adb
-2061902000b ./gcc/ada/par-sync.adb
-3034220935b ./gcc/ada/par-tchk.adb
- 435842982b ./gcc/ada/par-util.adb
-2681846287b ./gcc/ada/prj.adb
-2159508649b ./gcc/ada/prj.ads
- 769972278b ./gcc/ada/prj-attr.adb
-1517107046b ./gcc/ada/prj-attr.ads
-2579476649b ./gcc/ada/prj-com.adb
-4188434019b ./gcc/ada/prj-com.ads
-1445752564b ./gcc/ada/prj-dect.adb
-2054972414b ./gcc/ada/prj-dect.ads
-2978271615b ./gcc/ada/prj-env.adb
-3039443255b ./gcc/ada/prj-env.ads
-2914671733b ./gcc/ada/prj-ext.adb
-2463218682b ./gcc/ada/prj-ext.ads
-2361570952b ./gcc/ada/prj-nmsc.adb
-1462185546b ./gcc/ada/prj-nmsc.ads
-1324893907b ./gcc/ada/prj-pars.adb
-1278172108b ./gcc/ada/prj-pars.ads
-3627484519b ./gcc/ada/prj-part.adb
-3249280050b ./gcc/ada/prj-part.ads
-4152265411b ./gcc/ada/prj-proc.adb
-2864536023b ./gcc/ada/prj-proc.ads
-3885810048b ./gcc/ada/prj-strt.adb
- 463253586b ./gcc/ada/prj-strt.ads
-2752403718b ./gcc/ada/prj-tree.adb
-4172539515b ./gcc/ada/prj-tree.ads
- 195833379b ./gcc/ada/prj-util.adb
-2190751868b ./gcc/ada/prj-util.ads
-1173868787b ./gcc/ada/raise.c
- 137228817b ./gcc/ada/raise.h
-2480259783b ./gcc/ada/repinfo.adb
- 638755227b ./gcc/ada/repinfo.ads
-3072671705b ./gcc/ada/repinfo.h
-1399693331b ./gcc/ada/restrict.adb
-2826035214b ./gcc/ada/restrict.ads
-1958872377b ./gcc/ada/rident.ads
- 685615765b ./gcc/ada/rtsfind.adb
- 944636897b ./gcc/ada/rtsfind.ads
-2934207681b ./gcc/ada/s-addima.adb
-2921793700b ./gcc/ada/s-addima.ads
-3133788426b ./gcc/ada/s-arit64.adb
- 139066661b ./gcc/ada/s-arit64.ads
-2146399349b ./gcc/ada/s-assert.adb
-2467675233b ./gcc/ada/s-assert.ads
-2471473947b ./gcc/ada/s-asthan.adb
-1425755957b ./gcc/ada/s-asthan.ads
-3345093947b ./gcc/ada/s-atacco.adb
- 274791225b ./gcc/ada/s-atacco.ads
-1268162914b ./gcc/ada/s-auxdec.adb
-3265586513b ./gcc/ada/s-auxdec.ads
-1722353021b ./gcc/ada/s-bitops.adb
-2501304200b ./gcc/ada/s-bitops.ads
- 468056045b ./gcc/ada/scans.adb
- 815846534b ./gcc/ada/scans.ads
- 368971619b ./gcc/ada/s-chepoo.ads
-2107362337b ./gcc/ada/scn.adb
- 643548576b ./gcc/ada/scn.ads
-3089102575b ./gcc/ada/scn-nlit.adb
-4137585658b ./gcc/ada/scn-slit.adb
-2083911466b ./gcc/ada/s-crc32.adb
-3182978663b ./gcc/ada/s-crc32.ads
-1550561834b ./gcc/ada/sdefault.ads
- 353869099b ./gcc/ada/s-direio.adb
- 309988644b ./gcc/ada/s-direio.ads
-3951057432b ./gcc/ada/sem.adb
-1409686204b ./gcc/ada/sem.ads
- 666790856b ./gcc/ada/sem_aggr.adb
- 526541988b ./gcc/ada/sem_aggr.ads
-3591099921b ./gcc/ada/sem_attr.adb
-2192022517b ./gcc/ada/sem_attr.ads
-2483089446b ./gcc/ada/sem_case.adb
-1285698743b ./gcc/ada/sem_case.ads
-3650211808b ./gcc/ada/sem_cat.adb
-2960627583b ./gcc/ada/sem_cat.ads
-3310159843b ./gcc/ada/sem_ch10.adb
-1481985747b ./gcc/ada/sem_ch10.ads
-4010667392b ./gcc/ada/sem_ch11.adb
-1735222025b ./gcc/ada/sem_ch11.ads
- 248848194b ./gcc/ada/sem_ch12.adb
- 997879767b ./gcc/ada/sem_ch12.ads
-2493455042b ./gcc/ada/sem_ch13.adb
-3760013065b ./gcc/ada/sem_ch13.ads
-1035453033b ./gcc/ada/sem_ch2.adb
-2925796260b ./gcc/ada/sem_ch2.ads
- 256651025b ./gcc/ada/sem_ch3.adb
-3506394288b ./gcc/ada/sem_ch3.ads
-3342506445b ./gcc/ada/sem_ch4.adb
-3161721114b ./gcc/ada/sem_ch4.ads
- 425430463b ./gcc/ada/sem_ch5.adb
- 921448714b ./gcc/ada/sem_ch5.ads
-3940967835b ./gcc/ada/sem_ch6.adb
-3617379945b ./gcc/ada/sem_ch6.ads
- 806087534b ./gcc/ada/sem_ch7.adb
-2229285886b ./gcc/ada/sem_ch7.ads
-2675641382b ./gcc/ada/sem_ch8.adb
- 414296948b ./gcc/ada/sem_ch8.ads
-2226149000b ./gcc/ada/sem_ch9.adb
-2313393680b ./gcc/ada/sem_ch9.ads
-2789952266b ./gcc/ada/sem_disp.adb
-1522627489b ./gcc/ada/sem_disp.ads
- 705974316b ./gcc/ada/sem_dist.adb
-1442557709b ./gcc/ada/sem_dist.ads
-2065925155b ./gcc/ada/sem_elab.adb
- 618332011b ./gcc/ada/sem_elab.ads
-2796522258b ./gcc/ada/sem_elim.adb
-4083559357b ./gcc/ada/sem_elim.ads
-2582716150b ./gcc/ada/sem_eval.adb
-1067144441b ./gcc/ada/sem_eval.ads
-2566870177b ./gcc/ada/sem_intr.adb
-4270264978b ./gcc/ada/sem_intr.ads
- 626970173b ./gcc/ada/sem_maps.adb
-2624950393b ./gcc/ada/sem_maps.ads
-2004945865b ./gcc/ada/sem_mech.adb
- 727986888b ./gcc/ada/sem_mech.ads
- 211861215b ./gcc/ada/sem_prag.adb
- 692139933b ./gcc/ada/sem_prag.ads
-1680274646b ./gcc/ada/sem_res.adb
-4223338214b ./gcc/ada/sem_res.ads
-1966095667b ./gcc/ada/sem_smem.adb
-3543394119b ./gcc/ada/sem_smem.ads
- 54838574b ./gcc/ada/sem_type.adb
-1083645285b ./gcc/ada/sem_type.ads
-3315098834b ./gcc/ada/sem_util.adb
-3071381257b ./gcc/ada/sem_util.ads
- 512361512b ./gcc/ada/sem_vfpt.adb
-2796693707b ./gcc/ada/sem_vfpt.ads
-4155489467b ./gcc/ada/sem_warn.adb
-2670991982b ./gcc/ada/sem_warn.ads
-1802605744b ./gcc/ada/sequenio.ads
-2211683422b ./gcc/ada/s-errrep.adb
-1186812435b ./gcc/ada/s-errrep.ads
- 561621508b ./gcc/ada/s-except.ads
- 7350293b ./gcc/ada/s-exctab.adb
-1119186265b ./gcc/ada/s-exctab.ads
- 622864413b ./gcc/ada/s-exnflt.ads
-1352415346b ./gcc/ada/s-exngen.adb
-2596541002b ./gcc/ada/s-exngen.ads
-3390809287b ./gcc/ada/s-exnint.ads
-4092255620b ./gcc/ada/s-exnlfl.ads
-1474028514b ./gcc/ada/s-exnlin.ads
-3994054006b ./gcc/ada/s-exnllf.ads
-2680813188b ./gcc/ada/s-exnlli.ads
-1172996611b ./gcc/ada/s-exnsfl.ads
-2557413106b ./gcc/ada/s-exnsin.ads
-2820344349b ./gcc/ada/s-exnssi.ads
-4059331373b ./gcc/ada/s-expflt.ads
-3105649102b ./gcc/ada/s-expgen.adb
-4177327143b ./gcc/ada/s-expgen.ads
-2038272825b ./gcc/ada/s-expint.ads
-2921280512b ./gcc/ada/s-explfl.ads
-3409169717b ./gcc/ada/s-explin.ads
-1559471549b ./gcc/ada/s-expllf.ads
- 361819024b ./gcc/ada/s-explli.ads
-1136797591b ./gcc/ada/s-expllu.adb
-1070447422b ./gcc/ada/s-expllu.ads
-3783588084b ./gcc/ada/s-expmod.adb
-1306565465b ./gcc/ada/s-expmod.ads
-1935872355b ./gcc/ada/s-expsfl.ads
- 693874826b ./gcc/ada/s-expsin.ads
-3200711015b ./gcc/ada/s-expssi.ads
- 423463208b ./gcc/ada/s-expuns.adb
-1226202999b ./gcc/ada/s-expuns.ads
-3596082207b ./gcc/ada/s-fatflt.ads
- 152336698b ./gcc/ada/s-fatgen.adb
-3452704907b ./gcc/ada/s-fatgen.ads
- 518796998b ./gcc/ada/s-fatlfl.ads
- 177868014b ./gcc/ada/s-fatllf.ads
-1844976187b ./gcc/ada/s-fatsfl.ads
-2030917946b ./gcc/ada/s-ficobl.ads
-3604265630b ./gcc/ada/s-fileio.adb
-1245988519b ./gcc/ada/s-fileio.ads
-3998800077b ./gcc/ada/s-finimp.adb
- 348300428b ./gcc/ada/s-finimp.ads
-3256667434b ./gcc/ada/s-finroo.adb
-3539088082b ./gcc/ada/s-finroo.ads
-2389974990b ./gcc/ada/sfn_scan.adb
-2382113394b ./gcc/ada/sfn_scan.ads
-1543367984b ./gcc/ada/s-fore.adb
-2136160505b ./gcc/ada/s-fore.ads
-1724896850b ./gcc/ada/s-gloloc.adb
-2874263872b ./gcc/ada/s-gloloc.ads
-2576558599b ./gcc/ada/s-imgbiu.adb
- 485571853b ./gcc/ada/s-imgbiu.ads
-2696391467b ./gcc/ada/s-imgboo.adb
- 562529842b ./gcc/ada/s-imgboo.ads
-3469875082b ./gcc/ada/s-imgcha.adb
- 768667588b ./gcc/ada/s-imgcha.ads
- 891425892b ./gcc/ada/s-imgdec.adb
-3956162567b ./gcc/ada/s-imgdec.ads
- 799265416b ./gcc/ada/s-imgenu.adb
-3206640093b ./gcc/ada/s-imgenu.ads
-1232841808b ./gcc/ada/s-imgint.adb
-1884481077b ./gcc/ada/s-imgint.ads
-2589338037b ./gcc/ada/s-imgllb.adb
- 952054489b ./gcc/ada/s-imgllb.ads
-3511505943b ./gcc/ada/s-imglld.adb
-3728427327b ./gcc/ada/s-imglld.ads
- 710546980b ./gcc/ada/s-imglli.adb
-3496934828b ./gcc/ada/s-imglli.ads
-2026551128b ./gcc/ada/s-imgllu.adb
- 898533582b ./gcc/ada/s-imgllu.ads
-2093598044b ./gcc/ada/s-imgllw.adb
-1635490829b ./gcc/ada/s-imgllw.ads
- 771945696b ./gcc/ada/s-imgrea.adb
-3266140221b ./gcc/ada/s-imgrea.ads
- 783564063b ./gcc/ada/s-imguns.adb
- 550522958b ./gcc/ada/s-imguns.ads
-1103898200b ./gcc/ada/s-imgwch.adb
- 306032126b ./gcc/ada/s-imgwch.ads
-1632744438b ./gcc/ada/s-imgwiu.adb
-3186715504b ./gcc/ada/s-imgwiu.ads
-1405497043b ./gcc/ada/sinfo.adb
- 267608903b ./gcc/ada/sinfo.ads
-2547960021b ./gcc/ada/sinfo-cn.adb
- 528396316b ./gcc/ada/sinfo-cn.ads
-4211174202b ./gcc/ada/sinfo.h
-2491143860b ./gcc/ada/s-inmaop.ads
-3969757742b ./gcc/ada/sinput.adb
-2051669844b ./gcc/ada/sinput.ads
- 318075408b ./gcc/ada/sinput-l.adb
-4161724197b ./gcc/ada/sinput-l.ads
-2486137427b ./gcc/ada/sinput-p.adb
-4179659691b ./gcc/ada/sinput-p.ads
- 642329874b ./gcc/ada/s-interr.adb
-2363118667b ./gcc/ada/s-interr.ads
-3439464760b ./gcc/ada/s-intman.ads
-3081896815b ./gcc/ada/s-io.adb
-2704983298b ./gcc/ada/s-io.ads
-4266387665b ./gcc/ada/s-maccod.ads
- 697475233b ./gcc/ada/s-mantis.adb
-3382852588b ./gcc/ada/s-mantis.ads
-2497788184b ./gcc/ada/s-mastop.adb
- 412040989b ./gcc/ada/s-mastop.ads
-4056300803b ./gcc/ada/s-memory.adb
- 436917678b ./gcc/ada/s-memory.ads
-3972943832b ./gcc/ada/snames.adb
-2711732664b ./gcc/ada/snames.ads
- 95357118b ./gcc/ada/snames.h
- 915988587b ./gcc/ada/s-osprim.ads
-1785995040b ./gcc/ada/s-pack03.adb
-1159696143b ./gcc/ada/s-pack03.ads
-4006352481b ./gcc/ada/s-pack05.adb
- 943301033b ./gcc/ada/s-pack05.ads
-2948914699b ./gcc/ada/s-pack06.adb
-1761489706b ./gcc/ada/s-pack06.ads
-2460225886b ./gcc/ada/s-pack07.adb
-1527563558b ./gcc/ada/s-pack07.ads
-1020068514b ./gcc/ada/s-pack09.adb
-2851601610b ./gcc/ada/s-pack09.ads
-3981484000b ./gcc/ada/s-pack10.adb
-4110961926b ./gcc/ada/s-pack10.ads
-3243254137b ./gcc/ada/s-pack11.adb
- 650802763b ./gcc/ada/s-pack11.ads
-3544834485b ./gcc/ada/s-pack12.adb
-1524517676b ./gcc/ada/s-pack12.ads
-3174573638b ./gcc/ada/s-pack13.adb
-1859524441b ./gcc/ada/s-pack13.ads
-2439144266b ./gcc/ada/s-pack14.adb
- 34461279b ./gcc/ada/s-pack14.ads
- 964701959b ./gcc/ada/s-pack15.adb
-3069359215b ./gcc/ada/s-pack15.ads
-1172842552b ./gcc/ada/s-pack17.adb
-4277065085b ./gcc/ada/s-pack17.ads
- 355821236b ./gcc/ada/s-pack18.adb
- 667115373b ./gcc/ada/s-pack18.ads
-3951115204b ./gcc/ada/s-pack19.adb
-3721065538b ./gcc/ada/s-pack19.ads
-3968916188b ./gcc/ada/s-pack20.adb
-1519291685b ./gcc/ada/s-pack20.ads
-1677028498b ./gcc/ada/s-pack21.adb
-2507237065b ./gcc/ada/s-pack21.ads
-3532235913b ./gcc/ada/s-pack22.adb
-4116220687b ./gcc/ada/s-pack22.ads
- 530410413b ./gcc/ada/s-pack23.adb
-3714910171b ./gcc/ada/s-pack23.ads
-2426545782b ./gcc/ada/s-pack24.adb
-3730016048b ./gcc/ada/s-pack24.ads
-2602918636b ./gcc/ada/s-pack25.adb
- 88712429b ./gcc/ada/s-pack25.ads
-2931513379b ./gcc/ada/s-pack26.adb
-1904574746b ./gcc/ada/s-pack26.ads
-3880609235b ./gcc/ada/s-pack27.adb
-1297466879b ./gcc/ada/s-pack27.ads
- 351609736b ./gcc/ada/s-pack28.adb
-2286264142b ./gcc/ada/s-pack28.ads
-1227126319b ./gcc/ada/s-pack29.adb
-1852957888b ./gcc/ada/s-pack29.ads
-3962509768b ./gcc/ada/s-pack30.adb
-1072902852b ./gcc/ada/s-pack30.ads
-3032045044b ./gcc/ada/s-pack31.adb
-4226258615b ./gcc/ada/s-pack31.ads
-3369161419b ./gcc/ada/s-pack33.adb
-3019634597b ./gcc/ada/s-pack33.ads
-2417878370b ./gcc/ada/s-pack34.adb
-3140368593b ./gcc/ada/s-pack34.ads
-1281973130b ./gcc/ada/s-pack35.adb
-1809798291b ./gcc/ada/s-pack35.ads
-2919537463b ./gcc/ada/s-pack36.adb
- 351813371b ./gcc/ada/s-pack36.ads
- 805395637b ./gcc/ada/s-pack37.adb
- 599995777b ./gcc/ada/s-pack37.ads
- 340451484b ./gcc/ada/s-pack38.adb
-3979878575b ./gcc/ada/s-pack38.ads
-2657636169b ./gcc/ada/s-pack39.adb
- 15144126b ./gcc/ada/s-pack39.ads
-4010823844b ./gcc/ada/s-pack40.adb
-3740404514b ./gcc/ada/s-pack40.ads
-4258197765b ./gcc/ada/s-pack41.adb
- 695615884b ./gcc/ada/s-pack41.ads
-3507039985b ./gcc/ada/s-pack42.adb
-1898188040b ./gcc/ada/s-pack42.ads
-2175202874b ./gcc/ada/s-pack43.adb
-1634345118b ./gcc/ada/s-pack43.ads
-2468523022b ./gcc/ada/s-pack44.adb
-1513029943b ./gcc/ada/s-pack44.ads
- 85917563b ./gcc/ada/s-pack45.adb
-3108930472b ./gcc/ada/s-pack45.ads
-2906378843b ./gcc/ada/s-pack46.adb
-4126738205b ./gcc/ada/s-pack46.ads
-2037839940b ./gcc/ada/s-pack47.adb
-4048741050b ./gcc/ada/s-pack47.ads
- 393587184b ./gcc/ada/s-pack48.adb
- 205068617b ./gcc/ada/s-pack48.ads
-3609193400b ./gcc/ada/s-pack49.adb
-3530998661b ./gcc/ada/s-pack49.ads
-4021261232b ./gcc/ada/s-pack50.adb
-3146757315b ./gcc/ada/s-pack50.ads
- 713214051b ./gcc/ada/s-pack51.adb
-1205907954b ./gcc/ada/s-pack51.ads
-3518426597b ./gcc/ada/s-pack52.adb
- 341422825b ./gcc/ada/s-pack52.ads
-1458229084b ./gcc/ada/s-pack53.adb
- 268226784b ./gcc/ada/s-pack53.ads
-2476568346b ./gcc/ada/s-pack54.adb
-1062387414b ./gcc/ada/s-pack54.ads
-3528640029b ./gcc/ada/s-pack55.adb
-3621286870b ./gcc/ada/s-pack55.ads
-2911113551b ./gcc/ada/s-pack56.adb
-2424617212b ./gcc/ada/s-pack56.ads
-2923086114b ./gcc/ada/s-pack57.adb
-2680427204b ./gcc/ada/s-pack57.ads
- 399141604b ./gcc/ada/s-pack58.adb
-1766106792b ./gcc/ada/s-pack58.ads
- 5493470b ./gcc/ada/s-pack59.adb
-3168809979b ./gcc/ada/s-pack59.ads
-4000306828b ./gcc/ada/s-pack60.adb
- 336164064b ./gcc/ada/s-pack60.ads
-2284291464b ./gcc/ada/s-pack61.adb
-4099645808b ./gcc/ada/s-pack61.ads
-3497437401b ./gcc/ada/s-pack62.adb
-3151983306b ./gcc/ada/s-pack62.ads
-4098851511b ./gcc/ada/s-pack63.adb
-3158818914b ./gcc/ada/s-pack63.ads
-4185842302b ./gcc/ada/s-parame.adb
-1016134734b ./gcc/ada/s-parame.ads
-1616379944b ./gcc/ada/s-parint.adb
- 93334734b ./gcc/ada/s-parint.ads
- 985076593b ./gcc/ada/s-pooglo.adb
-3631327025b ./gcc/ada/s-pooglo.ads
-2411088466b ./gcc/ada/s-pooloc.adb
-1220335642b ./gcc/ada/s-pooloc.ads
-1276581093b ./gcc/ada/s-poosiz.adb
-2771854951b ./gcc/ada/s-poosiz.ads
-2369419157b ./gcc/ada/s-powtab.ads
-3261788857b ./gcc/ada/sprint.adb
-1590570499b ./gcc/ada/sprint.ads
-4071092937b ./gcc/ada/s-proinf.adb
- 416511513b ./gcc/ada/s-proinf.ads
-2266850977b ./gcc/ada/s-rpc.adb
-4275658188b ./gcc/ada/s-rpc.ads
-3513640423b ./gcc/ada/s-scaval.ads
-2621428416b ./gcc/ada/s-secsta.adb
-2345034983b ./gcc/ada/s-secsta.ads
-4240948929b ./gcc/ada/s-sequio.adb
- 382868367b ./gcc/ada/s-sequio.ads
-3744646875b ./gcc/ada/s-shasto.adb
-3750666269b ./gcc/ada/s-shasto.ads
-2184182802b ./gcc/ada/s-soflin.adb
-4106853306b ./gcc/ada/s-soflin.ads
-2959161428b ./gcc/ada/s-sopco3.adb
- 104891649b ./gcc/ada/s-sopco3.ads
-4175442594b ./gcc/ada/s-sopco4.adb
-3936975251b ./gcc/ada/s-sopco4.ads
- 291408130b ./gcc/ada/s-sopco5.adb
- 812118675b ./gcc/ada/s-sopco5.ads
-1796793007b ./gcc/ada/s-stache.adb
-2789527219b ./gcc/ada/s-stache.ads
-1537964372b ./gcc/ada/s-stalib.adb
-3115651505b ./gcc/ada/s-stalib.ads
- 432471810b ./gcc/ada/s-stoele.adb
-1360919545b ./gcc/ada/s-stoele.ads
-2052345399b ./gcc/ada/s-stopoo.ads
-1633760278b ./gcc/ada/s-stratt.adb
-1417791298b ./gcc/ada/s-stratt.ads
-1686965279b ./gcc/ada/s-strops.adb
-4252576344b ./gcc/ada/s-strops.ads
-2532586131b ./gcc/ada/s-taasde.adb
-2453532957b ./gcc/ada/s-taasde.ads
- 828130019b ./gcc/ada/s-tadeca.adb
-1076421306b ./gcc/ada/s-tadeca.ads
-1301221686b ./gcc/ada/s-tadert.adb
- 789036441b ./gcc/ada/s-tadert.ads
- 630027435b ./gcc/ada/s-taenca.adb
-2587539578b ./gcc/ada/s-taenca.ads
-4203205869b ./gcc/ada/stand.adb
-3916070949b ./gcc/ada/stand.ads
-2632590584b ./gcc/ada/s-taprob.adb
-4128031181b ./gcc/ada/s-taprob.ads
-1400440071b ./gcc/ada/s-taprop.ads
- 177921966b ./gcc/ada/s-tarest.adb
-4066847638b ./gcc/ada/s-tarest.ads
-1991438887b ./gcc/ada/s-tasdeb.adb
-2613803021b ./gcc/ada/s-tasdeb.ads
-4020918264b ./gcc/ada/s-tasinf.adb
-1668935870b ./gcc/ada/s-tasinf.ads
-2945140891b ./gcc/ada/s-tasini.adb
- 334920681b ./gcc/ada/s-tasini.ads
-1584664889b ./gcc/ada/s-taskin.adb
-1712940961b ./gcc/ada/s-taskin.ads
-1111738188b ./gcc/ada/s-tasque.adb
-3925582077b ./gcc/ada/s-tasque.ads
-3253689117b ./gcc/ada/s-tasren.adb
-3585675949b ./gcc/ada/s-tasren.ads
- 639180081b ./gcc/ada/s-tasres.ads
-2506382509b ./gcc/ada/s-tassta.adb
-1308608849b ./gcc/ada/s-tassta.ads
-2198255554b ./gcc/ada/s-tasuti.adb
-1251170994b ./gcc/ada/s-tasuti.ads
-2438615219b ./gcc/ada/s-tataat.adb
-2752485611b ./gcc/ada/s-tataat.ads
-3146825506b ./gcc/ada/s-tpinop.adb
-2392114437b ./gcc/ada/s-tpinop.ads
-1630989423b ./gcc/ada/s-tpoben.adb
-2974774482b ./gcc/ada/s-tpoben.ads
- 576942612b ./gcc/ada/s-tpobop.adb
- 348329523b ./gcc/ada/s-tpobop.ads
-4078482581b ./gcc/ada/s-tposen.adb
- 583641471b ./gcc/ada/s-tposen.ads
-1726319339b ./gcc/ada/s-traceb.adb
-2819123084b ./gcc/ada/s-traceb.ads
-3088644110b ./gcc/ada/stringt.adb
-3489928984b ./gcc/ada/stringt.ads
- 115966881b ./gcc/ada/stringt.h
-1519917575b ./gcc/ada/style.adb
-2363652095b ./gcc/ada/style.ads
- 941550211b ./gcc/ada/stylesw.adb
- 300221687b ./gcc/ada/stylesw.ads
-2238856213b ./gcc/ada/s-unstyp.ads
- 383705502b ./gcc/ada/s-vaflop.adb
-3525840106b ./gcc/ada/s-vaflop.ads
-3777456120b ./gcc/ada/s-valboo.adb
- 823783850b ./gcc/ada/s-valboo.ads
-2182323653b ./gcc/ada/s-valcha.adb
-3984994262b ./gcc/ada/s-valcha.ads
-2486462063b ./gcc/ada/s-valdec.adb
-3078507172b ./gcc/ada/s-valdec.ads
-4035209494b ./gcc/ada/s-valenu.adb
-3348402059b ./gcc/ada/s-valenu.ads
-3233347202b ./gcc/ada/s-valint.adb
- 809353895b ./gcc/ada/s-valint.ads
-1624092680b ./gcc/ada/s-vallld.adb
-2769897228b ./gcc/ada/s-vallld.ads
-3744656291b ./gcc/ada/s-vallli.adb
-3279109387b ./gcc/ada/s-vallli.ads
-1459947133b ./gcc/ada/s-valllu.adb
- 585018696b ./gcc/ada/s-valllu.ads
- 764594178b ./gcc/ada/s-valrea.adb
-1720102121b ./gcc/ada/s-valrea.ads
- 532716097b ./gcc/ada/s-valuns.adb
-1244197250b ./gcc/ada/s-valuns.ads
- 852079584b ./gcc/ada/s-valuti.adb
- 738175561b ./gcc/ada/s-valuti.ads
- 8578713b ./gcc/ada/s-valwch.adb
-1511491362b ./gcc/ada/s-valwch.ads
-2493998789b ./gcc/ada/s-vercon.adb
- 76755328b ./gcc/ada/s-vercon.ads
-4202237657b ./gcc/ada/s-vmexta.adb
-4131737075b ./gcc/ada/s-vmexta.ads
-3071200887b ./gcc/ada/s-wchcnv.adb
-4248746072b ./gcc/ada/s-wchcnv.ads
-1113131496b ./gcc/ada/s-wchcon.ads
- 13946560b ./gcc/ada/s-wchjis.adb
-2260481846b ./gcc/ada/s-wchjis.ads
-1448393887b ./gcc/ada/s-wchstw.adb
-1559813388b ./gcc/ada/s-wchstw.ads
-3747078028b ./gcc/ada/s-wchwts.adb
-3218956526b ./gcc/ada/s-wchwts.ads
-2111277990b ./gcc/ada/s-widboo.adb
-3292895124b ./gcc/ada/s-widboo.ads
-1836742483b ./gcc/ada/s-widcha.adb
-3867876244b ./gcc/ada/s-widcha.ads
-1034537775b ./gcc/ada/s-widenu.adb
- 847743074b ./gcc/ada/s-widenu.ads
-1845615445b ./gcc/ada/s-widlli.adb
-2364218579b ./gcc/ada/s-widlli.ads
- 248576485b ./gcc/ada/s-widllu.adb
-2854689029b ./gcc/ada/s-widllu.ads
-2511495067b ./gcc/ada/s-widwch.adb
-3401797070b ./gcc/ada/s-widwch.ads
- 27582413b ./gcc/ada/switch.adb
-1598342278b ./gcc/ada/switch.ads
-3528609494b ./gcc/ada/s-wwdcha.adb
- 586285622b ./gcc/ada/s-wwdcha.ads
-2810367382b ./gcc/ada/s-wwdenu.adb
-4200440603b ./gcc/ada/s-wwdenu.ads
-1874741026b ./gcc/ada/s-wwdwch.adb
-3321650370b ./gcc/ada/s-wwdwch.ads
-4244182023b ./gcc/ada/sysdep.c
-1119298405b ./gcc/ada/system.ads
-3848197813b ./gcc/ada/table.adb
-3687590744b ./gcc/ada/table.ads
-1109639380b ./gcc/ada/targparm.adb
-1825795995b ./gcc/ada/targparm.ads
-1202794553b ./gcc/ada/targtyps.c
-1356345663b ./gcc/ada/tbuild.adb
-1858742811b ./gcc/ada/tbuild.ads
- 75780159b ./gcc/ada/text_io.ads
- 360994578b ./gcc/ada/tracebak.c
-2571992805b ./gcc/ada/trans.c
-1966951634b ./gcc/ada/tree_gen.adb
-3159530633b ./gcc/ada/tree_gen.ads
-2530728701b ./gcc/ada/tree_in.adb
-2711628455b ./gcc/ada/tree_in.ads
- 838934979b ./gcc/ada/tree_io.adb
- 752324076b ./gcc/ada/tree_io.ads
-3859295957b ./gcc/ada/treepr.adb
-2456186617b ./gcc/ada/treepr.ads
-1911577299b ./gcc/ada/treeprs.ads
-1276512398b ./gcc/ada/treeprs.adt
-4263888685b ./gcc/ada/ttypef.ads
-3874309715b ./gcc/ada/ttypes.ads
-1369397640b ./gcc/ada/types.adb
-4024957899b ./gcc/ada/types.ads
-1402875333b ./gcc/ada/types.h
- 981400444b ./gcc/ada/ug_words
- 259981028b ./gcc/ada/uintp.adb
-1501595103b ./gcc/ada/uintp.ads
-2726784320b ./gcc/ada/uintp.h
-1168757069b ./gcc/ada/uname.adb
-3887027289b ./gcc/ada/uname.ads
-2682664197b ./gcc/ada/unchconv.ads
- 906261077b ./gcc/ada/unchdeal.ads
-1146813221b ./gcc/ada/urealp.adb
-3019307290b ./gcc/ada/urealp.ads
-2098404567b ./gcc/ada/urealp.h
-3991257953b ./gcc/ada/usage.adb
- 876425940b ./gcc/ada/usage.ads
-3098691088b ./gcc/ada/utils2.c
- 35898743b ./gcc/ada/utils.c
-2206670030b ./gcc/ada/validsw.adb
-2813759673b ./gcc/ada/validsw.ads
-3183449725b ./gcc/ada/widechar.adb
-1939896965b ./gcc/ada/widechar.ads
-4107540872b ./gcc/ada/xeinfo.adb
- 208322693b ./gcc/ada/xgnatug.adb
- 5897144b ./gcc/ada/xnmake.adb
-3670337130b ./gcc/ada/xref_lib.adb
-4020137442b ./gcc/ada/xref_lib.ads
-3378631066b ./gcc/ada/xr_tabls.adb
-3872099053b ./gcc/ada/xr_tabls.ads
-1408035530b ./gcc/ada/xsinfo.adb
-1441973181b ./gcc/ada/xsnames.adb
- 579454790b ./gcc/ada/xtreeprs.adb
- 790330640b ./gcc/alias.c
-1031959714b ./gcc/attribs.c
-2742514573b ./gcc/basic-block.h
- 534677057b ./gcc/bb-reorder.c
- 518972076b ./gcc/bitmap.c
- 477755928b ./gcc/bitmap.h
- 540939972b ./gcc/builtin-attrs.def
-2448248820b ./gcc/builtins.c
-2454689977b ./gcc/builtins.def
-3361511841b ./gcc/builtin-types.def
-4196427447b ./gcc/caller-save.c
-1802334908b ./gcc/calls.c
- 420541423b ./gcc/c-aux-info.c
-1073499624b ./gcc/c-common.c
-2096270511b ./gcc/c-common.def
-3764400561b ./gcc/c-common.h
-1317742909b ./gcc/c-convert.c
-1025902837b ./gcc/c-decl.c
- 487899684b ./gcc/c-errors.c
-2570808086b ./gcc/cfganal.c
-1964748151b ./gcc/cfgbuild.c
-2908854975b ./gcc/cfg.c
- 822237739b ./gcc/cfgcleanup.c
-1219429812b ./gcc/cfglayout.c
-1858346793b ./gcc/cfglayout.h
-3236894730b ./gcc/cfgloop.c
-2041391494b ./gcc/cfgrtl.c
-2243757094b ./gcc/c-format.c
-2870572971b ./gcc/ChangeLog
-1398127668b ./gcc/ChangeLog.0
-2827765101b ./gcc/ChangeLog.1
-1199055802b ./gcc/ChangeLog.2
-2924329613b ./gcc/ChangeLog.3
- 164761891b ./gcc/ChangeLog.4
-1481898300b ./gcc/ChangeLog.5
-2613464808b ./gcc/ChangeLog.6
-3235050590b ./gcc/ChangeLog.lib
-1985388077b ./gcc/c-lang.c
- 382517507b ./gcc/c-lex.c
- 835686435b ./gcc/c-lex.h
-1191094530b ./gcc/c-objc-common.c
-1806916686b ./gcc/collect2.c
- 653998699b ./gcc/collect2.h
-2586036597b ./gcc/combine.c
-4122382037b ./gcc/conditions.h
- 525821919b ./gcc/config/1750a/1750a.c
-2195664858b ./gcc/config/1750a/1750a.h
-3089740443b ./gcc/config/1750a/1750a.md
-3356933371b ./gcc/config/1750a/1750a-protos.h
-2477730384b ./gcc/config/1750a/ms1750.inc
-4248885141b ./gcc/config/a29k/a29k.c
-1800382809b ./gcc/config/a29k/a29k.h
-1270050344b ./gcc/config/a29k/a29k.md
- 820188974b ./gcc/config/a29k/a29k-protos.h
-1083391793b ./gcc/config/a29k/rtems.h
- 696851807b ./gcc/config/a29k/t-a29kbare
-2585873370b ./gcc/config/a29k/t-vx29k
-1544651385b ./gcc/config/a29k/unix.h
-3167234709b ./gcc/config/a29k/vx29k.h
-3915788506b ./gcc/config/alpha/alpha32.h
- 830149807b ./gcc/config/alpha/alpha.c
-2486755494b ./gcc/config/alpha/alpha.h
-1076515812b ./gcc/config/alpha/alpha-interix.h
-1955091231b ./gcc/config/alpha/alpha.md
-4085134134b ./gcc/config/alpha/alpha-protos.h
-1407988137b ./gcc/config/alpha/crtfastmath.c
- 221364934b ./gcc/config/alpha/elf.h
- 611485563b ./gcc/config/alpha/freebsd.h
-2998860143b ./gcc/config/alpha/lib1funcs.asm
-1763018017b ./gcc/config/alpha/linux-ecoff.h
- 37916839b ./gcc/config/alpha/linux-elf.h
-3901756355b ./gcc/config/alpha/linux.h
-1830150315b ./gcc/config/alpha/netbsd.h
- 156117508b ./gcc/config/alpha/openbsd.h
-1792826440b ./gcc/config/alpha/osf12.h
-3744703656b ./gcc/config/alpha/osf2or3.h
-2776242025b ./gcc/config/alpha/osf5.h
-2313475776b ./gcc/config/alpha/osf.h
-1190572001b ./gcc/config/alpha/qrnnd.asm
-2672344824b ./gcc/config/alpha/t-alpha
-1949254250b ./gcc/config/alpha/t-crtfm
-3084092578b ./gcc/config/alpha/t-ieee
-3884780449b ./gcc/config/alpha/t-interix
-4208963116b ./gcc/config/alpha/t-osf4
-1191509594b ./gcc/config/alpha/t-unicosmk
-1694999122b ./gcc/config/alpha/t-vms
-3342100479b ./gcc/config/alpha/t-vms64
-3395550504b ./gcc/config/alpha/unicosmk.h
-2817356982b ./gcc/config/alpha/va_list.h
-2920918174b ./gcc/config/alpha/vms64.h
-3118436884b ./gcc/config/alpha/vms-cc.c
-2784080362b ./gcc/config/alpha/vms-crt0-64.c
- 92885822b ./gcc/config/alpha/vms-crt0.c
-3572749067b ./gcc/config/alpha/vms-dwarf2.asm
-3031921581b ./gcc/config/alpha/vms-dwarf2eh.asm
- 923619902b ./gcc/config/alpha/vms.h
-2333112991b ./gcc/config/alpha/vms-ld.c
- 664285780b ./gcc/config/alpha/vms-psxcrt0-64.c
-1499899963b ./gcc/config/alpha/vms-psxcrt0.c
-1497613985b ./gcc/config/alpha/vms_tramp.asm
- 985208816b ./gcc/config/alpha/vxworks.h
-1631226706b ./gcc/config/alpha/xm-alpha-interix.h
-2164887597b ./gcc/config/alpha/xm-vms64.h
-1813891070b ./gcc/config/alpha/xm-vms.h
-1756604664b ./gcc/config/alpha/x-vms
- 662120966b ./gcc/config/aoutos.h
-3700366341b ./gcc/config/arc/arc.c
-2300457202b ./gcc/config/arc/arc.h
-2348200471b ./gcc/config/arc/arc.md
-1916903876b ./gcc/config/arc/arc-protos.h
-2242623574b ./gcc/config/arc/initfini.c
-4224412506b ./gcc/config/arc/lib1funcs.asm
-2135297695b ./gcc/config/arc/t-arc
-2672724137b ./gcc/config/arm/aof.h
- 754089758b ./gcc/config/arm/aout.h
- 968318223b ./gcc/config/arm/arm.c
-2386488705b ./gcc/config/arm/arm.h
-2864793753b ./gcc/config/arm/arm.md
-2355527864b ./gcc/config/arm/arm-protos.h
- 478450204b ./gcc/config/arm/arm-wince-pe.h
- 531784060b ./gcc/config/arm/coff.h
-3968543328b ./gcc/config/arm/conix-elf.h
-2901180917b ./gcc/config/arm/crti.asm
-2281461647b ./gcc/config/arm/crtn.asm
-4281626291b ./gcc/config/arm/ecos-elf.h
-3143079784b ./gcc/config/arm/elf.h
-1564985594b ./gcc/config/arm/freebsd.h
-3355567723b ./gcc/config/arm/lib1funcs.asm
-1770982396b ./gcc/config/arm/linux-elf.h
-2890656711b ./gcc/config/arm/linux-gas.h
-3050794234b ./gcc/config/arm/netbsd.h
-3970353953b ./gcc/config/arm/pe.c
- 581802105b ./gcc/config/arm/pe.h
-2885119589b ./gcc/config/arm/README-interworking
-2367073445b ./gcc/config/arm/riscix1-1.h
-3068021852b ./gcc/config/arm/riscix.h
-3648344095b ./gcc/config/arm/rix-gas.h
-3970258112b ./gcc/config/arm/rtems-elf.h
-3108552778b ./gcc/config/arm/semiaof.h
-2419470702b ./gcc/config/arm/semi.h
-1676744073b ./gcc/config/arm/strongarm-coff.h
-2572947596b ./gcc/config/arm/strongarm-elf.h
-4084147202b ./gcc/config/arm/strongarm-pe.h
-1225127474b ./gcc/config/arm/t-arm-aout
-1432575844b ./gcc/config/arm/t-arm-coff
-3068297759b ./gcc/config/arm/t-arm-elf
-2454749767b ./gcc/config/arm/t-linux
- 849756574b ./gcc/config/arm/t-netbsd
-1171746127b ./gcc/config/arm/t-pe
-3531598494b ./gcc/config/arm/t-riscix
-1572194130b ./gcc/config/arm/t-semi
-3145229981b ./gcc/config/arm/t-strongarm-coff
- 358695252b ./gcc/config/arm/t-strongarm-elf
-2389193190b ./gcc/config/arm/t-strongarm-pe
-3941249553b ./gcc/config/arm/t-xscale-coff
-4238855457b ./gcc/config/arm/t-xscale-elf
-3331622085b ./gcc/config/arm/uclinux-elf.h
- 169320906b ./gcc/config/arm/unknown-elf.h
-3664576446b ./gcc/config/arm/unknown-elf-oabi.h
-4086326841b ./gcc/config/arm/vxarm.h
-2632983487b ./gcc/config/arm/xscale-coff.h
-2366951282b ./gcc/config/arm/xscale-elf.h
-2474041656b ./gcc/config/avr/avr.c
-3254145940b ./gcc/config/avr/avr.h
-4276324027b ./gcc/config/avr/avr.md
- 567694740b ./gcc/config/avr/avr-protos.h
-1853285406b ./gcc/config/avr/libgcc.S
-3040444126b ./gcc/config/avr/t-avr
- 487323483b ./gcc/config/c4x/c4x.c
-1272252374b ./gcc/config/c4x/c4x-c.c
-4149345821b ./gcc/config/c4x/c4x.h
-2240751934b ./gcc/config/c4x/c4x.md
-4161503224b ./gcc/config/c4x/c4x-protos.h
-1473970252b ./gcc/config/c4x/libgcc.S
-3126919437b ./gcc/config/c4x/rtems.h
-1848402932b ./gcc/config/c4x/t-c4x
-2216814105b ./gcc/config/chorus.h
-2064231953b ./gcc/config/clipper/clipper.c
-4145616021b ./gcc/config/clipper/clipper.h
- 28615455b ./gcc/config/clipper/clipper.md
-3381447812b ./gcc/config/clipper/clipper-protos.h
- 319322158b ./gcc/config/clipper/clix.h
-3677219838b ./gcc/config/convex/convex.c
- 597637161b ./gcc/config/convex/convex.h
- 462857671b ./gcc/config/convex/convex.md
-2941206894b ./gcc/config/convex/convex-protos.h
- 384964748b ./gcc/config/convex/fixinc.convex
-2576905081b ./gcc/config/convex/proto.h
-2561716856b ./gcc/config/cris/aout.h
-2531765543b ./gcc/config/cris/arit.c
-4228128527b ./gcc/config/cris/cris_abi_symbol.c
- 937590356b ./gcc/config/cris/cris.c
-1846933412b ./gcc/config/cris/cris.h
-3975834409b ./gcc/config/cris/cris.md
-2623962717b ./gcc/config/cris/cris-protos.h
-2550031006b ./gcc/config/cris/linux.h
- 907689569b ./gcc/config/cris/mulsi3.asm
- 45521295b ./gcc/config/cris/t-aout
- 874481385b ./gcc/config/cris/t-cris
-2080407099b ./gcc/config/cris/t-elfmulti
-1112852607b ./gcc/config/cris/t-linux
-3834330727b ./gcc/config/d30v/abi
- 349365251b ./gcc/config/d30v/d30v.c
- 5113978b ./gcc/config/d30v/d30v.h
-3430463305b ./gcc/config/d30v/d30v.md
-3966607018b ./gcc/config/d30v/d30v-protos.h
-1512688016b ./gcc/config/d30v/libgcc1.asm
-2120255627b ./gcc/config/d30v/t-d30v
-2411222628b ./gcc/config/darwin.c
-2176622144b ./gcc/config/darwin-c.c
-2796646825b ./gcc/config/darwin.h
-1469496228b ./gcc/config/darwin-protos.h
-2118339989b ./gcc/config/dbxcoff.h
-2470898471b ./gcc/config/dbxelf.h
- 186717254b ./gcc/config/dbx.h
-4083711028b ./gcc/config/divmod.c
-1337751109b ./gcc/config/dsp16xx/dsp16xx.c
- 508710765b ./gcc/config/dsp16xx/dsp16xx.h
- 273715633b ./gcc/config/dsp16xx/dsp16xx.md
-3807169411b ./gcc/config/dsp16xx/dsp16xx-protos.h
-1123139357b ./gcc/config/elfos.h
-2583638380b ./gcc/config/elxsi/elxsi.c
-1846962457b ./gcc/config/elxsi/elxsi.h
-1729380348b ./gcc/config/elxsi/elxsi.md
-1622698848b ./gcc/config/elxsi/elxsi-protos.h
-2520622557b ./gcc/config/float-c4x.h
- 36687624b ./gcc/config/float-i128.h
-2077185169b ./gcc/config/float-i32.h
- 751904614b ./gcc/config/float-i386.h
- 466751418b ./gcc/config/float-i64.h
-2601002892b ./gcc/config/float-m68k.h
-1084189067b ./gcc/config/float-sh.h
-2134536939b ./gcc/config/float-sparc.h
- 766947524b ./gcc/config/float-vax.h
-2162319998b ./gcc/config/fp-bit.c
-3844459473b ./gcc/config/fp-bit.h
-2304723625b ./gcc/config/fr30/crti.asm
-2025473533b ./gcc/config/fr30/crtn.asm
-3792879472b ./gcc/config/fr30/fr30.c
- 869213712b ./gcc/config/fr30/fr30.h
-4172871396b ./gcc/config/fr30/fr30.md
-4061935745b ./gcc/config/fr30/fr30-protos.h
-2734319269b ./gcc/config/fr30/lib1funcs.asm
-3068633205b ./gcc/config/fr30/t-fr30
-3857422654b ./gcc/config/freebsd3.h
-2210711654b ./gcc/config/freebsd4.h
-1531797731b ./gcc/config/freebsd5.h
-3920011053b ./gcc/config/freebsd6.h
- 22917470b ./gcc/config/freebsd.h
-3532526787b ./gcc/config/freebsd-nthr.h
-3508760161b ./gcc/config/freebsd-spec.h
-3290013183b ./gcc/config.gcc
-3236013445b ./gcc/config/gnu.h
- 269492728b ./gcc/config/gofast.h
-1315260558b ./gcc/config.guess
-3397297833b ./gcc/config/h8300/crti.asm
-3919963794b ./gcc/config/h8300/crtn.asm
-3512988181b ./gcc/config/h8300/elf.h
-3407042493b ./gcc/config/h8300/fixunssfsi.c
-3423866381b ./gcc/config/h8300/h8300.c
-1422146659b ./gcc/config/h8300/h8300.h
- 311961515b ./gcc/config/h8300/h8300.md
-1292256972b ./gcc/config/h8300/h8300-protos.h
-2991149153b ./gcc/config/h8300/lib1funcs.asm
-2198420981b ./gcc/config/h8300/rtems.h
-2094865057b ./gcc/config/h8300/t-elf
- 85067832b ./gcc/config/h8300/t-h8300
-3470805473b ./gcc/config/i370/i370.c
- 979765873b ./gcc/config/i370/i370-c.c
-3238258803b ./gcc/config/i370/i370.h
-4214408308b ./gcc/config/i370/i370.md
-1981911754b ./gcc/config/i370/i370-protos.h
-1433729913b ./gcc/config/i370/linux.h
-1044154955b ./gcc/config/i370/mvs.h
-3630097967b ./gcc/config/i370/oe.h
-2187046003b ./gcc/config/i370/README
-1023365638b ./gcc/config/i370/t-i370
-1100145942b ./gcc/config/i370/t-oe
-3856846943b ./gcc/config/i386/386bsd.h
-3990721733b ./gcc/config/i386/aix386.h
- 757618460b ./gcc/config/i386/aix386ng.h
-3049279797b ./gcc/config/i386/att.h
-1685915522b ./gcc/config/i386/beos-elf.h
- 778550489b ./gcc/config/i386/biarch64.h
- 118206770b ./gcc/config/i386/bsd386.h
-2349519740b ./gcc/config/i386/bsd.h
- 105502713b ./gcc/config/i386/crtdll.h
-4293145615b ./gcc/config/i386/cygwin.asm
-2449448955b ./gcc/config/i386/cygwin.h
-3582951454b ./gcc/config/i386/dgux.h
-1419143807b ./gcc/config/i386/djgpp.h
-2694509274b ./gcc/config/i386/djgpp-rtems.h
-3516447755b ./gcc/config/i386/freebsd64.h
-1128409449b ./gcc/config/i386/freebsd-aout.h
- 149642195b ./gcc/config/i386/freebsd.h
- 872852389b ./gcc/config/i386/gas.h
-4266288971b ./gcc/config/i386/gmon-sol2.c
- 915598536b ./gcc/config/i386/gnu.h
- 166489147b ./gcc/config/i386/gstabs.h
-1725036574b ./gcc/config/i386/i386-aout.h
-2087644841b ./gcc/config/i386/i386.c
-4168545992b ./gcc/config/i386/i386-coff.h
-2017248418b ./gcc/config/i386/i386elf.h
- 126280949b ./gcc/config/i386/i386.h
- 721929446b ./gcc/config/i386/i386-interix3.h
-1321445318b ./gcc/config/i386/i386-interix.h
-1643637147b ./gcc/config/i386/i386.md
-2589129574b ./gcc/config/i386/i386-protos.h
-1164740130b ./gcc/config/i386/interix.c
-1996803131b ./gcc/config/i386/isccoff.h
-1692083111b ./gcc/config/i386/iscdbx.h
-3908393755b ./gcc/config/i386/isc.h
- 877642037b ./gcc/config/i386/libgcc-x86_64-glibc.ver
-1758822745b ./gcc/config/i386/linux64.h
-2999558891b ./gcc/config/i386/linux-aout.h
-2801664794b ./gcc/config/i386/linux.h
-2799520524b ./gcc/config/i386/linux-oldld.h
- 372710545b ./gcc/config/i386/lynx.h
- 83628421b ./gcc/config/i386/lynx-ng.h
-4206477894b ./gcc/config/i386/mach.h
-3763689293b ./gcc/config/i386/mingw32.h
-3851444052b ./gcc/config/i386/mmintrin.h
-3361545892b ./gcc/config/i386/moss.h
-2015644945b ./gcc/config/i386/netbsd64.h
- 527360119b ./gcc/config/i386/netbsd-elf.h
-4276805615b ./gcc/config/i386/netbsd.h
-2351965586b ./gcc/config/i386/netware.h
-3059925901b ./gcc/config/i386/next.h
- 903611773b ./gcc/config/i386/openbsd.h
-2999570618b ./gcc/config/i386/osf1-ci.asm
-2303041887b ./gcc/config/i386/osf1-cn.asm
-3979872455b ./gcc/config/i386/osf1elfgdb.h
-1710286781b ./gcc/config/i386/osf1elf.h
-3128347339b ./gcc/config/i386/osfelf.h
-4023690019b ./gcc/config/i386/osfrose.h
-4166685458b ./gcc/config/i386/ptx4-i.h
-3397896458b ./gcc/config/i386/rtemself.h
-3754059204b ./gcc/config/i386/rtems.h
-3691307729b ./gcc/config/i386/sco5.h
-3439848366b ./gcc/config/i386/seq2-sysv3.h
-2517904468b ./gcc/config/i386/seq-gas.h
-2376826274b ./gcc/config/i386/seq-sysv3.h
-1460292009b ./gcc/config/i386/sequent.h
- 425477609b ./gcc/config/i386/sol2-c1.asm
-1565106149b ./gcc/config/i386/sol2-ci.asm
-4008317666b ./gcc/config/i386/sol2-cn.asm
-3870175252b ./gcc/config/i386/sol2gas.h
-2045686122b ./gcc/config/i386/sol2-gc1.asm
- 293602449b ./gcc/config/i386/sol2.h
-3471554836b ./gcc/config/i386/sun386.h
-4009223163b ./gcc/config/i386/sun.h
-2138673972b ./gcc/config/i386/svr3dbx.h
-1965747476b ./gcc/config/i386/svr3gas.h
-3846064431b ./gcc/config/i386/svr3.ifile
-1523044645b ./gcc/config/i386/svr3z.ifile
-3848105951b ./gcc/config/i386/sysv3.h
-1594728867b ./gcc/config/i386/sysv4.h
-1357982390b ./gcc/config/i386/sysv5.h
-3914733738b ./gcc/config/i386/t-beos
-2437302600b ./gcc/config/i386/t-crtpic
-2246944266b ./gcc/config/i386/t-crtstuff
-3093621951b ./gcc/config/i386/t-cygwin
-2054288148b ./gcc/config/i386/t-dgux
-2902972689b ./gcc/config/i386/t-djgpp
- 537671296b ./gcc/config/i386/t-i386elf
-1614388594b ./gcc/config/i386/t-interix
- 196644080b ./gcc/config/i386/t-linux64
-4056914306b ./gcc/config/i386/t-mingw32
- 92801654b ./gcc/config/i386/t-netware
-1960948471b ./gcc/config/i386/t-next
- 709063989b ./gcc/config/i386/t-openbsd
-1186749595b ./gcc/config/i386/t-osf
-1520459705b ./gcc/config/i386/t-osf1elf
- 422823583b ./gcc/config/i386/t-rtems-i386
-1649755892b ./gcc/config/i386/t-sco5
-1824758327b ./gcc/config/i386/t-sco5gas
-2786912378b ./gcc/config/i386/t-sol2
-3128852740b ./gcc/config/i386/t-svr3dbx
-2977164768b ./gcc/config/i386/t-udk
-1023926647b ./gcc/config/i386/t-uwin
-1775100101b ./gcc/config/i386/udk.h
-3838506178b ./gcc/config/i386/unix.h
-2798938994b ./gcc/config/i386/uwin.asm
-4142598938b ./gcc/config/i386/uwin.h
-1148022895b ./gcc/config/i386/v3gas.h
-1621915956b ./gcc/config/i386/vsta.h
- 57307462b ./gcc/config/i386/vxi386.h
-3423798645b ./gcc/config/i386/win32.h
-1200967744b ./gcc/config/i386/winnt.c
-2420589009b ./gcc/config/i386/x86-64.h
-1690208514b ./gcc/config/i386/xm-cygwin.h
-3902343879b ./gcc/config/i386/xm-djgpp.h
-3631826497b ./gcc/config/i386/xm-i386-interix.h
- 92688945b ./gcc/config/i386/xm-mingw32.h
-2085781748b ./gcc/config/i386/xmmintrin.h
-1404515293b ./gcc/config/i386/xm-vsta.h
-2229503331b ./gcc/config/i860/bsd-gas.h
-3105781024b ./gcc/config/i860/bsd.h
-1997415443b ./gcc/config/i860/fx2800.h
-4081368347b ./gcc/config/i860/i860.c
- 718661732b ./gcc/config/i860/i860.h
-2940070083b ./gcc/config/i860/i860.md
-1479219352b ./gcc/config/i860/i860-protos.h
-3806449409b ./gcc/config/i860/mach.h
-3225474743b ./gcc/config/i860/paragon.h
-3497246692b ./gcc/config/i860/sysv3.h
-1181281122b ./gcc/config/i860/sysv4.h
- 269024431b ./gcc/config/i860/t-fx2800
-1835110220b ./gcc/config/i860/varargs.asm
- 736082089b ./gcc/config/i960/i960.c
- 648677105b ./gcc/config/i960/i960-c.c
-3384279950b ./gcc/config/i960/i960-coff.h
-3931238913b ./gcc/config/i960/i960.h
-2800981685b ./gcc/config/i960/i960.md
-3598295769b ./gcc/config/i960/i960-protos.h
-1281966645b ./gcc/config/i960/rtems.h
-2036399646b ./gcc/config/i960/t-960bare
- 703563677b ./gcc/config/i960/t-vxworks960
-3103531078b ./gcc/config/i960/vx960-coff.h
-1895495318b ./gcc/config/i960/vx960.h
-1007852506b ./gcc/config/ia64/aix.h
-1057225417b ./gcc/config/ia64/crtbegin.asm
-2515543842b ./gcc/config/ia64/crtend.asm
- 281392077b ./gcc/config/ia64/crtfastmath.c
-3128441059b ./gcc/config/ia64/crti.asm
-3161585686b ./gcc/config/ia64/crtn.asm
-2297508797b ./gcc/config/ia64/elf.h
-2446839914b ./gcc/config/ia64/fde-glibc.c
-2501046378b ./gcc/config/ia64/freebsd.h
-2423115826b ./gcc/config/ia64/hpux.h
-3320865692b ./gcc/config/ia64/hpux_longdouble.h
-2150614374b ./gcc/config/ia64/ia64.c
- 160446917b ./gcc/config/ia64/ia64.h
- 511545686b ./gcc/config/ia64/ia64intrin.h
-1143291289b ./gcc/config/ia64/ia64.md
-2354458740b ./gcc/config/ia64/ia64-protos.h
-3488320870b ./gcc/config/ia64/lib1funcs.asm
-2361471520b ./gcc/config/ia64/libgcc-ia64.ver
-2435218299b ./gcc/config/ia64/linux.h
-1337642433b ./gcc/config/ia64/quadlib.c
-1454530158b ./gcc/config/ia64/sysv4.h
-2374494786b ./gcc/config/ia64/t-aix
-2148782144b ./gcc/config/ia64/t-glibc
-3471209231b ./gcc/config/ia64/t-hpux
- 158251161b ./gcc/config/ia64/t-ia64
-2759923269b ./gcc/config/ia64/unwind-aix.c
-1364155779b ./gcc/config/ia64/unwind-ia64.c
-2355075302b ./gcc/config/ia64/unwind-ia64.h
-1761565476b ./gcc/config.in
-3221870490b ./gcc/config/interix3.h
-1139973568b ./gcc/config/interix.h
-3774321010b ./gcc/config/libgcc-glibc.ver
- 679171109b ./gcc/config/libgloss.h
- 265766519b ./gcc/config/linux-aout.h
-2201567287b ./gcc/config/linux.h
- 510514981b ./gcc/config/lynx.h
-2466014571b ./gcc/config/lynx-ng.h
-2460604231b ./gcc/config/m32r/initfini.c
-2298486681b ./gcc/config/m32r/m32r.c
-2178062905b ./gcc/config/m32r/m32r.h
-2455193277b ./gcc/config/m32r/m32r.md
- 67938598b ./gcc/config/m32r/m32r-protos.h
-3043182144b ./gcc/config/m32r/t-m32r
- 35339373b ./gcc/config/m68hc11/larith.asm
-1272963761b ./gcc/config/m68hc11/m68hc11.c
-3563849705b ./gcc/config/m68hc11/m68hc11-crt0.S
-1280294916b ./gcc/config/m68hc11/m68hc11.h
- 520753477b ./gcc/config/m68hc11/m68hc11.md
-1796033124b ./gcc/config/m68hc11/m68hc11-protos.h
- 452436463b ./gcc/config/m68hc11/m68hc12.h
-1483227044b ./gcc/config/m68hc11/t-m68hc11-gas
-3032963201b ./gcc/config/m68k/3b1g.h
-3262237289b ./gcc/config/m68k/3b1.h
-1524307847b ./gcc/config/m68k/altos3068.h
-1472845046b ./gcc/config/m68k/amix.h
-3726815317b ./gcc/config/m68k/apollo68.h
-2229011187b ./gcc/config/m68k/atari.h
- 304653227b ./gcc/config/m68k/auxas.h
-1360990051b ./gcc/config/m68k/aux-crt1.c
-1689696476b ./gcc/config/m68k/aux-crt2.asm
-2072970828b ./gcc/config/m68k/aux-crtn.asm
- 409246969b ./gcc/config/m68k/aux-exit.c
- 741505994b ./gcc/config/m68k/auxgas.h
- 922288695b ./gcc/config/m68k/auxgld.h
-1105413220b ./gcc/config/m68k/a-ux.h
-2685530303b ./gcc/config/m68k/auxld.h
-2164284366b ./gcc/config/m68k/aux-low.gld
-2208437798b ./gcc/config/m68k/aux-mcount.c
-1916112183b ./gcc/config/m68k/ccur-GAS.h
- 597864788b ./gcc/config/m68k/coff.h
-2360909894b ./gcc/config/m68k/crds.h
-1173190318b ./gcc/config/m68k/crti.s
-4181788584b ./gcc/config/m68k/crtn.s
-3642339847b ./gcc/config/m68k/ctix.h
-2770446786b ./gcc/config/m68k/dpx2cdbx.h
-3851760573b ./gcc/config/m68k/dpx2g.h
-2199460345b ./gcc/config/m68k/dpx2.h
-2216029984b ./gcc/config/m68k/dpx2.ifile
-2518640661b ./gcc/config/m68k/fpgnulib.c
- 136981270b ./gcc/config/m68k/hp2bsd.h
-4247760656b ./gcc/config/m68k/hp310g.h
-2625821362b ./gcc/config/m68k/hp310.h
-3645108527b ./gcc/config/m68k/hp320g.h
-2642329211b ./gcc/config/m68k/hp320.h
-3605366445b ./gcc/config/m68k/hp3bsd44.h
- 942415927b ./gcc/config/m68k/hp3bsd.h
-2864047424b ./gcc/config/m68k/hpux7.h
- 665470337b ./gcc/config/m68k/isi.h
-3484500543b ./gcc/config/m68k/isi-nfp.h
- 704862081b ./gcc/config/m68k/lb1sf68.asm
-1023591365b ./gcc/config/m68k/linux-aout.h
-1138393842b ./gcc/config/m68k/linux.h
-3350690882b ./gcc/config/m68k/lynx.h
- 162996909b ./gcc/config/m68k/lynx-ng.h
-3379792683b ./gcc/config/m68k/m68020-elf.h
- 388266224b ./gcc/config/m68k/m68k-aout.h
-1870424553b ./gcc/config/m68k/m68k.c
-3882947461b ./gcc/config/m68k/m68k-coff.h
-2573430517b ./gcc/config/m68k/m68kelf.h
-1120822994b ./gcc/config/m68k/m68kemb.h
-3756685982b ./gcc/config/m68k/m68k.h
-3281000245b ./gcc/config/m68k/m68k.md
-3855098247b ./gcc/config/m68k/m68k-none.h
-3954442786b ./gcc/config/m68k/m68k-protos.h
-1109594909b ./gcc/config/m68k/m68k-psos.h
- 947783547b ./gcc/config/m68k/m68kv4.h
-2766673945b ./gcc/config/m68k/math-3300.h
-3047408322b ./gcc/config/m68k/math-68881.h
-1902334218b ./gcc/config/m68k/mot3300-crt0.S
-2216988570b ./gcc/config/m68k/mot3300.h
-4250921257b ./gcc/config/m68k/mot3300Mcrt0.S
-1653993281b ./gcc/config/m68k/netbsd-elf.h
- 306540848b ./gcc/config/m68k/netbsd.h
-2598124463b ./gcc/config/m68k/news3gas.h
- 895337217b ./gcc/config/m68k/news3.h
-2724290690b ./gcc/config/m68k/newsgas.h
- 823527599b ./gcc/config/m68k/news.h
-3839942171b ./gcc/config/m68k/next21.h
-3375370361b ./gcc/config/m68k/next.h
- 615787625b ./gcc/config/m68k/openbsd.h
-1412462225b ./gcc/config/m68k/pbb.h
- 964659279b ./gcc/config/m68k/plexus.h
-3840336856b ./gcc/config/m68k/rtemself.h
-4045485418b ./gcc/config/m68k/rtems.h
-2246845695b ./gcc/config/m68k/sgs.h
- 844744081b ./gcc/config/m68k/sun2.h
-3991060631b ./gcc/config/m68k/sun2o4.h
-3239560263b ./gcc/config/m68k/sun3.h
-3724598161b ./gcc/config/m68k/sun3mach.h
- 864417723b ./gcc/config/m68k/sun3n3.h
- 120628064b ./gcc/config/m68k/sun3n.h
-2298299278b ./gcc/config/m68k/sun3o3.h
-3527955370b ./gcc/config/m68k/t-aux
-2428228359b ./gcc/config/m68k/t-crtstuff
-1845413337b ./gcc/config/m68k/t-hp320
-1601671577b ./gcc/config/m68k/t-linux
-1601671577b ./gcc/config/m68k/t-linux-aout
-3474104024b ./gcc/config/m68k/t-lynx
- 591505405b ./gcc/config/m68k/t-m68kbare
-1376927127b ./gcc/config/m68k/t-m68kelf
-2312371323b ./gcc/config/m68k/t-mot3300
-1278563328b ./gcc/config/m68k/t-mot3300-gald
- 505153656b ./gcc/config/m68k/t-mot3300-gas
-2294965883b ./gcc/config/m68k/t-mot3300-gld
-1947397845b ./gcc/config/m68k/t-next
-3937644742b ./gcc/config/m68k/t-openbsd
-2078063242b ./gcc/config/m68k/tower-as.h
-2265492461b ./gcc/config/m68k/tower.h
-2710264317b ./gcc/config/m68k/t-vxworks68
-2466779056b ./gcc/config/m68k/vxm68k.h
- 330782920b ./gcc/config/m68k/x-next
-3877749712b ./gcc/config/m88k/aout-dbx.h
-3964892058b ./gcc/config/m88k/dguxbcs.h
-2407166913b ./gcc/config/m88k/dgux.h
-3298414170b ./gcc/config/m88k/dgux.ld
-1645309935b ./gcc/config/m88k/dolph.h
-1558967450b ./gcc/config/m88k/dolphin.ld
- 27544745b ./gcc/config/m88k/luna.h
-1097971558b ./gcc/config/m88k/m88k-aout.h
- 382352310b ./gcc/config/m88k/m88k.c
- 929158884b ./gcc/config/m88k/m88k-coff.h
-2252790221b ./gcc/config/m88k/m88k.h
- 249987577b ./gcc/config/m88k/m88k.md
-2372325319b ./gcc/config/m88k/m88k-move.sh
- 192457426b ./gcc/config/m88k/m88k-protos.h
-3182883703b ./gcc/config/m88k/openbsd.h
-2062420508b ./gcc/config/m88k/sysv3.h
-2064243939b ./gcc/config/m88k/sysv4.h
-1952601632b ./gcc/config/m88k/t-bug
-3570488521b ./gcc/config/m88k/t-dgux
-1929747752b ./gcc/config/m88k/t-dguxbcs
- 185935036b ./gcc/config/m88k/t-dgux-gas
- 141637502b ./gcc/config/m88k/t-dolph
-3899935761b ./gcc/config/m88k/tekXD88.h
- 173867895b ./gcc/config/m88k/tekXD88.ld
-2294317049b ./gcc/config/m88k/t-luna
-3352809625b ./gcc/config/m88k/t-luna-gas
-1952601632b ./gcc/config/m88k/t-m88k
-2909533034b ./gcc/config/m88k/t-m88k-gas
-3580877409b ./gcc/config/m88k/t-sysv4
-3049523840b ./gcc/config/m88k/t-tekXD88
-4057462442b ./gcc/config/mcore/crti.asm
-3021138350b ./gcc/config/mcore/crtn.asm
-3514021936b ./gcc/config/mcore/gfloat.h
-3510059529b ./gcc/config/mcore/lib1.asm
-2263673310b ./gcc/config/mcore/mcore.c
- 511751417b ./gcc/config/mcore/mcore-elf.h
-2030700230b ./gcc/config/mcore/mcore.h
- 400725302b ./gcc/config/mcore/mcore.md
-3984142890b ./gcc/config/mcore/mcore-pe.h
- 149272234b ./gcc/config/mcore/mcore-protos.h
-1343396749b ./gcc/config/mcore/t-mcore
-2921008064b ./gcc/config/mcore/t-mcore-pe
-1252529019b ./gcc/config/mips/abi64.h
-1865003947b ./gcc/config/mips/bsd-4.h
-2290247989b ./gcc/config/mips/bsd-5.h
- 930726788b ./gcc/config/mips/cross64.h
-1227388398b ./gcc/config/mips/crti.asm
-1600482981b ./gcc/config/mips/crtn.asm
-3317633569b ./gcc/config/mips/dec-bsd.h
-4118299381b ./gcc/config/mips/dec-osf1.h
-1910637049b ./gcc/config/mips/ecoff.h
-3551974985b ./gcc/config/mips/ecoffl.h
-1974114900b ./gcc/config/mips/elf64.h
-1297779950b ./gcc/config/mips/elf.h
-1175169006b ./gcc/config/mips/elfl64.h
-4118432176b ./gcc/config/mips/elfl.h
- 452497001b ./gcc/config/mips/elflorion.h
-4210328521b ./gcc/config/mips/elforion.h
-4009674128b ./gcc/config/mips/iris3.h
-3161243087b ./gcc/config/mips/iris4.h
-2743944992b ./gcc/config/mips/iris4loser.h
-1342606731b ./gcc/config/mips/iris5gas.h
-4137712676b ./gcc/config/mips/iris5.h
-2290690324b ./gcc/config/mips/iris6gld.h
-2714897906b ./gcc/config/mips/iris6.h
-3658812670b ./gcc/config/mips/irix6-libc-compat.c
-3639703657b ./gcc/config/mips/isa3264.h
-3645898751b ./gcc/config/mips/isa32-linux.h
-1922092548b ./gcc/config/mips/linux.h
-2202363688b ./gcc/config/mips/little.h
-2024693888b ./gcc/config/mips/mips16.S
-3112223626b ./gcc/config/mips/mips-5.h
-4175300921b ./gcc/config/mips/mips.c
-1450296441b ./gcc/config/mips/mips.h
-3326013566b ./gcc/config/mips/mips.md
-4191298187b ./gcc/config/mips/mips-protos.h
-3451330990b ./gcc/config/mips/netbsd.h
-1685635385b ./gcc/config/mips/news4.h
-3776131275b ./gcc/config/mips/news5.h
- 807792414b ./gcc/config/mips/nws3250v4.h
- 391873849b ./gcc/config/mips/openbsd-be.h
-2082964611b ./gcc/config/mips/openbsd.h
- 14433004b ./gcc/config/mips/osfrose.h
- 440031462b ./gcc/config/mips/r3900.h
-1390680376b ./gcc/config/mips/rtems64.h
- 725646271b ./gcc/config/mips/rtems.h
-4240783400b ./gcc/config/mips/sni-gas.h
- 670897314b ./gcc/config/mips/sni-svr4.h
-3194520655b ./gcc/config/mips/svr3-4.h
- 767984692b ./gcc/config/mips/svr3-5.h
-2860455593b ./gcc/config/mips/svr4-4.h
- 980733461b ./gcc/config/mips/svr4-5.h
-2452459111b ./gcc/config/mips/svr4-t.h
-2607420510b ./gcc/config/mips/t-bsd
-2303697534b ./gcc/config/mips/t-bsd-gas
-3044783963b ./gcc/config/mips/t-cross64
-3379398326b ./gcc/config/mips/t-ecoff
-3744526568b ./gcc/config/mips/t-elf
-2896429436b ./gcc/config/mips/t-iris
-1323445357b ./gcc/config/mips/t-iris6
-2995723142b ./gcc/config/mips/t-isa3264
-3174612276b ./gcc/config/mips/t-linux
-3174612276b ./gcc/config/mips/t-netbsd
-1879935135b ./gcc/config/mips/t-r3900
-1413700483b ./gcc/config/mips/t-svr3
-3653081423b ./gcc/config/mips/t-svr3-gas
- 764398973b ./gcc/config/mips/t-svr4
-2691764145b ./gcc/config/mips/t-svr4-gas
-1592869717b ./gcc/config/mips/t-ultrix
- 904152708b ./gcc/config/mips/ultrix.h
-2931924525b ./gcc/config/mips/vxworks.h
-3454112118b ./gcc/config/mips/xm-iris5.h
-1256346916b ./gcc/config/mmix/crti.asm
-4149276856b ./gcc/config/mmix/crtn.asm
-1365569292b ./gcc/config/mmix/mmix.c
-3912110255b ./gcc/config/mmix/mmix.h
- 785535891b ./gcc/config/mmix/mmix.md
-1558302901b ./gcc/config/mmix/mmix-protos.h
-1410017015b ./gcc/config/mmix/t-mmix
- 38698671b ./gcc/config/mn10200/lib1funcs.asm
- 585104722b ./gcc/config/mn10200/mn10200.c
-3521160628b ./gcc/config/mn10200/mn10200.h
-1601326717b ./gcc/config/mn10200/mn10200.md
-4029388596b ./gcc/config/mn10200/mn10200-protos.h
-2767557893b ./gcc/config/mn10200/t-mn10200
- 62398656b ./gcc/config/mn10300/mn10300.c
-2168100301b ./gcc/config/mn10300/mn10300.h
- 680410204b ./gcc/config/mn10300/mn10300.md
-3249413352b ./gcc/config/mn10300/mn10300-protos.h
-3295955402b ./gcc/config/mn10300/t-mn10300
-3969750295b ./gcc/config/netbsd-aout.h
-2304062656b ./gcc/config/netbsd-elf.h
-1669681271b ./gcc/config/netbsd.h
-3670236471b ./gcc/config/netware.h
-3498035575b ./gcc/config/nextstep21.h
- 884710202b ./gcc/config/nextstep.c
- 251016432b ./gcc/config/nextstep.h
-2525790015b ./gcc/config/nextstep-protos.h
- 505151767b ./gcc/config/ns32k/encore.h
-3294809321b ./gcc/config/ns32k/merlin.h
-1759962800b ./gcc/config/ns32k/netbsd.h
-1296740637b ./gcc/config/ns32k/ns32k.c
-1493984519b ./gcc/config/ns32k/ns32k.h
-1903185806b ./gcc/config/ns32k/ns32k.md
-1708247420b ./gcc/config/ns32k/ns32k-protos.h
-3974800750b ./gcc/config/ns32k/pc532.h
- 104963810b ./gcc/config/ns32k/pc532-mach.h
-1249730935b ./gcc/config/ns32k/pc532-min.h
-1951152204b ./gcc/config/ns32k/sequent.h
-3970632321b ./gcc/config/ns32k/tek6000.h
- 906085514b ./gcc/config/ns32k/tek6100.h
-3417438490b ./gcc/config/ns32k/tek6200.h
- 247387334b ./gcc/config/openbsd.h
-2401043639b ./gcc/config/pa/elf.h
-1435423353b ./gcc/config/pa/lib1funcs.asm
- 454965220b ./gcc/config/pa/lib2funcs.asm
-2056209887b ./gcc/config/pa/long_double.h
-2062031370b ./gcc/config/pa/milli32.S
- 401709680b ./gcc/config/pa/milli64.S
-2660241824b ./gcc/config/pa/pa32-linux.h
-3627454173b ./gcc/config/pa/pa32-regs.h
- 255410879b ./gcc/config/pa/pa-64.h
-2399407521b ./gcc/config/pa/pa64-hpux.h
-4127689659b ./gcc/config/pa/pa64-linux.h
- 106717215b ./gcc/config/pa/pa64-regs.h
-3813586304b ./gcc/config/pa/pa64-start.h
-2253880751b ./gcc/config/pa/pa.c
-4124147372b ./gcc/config/pa/pa.h
-2070570431b ./gcc/config/pa/pa-hiux.h
- 722967032b ./gcc/config/pa/pa-hpux10.h
-3160109858b ./gcc/config/pa/pa-hpux11.h
-3949639215b ./gcc/config/pa/pa-hpux7.h
-3124002443b ./gcc/config/pa/pa-hpux9.h
-2419055394b ./gcc/config/pa/pa-hpux.h
-2614885764b ./gcc/config/pa/pa-linux.h
-2396760795b ./gcc/config/pa/pa.md
-3618123809b ./gcc/config/pa/pa-oldas.h
-3108768032b ./gcc/config/pa/pa-osf.h
-2360373262b ./gcc/config/pa/pa-pro-end.h
-1408239843b ./gcc/config/pa/pa-protos.h
-1224647575b ./gcc/config/pa/quadlib.c
- 17931766b ./gcc/config/pa/rtems.h
- 971757202b ./gcc/config/pa/som.h
- 299977776b ./gcc/config/pa/t-bsd
-1117935804b ./gcc/config/pa/t-dce-thr
-4044826599b ./gcc/config/pa/t-hpux-shlib
- 176583881b ./gcc/config/pa/t-linux
-3127053933b ./gcc/config/pa/t-linux64
-1211178790b ./gcc/config/pa/t-mpeix
-3597581162b ./gcc/config/pa/t-pa
-1659865778b ./gcc/config/pa/t-pa64
-2754633370b ./gcc/config/pa/t-pa-hpux
- 817714064b ./gcc/config/pa/t-pro
-1293323254b ./gcc/config/pa/x-ada
-4118902235b ./gcc/config/pdp11/2bsd.h
-3233992791b ./gcc/config/pdp11/pdp11.c
-3228770397b ./gcc/config/pdp11/pdp11.h
-3587948093b ./gcc/config/pdp11/pdp11.md
-1678731791b ./gcc/config/pdp11/pdp11-protos.h
-3096460014b ./gcc/config/pdp11/t-pdp11
-1460345365b ./gcc/config/pj/lib1funcs.S
-3899085832b ./gcc/config/pj/linux.h
-3905905230b ./gcc/config/pj/pj.c
-2997103714b ./gcc/config/pj/pj.h
- 140528803b ./gcc/config/pj/pjl.h
-4115579495b ./gcc/config/pj/pj.md
- 827420337b ./gcc/config/pj/pj-protos.h
-3942936368b ./gcc/config/pj/t-pj
-1311052798b ./gcc/config/psos.h
-1638983603b ./gcc/config/ptx4.h
-3917072699b ./gcc/config/README
-1415145997b ./gcc/config/romp/romp.c
-4030226328b ./gcc/config/romp/romp.h
-4096557609b ./gcc/config/romp/romp.md
-1229374838b ./gcc/config/romp/romp-protos.h
-3731158896b ./gcc/config/rs6000/aix31.h
-2741987967b ./gcc/config/rs6000/aix3newas.h
-1702283472b ./gcc/config/rs6000/aix41.h
-1402586921b ./gcc/config/rs6000/aix43.h
-1428773917b ./gcc/config/rs6000/aix51.h
- 676923459b ./gcc/config/rs6000/aix.h
-1953946692b ./gcc/config/rs6000/altivec-defs.h
-3231976674b ./gcc/config/rs6000/altivec.h
- 510508394b ./gcc/config/rs6000/beos.h
- 511519789b ./gcc/config/rs6000/crtsavres.asm
- 362681124b ./gcc/config/rs6000/darwin.h
-3983537248b ./gcc/config/rs6000/darwin-tramp.asm
- 318728404b ./gcc/config/rs6000/eabiaix.h
-1991998428b ./gcc/config/rs6000/eabialtivec.h
-2647778291b ./gcc/config/rs6000/eabi.asm
- 383867253b ./gcc/config/rs6000/eabi-ci.asm
-3758141774b ./gcc/config/rs6000/eabi-cn.asm
-4071223554b ./gcc/config/rs6000/eabi.h
-1258445797b ./gcc/config/rs6000/eabisim.h
-3017082484b ./gcc/config/rs6000/freebsd.h
-4293496085b ./gcc/config/rs6000/gnu.h
-1281642247b ./gcc/config/rs6000/linux64.h
-1351560312b ./gcc/config/rs6000/linuxaltivec.h
-3642990693b ./gcc/config/rs6000/linux.h
-1286374006b ./gcc/config/rs6000/lynx.h
-4204979131b ./gcc/config/rs6000/mach.h
-1820610909b ./gcc/config/rs6000/milli.exp
- 926081320b ./gcc/config/rs6000/netbsd.h
-4127185084b ./gcc/config/rs6000/ppc-asm.h
-2628430224b ./gcc/config/rs6000/rs6000.c
-1882734550b ./gcc/config/rs6000/rs6000.h
-1182996779b ./gcc/config/rs6000/rs6000.md
-4107218804b ./gcc/config/rs6000/rs6000-protos.h
-1817513646b ./gcc/config/rs6000/rtems.h
-2439652147b ./gcc/config/rs6000/softfloat.h
-3703627966b ./gcc/config/rs6000/sol-ci.asm
-3016810975b ./gcc/config/rs6000/sol-cn.asm
-1082828955b ./gcc/config/rs6000/sysv4.h
-3795959522b ./gcc/config/rs6000/sysv4le.h
- 781650112b ./gcc/config/rs6000/t-aix43
-2042460673b ./gcc/config/rs6000/t-beos
-3302666617b ./gcc/config/rs6000/t-darwin
-2019934202b ./gcc/config/rs6000/t-linux64
-4049449059b ./gcc/config/rs6000/t-newas
-3107528900b ./gcc/config/rs6000/t-ppccomm
- 365048301b ./gcc/config/rs6000/t-ppcgas
-3552141086b ./gcc/config/rs6000/t-ppcos
- 85679922b ./gcc/config/rs6000/tramp.asm
- 946774617b ./gcc/config/rs6000/t-rs6000
- 301220496b ./gcc/config/rs6000/vxppc.h
- 950192882b ./gcc/config/rs6000/xcoff.h
-1142085470b ./gcc/config/rtems.h
-3390348482b ./gcc/config/s390/fixdfdi.h
-1234245155b ./gcc/config/s390/libgcc-glibc.ver
- 661638700b ./gcc/config/s390/linux.h
-3979416840b ./gcc/config/s390/s390.c
-2354192299b ./gcc/config/s390/s390.h
-2229281672b ./gcc/config/s390/s390.md
-1407420306b ./gcc/config/s390/s390-protos.h
-3998835120b ./gcc/config/s390/s390x.h
-1051100452b ./gcc/config/s390/t-linux
-2020003531b ./gcc/config/s390/t-linux64
- 41732123b ./gcc/config/sh/crt1.asm
- 643557115b ./gcc/config/sh/crti.asm
- 567573801b ./gcc/config/sh/crtn.asm
-1588713186b ./gcc/config/sh/elf.h
-3107978185b ./gcc/config/sh/lib1funcs.asm
- 450228266b ./gcc/config/sh/linux.h
-2022181827b ./gcc/config/sh/rtemself.h
-1498631144b ./gcc/config/sh/rtems.h
-1071738647b ./gcc/config/sh/sh64.h
-3254166331b ./gcc/config/sh/sh.c
-3738163077b ./gcc/config/sh/sh.h
-1738052341b ./gcc/config/sh/sh.md
-3656510246b ./gcc/config/sh/shmedia.h
- 410816511b ./gcc/config/sh/sh-protos.h
-4192915538b ./gcc/config/sh/sshmedia.h
-3555569248b ./gcc/config/sh/t-elf
-3486728930b ./gcc/config/sh/t-linux
-2597458196b ./gcc/config/sh/t-sh
- 672246409b ./gcc/config/sh/t-sh64
-2893164163b ./gcc/config/sh/ushmedia.h
-1926756242b ./gcc/config/sparc/aout.h
-3461838008b ./gcc/config/sparc/biarch64.h
-1386942151b ./gcc/config/sparc/bsd.h
-1479022830b ./gcc/config/sparc/crtfastmath.c
- 54964474b ./gcc/config/sparc/elf.h
-1883862361b ./gcc/config/sparc/freebsd.h
-1322899413b ./gcc/config/sparc/gmon-sol2.c
-3746795534b ./gcc/config/sparc/hal.h
-3587954192b ./gcc/config/sparc/lb1spc.asm
- 557614974b ./gcc/config/sparc/lb1spl.asm
-1761187951b ./gcc/config/sparc/libgcc-sparc-glibc.ver
- 753491459b ./gcc/config/sparc/linux64.h
-2544415545b ./gcc/config/sparc/linux-aout.h
-1914379195b ./gcc/config/sparc/linux.h
-2163445162b ./gcc/config/sparc/litecoff.h
-1933660745b ./gcc/config/sparc/liteelf.h
-2424336991b ./gcc/config/sparc/lite.h
-2399395336b ./gcc/config/sparc/lynx.h
-2334021382b ./gcc/config/sparc/lynx-ng.h
-3811927118b ./gcc/config/sparc/netbsd-elf.h
- 365271853b ./gcc/config/sparc/netbsd.h
-1122827784b ./gcc/config/sparc/openbsd1-64.h
-1977030271b ./gcc/config/sparc/openbsd64.h
- 349992599b ./gcc/config/sparc/openbsd.h
-3728184707b ./gcc/config/sparc/pbd.h
-2243601282b ./gcc/config/sparc/rtemself.h
-4106236389b ./gcc/config/sparc/rtems.h
-1579903847b ./gcc/config/sparc/sol2-64.h
-2488307215b ./gcc/config/sparc/sol27-sld.h
-1510111749b ./gcc/config/sparc/sol2-bi.h
-1463670426b ./gcc/config/sparc/sol2-c1.asm
-3288323690b ./gcc/config/sparc/sol2-ci.asm
-2004370404b ./gcc/config/sparc/sol2-cn.asm
-2182182911b ./gcc/config/sparc/sol2-g1.asm
- 878755050b ./gcc/config/sparc/sol2-gas-bi.h
-3173831404b ./gcc/config/sparc/sol2-gld-bi.h
-4206582763b ./gcc/config/sparc/sol2-gld.h
-2455246824b ./gcc/config/sparc/sol2.h
-3918002150b ./gcc/config/sparc/sp64-aout.h
-2870886299b ./gcc/config/sparc/sp64-elf.h
-3128199560b ./gcc/config/sparc/sp86x-aout.h
-1221714757b ./gcc/config/sparc/sp86x-elf.h
-2169834781b ./gcc/config/sparc/sparc.c
-3432806460b ./gcc/config/sparc/sparc.h
- 879790849b ./gcc/config/sparc/sparc.md
-4023359087b ./gcc/config/sparc/sparc-protos.h
- 842964351b ./gcc/config/sparc/splet.h
- 952337645b ./gcc/config/sparc/sun4gas.h
-1795303911b ./gcc/config/sparc/sun4o3.h
- 721602587b ./gcc/config/sparc/sunos4.h
- 14508846b ./gcc/config/sparc/sysv4.h
-2782836992b ./gcc/config/sparc/t-chorus-elf
-2056024669b ./gcc/config/sparc/t-crtfm
-3744055768b ./gcc/config/sparc/t-elf
-1582758741b ./gcc/config/sparc/t-halos
-2435625847b ./gcc/config/sparc/t-linux64
-1132426437b ./gcc/config/sparc/t-netbsd64
-1190032917b ./gcc/config/sparc/t-openbsd
- 851768603b ./gcc/config/sparc/t-sol2
-3560385692b ./gcc/config/sparc/t-sol2-64
-4194854877b ./gcc/config/sparc/t-sp86x
-2727045329b ./gcc/config/sparc/t-sparcbare
-1324996929b ./gcc/config/sparc/t-sparclite
-4249538597b ./gcc/config/sparc/t-splet
-1776401931b ./gcc/config/sparc/t-sunos41
-3082115393b ./gcc/config/sparc/t-vxsparc
-3638105138b ./gcc/config/sparc/t-vxsparc64
-2444638453b ./gcc/config/sparc/vxsim.h
-3450727705b ./gcc/config/sparc/vxsparc64.h
-1610820992b ./gcc/config/sparc/vxsparc.h
-1548984109b ./gcc/config/stormy16/stormy16.c
-3776989782b ./gcc/config/stormy16/stormy16.h
-4011003560b ./gcc/config/stormy16/stormy16-lib2.c
- 552174638b ./gcc/config/stormy16/stormy16.md
-2190947530b ./gcc/config/stormy16/stormy16-protos.h
-1002673818b ./gcc/config/stormy16/stormy-abi
-3561720924b ./gcc/config/stormy16/t-stormy16
-2159505844b ./gcc/config/svr3.h
-4237693824b ./gcc/config/svr4.h
-2749923948b ./gcc/config/t-freebsd
-3853732254b ./gcc/config/t-freebsd-thread
-2512129728b ./gcc/config/t-gnu
-3050012299b ./gcc/config/t-install-cpp
- 825269638b ./gcc/config/t-interix
-1047761087b ./gcc/config/t-libc-ok
-2753685882b ./gcc/config/t-libgcc-pic
-2712900964b ./gcc/config/t-linux
- 825269638b ./gcc/config/t-linux-aout
-3205817010b ./gcc/config/t-linux-gnulibc1
- 121353396b ./gcc/config/tm-dwarf2.h
- 825269638b ./gcc/config/t-netbsd
-2903849127b ./gcc/config/t-openbsd
-2917904648b ./gcc/config/t-openbsd-thread
-2246241652b ./gcc/config/t-rtems
-2258421829b ./gcc/config/t-slibgcc-elf-ver
-2124668958b ./gcc/config/t-slibgcc-nolc-override
-1896414626b ./gcc/config/t-slibgcc-sld
- 321200235b ./gcc/config/t-svr4
- 937080303b ./gcc/config/udivmod.c
-2590328114b ./gcc/config/udivmodsi4.c
-2291528331b ./gcc/configure
-2239237249b ./gcc/configure.frag
-4254063890b ./gcc/configure.in
-1401546799b ./gcc/config/usegas.h
-1330961877b ./gcc/config/v850/lib1funcs.asm
-3345272584b ./gcc/config/v850/rtems.h
-3046767615b ./gcc/config/v850/t-v850
-2149356335b ./gcc/config/v850/v850.c
-4072890677b ./gcc/config/v850/v850-c.c
-1028297694b ./gcc/config/v850/v850.h
-2739963548b ./gcc/config/v850/v850.md
-1229280760b ./gcc/config/v850/v850-protos.h
- 678831326b ./gcc/config/vax/netbsd.h
-3271953013b ./gcc/config/vax/openbsd1.h
-2993271330b ./gcc/config/vax/openbsd.h
-1070068995b ./gcc/config/vax/ultrix.h
-3091217209b ./gcc/config/vax/vax.c
-3909127338b ./gcc/config/vax/vax.h
- 657520682b ./gcc/config/vax/vax.md
-3894216269b ./gcc/config/vax/vax-protos.h
-3118052779b ./gcc/config/vax/vaxv.h
-1265968606b ./gcc/config/vax/vms.h
-1260653442b ./gcc/config/vax/xm-vms.h
- 560039799b ./gcc/config/we32k/we32k.c
- 423633273b ./gcc/config/we32k/we32k.h
-3169968881b ./gcc/config/we32k/we32k.md
-2514844092b ./gcc/config/we32k/we32k-protos.h
-2711497169b ./gcc/config/x-interix
-1151914555b ./gcc/config/xtensa/elf.h
-1027874511b ./gcc/config/xtensa/lib1funcs.asm
-3621223618b ./gcc/config/xtensa/lib2funcs.S
-2321639494b ./gcc/config/xtensa/linux.h
-3617796239b ./gcc/config/xtensa/t-xtensa
- 221057176b ./gcc/config/xtensa/xtensa.c
-2796950173b ./gcc/config/xtensa/xtensa-config.h
-3802608261b ./gcc/config/xtensa/xtensa.h
-1183159023b ./gcc/config/xtensa/xtensa.md
-2389425253b ./gcc/config/xtensa/xtensa-protos.h
-3382606314b ./gcc/conflict.c
-2854418854b ./gcc/convert.c
-2020855935b ./gcc/convert.h
-2171125041b ./gcc/COPYING
- 508743035b ./gcc/COPYING.LIB
-1845167332b ./gcc/c-parse.c
- 300639623b ./gcc/c-parse.in
- 492383053b ./gcc/c-parse.y
- 211407592b ./gcc/cp/call.c
-4115552602b ./gcc/cp/cfns.gperf
-1705070232b ./gcc/cp/cfns.h
- 696338438b ./gcc/cp/ChangeLog
-2221404065b ./gcc/cp/ChangeLog.1
-2127340768b ./gcc/cp/ChangeLog.2
-2546444747b ./gcc/cp/ChangeLog.egcs
-3828154577b ./gcc/cp/class.c
-1309293181b ./gcc/cp/config-lang.in
-4084279121b ./gcc/cp/cp-lang.c
-2928114977b ./gcc/cp/cp-tree.def
-4216823168b ./gcc/cp/cp-tree.h
-1230086821b ./gcc/cp/.cvsignore
- 106302269b ./gcc/cp/cvt.c
- 276724828b ./gcc/cp/decl2.c
-3891994909b ./gcc/cp/decl.c
-3040950596b ./gcc/cp/decl.h
-1503739344b ./gcc/cp/dump.c
-1402846352b ./gcc/cp/error.c
-1298672024b ./gcc/cp/except.c
-2612079645b ./gcc/cp/expr.c
- 728682437b ./gcc/cp/friend.c
-1574667259b ./gcc/cp/g++.1
-3180385434b ./gcc/cp/g++spec.c
-1504087345b ./gcc/cp/init.c
-3812650249b ./gcc/cp/lang-options.h
-2714092533b ./gcc/cp/lang-specs.h
-1945319355b ./gcc/cp/lex.c
-2280147967b ./gcc/cp/lex.h
-2683095257b ./gcc/cp/Make-lang.in
-1932648807b ./gcc/cp/mangle.c
-3212394829b ./gcc/cp/method.c
- 701335209b ./gcc/cp/mpw-config.in
-4041177245b ./gcc/cp/mpw-make.sed
-3379488726b ./gcc/cp/NEWS
-3146548402b ./gcc/cp/operators.def
- 622478745b ./gcc/cp/optimize.c
-2202196704b ./gcc/cp/parse.c
- 24533096b ./gcc/cp/parse.h
-1414382616b ./gcc/cp/parse.y
-1602205564b ./gcc/cppdefault.c
- 733799898b ./gcc/cppdefault.h
-3582099799b ./gcc/cpperror.c
-4072103215b ./gcc/cppexp.c
-2221722550b ./gcc/cppfiles.c
-2283152717b ./gcc/cpphash.c
-3545195852b ./gcc/cpphash.h
-2419669468b ./gcc/cppinit.c
- 201524367b ./gcc/cpplex.c
-2222966585b ./gcc/cpplib.c
-3414601474b ./gcc/cpplib.h
-3518489790b ./gcc/cppmacro.c
-2363485754b ./gcc/cppmain.c
-3972345626b ./gcc/cppspec.c
-3092071067b ./gcc/cp/pt.c
-1408553642b ./gcc/cp/ptree.c
- 73956308b ./gcc/c-pragma.c
-1212765089b ./gcc/c-pragma.h
-3993964584b ./gcc/cp/repo.c
-1891418656b ./gcc/cp/rtti.c
-1831732259b ./gcc/cp/search.c
-1562130475b ./gcc/cp/semantics.c
-2648162646b ./gcc/cp/spew.c
-3766127741b ./gcc/cp/tree.c
-1284974262b ./gcc/cp/typeck2.c
-3575565334b ./gcc/cp/typeck.c
-2032357073b ./gcc/crtstuff.c
-3365219033b ./gcc/cse.c
-1706957017b ./gcc/cselib.c
-3914093915b ./gcc/cselib.h
-2383555787b ./gcc/c-semantics.c
- 216805921b ./gcc/cstamp-h.in
-2780104305b ./gcc/c-tree.h
-1526402625b ./gcc/c-typeck.c
-4208197548b ./gcc/.cvsignore
-1308064076b ./gcc/dbxout.c
-2583180678b ./gcc/dbxout.h
-1104788844b ./gcc/dbxstclass.h
-2470087149b ./gcc/debug.c
- 178689220b ./gcc/debug.h
- 852153964b ./gcc/defaults.h
-2369804086b ./gcc/dependence.c
-2491556822b ./gcc/df.c
-3792421516b ./gcc/df.h
-1042165669b ./gcc/diagnostic.c
-1311569781b ./gcc/diagnostic.def
-4192732570b ./gcc/diagnostic.h
- 23600501b ./gcc/doc/bugreport.texi
-2815010075b ./gcc/doc/collect2.texi
-3060436631b ./gcc/doc/compat.texi
-2785243168b ./gcc/doc/configfiles.texi
-3399730921b ./gcc/doc/configterms.texi
-2163122922b ./gcc/doc/contrib.texi
-2272556046b ./gcc/doc/contribute.texi
- 299886887b ./gcc/doc/cpp.1
-1838233798b ./gcc/doc/cppenv.texi
- 942037060b ./gcc/doc/cpp.info
- 579743374b ./gcc/doc/cpp.info-1
-3971167691b ./gcc/doc/cpp.info-2
-3217640916b ./gcc/doc/cpp.info-3
-3238131507b ./gcc/doc/cpp.info-4
- 113743627b ./gcc/doc/cpp.info-5
-4128300115b ./gcc/doc/cppinternals.info
-1958814700b ./gcc/doc/cppinternals.texi
- 685869710b ./gcc/doc/cppopts.texi
-3543132597b ./gcc/doc/cpp.texi
-3813743019b ./gcc/doc/c-tree.texi
-1471878644b ./gcc/doc/.cvsignore
-1477628931b ./gcc/doc/extend.texi
-2634996326b ./gcc/doc/fragments.texi
- 600815516b ./gcc/doc/frontends.texi
-4060734459b ./gcc/doc/fsf-funding.7
-2701882048b ./gcc/doc/gcc.1
-3771908520b ./gcc/doc/gcc.info
-1921369526b ./gcc/doc/gcc.info-1
- 809288507b ./gcc/doc/gcc.info-10
- 937687037b ./gcc/doc/gcc.info-11
-2472794790b ./gcc/doc/gcc.info-12
-3020319333b ./gcc/doc/gcc.info-13
-3100556077b ./gcc/doc/gcc.info-14
-2100335389b ./gcc/doc/gcc.info-15
-1973326326b ./gcc/doc/gcc.info-16
-4233127554b ./gcc/doc/gcc.info-17
-1177537033b ./gcc/doc/gcc.info-18
-2957434958b ./gcc/doc/gcc.info-19
- 546744273b ./gcc/doc/gcc.info-2
-4179571895b ./gcc/doc/gcc.info-20
- 503977090b ./gcc/doc/gcc.info-21
-3135435025b ./gcc/doc/gcc.info-22
- 766898990b ./gcc/doc/gcc.info-23
- 177802939b ./gcc/doc/gcc.info-3
- 300919832b ./gcc/doc/gcc.info-4
-3173162766b ./gcc/doc/gcc.info-5
- 523405852b ./gcc/doc/gcc.info-6
-4075929926b ./gcc/doc/gcc.info-7
-1604498314b ./gcc/doc/gcc.info-8
- 701416922b ./gcc/doc/gcc.info-9
-1334526965b ./gcc/doc/gccint.info
-3600548089b ./gcc/doc/gccint.info-1
-1504619998b ./gcc/doc/gccint.info-10
-3473339140b ./gcc/doc/gccint.info-11
- 121842836b ./gcc/doc/gccint.info-12
-4274041826b ./gcc/doc/gccint.info-13
-3366735740b ./gcc/doc/gccint.info-14
-3485597023b ./gcc/doc/gccint.info-15
-1782892412b ./gcc/doc/gccint.info-16
-2959978575b ./gcc/doc/gccint.info-17
-4176515869b ./gcc/doc/gccint.info-18
-2985208404b ./gcc/doc/gccint.info-19
- 630391800b ./gcc/doc/gccint.info-2
- 202943203b ./gcc/doc/gccint.info-20
-3389515766b ./gcc/doc/gccint.info-21
- 244064775b ./gcc/doc/gccint.info-22
-3017009534b ./gcc/doc/gccint.info-23
-1907881660b ./gcc/doc/gccint.info-3
-1456140435b ./gcc/doc/gccint.info-4
- 645003639b ./gcc/doc/gccint.info-5
-2130774212b ./gcc/doc/gccint.info-6
-2788607605b ./gcc/doc/gccint.info-7
- 422138694b ./gcc/doc/gccint.info-8
-3245006523b ./gcc/doc/gccint.info-9
- 926520134b ./gcc/doc/gccint.texi
- 489956337b ./gcc/doc/gcc.texi
- 439884872b ./gcc/doc/gcov.1
-3165676809b ./gcc/doc/gcov.texi
- 41943876b ./gcc/doc/gfdl.7
-4217859569b ./gcc/doc/gnu.texi
-1434573161b ./gcc/doc/gpl.7
-2632697239b ./gcc/doc/headerdirs.texi
-1425599017b ./gcc/doc/hostconfig.texi
-1232987106b ./gcc/doc/include/fdl.texi
-2048065465b ./gcc/doc/include/funding.texi
-3327005891b ./gcc/doc/include/gcc-common.texi
-1416455933b ./gcc/doc/include/gpl.texi
-3627483023b ./gcc/doc/include/texinfo.tex
-4219640220b ./gcc/doc/install-old.texi
- 977716914b ./gcc/doc/install.texi
-1451529977b ./gcc/doc/install.texi2html
-1103982611b ./gcc/doc/interface.texi
-1690368898b ./gcc/doc/invoke.texi
-1327866291b ./gcc/doc/languages.texi
- 409601074b ./gcc/doc/makefile.texi
- 647485435b ./gcc/doc/md.texi
-2014418726b ./gcc/doc/objc.texi
- 285120363b ./gcc/doc/passes.texi
-2247614285b ./gcc/doc/portability.texi
-2576532070b ./gcc/doc/rtl.texi
-3603168219b ./gcc/doc/service.texi
-3643604442b ./gcc/doc/sourcebuild.texi
-2997941012b ./gcc/doc/standards.texi
-3195862103b ./gcc/doc/tm.texi
- 886635974b ./gcc/doc/trouble.texi
-3478556786b ./gcc/doc/vms.texi
-2482239883b ./gcc/doloop.c
-1033704706b ./gcc/dominance.c
-2791449994b ./gcc/doschk.c
- 31829346b ./gcc/dwarf2asm.c
-2077057275b ./gcc/dwarf2asm.h
-2184520814b ./gcc/dwarf2.h
-3548213262b ./gcc/dwarf2out.c
-1010158138b ./gcc/dwarf2out.h
- 109276966b ./gcc/dwarf.h
-3359840971b ./gcc/dwarfout.c
-1599988341b ./gcc/emit-rtl.c
- 626897841b ./gcc/enquire.c
-2953931641b ./gcc/errors.c
-3972701730b ./gcc/errors.h
-1431652736b ./gcc/except.c
-2826708782b ./gcc/except.h
- 908040152b ./gcc/explow.c
-1156766543b ./gcc/expmed.c
-3693001667b ./gcc/expr.c
-3115307664b ./gcc/expr.h
-1934744031b ./gcc/f/ansify.c
-1543506773b ./gcc/f/bad.c
-3978113547b ./gcc/f/bad.def
-2128126262b ./gcc/f/bad.h
-4003760421b ./gcc/f/bit.c
- 194938753b ./gcc/f/bit.h
- 948632599b ./gcc/f/bld.c
-3286267604b ./gcc/f/bld.h
-2128697889b ./gcc/f/bld-op.def
- 576635123b ./gcc/f/BUGS
- 235013049b ./gcc/f/bugs0.texi
- 158397208b ./gcc/f/bugs.texi
-2823422254b ./gcc/f/ChangeLog
-4225493150b ./gcc/f/ChangeLog.0
-1588166676b ./gcc/f/com.c
- 87369815b ./gcc/f/com.h
-2664732170b ./gcc/f/com-rt.def
- 535595698b ./gcc/f/config-lang.in
-1546791101b ./gcc/f/.cvsignore
-1011994563b ./gcc/f/data.c
-1923155684b ./gcc/f/data.h
-1611338677b ./gcc/f/equiv.c
-2175994638b ./gcc/f/equiv.h
-2251785098b ./gcc/f/expr.c
- 417834755b ./gcc/f/expr.h
-2351117682b ./gcc/f/ffe.texi
- 782070966b ./gcc/f/fini.c
-3506777541b ./gcc/f/g77.1
-3497434494b ./gcc/f/g77.info
-1405242906b ./gcc/f/g77.info-1
-4020360826b ./gcc/f/g77.info-10
-2010631566b ./gcc/f/g77.info-11
-2792393564b ./gcc/f/g77.info-12
-3461821628b ./gcc/f/g77.info-13
-1208071216b ./gcc/f/g77.info-14
-1936205287b ./gcc/f/g77.info-15
-2810069222b ./gcc/f/g77.info-16
- 259584195b ./gcc/f/g77.info-17
-4125227617b ./gcc/f/g77.info-18
- 254417931b ./gcc/f/g77.info-19
- 179100652b ./gcc/f/g77.info-2
- 26285497b ./gcc/f/g77.info-20
-3543736255b ./gcc/f/g77.info-21
- 116586643b ./gcc/f/g77.info-3
-3513135358b ./gcc/f/g77.info-4
- 676912166b ./gcc/f/g77.info-5
- 145000084b ./gcc/f/g77.info-6
-2563451928b ./gcc/f/g77.info-7
-3172593296b ./gcc/f/g77.info-8
-2848927902b ./gcc/f/g77.info-9
-2824974536b ./gcc/f/g77spec.c
-3054392079b ./gcc/f/g77.texi
-4062822261b ./gcc/f/global.c
-3559352394b ./gcc/f/global.h
-1392305407b ./gcc/f/implic.c
-3939649511b ./gcc/f/implic.h
-1237323857b ./gcc/final.c
-2287601317b ./gcc/f/info-b.def
-2342702754b ./gcc/f/info.c
-1115234844b ./gcc/f/info.h
-2535813338b ./gcc/f/info-k.def
-2242176401b ./gcc/f/info-w.def
-3953937189b ./gcc/f/intdoc.c
-3843015483b ./gcc/f/intdoc.in
-4069635816b ./gcc/f/intdoc.texi
-2410122381b ./gcc/f/intrin.c
-1048488593b ./gcc/f/intrin.def
-3418049706b ./gcc/f/intrin.h
-2243664841b ./gcc/f/invoke.texi
-2247789519b ./gcc/fix-header.c
-2894614091b ./gcc/fixinc/check.tpl
- 786772235b ./gcc/fixinc/fixfixes.c
-3110054233b ./gcc/fixinc/fixinc.dgux
- 15758129b ./gcc/fixinc/fixinc.interix
-1824978333b ./gcc/fixinc/fixincl.c
-4214658264b ./gcc/fixinc/fixincl.sh
-2178021789b ./gcc/fixinc/fixincl.tpl
-3312009046b ./gcc/fixinc/fixincl.x
-1474597097b ./gcc/fixinc/fixinc.ptx
-1901674452b ./gcc/fixinc/fixinc.svr4
-2193207840b ./gcc/fixinc/fixinc.winnt
-1439814780b ./gcc/fixinc/fixinc.wrap
-1372603529b ./gcc/fixinc/fixlib.c
- 971233728b ./gcc/fixinc/fixlib.h
-4013194329b ./gcc/fixinc/fixtests.c
-2003329934b ./gcc/fixinc/genfixes
- 605191257b ./gcc/fixinc/gnu-regex.c
-1403987073b ./gcc/fixinc/gnu-regex.h
-2194272133b ./gcc/fixinc/inclhack.def
-3390155447b ./gcc/fixinc/Makefile.in
-3327140809b ./gcc/fixinc/mkfixinc.sh
-1834585069b ./gcc/fixinc/procopen.c
-2750464368b ./gcc/fixinc/README
-1750379031b ./gcc/fixinc/server.c
-3490851801b ./gcc/fixinc/server.h
-1165473466b ./gcc/fixinc/tests/base/ansi/math.h
-3124694417b ./gcc/fixinc/tests/base/ansi/stdlib.h
-2980092932b ./gcc/fixinc/tests/base/arch/i960/archI960.h
-1062137968b ./gcc/fixinc/tests/base/arpa/inet.h
- 597415717b ./gcc/fixinc/tests/base/assert.h
-3220984809b ./gcc/fixinc/tests/base/bsd/libc.h
-1799847368b ./gcc/fixinc/tests/base/c_asm.h
-2725396384b ./gcc/fixinc/tests/base/ctrl-quotes-def-1.h
-3049981119b ./gcc/fixinc/tests/base/curses.h
-2909636960b ./gcc/fixinc/tests/base/fcntl.h
-3901972537b ./gcc/fixinc/tests/base/fixinc-test-limits.h
-4150745363b ./gcc/fixinc/tests/base/hsfs/hsfs_spec.h
-2118846136b ./gcc/fixinc/tests/base/inttypes.h
- 92918392b ./gcc/fixinc/tests/base/io-quotes-def-1.h
-2670651204b ./gcc/fixinc/tests/base/libgen.h
-1854625388b ./gcc/fixinc/tests/base/machine/cpu.h
- 114078425b ./gcc/fixinc/tests/base/malloc.h
-2389003803b ./gcc/fixinc/tests/base/math.h
-2373596333b ./gcc/fixinc/tests/base/netdnet/dnetdb.h
-4211518276b ./gcc/fixinc/tests/base/netinet/ip.h
-3107111098b ./gcc/fixinc/tests/base/pixrect/memvar.h
- 634408265b ./gcc/fixinc/tests/base/pthread.h
-2876721819b ./gcc/fixinc/tests/base/regex.h
- 351364386b ./gcc/fixinc/tests/base/reg_types.h
-2249464053b ./gcc/fixinc/tests/base/rpc/auth.h
-4166238922b ./gcc/fixinc/tests/base/rpc/rpc.h
- 778394431b ./gcc/fixinc/tests/base/rpc/svc.h
-1831085175b ./gcc/fixinc/tests/base/rpcsvc/rstat.h
-2162639252b ./gcc/fixinc/tests/base/rpcsvc/rusers.h
- 164451816b ./gcc/fixinc/tests/base/rpc/xdr.h
- 135186565b ./gcc/fixinc/tests/base/sparc/asm_linkage.h
-2925418517b ./gcc/fixinc/tests/base/stdio.h
-1529509815b ./gcc/fixinc/tests/base/stdio_tag.h
- 135522837b ./gcc/fixinc/tests/base/stdlib.h
-2941232612b ./gcc/fixinc/tests/base/strings.h
- 482468002b ./gcc/fixinc/tests/base/sundev/vuid_event.h
-1807434691b ./gcc/fixinc/tests/base/sunwindow/win_lock.h
- 124945712b ./gcc/fixinc/tests/base/sym.h
-3921290193b ./gcc/fixinc/tests/base/sys/asm.h
- 54324049b ./gcc/fixinc/tests/base/sys/byteorder.h
-1224260027b ./gcc/fixinc/tests/base/sys/cdefs.h
-1406575472b ./gcc/fixinc/tests/base/sys/file.h
-3052695740b ./gcc/fixinc/tests/base/sys/ioctl.h
- 912107621b ./gcc/fixinc/tests/base/sys/limits.h
- 645497489b ./gcc/fixinc/tests/base/sys/machine.h
-3274995808b ./gcc/fixinc/tests/base/sys/mman.h
-3800154687b ./gcc/fixinc/tests/base/sys/param.h
-3041640682b ./gcc/fixinc/tests/base/sys/signal.h
-2450632911b ./gcc/fixinc/tests/base/sys/spinlock.h
- 711604668b ./gcc/fixinc/tests/base/sys/stat.h
-2422167059b ./gcc/fixinc/tests/base/sys/time.h
-2994886866b ./gcc/fixinc/tests/base/sys/times.h
-1174710562b ./gcc/fixinc/tests/base/sys/types.h
-3923345847b ./gcc/fixinc/tests/base/sys/utsname.h
-3579560225b ./gcc/fixinc/tests/base/sys/wait.h
-2119077343b ./gcc/fixinc/tests/base/testing.h
- 10407256b ./gcc/fixinc/tests/base/time.h
-3845139066b ./gcc/fixinc/tests/base/tinfo.h
-4209310059b ./gcc/fixinc/tests/base/types/vxTypesBase.h
-3839547353b ./gcc/fixinc/tests/base/unistd.h
-1242753480b ./gcc/fixinc/tests/base/widec.h
-1516247519b ./gcc/fixinc/tests/base/X11/Intrinsic.h
-2715935838b ./gcc/fixinc/tests/base/X11/ShellP.h
-4147305037b ./gcc/fixinc/tests/base/X11/Xmu.h
-3373785317b ./gcc/fixinc/tests/base/Xm/BaseClassI.h
-1118590845b ./gcc/fixinc/tests/base/Xm/Traversal.h
-2236212838b ./gcc/fixproto
-1861938661b ./gcc/f/lab.c
-3674332618b ./gcc/f/lab.h
-3658835587b ./gcc/flags.h
- 136843109b ./gcc/f/lang-options.h
-1977846343b ./gcc/f/lang-specs.h
-4037310288b ./gcc/f/lex.c
- 722310274b ./gcc/f/lex.h
-1465737068b ./gcc/floatlib.c
- 959822363b ./gcc/flow.c
- 413109492b ./gcc/f/Make-lang.in
-3929672430b ./gcc/f/malloc.c
-1633854048b ./gcc/f/malloc.h
-2687881356b ./gcc/f/name.c
- 558328466b ./gcc/f/name.h
-2816874481b ./gcc/f/NEWS
-3453379674b ./gcc/f/news0.texi
- 273264189b ./gcc/f/news.texi
- 522369544b ./gcc/fold-const.c
-2696377463b ./gcc/f/parse.c
-1067232252b ./gcc/f/proj.h
-3820449811b ./gcc/fp-test.c
- 281424983b ./gcc/f/README
-3295584012b ./gcc/f/RELEASE-PREP
-3126162622b ./gcc/f/root.texi
-2146007539b ./gcc/FSFChangeLog
-4184732518b ./gcc/FSFChangeLog.10
-3797967515b ./gcc/FSFChangeLog.11
-3531682397b ./gcc/f/src.c
- 246620254b ./gcc/f/src.h
-3608541363b ./gcc/f/sta.c
- 520236030b ./gcc/f/sta.h
- 520927036b ./gcc/f/stb.c
-2810193132b ./gcc/f/stb.h
-3466162958b ./gcc/f/st.c
- 502694498b ./gcc/f/stc.c
-1751601456b ./gcc/f/stc.h
- 260229363b ./gcc/f/std.c
-1219390242b ./gcc/f/std.h
-2021799054b ./gcc/f/ste.c
-1786873989b ./gcc/f/ste.h
-1705988958b ./gcc/f/st.h
-1100581971b ./gcc/f/storag.c
- 790029114b ./gcc/f/storag.h
-2404416327b ./gcc/f/stp.c
-3782361290b ./gcc/f/stp.h
-3722860946b ./gcc/f/str-1t.fin
-2828127862b ./gcc/f/str-2t.fin
- 920153914b ./gcc/f/str.c
-4215029898b ./gcc/f/str-fo.fin
-2184386780b ./gcc/f/str.h
- 281471485b ./gcc/f/str-io.fin
-3735910053b ./gcc/f/str-nq.fin
-3134124633b ./gcc/f/str-op.fin
-2608567153b ./gcc/f/str-ot.fin
- 610725318b ./gcc/f/sts.c
-1450832819b ./gcc/f/sts.h
-2301635495b ./gcc/f/stt.c
- 514307919b ./gcc/f/stt.h
-3188469687b ./gcc/f/stu.c
- 166252279b ./gcc/f/stu.h
- 857063390b ./gcc/f/stv.c
- 971049710b ./gcc/f/stv.h
-2156320080b ./gcc/f/stw.c
-3741680211b ./gcc/f/stw.h
- 659922490b ./gcc/f/symbol.c
-1323122026b ./gcc/f/symbol.def
- 690030434b ./gcc/f/symbol.h
- 561154028b ./gcc/f/target.c
-1248104671b ./gcc/f/target.h
-2698043928b ./gcc/f/top.c
-2232338664b ./gcc/f/top.h
-3443401298b ./gcc/f/type.c
-2499934202b ./gcc/f/type.h
-3426758284b ./gcc/function.c
- 316231375b ./gcc/function.h
-3058774034b ./gcc/future.options
-3972775402b ./gcc/f/version.c
-1781447679b ./gcc/f/version.h
-3584291506b ./gcc/f/where.c
- 819940437b ./gcc/f/where.h
-1214866690b ./gcc/gbl-ctors.h
-2405976148b ./gcc/gccbug.in
-2534170090b ./gcc/gcc.c
- 960741132b ./gcc/gcc.h
-3093644366b ./gcc/gcc.hlp
-3633749318b ./gcc/gccspec.c
-3825112355b ./gcc/gcov.c
-4197147799b ./gcc/gcov-io.h
-1895463511b ./gcc/gcse.c
- 802469235b ./gcc/gdbinit.in
-3638083387b ./gcc/genattr.c
-3417344932b ./gcc/genattrtab.c
-2682166046b ./gcc/gencheck.c
-3810064934b ./gcc/gencodes.c
-2539346427b ./gcc/genconfig.c
-2631615302b ./gcc/genconstants.c
-1628507273b ./gcc/genemit.c
-2648961261b ./gcc/genextract.c
-2023228290b ./gcc/genflags.c
-2713590814b ./gcc/gengenrtl.c
-2574485728b ./gcc/genmultilib
-1384421270b ./gcc/genopinit.c
-4030468350b ./gcc/genoutput.c
-2221468101b ./gcc/genpeep.c
- 345520579b ./gcc/genpreds.c
-4293398944b ./gcc/gen-protos.c
-1766167058b ./gcc/genrecog.c
-3076545551b ./gcc/gensupport.c
-1823528383b ./gcc/gensupport.h
-2561993607b ./gcc/ggc-callbacks.c
- 831448355b ./gcc/ggc-common.c
-1613425309b ./gcc/ggc.h
-1943428995b ./gcc/ggc-none.c
- 914540366b ./gcc/ggc-page.c
-3876596452b ./gcc/ggc-simple.c
- 684549565b ./gcc/ginclude/iso646.h
- 956736189b ./gcc/ginclude/stdarg.h
-4095609490b ./gcc/ginclude/stdbool.h
- 917377878b ./gcc/ginclude/stddef.h
- 673473982b ./gcc/ginclude/varargs.h
-1222982330b ./gcc/glimits.h
- 807066606b ./gcc/global.c
- 991678839b ./gcc/gmon.c
-4262862037b ./gcc/graph.c
-2272086758b ./gcc/graph.h
-2006423200b ./gcc/gstab.h
-2040904551b ./gcc/gsyms.h
- 808024354b ./gcc/gsyslimits.h
-2343151743b ./gcc/gthr-aix.h
-3203810708b ./gcc/gthr-dce.h
- 925349290b ./gcc/gthr.h
-1931993243b ./gcc/gthr-posix.h
-2000135006b ./gcc/gthr-rtems.h
-1258851302b ./gcc/gthr-single.h
-3966292684b ./gcc/gthr-solaris.h
-4243675148b ./gcc/gthr-vxworks.h
-3942109358b ./gcc/gthr-win32.h
- 430540108b ./gcc/haifa-sched.c
- 544018069b ./gcc/halfpic.c
-2731657470b ./gcc/halfpic.h
-3590969103b ./gcc/hard-reg-set.h
-2643914866b ./gcc/hash.c
-2987787285b ./gcc/hash.h
- 466224151b ./gcc/hashtable.c
- 126902747b ./gcc/hashtable.h
-3796251430b ./gcc/hooks.c
- 779103435b ./gcc/hooks.h
- 519586985b ./gcc/hwint.h
-3563549730b ./gcc/ifcvt.c
-3686080794b ./gcc/input.h
-2324132584b ./gcc/insn-addr.h
-3004940478b ./gcc/integrate.c
-1320722832b ./gcc/integrate.h
-3847321727b ./gcc/intl/bindtextdom.c
-3277280645b ./gcc/intl.c
-4257359986b ./gcc/intl/ChangeLog
-3698301396b ./gcc/intl/config.charset
-3683549278b ./gcc/intl/dcgettext.c
-1537282354b ./gcc/intl/dcigettext.c
-4252721850b ./gcc/intl/dcngettext.c
-3231507403b ./gcc/intl/dgettext.c
-1989280280b ./gcc/intl/dngettext.c
-3422232669b ./gcc/intl/explodename.c
- 745873491b ./gcc/intl/finddomain.c
-3807651580b ./gcc/intl/gettext.c
- 864082220b ./gcc/intl/gettext.h
-3298993106b ./gcc/intl/gettextP.h
-2379664116b ./gcc/intl.h
-3470048606b ./gcc/intl/hash-string.h
-3803759614b ./gcc/intl/intl-compat.c
-3500562604b ./gcc/intl/l10nflist.c
- 863021802b ./gcc/intl/libgettext.h
- 21199758b ./gcc/intl/libgnuintl.h
- 105544597b ./gcc/intl/loadinfo.h
-2094146432b ./gcc/intl/loadmsgcat.c
- 934932803b ./gcc/intl/localcharset.c
-3093413149b ./gcc/intl/locale.alias
-2364750309b ./gcc/intl/localealias.c
- 680616337b ./gcc/intl/Makefile.in
-2022997717b ./gcc/intl/ngettext.c
- 543478295b ./gcc/intl/plural.c
-1047167798b ./gcc/intl/plural.y
- 409545719b ./gcc/intl/ref-add.sin
-1121743739b ./gcc/intl/ref-del.sin
-1971238900b ./gcc/intl/textdomain.c
-1166279255b ./gcc/intl/VERSION
-1752055498b ./gcc/java/boehm.c
-3814965188b ./gcc/java/buffer.c
-1535113190b ./gcc/java/buffer.h
- 637702143b ./gcc/java/builtins.c
-1215892592b ./gcc/java/ChangeLog
-2409493226b ./gcc/java/chartables.h
-1544711683b ./gcc/java/check-init.c
-3161785437b ./gcc/java/class.c
-2672598613b ./gcc/java/config-lang.in
- 70342256b ./gcc/java/constants.c
- 640032177b ./gcc/java/convert.h
- 503022028b ./gcc/java/.cvsignore
- 698834578b ./gcc/java/decl.c
-1301173842b ./gcc/java/except.c
-1888306202b ./gcc/java/expr.c
-3243162773b ./gcc/java/gcj.1
-1643671722b ./gcc/java/gcjh.1
-4005049153b ./gcc/java/gcj.info
-3864487285b ./gcc/java/gcj.info-1
-4154067378b ./gcc/java/gcj.info-2
-1974029021b ./gcc/java/gcj.texi
- 533046670b ./gcc/java/gen-table.pl
-2017208618b ./gcc/java/gij.1
-2862690686b ./gcc/java/gjavah.c
-1545050516b ./gcc/java/java-except.h
-1953641142b ./gcc/java/java-opcodes.h
-2538410445b ./gcc/java/javaop.def
- 872575611b ./gcc/java/javaop.h
-2113802419b ./gcc/java/java-tree.def
-3036080891b ./gcc/java/java-tree.h
-1618392854b ./gcc/java/jcf-depend.c
- 134179386b ./gcc/java/jcf-dump.1
-1347786459b ./gcc/java/jcf-dump.c
- 921328820b ./gcc/java/jcf.h
- 370700983b ./gcc/java/jcf-io.c
- 981094631b ./gcc/java/jcf-parse.c
- 189754917b ./gcc/java/jcf-path.c
-3070824570b ./gcc/java/jcf-reader.c
-3086938723b ./gcc/java/jcf-write.c
-3332938287b ./gcc/java/jv-convert.1
-3805988298b ./gcc/java/jvgenmain.c
-2795084151b ./gcc/java/jv-scan.1
-3491242747b ./gcc/java/jv-scan.c
- 686969605b ./gcc/java/jvspec.c
-3733396854b ./gcc/java/keyword.gperf
-3748734913b ./gcc/java/keyword.h
-2455368983b ./gcc/java/lang.c
- 366330104b ./gcc/java/lang-options.h
-3731853870b ./gcc/java/lang-specs.h
- 930602719b ./gcc/java/lex.c
-1057768549b ./gcc/java/lex.h
- 497222224b ./gcc/java/Make-lang.in
-1290236487b ./gcc/java/mangle.c
- 624686086b ./gcc/java/mangle_name.c
-3984779313b ./gcc/java/parse.c
- 924019294b ./gcc/java/parse.h
-3149853640b ./gcc/java/parse-scan.c
- 578153036b ./gcc/java/parse-scan.y
-2763518333b ./gcc/java/parse.y
- 298027378b ./gcc/java/rmic.1
-3080717916b ./gcc/java/rmiregistry.1
-2066605666b ./gcc/java/typeck.c
- 173829162b ./gcc/java/verify.c
-3207437983b ./gcc/java/xref.c
-3070080051b ./gcc/java/xref.h
-2742723736b ./gcc/java/zextract.c
-1459175152b ./gcc/java/zipfile.h
-2867377468b ./gcc/jump.c
-4163847594b ./gcc/langhooks.c
-1885354315b ./gcc/langhooks-def.h
- 718654791b ./gcc/langhooks.h
-4134111346b ./gcc/LANGUAGES
-2367190261b ./gcc/lcm.c
-2318627229b ./gcc/libfuncs.h
-2402286846b ./gcc/libgcc2.c
-3671718625b ./gcc/libgcc2.h
-1452643639b ./gcc/libgcc-std.ver
-2497915666b ./gcc/limitx.h
-1045880008b ./gcc/limity.h
-1060915850b ./gcc/line-map.c
-3486158933b ./gcc/line-map.h
-2698117766b ./gcc/lists.c
-1174355773b ./gcc/local-alloc.c
- 830917499b ./gcc/longlong.h
-3943918019b ./gcc/loop.c
- 483531210b ./gcc/loop.h
-2150704349b ./gcc/machmode.def
-3928982379b ./gcc/machmode.h
- 189930733b ./gcc/main.c
-1247644918b ./gcc/Makefile.in
- 501600506b ./gcc/mbchar.c
-1508701785b ./gcc/mbchar.h
- 886384654b ./gcc/mips-tdump.c
-4187769843b ./gcc/mips-tfile.c
-3936313187b ./gcc/mkconfig.sh
- 217659056b ./gcc/mkdeps.c
-3976112005b ./gcc/mkdeps.h
- 827441351b ./gcc/mkinstalldirs
-4248086923b ./gcc/mklibgcc.in
-4201050746b ./gcc/mkmap-flat.awk
-2827346461b ./gcc/mkmap-symver.awk
-1597314052b ./gcc/move-if-change
-1558946830b ./gcc/NEWS
-4010954163b ./gcc/objc/config-lang.in
-1966957144b ./gcc/objc/.cvsignore
- 588115418b ./gcc/objc/lang-options.h
- 852310047b ./gcc/objc/lang-specs.h
- 566554613b ./gcc/objc/Make-lang.in
-3712044081b ./gcc/objc/objc-act.c
-2554922770b ./gcc/objc/objc-act.h
-2534517289b ./gcc/objc/objc-lang.c
-1052913658b ./gcc/objc/objc-parse.c
- 283420579b ./gcc/objc/objc-parse.y
- 688475759b ./gcc/objc/objc-tree.def
-3823063152b ./gcc/objc/README
- 538471119b ./gcc/ONEWS
-3305080539b ./gcc/optabs.c
-3971816206b ./gcc/optabs.h
- 151133448b ./gcc/output.h
-1911824904b ./gcc/params.c
-2474575794b ./gcc/params.def
- 840880994b ./gcc/params.h
-3712234942b ./gcc/po/ChangeLog
- 275286308b ./gcc/po/da.gmo
- 276047898b ./gcc/po/da.po
-4175362661b ./gcc/po/el.gmo
-1399154149b ./gcc/po/el.po
-1592121868b ./gcc/po/es.gmo
- 239486157b ./gcc/po/es.po
-4281232887b ./gcc/po/EXCLUDES
- 234060324b ./gcc/po/exgettext
-3271137864b ./gcc/po/fr.gmo
- 641572084b ./gcc/po/fr.po
- 953510881b ./gcc/po/gcc.pot
- 810430188b ./gcc/po/ja.gmo
-2505973891b ./gcc/po/ja.po
-3002010451b ./gcc/po/nl.gmo
- 934957733b ./gcc/po/nl.po
-3351765398b ./gcc/po/sv.gmo
-1330626989b ./gcc/po/sv.po
- 866561722b ./gcc/po/tr.gmo
-3345738807b ./gcc/po/tr.po
-1839892656b ./gcc/predict.c
-1371462395b ./gcc/predict.def
- 204342296b ./gcc/predict.h
- 542352850b ./gcc/prefix.c
-3203071066b ./gcc/prefix.h
-3447032665b ./gcc/print-rtl.c
- 417163997b ./gcc/print-tree.c
-2666623009b ./gcc/profile.c
-1610870410b ./gcc/protoize.c
-2799003008b ./gcc/README-fixinc
-2741038711b ./gcc/README.Portability
-2723074973b ./gcc/read-rtl.c
-2962281463b ./gcc/real.c
-2885483337b ./gcc/real.h
-2524966106b ./gcc/recog.c
-2056680576b ./gcc/recog.h
- 57810796b ./gcc/regclass.c
-3586182830b ./gcc/regmove.c
- 113125100b ./gcc/regrename.c
-3100477763b ./gcc/regs.h
-3611458427b ./gcc/reg-stack.c
- 664936410b ./gcc/reload1.c
- 55889624b ./gcc/reload.c
- 834085082b ./gcc/reload.h
-4167441145b ./gcc/reorg.c
-2715704724b ./gcc/resource.c
-2605579460b ./gcc/resource.h
-1675583813b ./gcc/rtlanal.c
-2800367218b ./gcc/rtl.c
-3964111654b ./gcc/rtl.def
-3490774286b ./gcc/rtl-error.c
-3336969021b ./gcc/rtl.h
-1989258075b ./gcc/sbitmap.c
-3201428436b ./gcc/sbitmap.h
- 324348149b ./gcc/scan.c
-1702118899b ./gcc/scan-decls.c
- 339714129b ./gcc/scan.h
-3912741047b ./gcc/scan-types.sh
- 347395426b ./gcc/sched-deps.c
-3568403641b ./gcc/sched-ebb.c
-4108826208b ./gcc/sched-int.h
-2565292623b ./gcc/sched-rgn.c
-2176345645b ./gcc/sched-vis.c
-3014933100b ./gcc/sdbout.c
-1391855772b ./gcc/sdbout.h
-1084935625b ./gcc/SERVICE
-2225673670b ./gcc/sibcall.c
- 63942362b ./gcc/simplify-rtx.c
-3345261950b ./gcc/sort-protos
-3157302619b ./gcc/ssa.c
-3407562807b ./gcc/ssa-ccp.c
-2078369101b ./gcc/ssa-dce.c
- 332547863b ./gcc/ssa.h
-2395322097b ./gcc/stab.def
- 471587796b ./gcc/stack.h
-2351196198b ./gcc/stmt.c
-2592810543b ./gcc/stor-layout.c
-3515875777b ./gcc/stringpool.c
- 567176141b ./gcc/sys-protos.h
-1242992540b ./gcc/system.h
- 482558466b ./gcc/sys-types.h
- 293723253b ./gcc/target-def.h
-4078089769b ./gcc/target.h
-1391688077b ./gcc/testsuite/ChangeLog
-1101480727b ./gcc/testsuite/config/default.exp
-3657217366b ./gcc/testsuite/consistency.vlad/layout/a-char.c
-2814769741b ./gcc/testsuite/consistency.vlad/layout/a-double.c
- 789833107b ./gcc/testsuite/consistency.vlad/layout/a-float.c
-1654384929b ./gcc/testsuite/consistency.vlad/layout/a-int.c
-4146459649b ./gcc/testsuite/consistency.vlad/layout/align-bool.cpp
-2242642270b ./gcc/testsuite/consistency.vlad/layout/align-char.c
-1789069487b ./gcc/testsuite/consistency.vlad/layout/align-double.c
-2365706302b ./gcc/testsuite/consistency.vlad/layout/align-float.c
-1139013298b ./gcc/testsuite/consistency.vlad/layout/align-int.c
-2305175273b ./gcc/testsuite/consistency.vlad/layout/align-long.c
-1683867594b ./gcc/testsuite/consistency.vlad/layout/align-longdouble.c
-2116189486b ./gcc/testsuite/consistency.vlad/layout/align-longlong.c
-3775705613b ./gcc/testsuite/consistency.vlad/layout/align-pointer.c
-3243328118b ./gcc/testsuite/consistency.vlad/layout/align-ptrdiff.c
-3355052908b ./gcc/testsuite/consistency.vlad/layout/align-short.c
-2446562994b ./gcc/testsuite/consistency.vlad/layout/align-size.c
-4125888825b ./gcc/testsuite/consistency.vlad/layout/align-wchar.c
-4126836986b ./gcc/testsuite/consistency.vlad/layout/a-long.c
-2082883507b ./gcc/testsuite/consistency.vlad/layout/a-longdouble.c
-1870550230b ./gcc/testsuite/consistency.vlad/layout/a-longlong.c
- 836566472b ./gcc/testsuite/consistency.vlad/layout/a-of-s-char.c
- 808556227b ./gcc/testsuite/consistency.vlad/layout/a-of-s-double.c
-3993719731b ./gcc/testsuite/consistency.vlad/layout/a-of-s-float.c
- 783523024b ./gcc/testsuite/consistency.vlad/layout/a-of-s-int.c
- 942819612b ./gcc/testsuite/consistency.vlad/layout/a-of-s-long.c
-3646710863b ./gcc/testsuite/consistency.vlad/layout/a-of-s-longdouble.c
-3060876629b ./gcc/testsuite/consistency.vlad/layout/a-of-s-longlong.c
-3104817372b ./gcc/testsuite/consistency.vlad/layout/a-of-s-pointer.c
-1147565030b ./gcc/testsuite/consistency.vlad/layout/a-of-s-ptrdiff_t.c
- 418802581b ./gcc/testsuite/consistency.vlad/layout/a-of-s-short.c
- 141666140b ./gcc/testsuite/consistency.vlad/layout/a-pointer.c
- 420085095b ./gcc/testsuite/consistency.vlad/layout/a-ptrdiff_t.c
-3218633480b ./gcc/testsuite/consistency.vlad/layout/a-short.c
-1126124139b ./gcc/testsuite/consistency.vlad/layout/a-size_t.c
-3526110053b ./gcc/testsuite/consistency.vlad/layout/a-wchar_t.c
-3324795146b ./gcc/testsuite/consistency.vlad/layout/biggest-field-align.c
-1487466473b ./gcc/testsuite/consistency.vlad/layout/c-char-1-c-char.cpp
-3519286859b ./gcc/testsuite/consistency.vlad/layout/c-char-1-c-double.cpp
-1910397221b ./gcc/testsuite/consistency.vlad/layout/c-char-1-c-float.cpp
-2051738332b ./gcc/testsuite/consistency.vlad/layout/c-char-1-c-int.cpp
-2064124916b ./gcc/testsuite/consistency.vlad/layout/c-char-1-c-long.cpp
-2713877479b ./gcc/testsuite/consistency.vlad/layout/c-char-1-c-longdouble.cpp
-1809060976b ./gcc/testsuite/consistency.vlad/layout/c-char-1-c-longlong.cpp
-1381436129b ./gcc/testsuite/consistency.vlad/layout/c-char-1-c-pointer.cpp
-3954863954b ./gcc/testsuite/consistency.vlad/layout/c-char-1-c-short.cpp
-1129753509b ./gcc/testsuite/consistency.vlad/layout/c-char-2-c-char.cpp
- 152778947b ./gcc/testsuite/consistency.vlad/layout/c-char-2-c-double.cpp
-3158222807b ./gcc/testsuite/consistency.vlad/layout/c-char-2-c-float.cpp
- 724995923b ./gcc/testsuite/consistency.vlad/layout/c-char-2-c-int.cpp
-2244023836b ./gcc/testsuite/consistency.vlad/layout/c-char-2-c-long.cpp
-1820645651b ./gcc/testsuite/consistency.vlad/layout/c-char-2-c-longdouble.cpp
-2590987120b ./gcc/testsuite/consistency.vlad/layout/c-char-2-c-longlong.cpp
-2721353414b ./gcc/testsuite/consistency.vlad/layout/c-char-2-c-pointer.cpp
- 647549268b ./gcc/testsuite/consistency.vlad/layout/c-char-2-c-short.cpp
- 698855560b ./gcc/testsuite/consistency.vlad/layout/c-double-1-c-char.cpp
-1810672926b ./gcc/testsuite/consistency.vlad/layout/c-double-1-c-double.cpp
- 882201712b ./gcc/testsuite/consistency.vlad/layout/c-double-1-c-float.cpp
-1868861566b ./gcc/testsuite/consistency.vlad/layout/c-double-1-c-int.cpp
-1504966725b ./gcc/testsuite/consistency.vlad/layout/c-double-1-c-long.cpp
-2848245738b ./gcc/testsuite/consistency.vlad/layout/c-double-1-c-longdouble.cpp
- 323482860b ./gcc/testsuite/consistency.vlad/layout/c-double-1-c-longlong.cpp
-1719416020b ./gcc/testsuite/consistency.vlad/layout/c-double-1-c-pointer.cpp
-3378135217b ./gcc/testsuite/consistency.vlad/layout/c-double-1-c-short.cpp
-4238608616b ./gcc/testsuite/consistency.vlad/layout/c-double-2-c-char.cpp
-3694666869b ./gcc/testsuite/consistency.vlad/layout/c-double-2-c-double.cpp
-3134966605b ./gcc/testsuite/consistency.vlad/layout/c-double-2-c-float.cpp
-2693193737b ./gcc/testsuite/consistency.vlad/layout/c-double-2-c-int.cpp
-3803963296b ./gcc/testsuite/consistency.vlad/layout/c-double-2-c-long.cpp
- 184829139b ./gcc/testsuite/consistency.vlad/layout/c-double-2-c-longdouble.cpp
-2949968343b ./gcc/testsuite/consistency.vlad/layout/c-double-2-c-longlong.cpp
-2009543278b ./gcc/testsuite/consistency.vlad/layout/c-double-2-c-pointer.cpp
- 44469885b ./gcc/testsuite/consistency.vlad/layout/c-double-2-c-short.cpp
- 558923497b ./gcc/testsuite/consistency.vlad/layout/c-float-1-c-char.cpp
-3523046577b ./gcc/testsuite/consistency.vlad/layout/c-float-1-c-double.cpp
-1275327467b ./gcc/testsuite/consistency.vlad/layout/c-float-1-c-float.cpp
-3922774992b ./gcc/testsuite/consistency.vlad/layout/c-float-1-c-int.cpp
-2704908269b ./gcc/testsuite/consistency.vlad/layout/c-float-1-c-long.cpp
-3193901260b ./gcc/testsuite/consistency.vlad/layout/c-float-1-c-longdouble.cpp
- 436514518b ./gcc/testsuite/consistency.vlad/layout/c-float-1-c-longlong.cpp
-2452020808b ./gcc/testsuite/consistency.vlad/layout/c-float-1-c-pointer.cpp
- 418251021b ./gcc/testsuite/consistency.vlad/layout/c-float-1-c-short.cpp
-2667439235b ./gcc/testsuite/consistency.vlad/layout/c-float-2-c-char.cpp
-2881981590b ./gcc/testsuite/consistency.vlad/layout/c-float-2-c-double.cpp
-3201780621b ./gcc/testsuite/consistency.vlad/layout/c-float-2-c-float.cpp
-3375452217b ./gcc/testsuite/consistency.vlad/layout/c-float-2-c-int.cpp
-2468199592b ./gcc/testsuite/consistency.vlad/layout/c-float-2-c-long.cpp
-3842914089b ./gcc/testsuite/consistency.vlad/layout/c-float-2-c-longdouble.cpp
- 114905404b ./gcc/testsuite/consistency.vlad/layout/c-float-2-c-longlong.cpp
-1497679777b ./gcc/testsuite/consistency.vlad/layout/c-float-2-c-pointer.cpp
- 143833974b ./gcc/testsuite/consistency.vlad/layout/c-float-2-c-short.cpp
-1543978137b ./gcc/testsuite/consistency.vlad/layout/c-int-1-c-char.cpp
-4270896237b ./gcc/testsuite/consistency.vlad/layout/c-int-1-c-double.cpp
-4263740047b ./gcc/testsuite/consistency.vlad/layout/c-int-1-c-float.cpp
-1779635362b ./gcc/testsuite/consistency.vlad/layout/c-int-1-c-int.cpp
- 743837724b ./gcc/testsuite/consistency.vlad/layout/c-int-1-c-long.cpp
-3224784467b ./gcc/testsuite/consistency.vlad/layout/c-int-1-c-longdouble.cpp
-3401381192b ./gcc/testsuite/consistency.vlad/layout/c-int-1-c-longlong.cpp
-3737012303b ./gcc/testsuite/consistency.vlad/layout/c-int-1-c-pointer.cpp
-2370648943b ./gcc/testsuite/consistency.vlad/layout/c-int-1-c-short.cpp
-4055775560b ./gcc/testsuite/consistency.vlad/layout/c-int-2-c-char.cpp
-4043145228b ./gcc/testsuite/consistency.vlad/layout/c-int-2-c-double.cpp
-1704557853b ./gcc/testsuite/consistency.vlad/layout/c-int-2-c-float.cpp
- 360364552b ./gcc/testsuite/consistency.vlad/layout/c-int-2-c-int.cpp
-1401787792b ./gcc/testsuite/consistency.vlad/layout/c-int-2-c-long.cpp
-1019203678b ./gcc/testsuite/consistency.vlad/layout/c-int-2-c-longdouble.cpp
-3230342428b ./gcc/testsuite/consistency.vlad/layout/c-int-2-c-longlong.cpp
- 443814793b ./gcc/testsuite/consistency.vlad/layout/c-int-2-c-pointer.cpp
- 986131700b ./gcc/testsuite/consistency.vlad/layout/c-int-2-c-short.cpp
-1839888072b ./gcc/testsuite/consistency.vlad/layout/class-char-and-virtual.cpp
-2259371507b ./gcc/testsuite/consistency.vlad/layout/class-double-and-virtual.cpp
-3308691044b ./gcc/testsuite/consistency.vlad/layout/class-float-and-virtual.cpp
-4237514561b ./gcc/testsuite/consistency.vlad/layout/class-int-and-virtual.cpp
-3380766571b ./gcc/testsuite/consistency.vlad/layout/class-long-and-virtual.cpp
- 815671556b ./gcc/testsuite/consistency.vlad/layout/class-longdouble-and-virtual.cpp
-3694413639b ./gcc/testsuite/consistency.vlad/layout/class-longlong-and-virtual.cpp
- 361431068b ./gcc/testsuite/consistency.vlad/layout/class-pointer-and-virtual.cpp
-4030637509b ./gcc/testsuite/consistency.vlad/layout/class-short-and-virtual.cpp
-3640144004b ./gcc/testsuite/consistency.vlad/layout/c-long-1-c-char.cpp
-3170239534b ./gcc/testsuite/consistency.vlad/layout/c-long-1-c-double.cpp
-1373364368b ./gcc/testsuite/consistency.vlad/layout/c-long-1-c-float.cpp
-2715489812b ./gcc/testsuite/consistency.vlad/layout/c-long-1-c-int.cpp
-4216902809b ./gcc/testsuite/consistency.vlad/layout/c-long-1-c-long.cpp
-2020353215b ./gcc/testsuite/consistency.vlad/layout/c-long-1-c-longdouble.cpp
- 143021478b ./gcc/testsuite/consistency.vlad/layout/c-long-1-c-longlong.cpp
- 288494342b ./gcc/testsuite/consistency.vlad/layout/c-long-1-c-pointer.cpp
-3418347239b ./gcc/testsuite/consistency.vlad/layout/c-long-1-c-short.cpp
- 391993576b ./gcc/testsuite/consistency.vlad/layout/c-long-2-c-char.cpp
-1825915999b ./gcc/testsuite/consistency.vlad/layout/c-long-2-c-double.cpp
-3270317833b ./gcc/testsuite/consistency.vlad/layout/c-long-2-c-float.cpp
-1164900700b ./gcc/testsuite/consistency.vlad/layout/c-long-2-c-int.cpp
-3519735121b ./gcc/testsuite/consistency.vlad/layout/c-long-2-c-long.cpp
- 690915349b ./gcc/testsuite/consistency.vlad/layout/c-long-2-c-longdouble.cpp
- 952863529b ./gcc/testsuite/consistency.vlad/layout/c-long-2-c-longlong.cpp
-1541971925b ./gcc/testsuite/consistency.vlad/layout/c-long-2-c-pointer.cpp
-1481335178b ./gcc/testsuite/consistency.vlad/layout/c-long-2-c-short.cpp
-1034111645b ./gcc/testsuite/consistency.vlad/layout/c-longdouble-1-c-char.cpp
- 223428769b ./gcc/testsuite/consistency.vlad/layout/c-longdouble-1-c-double.cpp
-1686950830b ./gcc/testsuite/consistency.vlad/layout/c-longdouble-1-c-float.cpp
-4007796170b ./gcc/testsuite/consistency.vlad/layout/c-longdouble-1-c-int.cpp
-1430297307b ./gcc/testsuite/consistency.vlad/layout/c-longdouble-1-c-long.cpp
-1762615105b ./gcc/testsuite/consistency.vlad/layout/c-longdouble-1-c-longdouble.cpp
- 455084292b ./gcc/testsuite/consistency.vlad/layout/c-longdouble-1-c-longlong.cpp
- 989738191b ./gcc/testsuite/consistency.vlad/layout/c-longdouble-1-c-pointer.cpp
-2328224637b ./gcc/testsuite/consistency.vlad/layout/c-longdouble-1-c-short.cpp
-1760745939b ./gcc/testsuite/consistency.vlad/layout/c-longdouble-2-c-char.cpp
-1217350634b ./gcc/testsuite/consistency.vlad/layout/c-longdouble-2-c-double.cpp
-4225543090b ./gcc/testsuite/consistency.vlad/layout/c-longdouble-2-c-float.cpp
-1922520334b ./gcc/testsuite/consistency.vlad/layout/c-longdouble-2-c-int.cpp
- 124367783b ./gcc/testsuite/consistency.vlad/layout/c-longdouble-2-c-long.cpp
-2219449090b ./gcc/testsuite/consistency.vlad/layout/c-longdouble-2-c-longdouble.cpp
-1757646669b ./gcc/testsuite/consistency.vlad/layout/c-longdouble-2-c-longlong.cpp
-1035759316b ./gcc/testsuite/consistency.vlad/layout/c-longdouble-2-c-pointer.cpp
- 444856555b ./gcc/testsuite/consistency.vlad/layout/c-longdouble-2-c-short.cpp
-1826856781b ./gcc/testsuite/consistency.vlad/layout/c-longlong-1-c-char.cpp
-1741302927b ./gcc/testsuite/consistency.vlad/layout/c-longlong-1-c-double.cpp
-4120602989b ./gcc/testsuite/consistency.vlad/layout/c-longlong-1-c-float.cpp
-1561431628b ./gcc/testsuite/consistency.vlad/layout/c-longlong-1-c-int.cpp
-1058278587b ./gcc/testsuite/consistency.vlad/layout/c-longlong-1-c-long.cpp
-4082939652b ./gcc/testsuite/consistency.vlad/layout/c-longlong-1-c-longdouble.cpp
-4091778481b ./gcc/testsuite/consistency.vlad/layout/c-longlong-1-c-longlong.cpp
-2537874539b ./gcc/testsuite/consistency.vlad/layout/c-longlong-1-c-pointer.cpp
-1697718289b ./gcc/testsuite/consistency.vlad/layout/c-longlong-1-c-short.cpp
-4035527714b ./gcc/testsuite/consistency.vlad/layout/c-longlong-2-c-char.cpp
-2229850447b ./gcc/testsuite/consistency.vlad/layout/c-longlong-2-c-double.cpp
-2643791394b ./gcc/testsuite/consistency.vlad/layout/c-longlong-2-c-float.cpp
- 925524845b ./gcc/testsuite/consistency.vlad/layout/c-longlong-2-c-int.cpp
- 463155534b ./gcc/testsuite/consistency.vlad/layout/c-longlong-2-c-long.cpp
-2018895918b ./gcc/testsuite/consistency.vlad/layout/c-longlong-2-c-longdouble.cpp
- 737052449b ./gcc/testsuite/consistency.vlad/layout/c-longlong-2-c-longlong.cpp
-3847946387b ./gcc/testsuite/consistency.vlad/layout/c-longlong-2-c-pointer.cpp
-1651679595b ./gcc/testsuite/consistency.vlad/layout/c-longlong-2-c-short.cpp
-1442225884b ./gcc/testsuite/consistency.vlad/layout/c-pointer-1-c-char.cpp
- 86231492b ./gcc/testsuite/consistency.vlad/layout/c-pointer-1-c-double.cpp
-3039612943b ./gcc/testsuite/consistency.vlad/layout/c-pointer-1-c-float.cpp
-4268774855b ./gcc/testsuite/consistency.vlad/layout/c-pointer-1-c-int.cpp
-1989685785b ./gcc/testsuite/consistency.vlad/layout/c-pointer-1-c-long.cpp
-1765842423b ./gcc/testsuite/consistency.vlad/layout/c-pointer-1-c-longdouble.cpp
-3566620692b ./gcc/testsuite/consistency.vlad/layout/c-pointer-1-c-longlong.cpp
-1511217411b ./gcc/testsuite/consistency.vlad/layout/c-pointer-1-c-pointer.cpp
- 146891497b ./gcc/testsuite/consistency.vlad/layout/c-pointer-1-c-short.cpp
-1203621554b ./gcc/testsuite/consistency.vlad/layout/c-pointer-2-c-char.cpp
-1661672620b ./gcc/testsuite/consistency.vlad/layout/c-pointer-2-c-double.cpp
-3464981922b ./gcc/testsuite/consistency.vlad/layout/c-pointer-2-c-float.cpp
-2162290685b ./gcc/testsuite/consistency.vlad/layout/c-pointer-2-c-int.cpp
-3458760843b ./gcc/testsuite/consistency.vlad/layout/c-pointer-2-c-long.cpp
-1723971678b ./gcc/testsuite/consistency.vlad/layout/c-pointer-2-c-longdouble.cpp
-2772502076b ./gcc/testsuite/consistency.vlad/layout/c-pointer-2-c-longlong.cpp
-1617244322b ./gcc/testsuite/consistency.vlad/layout/c-pointer-2-c-pointer.cpp
-2107205209b ./gcc/testsuite/consistency.vlad/layout/c-pointer-2-c-short.cpp
-2637993722b ./gcc/testsuite/consistency.vlad/layout/c-short-1-c-char.cpp
-2593108653b ./gcc/testsuite/consistency.vlad/layout/c-short-1-c-double.cpp
-2285678779b ./gcc/testsuite/consistency.vlad/layout/c-short-1-c-float.cpp
-4058415376b ./gcc/testsuite/consistency.vlad/layout/c-short-1-c-int.cpp
- 492140542b ./gcc/testsuite/consistency.vlad/layout/c-short-1-c-long.cpp
-2044765763b ./gcc/testsuite/consistency.vlad/layout/c-short-1-c-longdouble.cpp
-3012275733b ./gcc/testsuite/consistency.vlad/layout/c-short-1-c-longlong.cpp
-1369560784b ./gcc/testsuite/consistency.vlad/layout/c-short-1-c-pointer.cpp
-3704701533b ./gcc/testsuite/consistency.vlad/layout/c-short-1-c-short.cpp
-3281843471b ./gcc/testsuite/consistency.vlad/layout/c-short-2-c-char.cpp
-1657812194b ./gcc/testsuite/consistency.vlad/layout/c-short-2-c-double.cpp
-2415256428b ./gcc/testsuite/consistency.vlad/layout/c-short-2-c-float.cpp
-1236964140b ./gcc/testsuite/consistency.vlad/layout/c-short-2-c-int.cpp
-3464277284b ./gcc/testsuite/consistency.vlad/layout/c-short-2-c-long.cpp
-3737764099b ./gcc/testsuite/consistency.vlad/layout/c-short-2-c-longdouble.cpp
-4128191352b ./gcc/testsuite/consistency.vlad/layout/c-short-2-c-longlong.cpp
- 249914684b ./gcc/testsuite/consistency.vlad/layout/c-short-2-c-pointer.cpp
- 967840663b ./gcc/testsuite/consistency.vlad/layout/c-short-2-c-short.cpp
-3227054482b ./gcc/testsuite/consistency.vlad/layout/endian.c
-3691894150b ./gcc/testsuite/consistency.vlad/layout/f-0-0-5.c
-2906280459b ./gcc/testsuite/consistency.vlad/layout/f-0-20-17.c
-4153795460b ./gcc/testsuite/consistency.vlad/layout/f-0-24-24.c
-2223677750b ./gcc/testsuite/consistency.vlad/layout/f-10-11-10.c
-1656961235b ./gcc/testsuite/consistency.vlad/layout/f-11-12-10.c
-2616499905b ./gcc/testsuite/consistency.vlad/layout/f-1-21-31.c
- 877204714b ./gcc/testsuite/consistency.vlad/layout/f-1-3-1.c
- 628897670b ./gcc/testsuite/consistency.vlad/layout/f-14-22-10.c
-2499257242b ./gcc/testsuite/consistency.vlad/layout/f-14-29-30.c
-1116508393b ./gcc/testsuite/consistency.vlad/layout/f-14-31-26.c
-3215710590b ./gcc/testsuite/consistency.vlad/layout/f-14-8-9.c
-2598471587b ./gcc/testsuite/consistency.vlad/layout/f-15-1-22.c
-1235023325b ./gcc/testsuite/consistency.vlad/layout/f-16-30-15.c
-3175789490b ./gcc/testsuite/consistency.vlad/layout/f-17-17-20.c
-1483764145b ./gcc/testsuite/consistency.vlad/layout/f-17-17-2.c
-2825171767b ./gcc/testsuite/consistency.vlad/layout/f-17-21-17.c
-3571484701b ./gcc/testsuite/consistency.vlad/layout/f-18-15-30.c
- 325844328b ./gcc/testsuite/consistency.vlad/layout/f-18-26-0.c
-4067860400b ./gcc/testsuite/consistency.vlad/layout/f-18-26-11.c
-1812484656b ./gcc/testsuite/consistency.vlad/layout/f-18-4-17.c
-3026961559b ./gcc/testsuite/consistency.vlad/layout/f-18-5-16.c
-3538065200b ./gcc/testsuite/consistency.vlad/layout/f-19-6-22.c
-2636321909b ./gcc/testsuite/consistency.vlad/layout/f-20-19-9.c
-4072544979b ./gcc/testsuite/consistency.vlad/layout/f-20-20-15.c
-3513144108b ./gcc/testsuite/consistency.vlad/layout/f-20-26-14.c
- 413528084b ./gcc/testsuite/consistency.vlad/layout/f-21-16-24.c
-2389669149b ./gcc/testsuite/consistency.vlad/layout/f-21-19-4.c
-1161583564b ./gcc/testsuite/consistency.vlad/layout/f-21-22-1.c
-3107982509b ./gcc/testsuite/consistency.vlad/layout/f-21-24-20.c
-1590859529b ./gcc/testsuite/consistency.vlad/layout/f-21-5-26.c
-1027772335b ./gcc/testsuite/consistency.vlad/layout/f-22-2-19.c
-1959300243b ./gcc/testsuite/consistency.vlad/layout/f-22-2-28.c
-1424392875b ./gcc/testsuite/consistency.vlad/layout/f-2-25-27.c
-4169983870b ./gcc/testsuite/consistency.vlad/layout/f-23-17-8.c
- 728940177b ./gcc/testsuite/consistency.vlad/layout/f-24-18-9.c
- 851596736b ./gcc/testsuite/consistency.vlad/layout/f-24-27-8.c
- 58214057b ./gcc/testsuite/consistency.vlad/layout/f-25-6-23.c
-2209054578b ./gcc/testsuite/consistency.vlad/layout/f-26-8-6.c
-2248812453b ./gcc/testsuite/consistency.vlad/layout/f-27-22-7.c
-3851531263b ./gcc/testsuite/consistency.vlad/layout/f-29-16-7.c
-1140548972b ./gcc/testsuite/consistency.vlad/layout/f-29-4-10.c
-3817519794b ./gcc/testsuite/consistency.vlad/layout/f-30-15-26.c
-2254570093b ./gcc/testsuite/consistency.vlad/layout/f-30-24-30.c
-1287065065b ./gcc/testsuite/consistency.vlad/layout/f-31-28-16.c
-1393314717b ./gcc/testsuite/consistency.vlad/layout/f-31-4-14.c
-1649382578b ./gcc/testsuite/consistency.vlad/layout/f-31-9-0.c
- 600206604b ./gcc/testsuite/consistency.vlad/layout/f-3-7-1.c
- 666347310b ./gcc/testsuite/consistency.vlad/layout/f-4-14-29.c
- 821467656b ./gcc/testsuite/consistency.vlad/layout/f-5-23-7.c
-2794715020b ./gcc/testsuite/consistency.vlad/layout/f-7-14-12.c
- 281818021b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-char.out
- 281818021b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-char.out++
-1727061245b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-double.out
-1727061245b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-double.out++
-1601851831b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-float.out
-1601851831b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-float.out++
-3221406627b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-int.out
-3221406627b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-int.out++
-3462656330b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/align-bool.out++
-2284866161b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/align-char.out
-2284866161b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/align-char.out++
-2016168953b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/align-double.out
-2016168953b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/align-double.out++
-3778571582b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/align-float.out
-3778571582b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/align-float.out++
-2268947026b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/align-int.out
-2268947026b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/align-int.out++
-3232401121b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/align-longdouble.out
-3232401121b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/align-longdouble.out++
-2659664521b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/align-longlong.out
-2659664521b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/align-longlong.out++
-3668254953b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/align-long.out
-3668254953b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/align-long.out++
-3544657861b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/align-pointer.out
-3544657861b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/align-pointer.out++
- 568190957b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/align-ptrdiff.out
- 568190957b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/align-ptrdiff.out++
-1592598882b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/align-short.out
-1592598882b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/align-short.out++
-2711568334b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/align-size.out
-2711568334b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/align-size.out++
-1604716971b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/align-wchar.out
-1604716971b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/align-wchar.out++
-2227734332b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-longdouble.out
-2227734332b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-longdouble.out++
-1069590031b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-longlong.out
-1069590031b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-longlong.out++
-3142186771b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-long.out
-3142186771b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-long.out++
-1963275345b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-of-s-char.out
-1963275345b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-of-s-char.out++
-2939358541b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-of-s-double.out
-2939358541b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-of-s-double.out++
-4001039866b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-of-s-float.out
-4001039866b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-of-s-float.out++
-3232823433b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-of-s-int.out
-3232823433b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-of-s-int.out++
-2623902989b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-of-s-longdouble.out
-2623902989b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-of-s-longdouble.out++
-1713649002b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-of-s-longlong.out
-1713649002b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-of-s-longlong.out++
-3779601801b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-of-s-long.out
-3779601801b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-of-s-long.out++
-2443484079b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-of-s-pointer.out
-2443484079b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-of-s-pointer.out++
-3159633525b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-of-s-ptrdiff_t.out
-3159633525b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-of-s-ptrdiff_t.out++
-2253324871b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-of-s-short.out
-2253324871b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-of-s-short.out++
- 166125968b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-pointer.out
- 166125968b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-pointer.out++
- 608443471b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-ptrdiff_t.out
- 608443471b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-ptrdiff_t.out++
-2402228544b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-short.out
-2402228544b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-short.out++
-4156594561b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-size_t.out
-4156594561b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-size_t.out++
- 492360794b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-wchar_t.out
- 492360794b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-wchar_t.out++
-4129036106b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/biggest-field-align.out
-4129036106b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/biggest-field-align.out++
-4100226006b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-char-1-c-char.out++
-3647609206b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-char-1-c-double.out++
- 706559590b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-char-1-c-float.out++
-1215678453b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-char-1-c-int.out++
-2100244020b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-char-1-c-longdouble.out+
- 48453457b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-char-1-c-longlong.out++
-4196765215b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-char-1-c-long.out++
-3131996511b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-char-1-c-pointer.out++
-1181309658b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-char-1-c-short.out++
-3978860778b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-char-2-c-char.out++
-2575125216b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-char-2-c-double.out++
-3758626543b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-char-2-c-float.out++
- 876931045b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-char-2-c-int.out++
-2507562199b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-char-2-c-longdouble.out+
-1079948168b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-char-2-c-longlong.out++
-3122728674b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-char-2-c-long.out++
- 557528819b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-char-2-c-pointer.out++
- 984328826b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-char-2-c-short.out++
-3870081867b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-double-1-c-char.out++
- 19559768b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-double-1-c-double.out++
-2915080636b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-double-1-c-float.out++
- 391114415b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-double-1-c-int.out++
-2943384114b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-double-1-c-longlong.out+
- 897790368b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-double-1-c-long.out++
-1812530953b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-double-1-c-pointer.out++
- 4419316b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-double-1-c-short.out++
-1529425773b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-double-2-c-char.out++
-2110018195b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-double-2-c-double.out++
- 431267742b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-double-2-c-float.out++
-4127117436b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-double-2-c-int.out++
-3919625178b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-double-2-c-longlong.out+
-3610473804b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-double-2-c-long.out++
-4161112465b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-double-2-c-pointer.out++
-2097187829b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-double-2-c-short.out++
- 638577261b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-float-1-c-char.out++
- 476074193b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-float-1-c-double.out++
- 384192667b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-float-1-c-float.out++
-3196085957b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-float-1-c-int.out++
-3708436693b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-float-1-c-longdouble.out
-2203415599b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-float-1-c-longlong.out++
- 964541378b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-float-1-c-long.out++
- 317097833b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-float-1-c-pointer.out++
-2217857064b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-float-1-c-short.out++
-3381433116b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-float-2-c-char.out++
- 429641349b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-float-2-c-double.out++
-3143138522b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-float-2-c-float.out++
- 637049178b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-float-2-c-int.out++
-2436155461b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-float-2-c-longdouble.out
-1035042416b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-float-2-c-longlong.out++
-3915291152b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-float-2-c-long.out++
-2715660950b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-float-2-c-pointer.out++
-1668069472b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-float-2-c-short.out++
-3152579670b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-int-1-c-char.out++
-1138705949b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-int-1-c-double.out++
-2023313489b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-int-1-c-float.out++
-1706645581b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-int-1-c-int.out++
-1167102151b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-int-1-c-longdouble.out++
- 853135804b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-int-1-c-longlong.out++
- 824095637b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-int-1-c-long.out++
-2845722513b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-int-1-c-pointer.out++
-1032279461b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-int-1-c-short.out++
- 150139450b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-int-2-c-char.out++
-3993039563b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-int-2-c-double.out++
-1771341638b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-int-2-c-float.out++
- 981734500b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-int-2-c-int.out++
-1272920488b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-int-2-c-longdouble.out++
-2082772967b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-int-2-c-longlong.out++
- 673250102b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-int-2-c-long.out++
-1447464664b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-int-2-c-pointer.out++
-2980070396b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-int-2-c-short.out++
-3338202537b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/class-char-and-virtual.out
- 836464684b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/class-int-and-virtual.out+
-3651827794b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/class-long-and-virtual.out
- 978303701b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-long-1-c-char.out++
-1349831301b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-long-1-c-double.out++
-4055309409b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-long-1-c-float.out++
- 281114634b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-long-1-c-int.out++
-1591591915b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-long-1-c-longdouble.out+
-1601182123b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-long-1-c-longlong.out++
-2092387878b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-long-1-c-long.out++
-1167331858b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-long-1-c-pointer.out++
-1373996143b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-long-1-c-short.out++
- 328768010b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-long-2-c-char.out++
-3391651497b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-long-2-c-double.out++
-1331092866b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-long-2-c-float.out++
-1363762993b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-long-2-c-int.out++
-3764776043b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-long-2-c-longdouble.out+
-3487659489b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-long-2-c-longlong.out++
- 860525318b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-long-2-c-long.out++
-1919812282b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-long-2-c-pointer.out++
-2539788600b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-long-2-c-short.out++
-1261002308b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-longdouble-1-c-char.out+
-1789962814b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-longdouble-1-c-float.out
-1178372529b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-longdouble-1-c-int.out++
- 923540745b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-longdouble-1-c-long.out+
-4019539100b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-longdouble-1-c-short.out
-1400671035b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-longdouble-2-c-char.out+
-1620516804b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-longdouble-2-c-float.out
- 57959266b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-longdouble-2-c-int.out++
- 428651475b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-longdouble-2-c-long.out+
-2929532078b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-longdouble-2-c-short.out
- 156205829b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-longlong-1-c-char.out++
- 274806308b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-longlong-1-c-double.out+
-1311432891b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-longlong-1-c-float.out++
- 271147996b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-longlong-1-c-int.out++
-2325547598b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-longlong-1-c-long.out++
-1602376231b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-longlong-1-c-pointer.out
-2056285955b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-longlong-1-c-short.out++
- 252215927b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-longlong-2-c-char.out++
-1703813948b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-longlong-2-c-double.out+
-3833743177b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-longlong-2-c-float.out++
- 168092554b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-longlong-2-c-int.out++
-2199050326b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-longlong-2-c-long.out++
-3195305369b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-longlong-2-c-pointer.out
-2151043874b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-longlong-2-c-short.out++
-3346796594b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-pointer-1-c-char.out++
-1049692423b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-pointer-1-c-double.out++
-1162385065b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-pointer-1-c-float.out++
-1723690768b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-pointer-1-c-int.out++
-1018652914b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-pointer-1-c-longlong.out
-1122627681b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-pointer-1-c-long.out++
-3157843542b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-pointer-1-c-pointer.out+
- 274267090b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-pointer-1-c-short.out++
-1856515882b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-pointer-2-c-char.out++
-1292784229b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-pointer-2-c-double.out++
-1950731775b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-pointer-2-c-float.out++
-1717751486b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-pointer-2-c-int.out++
-2591426150b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-pointer-2-c-longlong.out
-1316628006b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-pointer-2-c-long.out++
-4115148406b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-pointer-2-c-pointer.out+
-2893089093b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-pointer-2-c-short.out++
-3269036579b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-short-1-c-char.out++
- 327031780b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-short-1-c-double.out++
-1794337572b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-short-1-c-float.out++
- 799398662b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-short-1-c-int.out++
- 82846972b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-short-1-c-longdouble.out
-3028299097b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-short-1-c-longlong.out++
- 294463294b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-short-1-c-long.out++
-3616473829b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-short-1-c-pointer.out++
-4123209829b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-short-1-c-short.out++
-2386618953b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-short-2-c-char.out++
- 337500653b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-short-2-c-double.out++
-2241141027b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-short-2-c-float.out++
-3329743364b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-short-2-c-int.out++
-3880624999b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-short-2-c-longdouble.out
-3865506072b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-short-2-c-longlong.out++
-1783534270b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-short-2-c-long.out++
-2891687422b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-short-2-c-pointer.out++
-3938727462b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-short-2-c-short.out++
-2162077044b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/endian.out
-2162077044b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/endian.out++
-3419137637b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-0-0-5.out
-2697696866b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-0-0-5.out++
-3829700152b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-0-20-17.out
-4063785218b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-0-20-17.out++
-3595644405b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-0-24-24.out
-2437734191b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-0-24-24.out++
-3203785748b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-10-11-10.out
-3203785748b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-10-11-10.out++
-3883743979b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-11-12-10.out
-3883743979b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-11-12-10.out++
-1776162150b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-1-21-31.out
-1776162150b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-1-21-31.out++
-4292846411b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-1-3-1.out
-4292846411b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-1-3-1.out++
- 268554786b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-14-22-10.out
- 268554786b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-14-22-10.out++
-3887247867b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-14-29-30.out
-3887247867b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-14-29-30.out++
-1252658061b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-14-31-26.out
-1252658061b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-14-31-26.out++
-3752599983b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-14-8-9.out
-3752599983b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-14-8-9.out++
-2504143009b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-15-1-22.out
-2504143009b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-15-1-22.out++
- 285193031b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-16-30-15.out
- 285193031b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-16-30-15.out++
-1491637755b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-17-17-20.out
-1491637755b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-17-17-20.out++
-3346294426b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-17-17-2.out
-3346294426b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-17-17-2.out++
-2949641380b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-17-21-17.out
-2949641380b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-17-21-17.out++
-3877885575b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-18-15-30.out
-3877885575b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-18-15-30.out++
-3070142360b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-18-26-0.out
-1554435890b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-18-26-0.out++
- 934830165b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-18-26-11.out
- 934830165b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-18-26-11.out++
-3962835451b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-18-4-17.out
-3962835451b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-18-4-17.out++
-1291671333b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-18-5-16.out
-1291671333b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-18-5-16.out++
-1700775495b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-19-6-22.out
-1700775495b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-19-6-22.out++
- 123227249b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-20-19-9.out
- 123227249b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-20-19-9.out++
-1217631134b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-20-20-15.out
-1217631134b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-20-20-15.out++
- 122124427b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-20-26-14.out
- 122124427b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-20-26-14.out++
-1954763271b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-21-16-24.out
-1954763271b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-21-16-24.out++
-4037426595b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-21-19-4.out
-4037426595b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-21-19-4.out++
- 570806957b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-21-22-1.out
- 570806957b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-21-22-1.out++
-3471862654b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-21-24-20.out
-3471862654b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-21-24-20.out++
-2840862240b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-21-5-26.out
-2840862240b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-21-5-26.out++
-1675033355b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-22-2-19.out
-1675033355b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-22-2-19.out++
- 419856428b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-22-2-28.out
- 419856428b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-22-2-28.out++
- 906364881b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-2-25-27.out
- 906364881b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-2-25-27.out++
-2034059518b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-23-17-8.out
-2034059518b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-23-17-8.out++
-4200924887b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-24-18-9.out
-4200924887b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-24-18-9.out++
- 945528697b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-24-27-8.out
- 945528697b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-24-27-8.out++
-3365164560b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-25-6-23.out
-3365164560b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-25-6-23.out++
- 925799049b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-26-8-6.out
- 925799049b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-26-8-6.out++
-1807802763b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-27-22-7.out
-1807802763b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-27-22-7.out++
-3387583484b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-29-16-7.out
-3387583484b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-29-16-7.out++
-2411254670b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-29-4-10.out
-2411254670b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-29-4-10.out++
-1870571592b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-30-15-26.out
-1870571592b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-30-15-26.out++
-1466032498b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-30-24-30.out
-1466032498b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-30-24-30.out++
-1625962562b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-31-28-16.out
-1625962562b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-31-28-16.out++
- 663265344b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-31-4-14.out
- 663265344b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-31-4-14.out++
-1272990598b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-31-9-0.out
- 785742212b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-31-9-0.out++
-1816309710b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-3-7-1.out
-1816309710b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-3-7-1.out++
-4120030053b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-4-14-29.out
-4120030053b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-4-14-29.out++
- 140937946b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-5-23-7.out
- 140937946b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-5-23-7.out++
-1100765591b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-7-14-12.out
-1100765591b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-7-14-12.out++
-2156310103b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/README
- 13174497b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-a-char.out
- 13174497b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-a-char.out++
-1263879599b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-a-double.out
-1263879599b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-a-double.out++
-3169577204b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-a-float.out
-3169577204b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-a-float.out++
-3237207754b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-a-int.out
-3237207754b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-a-int.out++
- 300638802b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-a-longdouble.out
- 300638802b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-a-longdouble.out++
- 851353395b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-a-longlong.out
- 851353395b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-a-longlong.out++
-1717871431b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-a-long.out
-1717871431b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-a-long.out++
-2838094559b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-a-pointer.out
-2838094559b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-a-pointer.out++
-4192163054b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-a-short.out
-4192163054b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-a-short.out++
- 149259060b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-char.out
- 149259060b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-char.out++
- 119844797b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-double.out
- 119844797b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-double.out++
-3332841867b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-float.out
-3332841867b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-float.out++
-1726003194b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-int.out
-1726003194b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-int.out++
-2075118149b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-longdouble.out
-2075118149b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-longdouble.out++
-4051434430b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-longlong.out
-4051434430b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-longlong.out++
-1941216341b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-long.out
-1941216341b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-long.out++
-3517893171b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-pointer.out
-3517893171b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-pointer.out++
-1361556762b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-ptrdiff_t.out
-1361556762b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-ptrdiff_t.out++
-3648796915b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-s-char.out
-3648796915b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-s-char.out++
-3472798323b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-s-double.out
-3472798323b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-s-double.out++
-1163555929b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-s-float.out
-1163555929b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-s-float.out++
-2797269136b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-short.out
-2797269136b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-short.out++
- 611130168b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-s-int.out
- 611130168b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-s-int.out++
-3946363802b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-size_t.out
-3946363802b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-size_t.out++
-1330421760b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-s-longdouble.out
-1330421760b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-s-longdouble.out++
-2813748371b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-s-longlong.out
-2813748371b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-s-longlong.out++
-3300687114b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-s-long.out
-3300687114b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-s-long.out++
- 622013241b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-s-pointer.out
- 622013241b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-s-pointer.out++
-2254695019b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-s-short.out
-2254695019b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-s-short.out++
- 782081091b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-wchar_t.out
- 782081091b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-wchar_t.out++
-4058125827b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-zf-char.out
-2028972393b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-zf-char.out++
-2183773616b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-zf-int.out
- 720666868b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-zf-int.out++
-2722211350b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-zf-longlong.out
-3171703288b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-zf-longlong.out++
-3570596356b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-zf-long.out
-3870166054b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-zf-long.out++
-3936055108b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-zf-short.out
-2420900899b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-zf-short.out++
-4236338674b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-a-char.out
-4236338674b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-a-char.out++
-2364889610b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-a-double.out
-2364889610b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-a-double.out++
- 424524236b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-a-float.out
- 424524236b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-a-float.out++
-2185924966b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-a-int.out
-2185924966b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-a-int.out++
-3208408277b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-a-longdouble.out
-3208408277b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-a-longdouble.out+
- 616366511b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-a-longlong.out
- 616366511b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-a-longlong.out++
-1377847542b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-a-long.out
-1377847542b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-a-long.out++
-1932644731b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-a-pointer.out
-1932644731b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-a-pointer.out++
-2597633381b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-a-short.out
-2597633381b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-a-short.out++
-2667451408b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-char.out
-2667451408b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-char.out++
-3581566571b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-double.out
-3581566571b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-double.out++
-3759577000b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-float.out
-3759577000b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-float.out++
- 51600390b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-int.out
- 51600390b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-int.out++
-3808892329b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-longdouble.out
-3808892329b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-longdouble.out++
-3894925976b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-longlong.out
-3894925976b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-longlong.out++
-3724144772b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-long.out
-3724144772b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-long.out++
-1869357795b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-pointer.out
-1869357795b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-pointer.out++
- 993350744b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-ptrdiff_t.out
- 993350744b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-ptrdiff_t.out++
-2313797849b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-s-char.out
-2313797849b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-s-char.out++
-2223824125b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-s-double.out
-2223824125b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-s-double.out++
-3883069309b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-s-float.out
-3883069309b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-s-float.out++
- 351083924b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-short.out
- 351083924b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-short.out++
-2863998748b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-s-int.out
-2863998748b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-s-int.out++
-3505234855b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-size_t.out
-3505234855b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-size_t.out++
-1829775023b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-s-longdouble.out
-1829775023b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-s-longdouble.out+
- 284599855b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-s-longlong.out
- 284599855b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-s-longlong.out++
-2272464711b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-s-long.out
-2272464711b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-s-long.out++
- 598623650b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-s-pointer.out
- 598623650b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-s-pointer.out++
-2749602529b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-s-short.out
-2749602529b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-s-short.out++
-3026762224b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-wchar_t.out
-3026762224b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-wchar_t.out++
-3986574077b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-zf-char.out
-2222066822b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-zf-char.out++
-1754736725b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-zf-int.out
-1559899710b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-zf-int.out++
-3088104680b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-zf-longlong.out
-3583168624b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-zf-longlong.out++
-2138195968b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-zf-long.out
-1206677029b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-zf-long.out++
- 868552483b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-zf-short.out
-3855067152b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-zf-short.out++
- 424345382b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-a-char.out
- 424345382b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-a-char.out++
-3542754385b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-a-double.out
-3542754385b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-a-double.out++
-1489296274b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-a-float.out
-1489296274b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-a-float.out++
-1250016403b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-a-int.out
-1250016403b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-a-int.out++
-1568017389b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-a-longdouble.out
-1568017389b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-a-longdouble.out++
-1248642357b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-a-longlong.out
-1248642357b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-a-longlong.out++
-2598597791b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-a-long.out
-2598597791b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-a-long.out++
- 799116997b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-a-pointer.out
- 799116997b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-a-pointer.out++
-3756480259b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-a-short.out
-3756480259b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-a-short.out++
-3564221209b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-char.out
-3564221209b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-char.out++
-3409990675b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-double.out
-3409990675b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-double.out++
-1556696261b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-float.out
-1556696261b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-float.out++
-1622170282b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-int.out
-1622170282b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-int.out++
-1134958145b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-longdouble.out
-1134958145b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-longdouble.out++
-3168453682b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-longlong.out
-3168453682b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-longlong.out++
- 530122249b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-long.out
- 530122249b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-long.out++
-2922640763b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-pointer.out
-2922640763b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-pointer.out++
-4066163210b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-ptrdiff_t.out
-4066163210b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-ptrdiff_t.out++
- 646390276b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-s-char.out
- 646390276b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-s-char.out++
-1420738760b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-s-double.out
-1420738760b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-s-double.out++
-1009261265b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-s-float.out
-1009261265b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-s-float.out++
- 233068758b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-short.out
- 233068758b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-short.out++
-2256009544b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-s-int.out
-2256009544b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-s-int.out++
-3735342934b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-size_t.out
-3735342934b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-size_t.out++
- 310608698b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-s-longdouble.out
- 310608698b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-s-longdouble.out++
- 229917060b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-s-longlong.out
- 229917060b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-s-longlong.out++
-1389606757b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-s-long.out
-1389606757b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-s-long.out++
-1605766695b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-s-pointer.out
-1605766695b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-s-pointer.out++
-1493100197b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-s-short.out
-1493100197b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-s-short.out++
-1525245762b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-wchar_t.out
-1525245762b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-wchar_t.out++
-2458932893b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-zf-char.out
-2965855099b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-zf-char.out++
- 349006013b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-zf-int.out
-2335123085b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-zf-int.out++
-1503454956b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-zf-longlong.out
-2287857977b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-zf-longlong.out++
-1137560689b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-zf-long.out
- 430614706b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-zf-long.out++
- 811714276b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-zf-short.out
-2579260275b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-zf-short.out++
-3026572564b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-a-char.out
-3026572564b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-a-char.out++
-3107188041b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-a-double.out
-3107188041b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-a-double.out++
- 879973237b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-a-float.out
- 879973237b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-a-float.out++
-3051633289b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-a-int.out
-3051633289b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-a-int.out++
-2410327242b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-a-longdouble.out
-2410327242b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-a-longdouble.out++
-3929531475b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-a-longlong.out
-3929531475b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-a-longlong.out++
-2062849219b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-a-long.out
-2062849219b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-a-long.out++
-3096965928b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-a-pointer.out
-3096965928b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-a-pointer.out++
-1204833150b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-a-short.out
-1204833150b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-a-short.out++
-2920760800b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-char.out
-2920760800b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-char.out++
-1027251474b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-double.out
-1027251474b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-double.out++
-3856842277b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-float.out
-3856842277b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-float.out++
-3890912034b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-int.out
-3890912034b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-int.out++
-3592101251b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-longdouble.out
-3592101251b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-longdouble.out++
- 881354323b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-longlong.out
- 881354323b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-longlong.out++
- 162876982b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-long.out
- 162876982b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-long.out++
-3497380019b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-pointer.out
-3497380019b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-pointer.out++
- 127240785b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-ptrdiff_t.out
- 127240785b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-ptrdiff_t.out++
-1588095226b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-s-char.out
-1588095226b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-s-char.out++
-1788492129b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-s-double.out
-1788492129b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-s-double.out++
-3331892538b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-s-float.out
-3331892538b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-s-float.out++
-3410880438b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-short.out
-3410880438b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-short.out++
- 446524396b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-s-int.out
- 446524396b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-s-int.out++
-2907962645b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-size_t.out
-2907962645b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-size_t.out++
- 476184310b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-s-longdouble.out
- 476184310b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-s-longdouble.out++
-4058854518b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-s-longlong.out
-4058854518b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-s-longlong.out++
- 751158190b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-s-long.out
- 751158190b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-s-long.out++
-1766070031b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-s-pointer.out
-1766070031b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-s-pointer.out++
-2844975244b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-s-short.out
-2844975244b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-s-short.out++
- 496574257b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-wchar_t.out
- 496574257b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-wchar_t.out++
-3465834813b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-zf-char.out
-3886284191b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-zf-char.out++
-1090439347b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-zf-int.out
-3979163905b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-zf-int.out++
-2062836287b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-zf-longlong.out
-3075841449b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-zf-longlong.out++
-2400092189b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-zf-long.out
-3700180902b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-zf-long.out++
-2158685975b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-zf-short.out
-1012271831b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-zf-short.out++
-4107261541b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/size-bool.out++
- 919632946b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/size-char.out
- 919632946b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/size-char.out++
-1524915532b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/size-double.out
-1524915532b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/size-double.out++
- 594930693b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/size-float.out
- 594930693b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/size-float.out++
-1957268000b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/size-int.out
-1957268000b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/size-int.out++
-1658583497b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/size-longdouble.out
-1658583497b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/size-longdouble.out++
- 312453039b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/size-longlong.out
- 312453039b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/size-longlong.out++
-1244662439b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/size-long.out
-1244662439b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/size-long.out++
-3802875737b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/size-pointer.out
-3802875737b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/size-pointer.out++
-1324451320b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/size-ptrdiff.out
-1324451320b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/size-ptrdiff.out++
-1620300254b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/size-short.out
-1620300254b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/size-short.out++
-1933118540b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/size-size.out
-1933118540b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/size-size.out++
-3741425609b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/size-wchar.out
-3741425609b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/size-wchar.out++
-1870109470b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-a-char.out
-1870109470b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-a-char.out++
-1651744974b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-a-double.out
-1651744974b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-a-double.out++
- 362585434b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-a-float.out
- 362585434b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-a-float.out++
-1163094327b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-a-int.out
-1163094327b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-a-int.out++
- 291703399b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-a-longdouble.out
- 291703399b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-a-longdouble.out++
-3762408624b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-a-longlong.out
-3762408624b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-a-longlong.out++
-3555956076b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-a-long.out
-3555956076b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-a-long.out++
-2332886721b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-a-pointer.out
-2332886721b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-a-pointer.out++
-2480870612b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-a-short.out
-2480870612b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-a-short.out++
-2916189460b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-char.out
-2916189460b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-char.out++
-2502123578b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-a-char.out
-2502123578b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-a-char.out++
- 908745179b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-a-double.out
- 908745179b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-a-double.out+
-1491334033b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-a-float.out
-1491334033b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-a-float.out++
-1108678434b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-a-int.out
-1108678434b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-a-int.out++
-1691807337b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-a-long.out
-1691807337b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-a-long.out++
-3880595806b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-a-pointer.out
-1830679325b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-a-short.out
-1830679325b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-a-short.out++
-2688367579b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-char.out
-2688367579b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-char.out++
- 562176588b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-double.out
- 562176588b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-double.out++
-3081730244b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-float.out
-3081730244b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-float.out++
- 830680808b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-int.out
- 830680808b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-int.out++
-4111931150b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-longlong.out
-4111931150b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-longlong.out+
-1437253678b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-long.out
-1437253678b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-long.out++
- 497513900b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-double.out
- 497513900b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-double.out++
-3184654982b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-pointer.out
-3184654982b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-pointer.out++
-2209121894b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-ptrdiff_t.out
- 607323772b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-s-char.out
- 607323772b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-s-char.out++
-1592572645b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-s-double.out
-1592572645b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-s-double.out+
-2123592192b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-s-float.out
-2123592192b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-s-float.out++
-1624565665b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-short.out
-1624565665b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-short.out++
-2058112871b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-s-int.out
-2058112871b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-s-int.out++
- 18114278b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-size_t.out
- 18114278b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-size_t.out++
-1209643017b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-s-long.out
-1209643017b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-s-long.out++
- 137221407b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-s-pointer.out
-2707233896b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-s-short.out
-2707233896b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-s-short.out++
-2306040258b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-wchar_t.out
-2306040258b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-wchar_t.out++
- 561421555b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-zf-char.out
-3000456303b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-zf-char.out++
- 989841357b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-zf-int.out
-2841513809b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-zf-int.out++
-3221903988b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-zf-long.out
-1403753192b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-zf-long.out++
-2463066035b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-zf-short.out
- 24031023b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-zf-short.out+
-2489472050b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-float.out
-2489472050b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-float.out++
-2743476630b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-int.out
-2743476630b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-int.out++
-2821438118b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-a-char.out
-2821438118b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-a-char.out++
- 44039327b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-a-double.out
- 44039327b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-a-double.out++
-3941392051b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-a-float.out
-3941392051b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-a-float.out++
-2609834450b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-a-int.out
-2609834450b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-a-int.out++
-2868812260b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-a-longlong.out
-2868812260b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-a-longlong.out+
-3407178115b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-a-long.out
-3407178115b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-a-long.out++
- 855452388b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-a-pointer.out
- 855452388b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-a-pointer.out++
-3186715271b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-a-short.out
-3186715271b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-a-short.out++
-3073461247b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-char.out
-3073461247b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-char.out++
-3665863579b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-longdouble.out
-3665863579b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-longdouble.out++
-3026224568b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-double.out
-3026224568b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-double.out++
-1191292162b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-float.out
-1191292162b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-float.out++
-1548870351b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-int.out
-1548870351b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-int.out++
-3829659624b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-longdouble.out
-3829659624b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-longdouble.out+
-1372837239b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-longlong.out
-1372837239b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-longlong.out++
-4020247482b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-longlong.out
-4020247482b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-longlong.out++
- 470378869b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-long.out
- 470378869b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-long.out++
-2654575439b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-long.out
-2654575439b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-long.out++
-3536102064b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-pointer.out
-3536102064b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-pointer.out++
- 579862700b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-ptrdiff_t.out
- 579862700b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-ptrdiff_t.out++
- 949526555b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-s-char.out
- 949526555b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-s-char.out++
- 397921610b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-s-double.out
- 397921610b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-s-double.out++
-2538191755b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-s-float.out
-2538191755b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-s-float.out++
-1971310399b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-short.out
-1971310399b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-short.out++
-4237589805b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-s-int.out
-4237589805b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-s-int.out++
-2419011586b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-size_t.out
-2419011586b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-size_t.out++
-1624025758b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-s-longlong.out
-1624025758b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-s-longlong.out+
-3782463750b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-s-long.out
-3782463750b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-s-long.out++
-1972186934b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-s-pointer.out
-1972186934b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-s-pointer.out++
- 829099133b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-s-short.out
- 829099133b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-s-short.out++
-1350491757b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-wchar_t.out
-1350491757b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-wchar_t.out++
-2215666329b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-zf-char.out
- 745407154b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-zf-char.out++
- 140198870b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-zf-int.out
-3397457298b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-zf-int.out++
- 972059489b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-zf-longlong.out
- 904046880b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-zf-long.out
-2657286993b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-zf-long.out++
-2804701286b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-zf-short.out
- 22008069b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-zf-short.out++
- 628108037b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-pointer.out
- 628108037b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-pointer.out++
-1311213846b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-ptrdiff_t.out
-1311213846b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-ptrdiff_t.out++
-2141238480b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-s-char.out
-2141238480b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-s-char.out++
-1859208772b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-s-double.out
-1859208772b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-s-double.out++
-4206164034b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-s-float.out
-4206164034b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-s-float.out++
- 945387931b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-short.out
- 945387931b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-short.out++
-3679940725b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-s-int.out
-3679940725b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-s-int.out++
-2232487072b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-size_t.out
-2232487072b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-size_t.out++
-3251153332b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-s-longdouble.out
-3251153332b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-s-longdouble.out++
- 247594466b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-s-longlong.out
- 247594466b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-s-longlong.out++
-2261218946b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-s-long.out
-2261218946b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-s-long.out++
-3759513989b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-s-pointer.out
-3759513989b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-s-pointer.out++
-3008225932b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-s-short.out
-3008225932b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-s-short.out++
-3661856117b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-wchar_t.out
-3661856117b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-wchar_t.out++
-2003883578b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-zf-char.out
-1185711188b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-zf-char.out++
- 79396233b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-zf-int.out
- 347581897b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-zf-int.out++
-2617412395b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-zf-longlong.out
-2872220966b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-zf-longlong.out++
-1379940925b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-zf-long.out
-3639419163b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-zf-long.out++
-1812574077b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-zf-short.out
-2920229150b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-zf-short.out++
- 638071746b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-a-char.out
- 638071746b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-a-char.out++
-3332432545b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-a-double.out
-3332432545b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-a-double.out++
-1534334155b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-a-float.out
-1534334155b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-a-float.out++
-3880550727b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-a-int.out
-3880550727b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-a-int.out++
- 251411986b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-a-longdouble.out
-2493905430b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-a-longlong.out
-2493905430b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-a-longlong.out++
- 180275403b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-a-long.out
- 180275403b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-a-long.out++
-1868637423b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-a-pointer.out
-1868637423b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-a-pointer.out++
-3971852122b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-a-short.out
-3971852122b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-a-short.out++
-3868413247b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-char.out
-3868413247b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-char.out++
-3686342475b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-double.out
-3686342475b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-double.out++
-3364520721b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-float.out
-3364520721b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-float.out++
-2026186277b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-int.out
-2026186277b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-int.out++
-1274562854b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-longdouble.out
-1274562854b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-longdouble.out++
-2670045344b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-longlong.out
-2670045344b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-longlong.out++
- 554032384b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-long.out
- 554032384b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-long.out++
-2655788537b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-pointer.out
-2655788537b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-pointer.out++
- 797630104b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-ptrdiff_t.out
- 797630104b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-ptrdiff_t.out++
-1922745643b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-s-char.out
-1922745643b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-s-char.out++
-4073638002b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-s-double.out
-4073638002b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-s-double.out++
-3219629814b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-s-float.out
-3219629814b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-s-float.out++
-3050131671b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-short.out
-3050131671b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-short.out++
-2810751409b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-s-int.out
-2810751409b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-s-int.out++
-3655683515b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-size_t.out
-3655683515b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-size_t.out++
-2708502837b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-s-longdouble.out
- 753682265b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-s-longlong.out
- 753682265b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-s-longlong.out++
-4193535248b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-s-long.out
-4193535248b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-s-long.out++
- 554657656b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-s-pointer.out
- 554657656b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-s-pointer.out++
- 843107606b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-s-short.out
- 843107606b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-s-short.out++
-2293091315b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-wchar_t.out
-2293091315b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-wchar_t.out++
-1599802745b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-zf-char.out
-3264566923b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-zf-char.out++
-2587475685b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-zf-int.out
-1005185879b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-zf-int.out++
-2426330969b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-zf-longlong.out
-3112366542b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-zf-longlong.out+
- 273113417b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-zf-long.out
-3825433163b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-zf-long.out++
-1180077740b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-zf-short.out
- 875920723b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-zf-short.out++
-2651380458b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-ptrdiff_t-char.out
-2651380458b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-ptrdiff_t-char.out++
-2157112743b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-ptrdiff_t-double.out
-2157112743b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-ptrdiff_t-double.out++
- 2483342b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-ptrdiff_t-float.out
- 2483342b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-ptrdiff_t-float.out++
-3030027871b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-ptrdiff_t-int.out
-3030027871b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-ptrdiff_t-int.out++
- 842815367b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-ptrdiff_t-longdouble.out
-2374908820b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-ptrdiff_t-longlong.out
-2374908820b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-ptrdiff_t-longlong.out++
-2742634608b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-ptrdiff_t-long.out
-2742634608b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-ptrdiff_t-long.out++
-1105378681b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-ptrdiff_t-pointer.out
-1105378681b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-ptrdiff_t-pointer.out++
-2222112016b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-ptrdiff_t-ptrdiff_t.out
-2222112016b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-ptrdiff_t-ptrdiff_t.out+
- 178487862b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-ptrdiff_t-short.out
- 178487862b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-ptrdiff_t-short.out++
-3944948267b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-ptrdiff_t-size_t.out
-3944948267b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-ptrdiff_t-size_t.out++
- 730216995b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-ptrdiff_t-wchar_t.out
- 730216995b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-ptrdiff_t-wchar_t.out++
-3233423287b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-a-char.out
-3233423287b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-a-char.out++
-2913953381b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-a-double.out
-2913953381b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-a-double.out++
-3441673581b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-a-float.out
-3441673581b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-a-float.out++
- 911216572b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-a-int.out
- 911216572b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-a-int.out++
-3193177612b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-a-longdouble.out
-3193177612b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-a-longdouble.out++
-3997296607b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-a-longlong.out
-3997296607b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-a-longlong.out++
-1537969173b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-a-long.out
-1537969173b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-a-long.out++
- 364952624b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-a-pointer.out
- 364952624b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-a-pointer.out++
- 970855379b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-a-short.out
- 970855379b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-a-short.out++
-3887113392b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-char.out
-3887113392b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-char.out++
- 851101858b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-double.out
- 851101858b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-double.out++
-3721234230b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-float.out
-3721234230b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-float.out++
-1012475701b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-int.out
-1012475701b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-int.out++
-2555149638b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-longdouble.out
-2555149638b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-longdouble.out++
-2273094318b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-longlong.out
-2273094318b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-longlong.out++
-3766414610b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-long.out
-3766414610b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-long.out++
-1639107229b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-pointer.out
-1639107229b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-pointer.out++
-1075156439b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-ptrdiff_t.out
-1075156439b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-ptrdiff_t.out++
-2869252033b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-s-char.out
-2869252033b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-s-char.out++
-2528716480b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-s-double.out
-2528716480b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-s-double.out++
- 785209287b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-s-float.out
- 785209287b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-s-float.out++
-2164738263b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-short.out
-2164738263b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-short.out++
-1126071492b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-s-int.out
-1126071492b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-s-int.out++
-3593875829b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-size_t.out
-3593875829b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-size_t.out++
-3460438392b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-s-longdouble.out
-3460438392b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-s-longdouble.out++
-1289753849b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-s-longlong.out
-1289753849b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-s-longlong.out++
-1435590236b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-s-long.out
-1435590236b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-s-long.out++
-1476260714b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-s-pointer.out
-1476260714b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-s-pointer.out++
- 500188532b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-s-short.out
- 500188532b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-s-short.out++
-2506643620b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-wchar_t.out
-2506643620b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-wchar_t.out++
-3126905441b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-zf-char.out
-1940799148b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-zf-char.out++
-1010693185b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-zf-int.out
-1212564314b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-zf-int.out++
-2599781179b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-zf-longlong.out
-3990788430b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-zf-longlong.out++
-1799180429b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-zf-long.out
-3670265189b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-zf-long.out++
- 412178968b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-zf-short.out
-1523910308b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-zf-short.out++
- 177607961b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-size_t-char.out
- 177607961b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-size_t-char.out++
-2444832335b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-size_t-double.out
-2444832335b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-size_t-double.out++
-2227123143b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-size_t-float.out
-2227123143b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-size_t-float.out++
-2732243950b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-size_t-int.out
-2732243950b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-size_t-int.out++
-2655501391b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-size_t-longdouble.out
-2655501391b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-size_t-longdouble.out++
-3487867828b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-size_t-longlong.out
-3487867828b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-size_t-longlong.out++
- 978381513b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-size_t-long.out
- 978381513b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-size_t-long.out++
-4141092354b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-size_t-pointer.out
-4141092354b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-size_t-pointer.out++
- 282420262b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-size_t-ptrdiff_t.out
- 282420262b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-size_t-ptrdiff_t.out++
- 708432696b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-size_t-short.out
- 708432696b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-size_t-short.out++
-1667222853b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-size_t-size_t.out
-1667222853b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-size_t-size_t.out++
- 839103492b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-size_t-wchar_t.out
- 839103492b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-size_t-wchar_t.out++
-1754196141b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-wchar_t-char.out
-1754196141b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-wchar_t-char.out++
- 355115283b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-wchar_t-double.out
- 355115283b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-wchar_t-double.out++
-4175033844b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-wchar_t-float.out
-4175033844b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-wchar_t-float.out++
-2745764679b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-wchar_t-int.out
-2745764679b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-wchar_t-int.out++
-3007141392b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-wchar_t-longdouble.out
-3007141392b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-wchar_t-longdouble.out++
-1445387844b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-wchar_t-longlong.out
-1445387844b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-wchar_t-longlong.out++
-2937616530b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-wchar_t-long.out
-2937616530b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-wchar_t-long.out++
-2501204111b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-wchar_t-pointer.out
-2501204111b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-wchar_t-pointer.out++
- 887379829b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-wchar_t-ptrdiff_t.out
- 887379829b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-wchar_t-ptrdiff_t.out++
-2241734194b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-wchar_t-short.out
-2241734194b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-wchar_t-short.out++
- 676320345b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-wchar_t-size_t.out
- 676320345b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-wchar_t-size_t.out++
-2213842565b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-wchar_t-wchar_t.out
-2213842565b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-wchar_t-wchar_t.out++
-2700306833b ./gcc/testsuite/consistency.vlad/layout/minimal-struct-size-align.c
-3619982975b ./gcc/testsuite/consistency.vlad/layout/s-char-a-char.c
- 727040386b ./gcc/testsuite/consistency.vlad/layout/s-char-a-double.c
- 491533109b ./gcc/testsuite/consistency.vlad/layout/s-char-a-float.c
-3078996477b ./gcc/testsuite/consistency.vlad/layout/s-char-a-int.c
- 572081613b ./gcc/testsuite/consistency.vlad/layout/s-char-a-long.c
-1875679261b ./gcc/testsuite/consistency.vlad/layout/s-char-a-longdouble.c
-1802587241b ./gcc/testsuite/consistency.vlad/layout/s-char-a-longlong.c
-3668401631b ./gcc/testsuite/consistency.vlad/layout/s-char-a-pointer.c
-2583229386b ./gcc/testsuite/consistency.vlad/layout/s-char-a-short.c
- 354065986b ./gcc/testsuite/consistency.vlad/layout/s-char-char.c
- 166713106b ./gcc/testsuite/consistency.vlad/layout/s-char-double.c
- 789665974b ./gcc/testsuite/consistency.vlad/layout/s-char-float.c
-2449543606b ./gcc/testsuite/consistency.vlad/layout/s-char-int.c
-2677202274b ./gcc/testsuite/consistency.vlad/layout/s-char-long.c
-3864063005b ./gcc/testsuite/consistency.vlad/layout/s-char-longdouble.c
-2745197038b ./gcc/testsuite/consistency.vlad/layout/s-char-longlong.c
-4261808453b ./gcc/testsuite/consistency.vlad/layout/s-char-pointer.c
-2261048804b ./gcc/testsuite/consistency.vlad/layout/s-char-ptrdiff_t.c
-1919204038b ./gcc/testsuite/consistency.vlad/layout/s-char-s-char.c
-2356076301b ./gcc/testsuite/consistency.vlad/layout/s-char-s-double.c
- 765329706b ./gcc/testsuite/consistency.vlad/layout/s-char-s-float.c
-3605211274b ./gcc/testsuite/consistency.vlad/layout/s-char-short.c
-3351760677b ./gcc/testsuite/consistency.vlad/layout/s-char-s-int.c
-3130164308b ./gcc/testsuite/consistency.vlad/layout/s-char-size_t.c
-1763672929b ./gcc/testsuite/consistency.vlad/layout/s-char-s-long.c
-1834388031b ./gcc/testsuite/consistency.vlad/layout/s-char-s-longdouble.c
- 559076232b ./gcc/testsuite/consistency.vlad/layout/s-char-s-longlong.c
-2344655103b ./gcc/testsuite/consistency.vlad/layout/s-char-s-pointer.c
- 220067620b ./gcc/testsuite/consistency.vlad/layout/s-char-s-short.c
-4159231551b ./gcc/testsuite/consistency.vlad/layout/s-char-wchar_t.c
-2462993036b ./gcc/testsuite/consistency.vlad/layout/s-char-zf-char.c
- 541003594b ./gcc/testsuite/consistency.vlad/layout/s-char-zf-int.c
-2021533516b ./gcc/testsuite/consistency.vlad/layout/s-char-zf-long.c
- 664373477b ./gcc/testsuite/consistency.vlad/layout/s-char-zf-longlong.c
-3578692014b ./gcc/testsuite/consistency.vlad/layout/s-char-zf-short.c
-3453180393b ./gcc/testsuite/consistency.vlad/layout/s-double-a-char.c
- 101761990b ./gcc/testsuite/consistency.vlad/layout/s-double-a-double.c
-3473415719b ./gcc/testsuite/consistency.vlad/layout/s-double-a-float.c
- 327989632b ./gcc/testsuite/consistency.vlad/layout/s-double-a-int.c
- 233827811b ./gcc/testsuite/consistency.vlad/layout/s-double-a-long.c
-2208485716b ./gcc/testsuite/consistency.vlad/layout/s-double-a-longdouble.c
-1391002931b ./gcc/testsuite/consistency.vlad/layout/s-double-a-longlong.c
-2859596990b ./gcc/testsuite/consistency.vlad/layout/s-double-a-pointer.c
-3559689934b ./gcc/testsuite/consistency.vlad/layout/s-double-a-short.c
-4020276225b ./gcc/testsuite/consistency.vlad/layout/s-double-char.c
- 987841011b ./gcc/testsuite/consistency.vlad/layout/s-double-double.c
- 704836077b ./gcc/testsuite/consistency.vlad/layout/s-double-float.c
-2692874561b ./gcc/testsuite/consistency.vlad/layout/s-double-int.c
-2941605757b ./gcc/testsuite/consistency.vlad/layout/s-double-long.c
-3228770514b ./gcc/testsuite/consistency.vlad/layout/s-double-longdouble.c
-3584369719b ./gcc/testsuite/consistency.vlad/layout/s-double-longlong.c
-1752254424b ./gcc/testsuite/consistency.vlad/layout/s-double-pointer.c
-2905865681b ./gcc/testsuite/consistency.vlad/layout/s-double-ptrdiff_t.c
-1892057278b ./gcc/testsuite/consistency.vlad/layout/s-double-s-char.c
-2394566615b ./gcc/testsuite/consistency.vlad/layout/s-double-s-double.c
-4064931917b ./gcc/testsuite/consistency.vlad/layout/s-double-s-float.c
-1137455402b ./gcc/testsuite/consistency.vlad/layout/s-double-short.c
-3672946380b ./gcc/testsuite/consistency.vlad/layout/s-double-s-int.c
-3731114983b ./gcc/testsuite/consistency.vlad/layout/s-double-size_t.c
-4099130503b ./gcc/testsuite/consistency.vlad/layout/s-double-s-long.c
-2508841997b ./gcc/testsuite/consistency.vlad/layout/s-double-s-longdouble.c
-2547516874b ./gcc/testsuite/consistency.vlad/layout/s-double-s-longlong.c
-2394584890b ./gcc/testsuite/consistency.vlad/layout/s-double-s-pointer.c
-1087857878b ./gcc/testsuite/consistency.vlad/layout/s-double-s-short.c
-1074227714b ./gcc/testsuite/consistency.vlad/layout/s-double-wchar_t.c
-4075513176b ./gcc/testsuite/consistency.vlad/layout/s-double-zf-char.c
-2181060239b ./gcc/testsuite/consistency.vlad/layout/s-double-zf-int.c
-1000788988b ./gcc/testsuite/consistency.vlad/layout/s-double-zf-long.c
-2794343535b ./gcc/testsuite/consistency.vlad/layout/s-double-zf-longlong.c
-3512529490b ./gcc/testsuite/consistency.vlad/layout/s-double-zf-short.c
-4042825902b ./gcc/testsuite/consistency.vlad/layout/s-float-a-char.c
- 281123545b ./gcc/testsuite/consistency.vlad/layout/s-float-a-double.c
-1325772879b ./gcc/testsuite/consistency.vlad/layout/s-float-a-float.c
-3760629573b ./gcc/testsuite/consistency.vlad/layout/s-float-a-int.c
-2902891820b ./gcc/testsuite/consistency.vlad/layout/s-float-a-long.c
-3379455906b ./gcc/testsuite/consistency.vlad/layout/s-float-a-longdouble.c
- 398042011b ./gcc/testsuite/consistency.vlad/layout/s-float-a-longlong.c
-2674774020b ./gcc/testsuite/consistency.vlad/layout/s-float-a-pointer.c
-3115271065b ./gcc/testsuite/consistency.vlad/layout/s-float-a-short.c
- 230653640b ./gcc/testsuite/consistency.vlad/layout/s-float-char.c
-1157255499b ./gcc/testsuite/consistency.vlad/layout/s-float-double.c
-3686192464b ./gcc/testsuite/consistency.vlad/layout/s-float-float.c
-2877639267b ./gcc/testsuite/consistency.vlad/layout/s-float-int.c
-3705421231b ./gcc/testsuite/consistency.vlad/layout/s-float-long.c
-1996389551b ./gcc/testsuite/consistency.vlad/layout/s-float-longdouble.c
-3641662812b ./gcc/testsuite/consistency.vlad/layout/s-float-longlong.c
-4197610973b ./gcc/testsuite/consistency.vlad/layout/s-float-pointer.c
-3172840384b ./gcc/testsuite/consistency.vlad/layout/s-float-ptrdiff_t.c
-3748837421b ./gcc/testsuite/consistency.vlad/layout/s-float-s-char.c
-1026162480b ./gcc/testsuite/consistency.vlad/layout/s-float-s-double.c
-1757829971b ./gcc/testsuite/consistency.vlad/layout/s-float-s-float.c
-1092900439b ./gcc/testsuite/consistency.vlad/layout/s-float-short.c
-1286304248b ./gcc/testsuite/consistency.vlad/layout/s-float-s-int.c
-1246576103b ./gcc/testsuite/consistency.vlad/layout/s-float-size_t.c
-1058880033b ./gcc/testsuite/consistency.vlad/layout/s-float-s-long.c
-3954384291b ./gcc/testsuite/consistency.vlad/layout/s-float-s-longdouble.c
-2151659662b ./gcc/testsuite/consistency.vlad/layout/s-float-s-longlong.c
-3825039217b ./gcc/testsuite/consistency.vlad/layout/s-float-s-pointer.c
-4061428355b ./gcc/testsuite/consistency.vlad/layout/s-float-s-short.c
-1758331367b ./gcc/testsuite/consistency.vlad/layout/s-float-wchar_t.c
-3117484708b ./gcc/testsuite/consistency.vlad/layout/s-float-zf-char.c
- 550306535b ./gcc/testsuite/consistency.vlad/layout/s-float-zf-int.c
- 860633704b ./gcc/testsuite/consistency.vlad/layout/s-float-zf-long.c
-2581705036b ./gcc/testsuite/consistency.vlad/layout/s-float-zf-longlong.c
- 978024585b ./gcc/testsuite/consistency.vlad/layout/s-float-zf-short.c
-2251445439b ./gcc/testsuite/consistency.vlad/layout/s-int-a-char.c
-4138447069b ./gcc/testsuite/consistency.vlad/layout/s-int-a-double.c
- 8870751b ./gcc/testsuite/consistency.vlad/layout/s-int-a-float.c
- 594032269b ./gcc/testsuite/consistency.vlad/layout/s-int-a-int.c
-1651432793b ./gcc/testsuite/consistency.vlad/layout/s-int-a-long.c
- 425973014b ./gcc/testsuite/consistency.vlad/layout/s-int-a-longdouble.c
-2059166583b ./gcc/testsuite/consistency.vlad/layout/s-int-a-longlong.c
-1995049255b ./gcc/testsuite/consistency.vlad/layout/s-int-a-pointer.c
-2715818862b ./gcc/testsuite/consistency.vlad/layout/s-int-a-short.c
-2961221250b ./gcc/testsuite/consistency.vlad/layout/s-int-char.c
-3584882967b ./gcc/testsuite/consistency.vlad/layout/s-int-double.c
- 125565346b ./gcc/testsuite/consistency.vlad/layout/s-int-float.c
-2549467707b ./gcc/testsuite/consistency.vlad/layout/s-int-int.c
-2672469567b ./gcc/testsuite/consistency.vlad/layout/s-int-long.c
-1658335152b ./gcc/testsuite/consistency.vlad/layout/s-int-longdouble.c
-2278283539b ./gcc/testsuite/consistency.vlad/layout/s-int-longlong.c
-2494362400b ./gcc/testsuite/consistency.vlad/layout/s-int-pointer.c
-2858080039b ./gcc/testsuite/consistency.vlad/layout/s-int-ptrdiff_t.c
-2014925874b ./gcc/testsuite/consistency.vlad/layout/s-int-s-char.c
-1964724618b ./gcc/testsuite/consistency.vlad/layout/s-int-s-double.c
-3513841278b ./gcc/testsuite/consistency.vlad/layout/s-int-s-float.c
-3104696131b ./gcc/testsuite/consistency.vlad/layout/s-int-short.c
-1905836586b ./gcc/testsuite/consistency.vlad/layout/s-int-s-int.c
-2371102487b ./gcc/testsuite/consistency.vlad/layout/s-int-size_t.c
-2587799721b ./gcc/testsuite/consistency.vlad/layout/s-int-s-long.c
-3343583899b ./gcc/testsuite/consistency.vlad/layout/s-int-s-longdouble.c
-3181309941b ./gcc/testsuite/consistency.vlad/layout/s-int-s-longlong.c
-3198349197b ./gcc/testsuite/consistency.vlad/layout/s-int-s-pointer.c
-1300436407b ./gcc/testsuite/consistency.vlad/layout/s-int-s-short.c
-1358869671b ./gcc/testsuite/consistency.vlad/layout/s-int-wchar_t.c
-2934034901b ./gcc/testsuite/consistency.vlad/layout/s-int-zf-char.c
-3777217979b ./gcc/testsuite/consistency.vlad/layout/s-int-zf-int.c
- 823148372b ./gcc/testsuite/consistency.vlad/layout/s-int-zf-long.c
- 55540591b ./gcc/testsuite/consistency.vlad/layout/s-int-zf-longlong.c
-3825926612b ./gcc/testsuite/consistency.vlad/layout/s-int-zf-short.c
-1746672839b ./gcc/testsuite/consistency.vlad/layout/size-bool.cpp
-1662052327b ./gcc/testsuite/consistency.vlad/layout/size-char.c
-3361924014b ./gcc/testsuite/consistency.vlad/layout/size-double.c
-3608174439b ./gcc/testsuite/consistency.vlad/layout/size-float.c
- 224133749b ./gcc/testsuite/consistency.vlad/layout/size-int.c
-2229647371b ./gcc/testsuite/consistency.vlad/layout/size-long.c
-1496097293b ./gcc/testsuite/consistency.vlad/layout/size-longdouble.c
-4243493805b ./gcc/testsuite/consistency.vlad/layout/size-longlong.c
-4234774016b ./gcc/testsuite/consistency.vlad/layout/size-pointer.c
-2742276437b ./gcc/testsuite/consistency.vlad/layout/size-ptrdiff.c
-2302838291b ./gcc/testsuite/consistency.vlad/layout/size-short.c
-1008704183b ./gcc/testsuite/consistency.vlad/layout/size-size.c
- 767395346b ./gcc/testsuite/consistency.vlad/layout/size-wchar.c
-1014160019b ./gcc/testsuite/consistency.vlad/layout/s-long-a-char.c
-1536711874b ./gcc/testsuite/consistency.vlad/layout/s-long-a-double.c
-3755724289b ./gcc/testsuite/consistency.vlad/layout/s-long-a-float.c
- 503463330b ./gcc/testsuite/consistency.vlad/layout/s-long-a-int.c
-3383693601b ./gcc/testsuite/consistency.vlad/layout/s-long-a-long.c
-2168579267b ./gcc/testsuite/consistency.vlad/layout/s-long-a-longdouble.c
-4089126986b ./gcc/testsuite/consistency.vlad/layout/s-long-a-longlong.c
-4219127792b ./gcc/testsuite/consistency.vlad/layout/s-long-a-pointer.c
-1534004990b ./gcc/testsuite/consistency.vlad/layout/s-long-a-short.c
- 34352633b ./gcc/testsuite/consistency.vlad/layout/s-long-char.c
-2174891233b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-a-char.c
-2263495912b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-a-double.c
-3626355134b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-a-float.c
-1044992438b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-a-int.c
- 189180334b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-a-long.c
-4219133242b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-a-longdouble.c
-2001710554b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-a-longlong.c
-1208252647b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-a-pointer.c
-2636586618b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-a-short.c
-1855339665b ./gcc/testsuite/consistency.vlad/layout/s-long-double.c
-1490423944b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-char.c
- 838089339b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-double.c
-1901020700b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-float.c
-2396695027b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-int.c
-2690146526b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-long.c
-2776581044b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-longdouble.c
-3418604951b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-longlong.c
-1459368509b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-pointer.c
-3960936313b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-ptrdiff_t.c
-3172036867b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-s-char.c
-3278313495b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-s-double.c
- 717089781b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-s-float.c
-2851776236b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-short.c
- 585061394b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-s-int.c
-1105156962b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-size_t.c
-2473143756b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-s-long.c
-3638726274b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-s-longdouble.c
-2023017496b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-s-longlong.c
- 54720140b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-s-pointer.c
-1046498915b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-s-short.c
- 696506953b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-wchar_t.c
- 928069138b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-zf-char.c
- 258209983b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-zf-int.c
-2227123382b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-zf-long.c
-2318782753b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-zf-longlong.c
- 558562280b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-zf-short.c
-1325299293b ./gcc/testsuite/consistency.vlad/layout/s-long-float.c
-1780742682b ./gcc/testsuite/consistency.vlad/layout/s-long-int.c
-2746913946b ./gcc/testsuite/consistency.vlad/layout/s-longlong-a-char.c
-2756929591b ./gcc/testsuite/consistency.vlad/layout/s-longlong-a-double.c
-2279164925b ./gcc/testsuite/consistency.vlad/layout/s-longlong-a-float.c
-4018385557b ./gcc/testsuite/consistency.vlad/layout/s-longlong-a-int.c
-1568904470b ./gcc/testsuite/consistency.vlad/layout/s-longlong-a-long.c
-2084909194b ./gcc/testsuite/consistency.vlad/layout/s-longlong-a-longdouble.c
-2072567607b ./gcc/testsuite/consistency.vlad/layout/s-longlong-a-longlong.c
-3659263135b ./gcc/testsuite/consistency.vlad/layout/s-longlong-a-pointer.c
-2702861495b ./gcc/testsuite/consistency.vlad/layout/s-longlong-a-short.c
-2290380505b ./gcc/testsuite/consistency.vlad/layout/s-long-long.c
-1507260206b ./gcc/testsuite/consistency.vlad/layout/s-longlong-char.c
-1915663861b ./gcc/testsuite/consistency.vlad/layout/s-long-longdouble.c
-3018473966b ./gcc/testsuite/consistency.vlad/layout/s-longlong-double.c
-3253702018b ./gcc/testsuite/consistency.vlad/layout/s-longlong-float.c
-2941557918b ./gcc/testsuite/consistency.vlad/layout/s-longlong-int.c
-2368362338b ./gcc/testsuite/consistency.vlad/layout/s-long-longlong.c
-4153967841b ./gcc/testsuite/consistency.vlad/layout/s-longlong-long.c
-3405846513b ./gcc/testsuite/consistency.vlad/layout/s-longlong-longdouble.c
-2651247883b ./gcc/testsuite/consistency.vlad/layout/s-longlong-longlong.c
-1899261816b ./gcc/testsuite/consistency.vlad/layout/s-longlong-pointer.c
-4100649747b ./gcc/testsuite/consistency.vlad/layout/s-longlong-ptrdiff_t.c
- 183550901b ./gcc/testsuite/consistency.vlad/layout/s-longlong-s-char.c
-1353709337b ./gcc/testsuite/consistency.vlad/layout/s-longlong-s-double.c
-1622859985b ./gcc/testsuite/consistency.vlad/layout/s-longlong-s-float.c
- 922091281b ./gcc/testsuite/consistency.vlad/layout/s-longlong-short.c
-3395819121b ./gcc/testsuite/consistency.vlad/layout/s-longlong-s-int.c
-3366304494b ./gcc/testsuite/consistency.vlad/layout/s-longlong-size_t.c
- 263554828b ./gcc/testsuite/consistency.vlad/layout/s-longlong-s-long.c
-3292604731b ./gcc/testsuite/consistency.vlad/layout/s-longlong-s-longdouble.c
- 591712639b ./gcc/testsuite/consistency.vlad/layout/s-longlong-s-longlong.c
-1892567537b ./gcc/testsuite/consistency.vlad/layout/s-longlong-s-pointer.c
- 108932916b ./gcc/testsuite/consistency.vlad/layout/s-longlong-s-short.c
-2585353545b ./gcc/testsuite/consistency.vlad/layout/s-longlong-wchar_t.c
-1992502711b ./gcc/testsuite/consistency.vlad/layout/s-longlong-zf-char.c
- 943400451b ./gcc/testsuite/consistency.vlad/layout/s-longlong-zf-int.c
-2630463188b ./gcc/testsuite/consistency.vlad/layout/s-longlong-zf-long.c
- 108059264b ./gcc/testsuite/consistency.vlad/layout/s-longlong-zf-longlong.c
- 162090179b ./gcc/testsuite/consistency.vlad/layout/s-longlong-zf-short.c
- 843227723b ./gcc/testsuite/consistency.vlad/layout/s-long-pointer.c
- 501034814b ./gcc/testsuite/consistency.vlad/layout/s-long-ptrdiff_t.c
-1174469544b ./gcc/testsuite/consistency.vlad/layout/s-long-s-char.c
-1007870215b ./gcc/testsuite/consistency.vlad/layout/s-long-s-double.c
-1307839500b ./gcc/testsuite/consistency.vlad/layout/s-long-s-float.c
-3071018593b ./gcc/testsuite/consistency.vlad/layout/s-long-short.c
-3475912781b ./gcc/testsuite/consistency.vlad/layout/s-long-s-int.c
-3723194327b ./gcc/testsuite/consistency.vlad/layout/s-long-size_t.c
-1568391695b ./gcc/testsuite/consistency.vlad/layout/s-long-s-long.c
- 74365094b ./gcc/testsuite/consistency.vlad/layout/s-long-s-longdouble.c
- 501521658b ./gcc/testsuite/consistency.vlad/layout/s-long-s-longlong.c
-1748381535b ./gcc/testsuite/consistency.vlad/layout/s-long-s-pointer.c
-1836579330b ./gcc/testsuite/consistency.vlad/layout/s-long-s-short.c
- 531244141b ./gcc/testsuite/consistency.vlad/layout/s-long-wchar_t.c
-3081442820b ./gcc/testsuite/consistency.vlad/layout/s-long-zf-char.c
- 914301375b ./gcc/testsuite/consistency.vlad/layout/s-long-zf-int.c
-1562082244b ./gcc/testsuite/consistency.vlad/layout/s-long-zf-long.c
-2520232686b ./gcc/testsuite/consistency.vlad/layout/s-long-zf-longlong.c
-3568433576b ./gcc/testsuite/consistency.vlad/layout/s-long-zf-short.c
-2431525882b ./gcc/testsuite/consistency.vlad/layout/s-pointer-a-char.c
-4182828966b ./gcc/testsuite/consistency.vlad/layout/s-pointer-a-double.c
-2030442801b ./gcc/testsuite/consistency.vlad/layout/s-pointer-a-float.c
-1733216426b ./gcc/testsuite/consistency.vlad/layout/s-pointer-a-int.c
-3840360232b ./gcc/testsuite/consistency.vlad/layout/s-pointer-a-long.c
-2069695022b ./gcc/testsuite/consistency.vlad/layout/s-pointer-a-longdouble.c
-2835229256b ./gcc/testsuite/consistency.vlad/layout/s-pointer-a-longlong.c
-3644499340b ./gcc/testsuite/consistency.vlad/layout/s-pointer-a-pointer.c
- 773032503b ./gcc/testsuite/consistency.vlad/layout/s-pointer-a-short.c
- 872221332b ./gcc/testsuite/consistency.vlad/layout/s-pointer-char.c
-3712864759b ./gcc/testsuite/consistency.vlad/layout/s-pointer-double.c
-3278150392b ./gcc/testsuite/consistency.vlad/layout/s-pointer-float.c
-2124704716b ./gcc/testsuite/consistency.vlad/layout/s-pointer-int.c
-1565179914b ./gcc/testsuite/consistency.vlad/layout/s-pointer-long.c
-2078378543b ./gcc/testsuite/consistency.vlad/layout/s-pointer-longdouble.c
-1849539090b ./gcc/testsuite/consistency.vlad/layout/s-pointer-longlong.c
- 503815918b ./gcc/testsuite/consistency.vlad/layout/s-pointer-pointer.c
-3954057196b ./gcc/testsuite/consistency.vlad/layout/s-pointer-ptrdiff_t.c
-1074103467b ./gcc/testsuite/consistency.vlad/layout/s-pointer-s-char.c
- 902838190b ./gcc/testsuite/consistency.vlad/layout/s-pointer-s-double.c
-2754137289b ./gcc/testsuite/consistency.vlad/layout/s-pointer-s-float.c
-2645485672b ./gcc/testsuite/consistency.vlad/layout/s-pointer-short.c
- 157709325b ./gcc/testsuite/consistency.vlad/layout/s-pointer-s-int.c
-3640207262b ./gcc/testsuite/consistency.vlad/layout/s-pointer-size_t.c
- 663732630b ./gcc/testsuite/consistency.vlad/layout/s-pointer-s-long.c
-1874509941b ./gcc/testsuite/consistency.vlad/layout/s-pointer-s-longdouble.c
-2063875624b ./gcc/testsuite/consistency.vlad/layout/s-pointer-s-longlong.c
-3199456656b ./gcc/testsuite/consistency.vlad/layout/s-pointer-s-pointer.c
-2883478056b ./gcc/testsuite/consistency.vlad/layout/s-pointer-s-short.c
-1316769493b ./gcc/testsuite/consistency.vlad/layout/s-pointer-wchar_t.c
-2773199310b ./gcc/testsuite/consistency.vlad/layout/s-pointer-zf-char.c
-2595768381b ./gcc/testsuite/consistency.vlad/layout/s-pointer-zf-int.c
-3251136680b ./gcc/testsuite/consistency.vlad/layout/s-pointer-zf-long.c
-3053600608b ./gcc/testsuite/consistency.vlad/layout/s-pointer-zf-longlong.c
-2022112027b ./gcc/testsuite/consistency.vlad/layout/s-pointer-zf-short.c
- 618303243b ./gcc/testsuite/consistency.vlad/layout/s-ptrdiff_t-char.c
-3604192129b ./gcc/testsuite/consistency.vlad/layout/s-ptrdiff_t-double.c
-3789860510b ./gcc/testsuite/consistency.vlad/layout/s-ptrdiff_t-float.c
-4080198327b ./gcc/testsuite/consistency.vlad/layout/s-ptrdiff_t-int.c
- 728676820b ./gcc/testsuite/consistency.vlad/layout/s-ptrdiff_t-long.c
-2724559984b ./gcc/testsuite/consistency.vlad/layout/s-ptrdiff_t-longdouble.c
-3861693259b ./gcc/testsuite/consistency.vlad/layout/s-ptrdiff_t-longlong.c
-2953128927b ./gcc/testsuite/consistency.vlad/layout/s-ptrdiff_t-pointer.c
-3951847759b ./gcc/testsuite/consistency.vlad/layout/s-ptrdiff_t-ptrdiff_t.c
-1191074387b ./gcc/testsuite/consistency.vlad/layout/s-ptrdiff_t-short.c
-2578277124b ./gcc/testsuite/consistency.vlad/layout/s-ptrdiff_t-size_t.c
- 990211289b ./gcc/testsuite/consistency.vlad/layout/s-ptrdiff_t-wchar_t.c
-3239161768b ./gcc/testsuite/consistency.vlad/layout/s-short-a-char.c
- 166180776b ./gcc/testsuite/consistency.vlad/layout/s-short-a-double.c
-3527046415b ./gcc/testsuite/consistency.vlad/layout/s-short-a-float.c
-3518845261b ./gcc/testsuite/consistency.vlad/layout/s-short-a-int.c
-2632946218b ./gcc/testsuite/consistency.vlad/layout/s-short-a-long.c
- 891865249b ./gcc/testsuite/consistency.vlad/layout/s-short-a-longdouble.c
-3556515853b ./gcc/testsuite/consistency.vlad/layout/s-short-a-longlong.c
-4114603886b ./gcc/testsuite/consistency.vlad/layout/s-short-a-pointer.c
- 613451481b ./gcc/testsuite/consistency.vlad/layout/s-short-a-short.c
-1593495051b ./gcc/testsuite/consistency.vlad/layout/s-short-char.c
-1100143197b ./gcc/testsuite/consistency.vlad/layout/s-short-double.c
-2242679753b ./gcc/testsuite/consistency.vlad/layout/s-short-float.c
- 238785879b ./gcc/testsuite/consistency.vlad/layout/s-short-int.c
-2409205100b ./gcc/testsuite/consistency.vlad/layout/s-short-long.c
- 936065027b ./gcc/testsuite/consistency.vlad/layout/s-short-longdouble.c
-1356304829b ./gcc/testsuite/consistency.vlad/layout/s-short-longlong.c
-3906654641b ./gcc/testsuite/consistency.vlad/layout/s-short-pointer.c
- 746386291b ./gcc/testsuite/consistency.vlad/layout/s-short-ptrdiff_t.c
-4244286521b ./gcc/testsuite/consistency.vlad/layout/s-short-s-char.c
-2777905017b ./gcc/testsuite/consistency.vlad/layout/s-short-s-double.c
-2756050532b ./gcc/testsuite/consistency.vlad/layout/s-short-s-float.c
- 524161230b ./gcc/testsuite/consistency.vlad/layout/s-short-short.c
- 374910896b ./gcc/testsuite/consistency.vlad/layout/s-short-s-int.c
-1327871729b ./gcc/testsuite/consistency.vlad/layout/s-short-size_t.c
- 479538741b ./gcc/testsuite/consistency.vlad/layout/s-short-s-long.c
-4025001367b ./gcc/testsuite/consistency.vlad/layout/s-short-s-longdouble.c
-1274385076b ./gcc/testsuite/consistency.vlad/layout/s-short-s-longlong.c
-2921220650b ./gcc/testsuite/consistency.vlad/layout/s-short-s-pointer.c
-1050140596b ./gcc/testsuite/consistency.vlad/layout/s-short-s-short.c
-2735755699b ./gcc/testsuite/consistency.vlad/layout/s-short-wchar_t.c
-2947437906b ./gcc/testsuite/consistency.vlad/layout/s-short-zf-char.c
-3330463439b ./gcc/testsuite/consistency.vlad/layout/s-short-zf-int.c
- 624125342b ./gcc/testsuite/consistency.vlad/layout/s-short-zf-long.c
-3735090434b ./gcc/testsuite/consistency.vlad/layout/s-short-zf-longlong.c
-1239770486b ./gcc/testsuite/consistency.vlad/layout/s-short-zf-short.c
-3848053775b ./gcc/testsuite/consistency.vlad/layout/s-size_t-char.c
-1956516319b ./gcc/testsuite/consistency.vlad/layout/s-size_t-double.c
-2592266062b ./gcc/testsuite/consistency.vlad/layout/s-size_t-float.c
-3435419949b ./gcc/testsuite/consistency.vlad/layout/s-size_t-int.c
-2779348851b ./gcc/testsuite/consistency.vlad/layout/s-size_t-long.c
-1352676649b ./gcc/testsuite/consistency.vlad/layout/s-size_t-longdouble.c
-1255992044b ./gcc/testsuite/consistency.vlad/layout/s-size_t-longlong.c
-1034174646b ./gcc/testsuite/consistency.vlad/layout/s-size_t-pointer.c
-1114015641b ./gcc/testsuite/consistency.vlad/layout/s-size_t-ptrdiff_t.c
-4081850249b ./gcc/testsuite/consistency.vlad/layout/s-size_t-short.c
-3689183736b ./gcc/testsuite/consistency.vlad/layout/s-size_t-size_t.c
-1221978657b ./gcc/testsuite/consistency.vlad/layout/s-size_t-wchar_t.c
- 828103866b ./gcc/testsuite/consistency.vlad/layout/s-wchar_t-char.c
-3601528642b ./gcc/testsuite/consistency.vlad/layout/s-wchar_t-double.c
-2903333507b ./gcc/testsuite/consistency.vlad/layout/s-wchar_t-float.c
-3466709699b ./gcc/testsuite/consistency.vlad/layout/s-wchar_t-int.c
-1609307684b ./gcc/testsuite/consistency.vlad/layout/s-wchar_t-long.c
-1060870307b ./gcc/testsuite/consistency.vlad/layout/s-wchar_t-longdouble.c
- 6489873b ./gcc/testsuite/consistency.vlad/layout/s-wchar_t-longlong.c
-3776188535b ./gcc/testsuite/consistency.vlad/layout/s-wchar_t-pointer.c
-1700128528b ./gcc/testsuite/consistency.vlad/layout/s-wchar_t-ptrdiff_t.c
-4089915411b ./gcc/testsuite/consistency.vlad/layout/s-wchar_t-short.c
-2415574017b ./gcc/testsuite/consistency.vlad/layout/s-wchar_t-size_t.c
-2755349152b ./gcc/testsuite/consistency.vlad/layout/s-wchar_t-wchar_t.c
-3207711727b ./gcc/testsuite/consistency.vlad/README
-2068139423b ./gcc/testsuite/consistency.vlad/vlad.exp
-2710099993b ./gcc/testsuite/g77.dg/20010216-1.f
- 211215127b ./gcc/testsuite/g77.dg/bprob/bprob-1.f
- 345215922b ./gcc/testsuite/g77.dg/bprob/bprob.exp
-1815830648b ./gcc/testsuite/g77.dg/dg.exp
-2557434398b ./gcc/testsuite/g77.dg/f77-edit-i-in.f
- 462852590b ./gcc/testsuite/g77.dg/f77-edit-i-out.f
-3692598063b ./gcc/testsuite/g77.dg/fbackslash.f
-3349950140b ./gcc/testsuite/g77.dg/fcase-preserve.f
-3493107241b ./gcc/testsuite/g77.dg/ff90-1.f
- 846110140b ./gcc/testsuite/g77.dg/ffixed-line-length-0.f
- 306302525b ./gcc/testsuite/g77.dg/ffixed-line-length-132.f
- 256008601b ./gcc/testsuite/g77.dg/ffixed-line-length-72.f
-1293833923b ./gcc/testsuite/g77.dg/ffixed-line-length-7.f
-2426259256b ./gcc/testsuite/g77.dg/ffixed-line-length-none.f
- 382313186b ./gcc/testsuite/g77.dg/ffree-form-1.f
-1427613779b ./gcc/testsuite/g77.dg/fno-backslash.f
-1787673713b ./gcc/testsuite/g77.dg/fno-f90-1.f
-1073584992b ./gcc/testsuite/g77.dg/fno-fixed-form-1.f
-2730066868b ./gcc/testsuite/g77.dg/fno-onetrip.f
- 109115498b ./gcc/testsuite/g77.dg/fno-typeless-boz.f
-2720105997b ./gcc/testsuite/g77.dg/fno-underscoring.f
- 614291430b ./gcc/testsuite/g77.dg/fno-vxt-1.f
- 646478354b ./gcc/testsuite/g77.dg/fonetrip.f
- 298378793b ./gcc/testsuite/g77.dg/ftypeless-boz.f
-1970388396b ./gcc/testsuite/g77.dg/fugly-assumed.f
- 813122842b ./gcc/testsuite/g77.dg/funderscoring.f
-2755287889b ./gcc/testsuite/g77.dg/fvxt-1.f
-4218369628b ./gcc/testsuite/g77.dg/gcov/gcov-1.f
-2262587727b ./gcc/testsuite/g77.dg/gcov/gcov-1.x
-3439770285b ./gcc/testsuite/g77.dg/gcov/gcov.exp
-2336318971b ./gcc/testsuite/g77.dg/pr3743-1.f
-3986109564b ./gcc/testsuite/g77.dg/pr3743-2.f
- 202729794b ./gcc/testsuite/g77.dg/pr3743-3.f
-2533314951b ./gcc/testsuite/g77.dg/pr3743-4.f
-3959051916b ./gcc/testsuite/g77.dg/pr5473.f
-3263834407b ./gcc/testsuite/g77.dg/strlen0.f
-2382988813b ./gcc/testsuite/g77.f-torture/compile/19990218-0.f
- 687255164b ./gcc/testsuite/g77.f-torture/compile/19990305-0.f
-4067537756b ./gcc/testsuite/g77.f-torture/compile/19990419-0.f
-3411435248b ./gcc/testsuite/g77.f-torture/compile/19990502-0.f
-1869005611b ./gcc/testsuite/g77.f-torture/compile/19990502-1.f
-4129788740b ./gcc/testsuite/g77.f-torture/compile/19990525-0.f
-2117801028b ./gcc/testsuite/g77.f-torture/compile/19990826-1.f
-1740583941b ./gcc/testsuite/g77.f-torture/compile/19990826-3.f
-2822256200b ./gcc/testsuite/g77.f-torture/compile/19990905-0.f
-1729432512b ./gcc/testsuite/g77.f-torture/compile/19990905-2.f
-3873649497b ./gcc/testsuite/g77.f-torture/compile/20000412-1.f
-2840421610b ./gcc/testsuite/g77.f-torture/compile/20000511-1.f
-2723712181b ./gcc/testsuite/g77.f-torture/compile/20000511-2.f
- 82013928b ./gcc/testsuite/g77.f-torture/compile/20000518.f
- 412413004b ./gcc/testsuite/g77.f-torture/compile/20000601-1.f
-3180214474b ./gcc/testsuite/g77.f-torture/compile/20000601-2.f
-4055621021b ./gcc/testsuite/g77.f-torture/compile/20000629-1.f
-2336002500b ./gcc/testsuite/g77.f-torture/compile/20000630-2.f
-3970776632b ./gcc/testsuite/g77.f-torture/compile/20010115.f
-3772314415b ./gcc/testsuite/g77.f-torture/compile/20010321-1.f
-2213180372b ./gcc/testsuite/g77.f-torture/compile/20010426.f
- 267354428b ./gcc/testsuite/g77.f-torture/compile/20010519-1.f
-1776224360b ./gcc/testsuite/g77.f-torture/compile/960317-1.f
-2528706840b ./gcc/testsuite/g77.f-torture/compile/970125-0.f
-3100920780b ./gcc/testsuite/g77.f-torture/compile/970915-0.f
-3454578083b ./gcc/testsuite/g77.f-torture/compile/980310-1.f
-1063918752b ./gcc/testsuite/g77.f-torture/compile/980310-2.f
-3699662809b ./gcc/testsuite/g77.f-torture/compile/980310-3.f
-3523537961b ./gcc/testsuite/g77.f-torture/compile/980310-4.f
- 581995045b ./gcc/testsuite/g77.f-torture/compile/980310-6.f
- 758602941b ./gcc/testsuite/g77.f-torture/compile/980310-7.f
-3264996889b ./gcc/testsuite/g77.f-torture/compile/980310-8.f
- 55455134b ./gcc/testsuite/g77.f-torture/compile/980419-2.f
-2284181108b ./gcc/testsuite/g77.f-torture/compile/980424-0.f
- 585713859b ./gcc/testsuite/g77.f-torture/compile/980427-0.f
-2853235618b ./gcc/testsuite/g77.f-torture/compile/980519-2.f
-2138526345b ./gcc/testsuite/g77.f-torture/compile/980729-0.f
-1069123470b ./gcc/testsuite/g77.f-torture/compile/981117-1.f
-2053478041b ./gcc/testsuite/g77.f-torture/compile/990115-1.f
-3973737388b ./gcc/testsuite/g77.f-torture/compile/alpha1.f
-2107279947b ./gcc/testsuite/g77.f-torture/compile/alpha1.x
-4148688482b ./gcc/testsuite/g77.f-torture/compile/compile.exp
-1347946300b ./gcc/testsuite/g77.f-torture/compile/cpp2.F
- 883444817b ./gcc/testsuite/g77.f-torture/compile/cpp.F
- 407305629b ./gcc/testsuite/g77.f-torture/compile/toon_1.f
-1875205813b ./gcc/testsuite/g77.f-torture/execute/19981119-0.f
- 207133658b ./gcc/testsuite/g77.f-torture/execute/19990313-0.f
-1311165077b ./gcc/testsuite/g77.f-torture/execute/19990313-1.f
-2827041779b ./gcc/testsuite/g77.f-torture/execute/19990313-2.f
-3627217083b ./gcc/testsuite/g77.f-torture/execute/19990313-3.f
- 334442269b ./gcc/testsuite/g77.f-torture/execute/19990325-0.f
-2498790248b ./gcc/testsuite/g77.f-torture/execute/19990325-1.f
-1566943825b ./gcc/testsuite/g77.f-torture/execute/19990419-1.f
-1702408878b ./gcc/testsuite/g77.f-torture/execute/19990826-0.f
- 548549288b ./gcc/testsuite/g77.f-torture/execute/19990826-2.f
-2245832686b ./gcc/testsuite/g77.f-torture/execute/20000503-1.f
- 119817854b ./gcc/testsuite/g77.f-torture/execute/20001111.f
-3778266196b ./gcc/testsuite/g77.f-torture/execute/20001201.f
-1721706271b ./gcc/testsuite/g77.f-torture/execute/20001201.x
-3482653018b ./gcc/testsuite/g77.f-torture/execute/20010116.f
- 104441706b ./gcc/testsuite/g77.f-torture/execute/20010426.f
-2134591728b ./gcc/testsuite/g77.f-torture/execute/20010430.f
-2127502131b ./gcc/testsuite/g77.f-torture/execute/20010610.f
-1835626441b ./gcc/testsuite/g77.f-torture/execute/5122.f
- 166046708b ./gcc/testsuite/g77.f-torture/execute/947.f
-2872624206b ./gcc/testsuite/g77.f-torture/execute/970625-2.f
-2944713164b ./gcc/testsuite/g77.f-torture/execute/970816-3.f
-3043987240b ./gcc/testsuite/g77.f-torture/execute/971102-1.f
-1356010785b ./gcc/testsuite/g77.f-torture/execute/980520-1.f
-2822825054b ./gcc/testsuite/g77.f-torture/execute/980628-0.f
-1154425496b ./gcc/testsuite/g77.f-torture/execute/980628-10.f
- 731282896b ./gcc/testsuite/g77.f-torture/execute/980628-1.f
- 652392894b ./gcc/testsuite/g77.f-torture/execute/980628-2.f
-3891656681b ./gcc/testsuite/g77.f-torture/execute/980628-3.f
-4188896500b ./gcc/testsuite/g77.f-torture/execute/980628-4.f
-2107279947b ./gcc/testsuite/g77.f-torture/execute/980628-4.x
-3480269714b ./gcc/testsuite/g77.f-torture/execute/980628-5.f
-2107279947b ./gcc/testsuite/g77.f-torture/execute/980628-5.x
-1467613590b ./gcc/testsuite/g77.f-torture/execute/980628-6.f
-2107279947b ./gcc/testsuite/g77.f-torture/execute/980628-6.x
-1104933088b ./gcc/testsuite/g77.f-torture/execute/980628-7.f
-1264093278b ./gcc/testsuite/g77.f-torture/execute/980628-8.f
-2969694593b ./gcc/testsuite/g77.f-torture/execute/980628-9.f
-1979661682b ./gcc/testsuite/g77.f-torture/execute/980701-0.f
-2199388550b ./gcc/testsuite/g77.f-torture/execute/980701-1.f
-2519492399b ./gcc/testsuite/g77.f-torture/execute/alpha2.f
-2107279947b ./gcc/testsuite/g77.f-torture/execute/alpha2.x
-2259027475b ./gcc/testsuite/g77.f-torture/execute/auto0.f
-2107279947b ./gcc/testsuite/g77.f-torture/execute/auto0.x
-4202240464b ./gcc/testsuite/g77.f-torture/execute/auto1.f
-2107279947b ./gcc/testsuite/g77.f-torture/execute/auto1.x
- 232981110b ./gcc/testsuite/g77.f-torture/execute/cabs.f
- 877306443b ./gcc/testsuite/g77.f-torture/execute/claus.f
-2682388459b ./gcc/testsuite/g77.f-torture/execute/complex_1.f
- 268027241b ./gcc/testsuite/g77.f-torture/execute/cpp2.F
- 274053025b ./gcc/testsuite/g77.f-torture/execute/cpp.F
-3689042274b ./gcc/testsuite/g77.f-torture/execute/dcomplex.f
-2431087293b ./gcc/testsuite/g77.f-torture/execute/dnrm2.f
-1012852742b ./gcc/testsuite/g77.f-torture/execute/erfc.f
- 574860802b ./gcc/testsuite/g77.f-torture/execute/execute.exp
-2348837361b ./gcc/testsuite/g77.f-torture/execute/exp.f
-1166305221b ./gcc/testsuite/g77.f-torture/execute/f90-intrinsic-bit.f
-1401151480b ./gcc/testsuite/g77.f-torture/execute/f90-intrinsic-mathematical.f
- 296501581b ./gcc/testsuite/g77.f-torture/execute/f90-intrinsic-numeric.f
-1448802159b ./gcc/testsuite/g77.f-torture/execute/intrinsic77.f
-1619227376b ./gcc/testsuite/g77.f-torture/execute/intrinsic-f2c-z.f
-2512429495b ./gcc/testsuite/g77.f-torture/execute/intrinsic-unix-bessel.f
- 846341057b ./gcc/testsuite/g77.f-torture/execute/intrinsic-unix-erf.f
-3837275230b ./gcc/testsuite/g77.f-torture/execute/intrinsic-vax-cd.f
-3527337523b ./gcc/testsuite/g77.f-torture/execute/io0.f
-1721706271b ./gcc/testsuite/g77.f-torture/execute/io0.x
-1499748556b ./gcc/testsuite/g77.f-torture/execute/io1.f
-1721706271b ./gcc/testsuite/g77.f-torture/execute/io1.x
-3838992103b ./gcc/testsuite/g77.f-torture/execute/labug1.f
- 273345472b ./gcc/testsuite/g77.f-torture/execute/large_vec.f
- 775036014b ./gcc/testsuite/g77.f-torture/execute/le.f
-3780459526b ./gcc/testsuite/g77.f-torture/execute/short.f
- 85764886b ./gcc/testsuite/g77.f-torture/execute/u77-test.f
- 991484451b ./gcc/testsuite/g77.f-torture/execute/u77-test.x
-2234422141b ./gcc/testsuite/g77.f-torture/noncompile/19981216-0.f
-2509327097b ./gcc/testsuite/g77.f-torture/noncompile/19990218-1.f
- 684708897b ./gcc/testsuite/g77.f-torture/noncompile/19990826-4.f
-3593377062b ./gcc/testsuite/g77.f-torture/noncompile/19990905-1.f
-3649968898b ./gcc/testsuite/g77.f-torture/noncompile/970626-2.f
-3382416911b ./gcc/testsuite/g77.f-torture/noncompile/980615-0.f
-4269744935b ./gcc/testsuite/g77.f-torture/noncompile/980616-0.f
-2374591598b ./gcc/testsuite/g77.f-torture/noncompile/check0.f
- 351555731b ./gcc/testsuite/g77.f-torture/noncompile/noncompile.exp
-2075770423b ./gcc/testsuite/gcc.c-torture/ChangeLog.0
-1091110310b ./gcc/testsuite/gcc.c-torture/compat/strct-layout.c
- 684784126b ./gcc/testsuite/gcc.c-torture/compat/struct-align.c
- 92980596b ./gcc/testsuite/gcc.c-torture/compat/struct-big.c
-2993970556b ./gcc/testsuite/gcc.c-torture/compat/struct-i.c
-1373131310b ./gcc/testsuite/gcc.c-torture/compat/struct-ic.c
- 367335173b ./gcc/testsuite/gcc.c-torture/compat/struct-ii.c
- 954170066b ./gcc/testsuite/gcc.c-torture/compat/struct-ret-1.c
- 452836178b ./gcc/testsuite/gcc.c-torture/compile/20000105-1.c
-1901634825b ./gcc/testsuite/gcc.c-torture/compile/20000105-2.c
-3139355726b ./gcc/testsuite/gcc.c-torture/compile/20000120-1.c
- 193146344b ./gcc/testsuite/gcc.c-torture/compile/20000120-2.c
-3770371830b ./gcc/testsuite/gcc.c-torture/compile/20000127-1.c
-1457334923b ./gcc/testsuite/gcc.c-torture/compile/20000211-1.c
-3072124491b ./gcc/testsuite/gcc.c-torture/compile/20000211-3.c
-2487027780b ./gcc/testsuite/gcc.c-torture/compile/20000224-1.c
- 976060843b ./gcc/testsuite/gcc.c-torture/compile/20000314-1.c
-2716819908b ./gcc/testsuite/gcc.c-torture/compile/20000314-2.c
-3323098889b ./gcc/testsuite/gcc.c-torture/compile/20000319-1.c
- 621983670b ./gcc/testsuite/gcc.c-torture/compile/20000326-1.c
- 362965832b ./gcc/testsuite/gcc.c-torture/compile/20000326-2.c
-1360671142b ./gcc/testsuite/gcc.c-torture/compile/20000329-1.c
-1376990121b ./gcc/testsuite/gcc.c-torture/compile/20000403-1.c
-1295018105b ./gcc/testsuite/gcc.c-torture/compile/20000403-2.c
-2994009121b ./gcc/testsuite/gcc.c-torture/compile/20000405-1.c
-1202553741b ./gcc/testsuite/gcc.c-torture/compile/20000405-2.c
-1972736685b ./gcc/testsuite/gcc.c-torture/compile/20000405-3.c
-4185438508b ./gcc/testsuite/gcc.c-torture/compile/20000412-1.c
-1020690516b ./gcc/testsuite/gcc.c-torture/compile/20000412-2.c
- 606471227b ./gcc/testsuite/gcc.c-torture/compile/20000420-1.c
-3618930753b ./gcc/testsuite/gcc.c-torture/compile/20000420-2.c
-1513651895b ./gcc/testsuite/gcc.c-torture/compile/20000427-1.c
-1253394561b ./gcc/testsuite/gcc.c-torture/compile/20000502-1.c
-2301846307b ./gcc/testsuite/gcc.c-torture/compile/20000504-1.c
-4216707490b ./gcc/testsuite/gcc.c-torture/compile/20000511-1.c
- 160078686b ./gcc/testsuite/gcc.c-torture/compile/20000517-1.c
- 138460064b ./gcc/testsuite/gcc.c-torture/compile/20000518-1.c
-4277321614b ./gcc/testsuite/gcc.c-torture/compile/20000523-1.c
-2889990236b ./gcc/testsuite/gcc.c-torture/compile/20000605-1.c
-1801476756b ./gcc/testsuite/gcc.c-torture/compile/20000606-1.c
-3807623957b ./gcc/testsuite/gcc.c-torture/compile/20000609-1.c
-3889196710b ./gcc/testsuite/gcc.c-torture/compile/20000629-1.c
-2019168881b ./gcc/testsuite/gcc.c-torture/compile/20000701-1.c
- 23561090b ./gcc/testsuite/gcc.c-torture/compile/20000717-1.c
-1282603692b ./gcc/testsuite/gcc.c-torture/compile/20000718.c
-1628213540b ./gcc/testsuite/gcc.c-torture/compile/20000728-1.c
-1312817714b ./gcc/testsuite/gcc.c-torture/compile/20000802-1.c
- 726930164b ./gcc/testsuite/gcc.c-torture/compile/20000803-1.c
- 221685889b ./gcc/testsuite/gcc.c-torture/compile/20000804-1.c
- 365799149b ./gcc/testsuite/gcc.c-torture/compile/20000804-1.x
- 14592370b ./gcc/testsuite/gcc.c-torture/compile/20000818-1.c
-3951998464b ./gcc/testsuite/gcc.c-torture/compile/20000825-1.c
- 568900271b ./gcc/testsuite/gcc.c-torture/compile/20000827-1.c
-1702972966b ./gcc/testsuite/gcc.c-torture/compile/20000922-1.c
-1072305501b ./gcc/testsuite/gcc.c-torture/compile/20000923-1.c
-3797844565b ./gcc/testsuite/gcc.c-torture/compile/20001018-1.c
-1683967360b ./gcc/testsuite/gcc.c-torture/compile/20001024-1.c
-2747210984b ./gcc/testsuite/gcc.c-torture/compile/20001109-1.c
-1480527842b ./gcc/testsuite/gcc.c-torture/compile/20001109-2.c
-1361242877b ./gcc/testsuite/gcc.c-torture/compile/20001116-1.c
-3966980994b ./gcc/testsuite/gcc.c-torture/compile/20001121-1.c
- 599106867b ./gcc/testsuite/gcc.c-torture/compile/20001123-1.c
- 533599449b ./gcc/testsuite/gcc.c-torture/compile/20001123-2.c
-3673931755b ./gcc/testsuite/gcc.c-torture/compile/20001205-1.c
-4124637154b ./gcc/testsuite/gcc.c-torture/compile/20001205-1.x
-1735535039b ./gcc/testsuite/gcc.c-torture/compile/20001212-1.c
-2993397009b ./gcc/testsuite/gcc.c-torture/compile/20001221-1.c
-2331416953b ./gcc/testsuite/gcc.c-torture/compile/20001222-1.c
-1872827667b ./gcc/testsuite/gcc.c-torture/compile/20001226-1.c
-1799289877b ./gcc/testsuite/gcc.c-torture/compile/20001226-1.x
-4099141482b ./gcc/testsuite/gcc.c-torture/compile/20010102-1.c
-2413955943b ./gcc/testsuite/gcc.c-torture/compile/20010107-1.c
-1898226085b ./gcc/testsuite/gcc.c-torture/compile/20010112-1.c
-2489493145b ./gcc/testsuite/gcc.c-torture/compile/20010113-1.c
- 297170965b ./gcc/testsuite/gcc.c-torture/compile/20010114-1.c
- 419921862b ./gcc/testsuite/gcc.c-torture/compile/20010114-2.c
-1452007589b ./gcc/testsuite/gcc.c-torture/compile/20010117-1.c
- 704576096b ./gcc/testsuite/gcc.c-torture/compile/20010117-2.c
-3392519430b ./gcc/testsuite/gcc.c-torture/compile/20010118-1.c
-3355150280b ./gcc/testsuite/gcc.c-torture/compile/20010124-1.c
-1731094577b ./gcc/testsuite/gcc.c-torture/compile/20010202-1.c
- 459778149b ./gcc/testsuite/gcc.c-torture/compile/20010209-1.c
- 620156961b ./gcc/testsuite/gcc.c-torture/compile/20010226-1.c
- 501795051b ./gcc/testsuite/gcc.c-torture/compile/20010227-1.c
-1832317029b ./gcc/testsuite/gcc.c-torture/compile/20010313-1.c
-2854417844b ./gcc/testsuite/gcc.c-torture/compile/20010320-1.c
-3271306723b ./gcc/testsuite/gcc.c-torture/compile/20010326-1.c
-2222955049b ./gcc/testsuite/gcc.c-torture/compile/20010327-1.c
-3399421780b ./gcc/testsuite/gcc.c-torture/compile/20010328-1.c
-3356008690b ./gcc/testsuite/gcc.c-torture/compile/20010329-1.c
-4152637354b ./gcc/testsuite/gcc.c-torture/compile/20010404-1.c
-1548469760b ./gcc/testsuite/gcc.c-torture/compile/20010408-1.c
-3063630520b ./gcc/testsuite/gcc.c-torture/compile/20010421-1.c
-3134579946b ./gcc/testsuite/gcc.c-torture/compile/20010423-1.c
-2289909284b ./gcc/testsuite/gcc.c-torture/compile/20010426-1.c
-2357536931b ./gcc/testsuite/gcc.c-torture/compile/20010503-1.c
-1212631565b ./gcc/testsuite/gcc.c-torture/compile/20010510-1.c
-1882079811b ./gcc/testsuite/gcc.c-torture/compile/20010516-1.c
-3166989448b ./gcc/testsuite/gcc.c-torture/compile/20010518-1.c
-3017611134b ./gcc/testsuite/gcc.c-torture/compile/20010518-2.c
- 85616231b ./gcc/testsuite/gcc.c-torture/compile/20010518-2.x
-3272357537b ./gcc/testsuite/gcc.c-torture/compile/20010525-1.c
- 475581102b ./gcc/testsuite/gcc.c-torture/compile/20010605-1.c
-2936945185b ./gcc/testsuite/gcc.c-torture/compile/20010605-2.c
-1294346331b ./gcc/testsuite/gcc.c-torture/compile/20010605-3.c
-1636067950b ./gcc/testsuite/gcc.c-torture/compile/20010610-1.c
-3077114319b ./gcc/testsuite/gcc.c-torture/compile/20010611-1.c
-2584744929b ./gcc/testsuite/gcc.c-torture/compile/20010701-1.c
-3815198051b ./gcc/testsuite/gcc.c-torture/compile/20010706-1.c
-2713093522b ./gcc/testsuite/gcc.c-torture/compile/20010711-1.c
-2299173088b ./gcc/testsuite/gcc.c-torture/compile/20010711-2.c
-2571658330b ./gcc/testsuite/gcc.c-torture/compile/20010714-1.c
-3287379546b ./gcc/testsuite/gcc.c-torture/compile/20010824-1.c
- 246682254b ./gcc/testsuite/gcc.c-torture/compile/20010903-1.c
-2923439609b ./gcc/testsuite/gcc.c-torture/compile/20010903-2.c
-4222197564b ./gcc/testsuite/gcc.c-torture/compile/20010911-1.c
-1179192833b ./gcc/testsuite/gcc.c-torture/compile/20011010-1.c
-3994663975b ./gcc/testsuite/gcc.c-torture/compile/20011023-1.c
-1413783183b ./gcc/testsuite/gcc.c-torture/compile/20011029-1.c
-2871784009b ./gcc/testsuite/gcc.c-torture/compile/20011106-1.c
-3630952349b ./gcc/testsuite/gcc.c-torture/compile/20011106-2.c
- 259957404b ./gcc/testsuite/gcc.c-torture/compile/20011109-1.c
-2924929463b ./gcc/testsuite/gcc.c-torture/compile/20011114-1.c
-3434496008b ./gcc/testsuite/gcc.c-torture/compile/20011114-2.c
-2760161415b ./gcc/testsuite/gcc.c-torture/compile/20011114-3.c
-3547339064b ./gcc/testsuite/gcc.c-torture/compile/20011114-4.c
-3653343012b ./gcc/testsuite/gcc.c-torture/compile/20011119-1.c
-2885054257b ./gcc/testsuite/gcc.c-torture/compile/20011119-2.c
- 174415171b ./gcc/testsuite/gcc.c-torture/compile/20011130-1.c
-1745547919b ./gcc/testsuite/gcc.c-torture/compile/20011130-2.c
-3987052556b ./gcc/testsuite/gcc.c-torture/compile/20011205-1.c
-1179199950b ./gcc/testsuite/gcc.c-torture/compile/20011217-1.c
- 315452475b ./gcc/testsuite/gcc.c-torture/compile/20011217-2.c
-3416537061b ./gcc/testsuite/gcc.c-torture/compile/20011218-1.c
-2149414673b ./gcc/testsuite/gcc.c-torture/compile/20011219-1.c
-1484609615b ./gcc/testsuite/gcc.c-torture/compile/20011219-2.c
-3590162726b ./gcc/testsuite/gcc.c-torture/compile/20011229-1.c
-1849951092b ./gcc/testsuite/gcc.c-torture/compile/20011229-2.c
-3637150343b ./gcc/testsuite/gcc.c-torture/compile/20020103-1.c
-3505269843b ./gcc/testsuite/gcc.c-torture/compile/20020106-1.c
-3398919425b ./gcc/testsuite/gcc.c-torture/compile/20020109-1.c
-2348431150b ./gcc/testsuite/gcc.c-torture/compile/20020109-2.c
-4197667212b ./gcc/testsuite/gcc.c-torture/compile/20020110.c
- 208428249b ./gcc/testsuite/gcc.c-torture/compile/20020116-1.c
- 966527433b ./gcc/testsuite/gcc.c-torture/compile/20020120-1.c
-3002186865b ./gcc/testsuite/gcc.c-torture/compile/20020121-1.c
-2862264485b ./gcc/testsuite/gcc.c-torture/compile/20020206-1.c
-1009994283b ./gcc/testsuite/gcc.c-torture/compile/20020210-1.c
-1683706700b ./gcc/testsuite/gcc.c-torture/compile/20020304-1.c
-3186842248b ./gcc/testsuite/gcc.c-torture/compile/20020304-2.c
-1366050512b ./gcc/testsuite/gcc.c-torture/compile/20020309-1.c
-1174986914b ./gcc/testsuite/gcc.c-torture/compile/20020309-2.c
-1727441689b ./gcc/testsuite/gcc.c-torture/compile/20020312-1.c
-2378124589b ./gcc/testsuite/gcc.c-torture/compile/20020315-1.c
-4029159547b ./gcc/testsuite/gcc.c-torture/compile/20020318-1.c
-2837722984b ./gcc/testsuite/gcc.c-torture/compile/20020320-1.c
-1380106070b ./gcc/testsuite/gcc.c-torture/compile/20020323-1.c
- 392286369b ./gcc/testsuite/gcc.c-torture/compile/20020330-1.c
-4289507025b ./gcc/testsuite/gcc.c-torture/compile/20020409-1.c
-3246888365b ./gcc/testsuite/gcc.c-torture/compile/20020418-1.c
-1318297601b ./gcc/testsuite/gcc.c-torture/compile/20020530-1.c
- 909926902b ./gcc/testsuite/gcc.c-torture/compile/20020605-1.c
- 168620187b ./gcc/testsuite/gcc.c-torture/compile/20020701-1.c
-1564612166b ./gcc/testsuite/gcc.c-torture/compile/20020710-1.c
- 737897185b ./gcc/testsuite/gcc.c-torture/compile/20020715-1.c
-4042098602b ./gcc/testsuite/gcc.c-torture/compile/20020926-1.c
- 337401938b ./gcc/testsuite/gcc.c-torture/compile/20020927-1.c
-1009786556b ./gcc/testsuite/gcc.c-torture/compile/20021007-1.c
- 778329230b ./gcc/testsuite/gcc.c-torture/compile/20021015-1.c
- 25981859b ./gcc/testsuite/gcc.c-torture/compile/20021015-2.c
- 375311401b ./gcc/testsuite/gcc.c-torture/compile/900116-1.c
-4181931788b ./gcc/testsuite/gcc.c-torture/compile/900216-1.c
- 426860692b ./gcc/testsuite/gcc.c-torture/compile/900313-1.c
- 221307575b ./gcc/testsuite/gcc.c-torture/compile/900407-1.c
- 197356982b ./gcc/testsuite/gcc.c-torture/compile/900516-1.c
-1548983744b ./gcc/testsuite/gcc.c-torture/compile/920301-1.c
-4282140702b ./gcc/testsuite/gcc.c-torture/compile/920409-1.c
-1778084656b ./gcc/testsuite/gcc.c-torture/compile/920409-2.c
- 213155575b ./gcc/testsuite/gcc.c-torture/compile/920410-1.c
- 645991439b ./gcc/testsuite/gcc.c-torture/compile/920410-2.c
-3957037518b ./gcc/testsuite/gcc.c-torture/compile/920411-2.c
-2334498932b ./gcc/testsuite/gcc.c-torture/compile/920413-1.c
- 962899604b ./gcc/testsuite/gcc.c-torture/compile/920415-1.c
-2539976202b ./gcc/testsuite/gcc.c-torture/compile/920428-1.c
-1013934609b ./gcc/testsuite/gcc.c-torture/compile/920428-2.c
- 788296187b ./gcc/testsuite/gcc.c-torture/compile/920428-3.c
- 972355256b ./gcc/testsuite/gcc.c-torture/compile/920428-4.c
-2850012644b ./gcc/testsuite/gcc.c-torture/compile/920428-5.c
-3327240012b ./gcc/testsuite/gcc.c-torture/compile/920428-6.c
-1997719687b ./gcc/testsuite/gcc.c-torture/compile/920428-7.c
-2992320179b ./gcc/testsuite/gcc.c-torture/compile/920501-10.c
-2609541759b ./gcc/testsuite/gcc.c-torture/compile/920501-11.c
- 46877596b ./gcc/testsuite/gcc.c-torture/compile/920501-12.c
- 432031083b ./gcc/testsuite/gcc.c-torture/compile/920501-13.c
-3986866565b ./gcc/testsuite/gcc.c-torture/compile/920501-15.c
-2140301132b ./gcc/testsuite/gcc.c-torture/compile/920501-16.c
-2776840158b ./gcc/testsuite/gcc.c-torture/compile/920501-17.c
-2935229477b ./gcc/testsuite/gcc.c-torture/compile/920501-18.c
-2462018157b ./gcc/testsuite/gcc.c-torture/compile/920501-19.c
-3673935883b ./gcc/testsuite/gcc.c-torture/compile/920501-1.c
-3480599006b ./gcc/testsuite/gcc.c-torture/compile/920501-20.c
-1689258794b ./gcc/testsuite/gcc.c-torture/compile/920501-21.c
- 693947540b ./gcc/testsuite/gcc.c-torture/compile/920501-22.c
- 195826579b ./gcc/testsuite/gcc.c-torture/compile/920501-23.c
- 825734676b ./gcc/testsuite/gcc.c-torture/compile/920501-2.c
-2815077449b ./gcc/testsuite/gcc.c-torture/compile/920501-3.c
-3150704176b ./gcc/testsuite/gcc.c-torture/compile/920501-4.c
-3936438856b ./gcc/testsuite/gcc.c-torture/compile/920501-6.c
-2978363162b ./gcc/testsuite/gcc.c-torture/compile/920501-7.c
-3178366367b ./gcc/testsuite/gcc.c-torture/compile/920501-8.c
-3988773566b ./gcc/testsuite/gcc.c-torture/compile/920501-9.c
-4273234272b ./gcc/testsuite/gcc.c-torture/compile/920502-1.c
- 451473472b ./gcc/testsuite/gcc.c-torture/compile/920502-2.c
-1332166500b ./gcc/testsuite/gcc.c-torture/compile/920520-1.c
-3357986992b ./gcc/testsuite/gcc.c-torture/compile/920520-1.x
- 901366109b ./gcc/testsuite/gcc.c-torture/compile/920521-1.c
- 85616231b ./gcc/testsuite/gcc.c-torture/compile/920521-1.x
-1216353647b ./gcc/testsuite/gcc.c-torture/compile/920529-1.c
- 619512296b ./gcc/testsuite/gcc.c-torture/compile/920608-1.c
-2459147095b ./gcc/testsuite/gcc.c-torture/compile/920611-2.c
-2108915266b ./gcc/testsuite/gcc.c-torture/compile/920615-1.c
-1738386639b ./gcc/testsuite/gcc.c-torture/compile/920617-1.c
-1497386838b ./gcc/testsuite/gcc.c-torture/compile/920617-2.c
- 15254500b ./gcc/testsuite/gcc.c-torture/compile/920623-1.c
-1775235688b ./gcc/testsuite/gcc.c-torture/compile/920624-1.c
-3157795265b ./gcc/testsuite/gcc.c-torture/compile/920625-1.c
-2188778612b ./gcc/testsuite/gcc.c-torture/compile/920625-1.x
- 832571494b ./gcc/testsuite/gcc.c-torture/compile/920625-2.c
-1209301541b ./gcc/testsuite/gcc.c-torture/compile/920626-1.c
-1071302436b ./gcc/testsuite/gcc.c-torture/compile/920701-1.c
-2769689708b ./gcc/testsuite/gcc.c-torture/compile/920702-1.c
-2699685766b ./gcc/testsuite/gcc.c-torture/compile/920706-1.c
-2611774952b ./gcc/testsuite/gcc.c-torture/compile/920710-2.c
-3175710753b ./gcc/testsuite/gcc.c-torture/compile/920711-1.c
-1838641399b ./gcc/testsuite/gcc.c-torture/compile/920721-1.c
-1730574618b ./gcc/testsuite/gcc.c-torture/compile/920723-1.c
-2728140867b ./gcc/testsuite/gcc.c-torture/compile/920729-1.c
-3543134222b ./gcc/testsuite/gcc.c-torture/compile/920806-1.c
- 301898459b ./gcc/testsuite/gcc.c-torture/compile/920808-1.c
-4286663396b ./gcc/testsuite/gcc.c-torture/compile/920809-1.c
-1519893227b ./gcc/testsuite/gcc.c-torture/compile/920817-1.c
-1506959740b ./gcc/testsuite/gcc.c-torture/compile/920820-1.c
-2009298978b ./gcc/testsuite/gcc.c-torture/compile/920821-1.c
- 153303695b ./gcc/testsuite/gcc.c-torture/compile/920821-2.c
-1035421587b ./gcc/testsuite/gcc.c-torture/compile/920825-1.c
-1883204896b ./gcc/testsuite/gcc.c-torture/compile/920825-2.c
- 378919939b ./gcc/testsuite/gcc.c-torture/compile/920826-1.c
- 324445241b ./gcc/testsuite/gcc.c-torture/compile/920828-1.c
-2512376601b ./gcc/testsuite/gcc.c-torture/compile/920829-1.c
-1175894768b ./gcc/testsuite/gcc.c-torture/compile/920831-1.c
-3615669663b ./gcc/testsuite/gcc.c-torture/compile/920902-1.c
-3213642392b ./gcc/testsuite/gcc.c-torture/compile/920909-1.c
- 923773306b ./gcc/testsuite/gcc.c-torture/compile/920917-1.c
- 313805874b ./gcc/testsuite/gcc.c-torture/compile/920928-1.c
-3576009210b ./gcc/testsuite/gcc.c-torture/compile/920928-2.c
-2038558878b ./gcc/testsuite/gcc.c-torture/compile/920928-3.c
-2544344324b ./gcc/testsuite/gcc.c-torture/compile/920928-4.c
- 934086546b ./gcc/testsuite/gcc.c-torture/compile/920928-5.c
- 6106016b ./gcc/testsuite/gcc.c-torture/compile/920928-6.c
- 735506239b ./gcc/testsuite/gcc.c-torture/compile/921004-1.c
-3888639831b ./gcc/testsuite/gcc.c-torture/compile/921011-1.c
-3956087084b ./gcc/testsuite/gcc.c-torture/compile/921011-2.c
-1370935236b ./gcc/testsuite/gcc.c-torture/compile/921012-1.c
-2304808730b ./gcc/testsuite/gcc.c-torture/compile/921012-2.c
-3157047871b ./gcc/testsuite/gcc.c-torture/compile/921013-1.c
-3740334758b ./gcc/testsuite/gcc.c-torture/compile/921019-1.c
-2811091388b ./gcc/testsuite/gcc.c-torture/compile/921021-1.c
-3551171868b ./gcc/testsuite/gcc.c-torture/compile/921024-1.c
-3924542394b ./gcc/testsuite/gcc.c-torture/compile/921026-1.c
-1165569278b ./gcc/testsuite/gcc.c-torture/compile/921103-1.c
-1243246144b ./gcc/testsuite/gcc.c-torture/compile/921109-1.c
-2203220429b ./gcc/testsuite/gcc.c-torture/compile/921111-1.c
-1990624597b ./gcc/testsuite/gcc.c-torture/compile/921116-2.c
- 517704894b ./gcc/testsuite/gcc.c-torture/compile/921118-1.c
-3811420781b ./gcc/testsuite/gcc.c-torture/compile/921126-1.c
-3727547715b ./gcc/testsuite/gcc.c-torture/compile/921202-1.c
- 568945264b ./gcc/testsuite/gcc.c-torture/compile/921202-2.c
-2130176572b ./gcc/testsuite/gcc.c-torture/compile/921203-1.c
- 492266852b ./gcc/testsuite/gcc.c-torture/compile/921203-2.c
- 855574805b ./gcc/testsuite/gcc.c-torture/compile/921206-1.c
-2014683974b ./gcc/testsuite/gcc.c-torture/compile/921227-1.c
- 96957459b ./gcc/testsuite/gcc.c-torture/compile/930109-1.c
-1189423329b ./gcc/testsuite/gcc.c-torture/compile/930109-2.c
-1543922161b ./gcc/testsuite/gcc.c-torture/compile/930111-1.c
-1357888911b ./gcc/testsuite/gcc.c-torture/compile/930117-1.c
-2068061905b ./gcc/testsuite/gcc.c-torture/compile/930118-1.c
-2900924058b ./gcc/testsuite/gcc.c-torture/compile/930120-1.c
-4121817111b ./gcc/testsuite/gcc.c-torture/compile/930126-1.c
-1532460815b ./gcc/testsuite/gcc.c-torture/compile/930210-1.c
-3625302497b ./gcc/testsuite/gcc.c-torture/compile/930217-1.c
-3938239975b ./gcc/testsuite/gcc.c-torture/compile/930222-1.c
-1557388855b ./gcc/testsuite/gcc.c-torture/compile/930325-1.c
-3378061921b ./gcc/testsuite/gcc.c-torture/compile/930326-1.c
-3007351406b ./gcc/testsuite/gcc.c-torture/compile/930326-1.x
-2931382100b ./gcc/testsuite/gcc.c-torture/compile/930411-1.c
-3578370973b ./gcc/testsuite/gcc.c-torture/compile/930421-1.c
-3734830625b ./gcc/testsuite/gcc.c-torture/compile/930427-2.c
-3885379756b ./gcc/testsuite/gcc.c-torture/compile/930503-1.c
- 959725141b ./gcc/testsuite/gcc.c-torture/compile/930503-2.c
- 140786434b ./gcc/testsuite/gcc.c-torture/compile/930506-1.c
-3305652641b ./gcc/testsuite/gcc.c-torture/compile/930506-2.c
-1442644232b ./gcc/testsuite/gcc.c-torture/compile/930510-1.c
-3993332569b ./gcc/testsuite/gcc.c-torture/compile/930513-1.c
-2006581046b ./gcc/testsuite/gcc.c-torture/compile/930513-2.c
-2698332239b ./gcc/testsuite/gcc.c-torture/compile/930513-3.c
- 90110464b ./gcc/testsuite/gcc.c-torture/compile/930523-1.c
-2548234910b ./gcc/testsuite/gcc.c-torture/compile/930525-1.c
- 422873186b ./gcc/testsuite/gcc.c-torture/compile/930527-1.c
- 784172570b ./gcc/testsuite/gcc.c-torture/compile/930529-1.c
-3569132715b ./gcc/testsuite/gcc.c-torture/compile/930530-1.c
-3200160962b ./gcc/testsuite/gcc.c-torture/compile/930602-1.c
-3142735794b ./gcc/testsuite/gcc.c-torture/compile/930603-1.c
-1973176638b ./gcc/testsuite/gcc.c-torture/compile/930607-1.c
- 208901999b ./gcc/testsuite/gcc.c-torture/compile/930611-1.c
-3976001091b ./gcc/testsuite/gcc.c-torture/compile/930618-1.c
- 583248042b ./gcc/testsuite/gcc.c-torture/compile/930621-1.c
-3751666180b ./gcc/testsuite/gcc.c-torture/compile/930623-1.c
-3714994986b ./gcc/testsuite/gcc.c-torture/compile/930702-1.c
-3138367793b ./gcc/testsuite/gcc.c-torture/compile/930926-1.c
- 126934282b ./gcc/testsuite/gcc.c-torture/compile/930927-1.c
-2046421038b ./gcc/testsuite/gcc.c-torture/compile/931003-1.c
-2795307593b ./gcc/testsuite/gcc.c-torture/compile/931004-1.c
-2248992767b ./gcc/testsuite/gcc.c-torture/compile/931013-1.c
- 554284027b ./gcc/testsuite/gcc.c-torture/compile/931013-2.c
-1170847752b ./gcc/testsuite/gcc.c-torture/compile/931013-3.c
- 752631056b ./gcc/testsuite/gcc.c-torture/compile/931018-1.c
-4120231716b ./gcc/testsuite/gcc.c-torture/compile/931031-1.c
-2466554678b ./gcc/testsuite/gcc.c-torture/compile/931102-1.c
-4193170992b ./gcc/testsuite/gcc.c-torture/compile/931102-2.c
-3312404691b ./gcc/testsuite/gcc.c-torture/compile/931203-1.c
-2144495581b ./gcc/testsuite/gcc.c-torture/compile/940611-1.c
-2217967256b ./gcc/testsuite/gcc.c-torture/compile/940712-1.c
- 43398345b ./gcc/testsuite/gcc.c-torture/compile/940718-1.c
-2813422857b ./gcc/testsuite/gcc.c-torture/compile/941014-1.c
- 714535983b ./gcc/testsuite/gcc.c-torture/compile/941014-2.c
- 236968493b ./gcc/testsuite/gcc.c-torture/compile/941014-3.c
- 772624016b ./gcc/testsuite/gcc.c-torture/compile/941014-4.c
-2255123649b ./gcc/testsuite/gcc.c-torture/compile/941019-1.c
-3482340577b ./gcc/testsuite/gcc.c-torture/compile/941111-1.c
-4138121525b ./gcc/testsuite/gcc.c-torture/compile/941113-1.c
- 938329066b ./gcc/testsuite/gcc.c-torture/compile/950122-1.c
-4155644724b ./gcc/testsuite/gcc.c-torture/compile/950124-1.c
-3810294661b ./gcc/testsuite/gcc.c-torture/compile/950221-1.c
-3460610209b ./gcc/testsuite/gcc.c-torture/compile/950329-1.c
-3474584992b ./gcc/testsuite/gcc.c-torture/compile/950512-1.c
-3344132126b ./gcc/testsuite/gcc.c-torture/compile/950530-1.c
-1876592424b ./gcc/testsuite/gcc.c-torture/compile/950607-1.c
-1023117358b ./gcc/testsuite/gcc.c-torture/compile/950610-1.c
-2634556580b ./gcc/testsuite/gcc.c-torture/compile/950612-1.c
-1196693335b ./gcc/testsuite/gcc.c-torture/compile/950613-1.c
- 447206228b ./gcc/testsuite/gcc.c-torture/compile/950618-1.c
- 267255638b ./gcc/testsuite/gcc.c-torture/compile/950719-1.c
-3590503950b ./gcc/testsuite/gcc.c-torture/compile/950729-1.c
-3836055170b ./gcc/testsuite/gcc.c-torture/compile/950816-1.c
-2188937099b ./gcc/testsuite/gcc.c-torture/compile/950816-2.c
-2634731147b ./gcc/testsuite/gcc.c-torture/compile/950816-3.c
-2650686602b ./gcc/testsuite/gcc.c-torture/compile/950910-1.c
-2979160187b ./gcc/testsuite/gcc.c-torture/compile/950919-1.c
-3635621359b ./gcc/testsuite/gcc.c-torture/compile/950921-1.c
-3500911374b ./gcc/testsuite/gcc.c-torture/compile/950922-1.c
-2220749535b ./gcc/testsuite/gcc.c-torture/compile/951004-1.c
-1578339532b ./gcc/testsuite/gcc.c-torture/compile/951106-1.c
- 459531698b ./gcc/testsuite/gcc.c-torture/compile/951116-1.c
-2236702069b ./gcc/testsuite/gcc.c-torture/compile/951128-1.c
- 559124320b ./gcc/testsuite/gcc.c-torture/compile/951220-1.c
-2931610069b ./gcc/testsuite/gcc.c-torture/compile/951222-1.c
- 834462352b ./gcc/testsuite/gcc.c-torture/compile/960106-1.c
-2810957446b ./gcc/testsuite/gcc.c-torture/compile/960130-1.c
-3942840130b ./gcc/testsuite/gcc.c-torture/compile/960201-1.c
-1531419420b ./gcc/testsuite/gcc.c-torture/compile/960218-1.c
-1748987127b ./gcc/testsuite/gcc.c-torture/compile/960220-1.c
-4272797008b ./gcc/testsuite/gcc.c-torture/compile/960221-1.c
-2932166589b ./gcc/testsuite/gcc.c-torture/compile/960319-1.c
-1856173622b ./gcc/testsuite/gcc.c-torture/compile/960514-1.c
-3435740171b ./gcc/testsuite/gcc.c-torture/compile/960704-1.c
-2939040127b ./gcc/testsuite/gcc.c-torture/compile/960829-1.c
- 497475088b ./gcc/testsuite/gcc.c-torture/compile/961004-1.c
-1946932829b ./gcc/testsuite/gcc.c-torture/compile/961010-1.c
- 304816181b ./gcc/testsuite/gcc.c-torture/compile/961019-1.c
-2048507537b ./gcc/testsuite/gcc.c-torture/compile/961031-1.c
-3079865887b ./gcc/testsuite/gcc.c-torture/compile/961126-1.c
-1672232168b ./gcc/testsuite/gcc.c-torture/compile/961203-1.c
-4037616572b ./gcc/testsuite/gcc.c-torture/compile/961203-1.x
-3759439975b ./gcc/testsuite/gcc.c-torture/compile/970206-1.c
-1182708149b ./gcc/testsuite/gcc.c-torture/compile/970214-1.c
-3593522245b ./gcc/testsuite/gcc.c-torture/compile/980329-1.c
-3672497829b ./gcc/testsuite/gcc.c-torture/compile/980408-1.c
-2062728359b ./gcc/testsuite/gcc.c-torture/compile/980504-1.c
-4232017618b ./gcc/testsuite/gcc.c-torture/compile/980506-1.c
-4075622106b ./gcc/testsuite/gcc.c-torture/compile/980506-1.x
- 32528983b ./gcc/testsuite/gcc.c-torture/compile/980506-2.c
-4270541716b ./gcc/testsuite/gcc.c-torture/compile/980511-1.c
-3713274322b ./gcc/testsuite/gcc.c-torture/compile/980701-1.c
- 777674549b ./gcc/testsuite/gcc.c-torture/compile/980706-1.c
- 610537079b ./gcc/testsuite/gcc.c-torture/compile/980726-1.c
-3564634914b ./gcc/testsuite/gcc.c-torture/compile/980729-1.c
-1437208592b ./gcc/testsuite/gcc.c-torture/compile/980816-1.c
-4262061714b ./gcc/testsuite/gcc.c-torture/compile/980821-1.c
- 411994094b ./gcc/testsuite/gcc.c-torture/compile/980825-1.c
- 84987168b ./gcc/testsuite/gcc.c-torture/compile/981001-1.c
-3572428069b ./gcc/testsuite/gcc.c-torture/compile/981001-2.c
- 668832071b ./gcc/testsuite/gcc.c-torture/compile/981001-3.c
-2581029790b ./gcc/testsuite/gcc.c-torture/compile/981001-4.c
-2455813842b ./gcc/testsuite/gcc.c-torture/compile/981006-1.c
- 303831411b ./gcc/testsuite/gcc.c-torture/compile/981006-1.x
- 436023456b ./gcc/testsuite/gcc.c-torture/compile/981007-1.c
-3644509388b ./gcc/testsuite/gcc.c-torture/compile/981022-1.c
-2402428546b ./gcc/testsuite/gcc.c-torture/compile/981022-1.x
-2312981402b ./gcc/testsuite/gcc.c-torture/compile/981107-1.c
-1534948383b ./gcc/testsuite/gcc.c-torture/compile/981223-1.c
-2200568070b ./gcc/testsuite/gcc.c-torture/compile/981223-1.x
-4068323857b ./gcc/testsuite/gcc.c-torture/compile/990107-1.c
-2146948130b ./gcc/testsuite/gcc.c-torture/compile/990117-1.c
- 569996007b ./gcc/testsuite/gcc.c-torture/compile/990203-1.c
- 415305492b ./gcc/testsuite/gcc.c-torture/compile/990517-1.c
-3394640266b ./gcc/testsuite/gcc.c-torture/compile/990519-1.c
-2791783349b ./gcc/testsuite/gcc.c-torture/compile/990523-1.c
-3000844764b ./gcc/testsuite/gcc.c-torture/compile/990527-1.c
- 582106274b ./gcc/testsuite/gcc.c-torture/compile/990617-1.c
-2322013805b ./gcc/testsuite/gcc.c-torture/compile/990617-1.x
- 492504629b ./gcc/testsuite/gcc.c-torture/compile/990625-1.c
- 884965957b ./gcc/testsuite/gcc.c-torture/compile/990625-2.c
-4084131388b ./gcc/testsuite/gcc.c-torture/compile/990801-1.c
-2266581816b ./gcc/testsuite/gcc.c-torture/compile/990801-2.c
-3317513113b ./gcc/testsuite/gcc.c-torture/compile/990829-1.c
-3956045070b ./gcc/testsuite/gcc.c-torture/compile/990913-1.c
-3319682501b ./gcc/testsuite/gcc.c-torture/compile/990928-1.c
-3933777529b ./gcc/testsuite/gcc.c-torture/compile/991008-1.c
-2673675627b ./gcc/testsuite/gcc.c-torture/compile/991026-1.c
-1674528994b ./gcc/testsuite/gcc.c-torture/compile/991026-2.c
-4044514395b ./gcc/testsuite/gcc.c-torture/compile/991127-1.c
-4090550720b ./gcc/testsuite/gcc.c-torture/compile/991202-1.c
-2790904959b ./gcc/testsuite/gcc.c-torture/compile/991208-1.c
-3320607847b ./gcc/testsuite/gcc.c-torture/compile/991213-1.c
- 337781771b ./gcc/testsuite/gcc.c-torture/compile/991213-2.c
-2183919411b ./gcc/testsuite/gcc.c-torture/compile/991213-3.c
-2401949194b ./gcc/testsuite/gcc.c-torture/compile/991214-1.c
- 490622457b ./gcc/testsuite/gcc.c-torture/compile/991214-2.c
-4103871327b ./gcc/testsuite/gcc.c-torture/compile/991229-1.c
-3992734927b ./gcc/testsuite/gcc.c-torture/compile/991229-2.c
-4256185088b ./gcc/testsuite/gcc.c-torture/compile/991229-3.c
-1572386559b ./gcc/testsuite/gcc.c-torture/compile/calls.c
-2432910359b ./gcc/testsuite/gcc.c-torture/compile/cmpdi-1.c
- 614750703b ./gcc/testsuite/gcc.c-torture/compile/combine-hang.c
-1983287936b ./gcc/testsuite/gcc.c-torture/compile/compile.exp
-1794942657b ./gcc/testsuite/gcc.c-torture/compile/cpp-1.c
- 970559481b ./gcc/testsuite/gcc.c-torture/compile/cpp-2.c
-1931627759b ./gcc/testsuite/gcc.c-torture/compile/dll.c
-3830564423b ./gcc/testsuite/gcc.c-torture/compile/dll.x
-3452765233b ./gcc/testsuite/gcc.c-torture/compile/funcptr-1.c
-1935315878b ./gcc/testsuite/gcc.c-torture/compile/goto-1.c
-1601988128b ./gcc/testsuite/gcc.c-torture/compile/iftrap-1.c
- 335811326b ./gcc/testsuite/gcc.c-torture/compile/iftrap-2.c
-4225667120b ./gcc/testsuite/gcc.c-torture/compile/init-1.c
-2861967846b ./gcc/testsuite/gcc.c-torture/compile/init-2.c
-2669634792b ./gcc/testsuite/gcc.c-torture/compile/init-3.c
-4126878501b ./gcc/testsuite/gcc.c-torture/compile/labels-1.c
-2067585207b ./gcc/testsuite/gcc.c-torture/compile/labels-2.c
-3607951474b ./gcc/testsuite/gcc.c-torture/compile/labels-3.c
- 709334018b ./gcc/testsuite/gcc.c-torture/compile/labels-3.x
-1060389673b ./gcc/testsuite/gcc.c-torture/compile/packed-1.c
- 69389766b ./gcc/testsuite/gcc.c-torture/compile/structs.c
-2677779184b ./gcc/testsuite/gcc.c-torture/compile/trunctfdf.c
-3723113555b ./gcc/testsuite/gcc.c-torture/compile/widechar-1.c
-2985433108b ./gcc/testsuite/gcc.c-torture/compile/zero-strct-1.c
-1530761060b ./gcc/testsuite/gcc.c-torture/execute/20000112-1.c
-2481066019b ./gcc/testsuite/gcc.c-torture/execute/20000113-1.c
-1162771092b ./gcc/testsuite/gcc.c-torture/execute/20000121-1.c
-2528273823b ./gcc/testsuite/gcc.c-torture/execute/20000205-1.c
-1308437308b ./gcc/testsuite/gcc.c-torture/execute/20000217-1.c
- 778222354b ./gcc/testsuite/gcc.c-torture/execute/20000223-1.c
-2810936145b ./gcc/testsuite/gcc.c-torture/execute/20000224-1.c
-2859303587b ./gcc/testsuite/gcc.c-torture/execute/20000225-1.c
-2200813341b ./gcc/testsuite/gcc.c-torture/execute/20000227-1.c
-1085530082b ./gcc/testsuite/gcc.c-torture/execute/20000313-1.c
-1558819196b ./gcc/testsuite/gcc.c-torture/execute/20000314-1.c
-1363719296b ./gcc/testsuite/gcc.c-torture/execute/20000314-2.c
-1833012317b ./gcc/testsuite/gcc.c-torture/execute/20000314-3.c
-3834437988b ./gcc/testsuite/gcc.c-torture/execute/20000402-1.c
-4060238122b ./gcc/testsuite/gcc.c-torture/execute/20000403-1.c
-3672378029b ./gcc/testsuite/gcc.c-torture/execute/20000412-1.c
-2857396630b ./gcc/testsuite/gcc.c-torture/execute/20000412-2.c
-3640032771b ./gcc/testsuite/gcc.c-torture/execute/20000412-3.c
-4233239850b ./gcc/testsuite/gcc.c-torture/execute/20000412-4.c
-3642307617b ./gcc/testsuite/gcc.c-torture/execute/20000412-5.c
- 122352684b ./gcc/testsuite/gcc.c-torture/execute/20000412-6.c
- 939777600b ./gcc/testsuite/gcc.c-torture/execute/20000419-1.c
-1445008654b ./gcc/testsuite/gcc.c-torture/execute/20000422-1.c
- 677800698b ./gcc/testsuite/gcc.c-torture/execute/20000503-1.c
- 531516808b ./gcc/testsuite/gcc.c-torture/execute/20000511-1.c
- 301599840b ./gcc/testsuite/gcc.c-torture/execute/20000519-1.c
-2363078014b ./gcc/testsuite/gcc.c-torture/execute/20000519-2.c
-2387696776b ./gcc/testsuite/gcc.c-torture/execute/20000523-1.c
- 185622639b ./gcc/testsuite/gcc.c-torture/execute/20000528-1.c
-3522437520b ./gcc/testsuite/gcc.c-torture/execute/20000603-1.c
-1679879990b ./gcc/testsuite/gcc.c-torture/execute/20000605-1.c
-2664922764b ./gcc/testsuite/gcc.c-torture/execute/20000605-2.c
-3650927220b ./gcc/testsuite/gcc.c-torture/execute/20000605-3.c
-3450155788b ./gcc/testsuite/gcc.c-torture/execute/20000622-1.c
-1183204743b ./gcc/testsuite/gcc.c-torture/execute/20000703-1.c
-2031552411b ./gcc/testsuite/gcc.c-torture/execute/20000706-1.c
- 425477806b ./gcc/testsuite/gcc.c-torture/execute/20000706-2.c
- 690409016b ./gcc/testsuite/gcc.c-torture/execute/20000706-3.c
- 388840900b ./gcc/testsuite/gcc.c-torture/execute/20000706-4.c
-3881852138b ./gcc/testsuite/gcc.c-torture/execute/20000706-5.c
-4202259059b ./gcc/testsuite/gcc.c-torture/execute/20000707-1.c
- 444353142b ./gcc/testsuite/gcc.c-torture/execute/20000715-1.c
-1455669777b ./gcc/testsuite/gcc.c-torture/execute/20000715-2.c
-1355649270b ./gcc/testsuite/gcc.c-torture/execute/20000717-1.c
-2506273608b ./gcc/testsuite/gcc.c-torture/execute/20000717-2.c
-3729674446b ./gcc/testsuite/gcc.c-torture/execute/20000717-3.c
- 843831990b ./gcc/testsuite/gcc.c-torture/execute/20000717-4.c
-3868604235b ./gcc/testsuite/gcc.c-torture/execute/20000717-5.c
-3718377161b ./gcc/testsuite/gcc.c-torture/execute/20000722-1.c
-1809610528b ./gcc/testsuite/gcc.c-torture/execute/20000726-1.c
-3447416803b ./gcc/testsuite/gcc.c-torture/execute/20000731-1.c
-1979644625b ./gcc/testsuite/gcc.c-torture/execute/20000731-2.c
- 622038460b ./gcc/testsuite/gcc.c-torture/execute/20000801-1.c
- 379050989b ./gcc/testsuite/gcc.c-torture/execute/20000801-2.c
-1541984007b ./gcc/testsuite/gcc.c-torture/execute/20000801-3.c
-2632039733b ./gcc/testsuite/gcc.c-torture/execute/20000801-4.c
-3273221977b ./gcc/testsuite/gcc.c-torture/execute/20000808-1.c
-3715226001b ./gcc/testsuite/gcc.c-torture/execute/20000815-1.c
-2910084298b ./gcc/testsuite/gcc.c-torture/execute/20000818-1.c
-3982907773b ./gcc/testsuite/gcc.c-torture/execute/20000819-1.c
- 806186932b ./gcc/testsuite/gcc.c-torture/execute/20000822-1.c
-1842039169b ./gcc/testsuite/gcc.c-torture/execute/20000910-1.c
- 187331803b ./gcc/testsuite/gcc.c-torture/execute/20000910-2.c
-2672323622b ./gcc/testsuite/gcc.c-torture/execute/20000914-1.c
-3900394210b ./gcc/testsuite/gcc.c-torture/execute/20000917-1.c
-3471632940b ./gcc/testsuite/gcc.c-torture/execute/20001009-1.c
-1469841059b ./gcc/testsuite/gcc.c-torture/execute/20001009-2.c
-1399364540b ./gcc/testsuite/gcc.c-torture/execute/20001011-1.c
-1742992606b ./gcc/testsuite/gcc.c-torture/execute/20001013-1.c
-4079653839b ./gcc/testsuite/gcc.c-torture/execute/20001017-1.c
- 915214225b ./gcc/testsuite/gcc.c-torture/execute/20001017-2.c
- 411820211b ./gcc/testsuite/gcc.c-torture/execute/20001024-1.c
-4210982727b ./gcc/testsuite/gcc.c-torture/execute/20001026-1.c
-2907247602b ./gcc/testsuite/gcc.c-torture/execute/20001027-1.c
- 731083799b ./gcc/testsuite/gcc.c-torture/execute/20001031-1.c
- 123108566b ./gcc/testsuite/gcc.c-torture/execute/20001101.c
-3554851734b ./gcc/testsuite/gcc.c-torture/execute/20001108-1.c
- 696351685b ./gcc/testsuite/gcc.c-torture/execute/20001111-1.c
-1813795050b ./gcc/testsuite/gcc.c-torture/execute/20001112-1.c
-3234051961b ./gcc/testsuite/gcc.c-torture/execute/20001121-1.c
-2035849840b ./gcc/testsuite/gcc.c-torture/execute/20001124-1.c
- 378727792b ./gcc/testsuite/gcc.c-torture/execute/20001130-1.c
-1876645280b ./gcc/testsuite/gcc.c-torture/execute/20001130-2.c
-3253069371b ./gcc/testsuite/gcc.c-torture/execute/20001203-1.c
-2873524021b ./gcc/testsuite/gcc.c-torture/execute/20001203-2.c
- 315046176b ./gcc/testsuite/gcc.c-torture/execute/20001221-1.c
-3430334061b ./gcc/testsuite/gcc.c-torture/execute/20001228-1.c
-4145547631b ./gcc/testsuite/gcc.c-torture/execute/20001229-1.c
-2867964338b ./gcc/testsuite/gcc.c-torture/execute/20010106-1.c
-4104575350b ./gcc/testsuite/gcc.c-torture/execute/20010114-1.c
-4274826155b ./gcc/testsuite/gcc.c-torture/execute/20010116-1.c
-1853154998b ./gcc/testsuite/gcc.c-torture/execute/20010118-1.c
-1273676691b ./gcc/testsuite/gcc.c-torture/execute/20010119-1.c
- 367104834b ./gcc/testsuite/gcc.c-torture/execute/20010122-1.c
-2189672298b ./gcc/testsuite/gcc.c-torture/execute/20010122-1.x
-2126355226b ./gcc/testsuite/gcc.c-torture/execute/20010123-1.c
-2748204733b ./gcc/testsuite/gcc.c-torture/execute/20010124-1.c
- 962969845b ./gcc/testsuite/gcc.c-torture/execute/20010129-1.c
-3261363423b ./gcc/testsuite/gcc.c-torture/execute/20010129-1.x
-3208398809b ./gcc/testsuite/gcc.c-torture/execute/20010206-1.c
-1778342214b ./gcc/testsuite/gcc.c-torture/execute/20010209-1.c
-3579334795b ./gcc/testsuite/gcc.c-torture/execute/20010221-1.c
-2457134781b ./gcc/testsuite/gcc.c-torture/execute/20010222-1.c
-3606901851b ./gcc/testsuite/gcc.c-torture/execute/20010224-1.c
-1780176502b ./gcc/testsuite/gcc.c-torture/execute/20010325-1.c
- 111828245b ./gcc/testsuite/gcc.c-torture/execute/20010329-1.c
-4181677122b ./gcc/testsuite/gcc.c-torture/execute/20010403-1.c
-1255405665b ./gcc/testsuite/gcc.c-torture/execute/20010409-1.c
-2948781834b ./gcc/testsuite/gcc.c-torture/execute/20010422-1.c
-3990119664b ./gcc/testsuite/gcc.c-torture/execute/20010518-1.c
-3221966760b ./gcc/testsuite/gcc.c-torture/execute/20010518-2.c
-4150058335b ./gcc/testsuite/gcc.c-torture/execute/20010520-1.c
-3398306936b ./gcc/testsuite/gcc.c-torture/execute/20010604-1.c
-1597970944b ./gcc/testsuite/gcc.c-torture/execute/20010605-1.c
-2151082111b ./gcc/testsuite/gcc.c-torture/execute/20010605-2.c
-2682131177b ./gcc/testsuite/gcc.c-torture/execute/20010711-1.c
- 873772836b ./gcc/testsuite/gcc.c-torture/execute/20010717-1.c
-2673367189b ./gcc/testsuite/gcc.c-torture/execute/20010723-1.c
-3978892519b ./gcc/testsuite/gcc.c-torture/execute/20010724-1.c
-1723617799b ./gcc/testsuite/gcc.c-torture/execute/20010724-1.x
- 731866148b ./gcc/testsuite/gcc.c-torture/execute/20010904-1.c
- 731377342b ./gcc/testsuite/gcc.c-torture/execute/20010904-2.c
-2522784842b ./gcc/testsuite/gcc.c-torture/execute/20010910-1.c
-1182047103b ./gcc/testsuite/gcc.c-torture/execute/20010915-1.c
-3737091006b ./gcc/testsuite/gcc.c-torture/execute/20010924-1.c
- 260325577b ./gcc/testsuite/gcc.c-torture/execute/20010925-1.c
-4188355089b ./gcc/testsuite/gcc.c-torture/execute/20011008-3.c
-2281713299b ./gcc/testsuite/gcc.c-torture/execute/20011019-1.c
-2655569315b ./gcc/testsuite/gcc.c-torture/execute/20011024-1.c
-1814584846b ./gcc/testsuite/gcc.c-torture/execute/20011109-1.c
-1662612200b ./gcc/testsuite/gcc.c-torture/execute/20011109-2.c
-2550685908b ./gcc/testsuite/gcc.c-torture/execute/20011113-1.c
- 172432599b ./gcc/testsuite/gcc.c-torture/execute/20011114-1.c
- 809814896b ./gcc/testsuite/gcc.c-torture/execute/20011115-1.c
- 4092518b ./gcc/testsuite/gcc.c-torture/execute/20011121-1.c
-3502448934b ./gcc/testsuite/gcc.c-torture/execute/20011126-1.c
-2732339842b ./gcc/testsuite/gcc.c-torture/execute/20011126-2.c
- 815133002b ./gcc/testsuite/gcc.c-torture/execute/20011128-1.c
- 241656074b ./gcc/testsuite/gcc.c-torture/execute/20011217-1.c
-2277704872b ./gcc/testsuite/gcc.c-torture/execute/20011219-1.c
-2006770303b ./gcc/testsuite/gcc.c-torture/execute/20011223-1.c
-4135985164b ./gcc/testsuite/gcc.c-torture/execute/20020103-1.c
-2284569670b ./gcc/testsuite/gcc.c-torture/execute/20020107-1.c
-2382854982b ./gcc/testsuite/gcc.c-torture/execute/20020108-1.c
-2848042033b ./gcc/testsuite/gcc.c-torture/execute/20020118-1.c
-2653510244b ./gcc/testsuite/gcc.c-torture/execute/20020127-1.c
-1739097481b ./gcc/testsuite/gcc.c-torture/execute/20020129-1.c
-1264770028b ./gcc/testsuite/gcc.c-torture/execute/20020201-1.c
- 502375258b ./gcc/testsuite/gcc.c-torture/execute/20020206-1.c
-3691690701b ./gcc/testsuite/gcc.c-torture/execute/20020206-2.c
-4078405558b ./gcc/testsuite/gcc.c-torture/execute/20020213-1.c
- 125431111b ./gcc/testsuite/gcc.c-torture/execute/20020215-1.c
-1599210871b ./gcc/testsuite/gcc.c-torture/execute/20020216-1.c
-1360698555b ./gcc/testsuite/gcc.c-torture/execute/20020219-1.c
-1656358954b ./gcc/testsuite/gcc.c-torture/execute/20020225-1.c
- 127051635b ./gcc/testsuite/gcc.c-torture/execute/20020227-1.c
-2757105756b ./gcc/testsuite/gcc.c-torture/execute/20020227-1.x
-1982547595b ./gcc/testsuite/gcc.c-torture/execute/20020307-1.c
-1497258578b ./gcc/testsuite/gcc.c-torture/execute/20020307-2.c
-2236973257b ./gcc/testsuite/gcc.c-torture/execute/20020314-1.c
-3091941732b ./gcc/testsuite/gcc.c-torture/execute/20020320-1.c
-3564527352b ./gcc/testsuite/gcc.c-torture/execute/20020321-1.c
- 577542360b ./gcc/testsuite/gcc.c-torture/execute/20020402-1.c
-3290123747b ./gcc/testsuite/gcc.c-torture/execute/20020402-2.c
-2122778375b ./gcc/testsuite/gcc.c-torture/execute/20020402-3.c
-2806949247b ./gcc/testsuite/gcc.c-torture/execute/20020404-1.c
- 658725271b ./gcc/testsuite/gcc.c-torture/execute/20020406-1.c
-1900879256b ./gcc/testsuite/gcc.c-torture/execute/20020411-1.c
-2788774617b ./gcc/testsuite/gcc.c-torture/execute/20020413-1.c
-2439380096b ./gcc/testsuite/gcc.c-torture/execute/20020418-1.c
- 49470659b ./gcc/testsuite/gcc.c-torture/execute/20020423-1.c
- 484359727b ./gcc/testsuite/gcc.c-torture/execute/20020503-1.c
-1286592631b ./gcc/testsuite/gcc.c-torture/execute/20020529-1.c
-2563139669b ./gcc/testsuite/gcc.c-torture/execute/20020611-1.c
-2588225457b ./gcc/testsuite/gcc.c-torture/execute/20020614-1.c
-2304661446b ./gcc/testsuite/gcc.c-torture/execute/20020615-1.c
-1625459055b ./gcc/testsuite/gcc.c-torture/execute/20020619-1.c
-2876236122b ./gcc/testsuite/gcc.c-torture/execute/20020716-1.c
- 492121497b ./gcc/testsuite/gcc.c-torture/execute/20020904-1.c
-1275043517b ./gcc/testsuite/gcc.c-torture/execute/20021015-1.c
-2849369814b ./gcc/testsuite/gcc.c-torture/execute/20021024-1.c
-3361882342b ./gcc/testsuite/gcc.c-torture/execute/20021111-1.c
- 37158978b ./gcc/testsuite/gcc.c-torture/execute/900409-1.c
-1241514475b ./gcc/testsuite/gcc.c-torture/execute/920202-1.c
- 651529975b ./gcc/testsuite/gcc.c-torture/execute/920302-1.c
-2196801137b ./gcc/testsuite/gcc.c-torture/execute/920409-1.c
-1816933206b ./gcc/testsuite/gcc.c-torture/execute/920410-1.c
-1957456510b ./gcc/testsuite/gcc.c-torture/execute/920411-1.c
-1749111501b ./gcc/testsuite/gcc.c-torture/execute/920415-1.c
- 508706990b ./gcc/testsuite/gcc.c-torture/execute/920428-1.c
-3878413130b ./gcc/testsuite/gcc.c-torture/execute/920428-2.c
-4127832878b ./gcc/testsuite/gcc.c-torture/execute/920428-2.x
- 158200597b ./gcc/testsuite/gcc.c-torture/execute/920429-1.c
-1826863267b ./gcc/testsuite/gcc.c-torture/execute/920501-1.c
-4177429300b ./gcc/testsuite/gcc.c-torture/execute/920501-2.c
-1351528020b ./gcc/testsuite/gcc.c-torture/execute/920501-3.c
- 700639089b ./gcc/testsuite/gcc.c-torture/execute/920501-4.c
- 798860387b ./gcc/testsuite/gcc.c-torture/execute/920501-5.c
-4199344202b ./gcc/testsuite/gcc.c-torture/execute/920501-6.c
-2006299034b ./gcc/testsuite/gcc.c-torture/execute/920501-7.c
-4127832878b ./gcc/testsuite/gcc.c-torture/execute/920501-7.x
-1420615555b ./gcc/testsuite/gcc.c-torture/execute/920501-8.c
-1273235575b ./gcc/testsuite/gcc.c-torture/execute/920501-8.x
-2227123057b ./gcc/testsuite/gcc.c-torture/execute/920501-9.c
-3928484317b ./gcc/testsuite/gcc.c-torture/execute/920506-1.c
-3897601778b ./gcc/testsuite/gcc.c-torture/execute/920520-1.c
-4049662034b ./gcc/testsuite/gcc.c-torture/execute/920603-1.c
-2593769598b ./gcc/testsuite/gcc.c-torture/execute/920604-1.c
-2294544032b ./gcc/testsuite/gcc.c-torture/execute/920612-1.c
- 102881897b ./gcc/testsuite/gcc.c-torture/execute/920612-2.c
- 484477154b ./gcc/testsuite/gcc.c-torture/execute/920618-1.c
- 937300795b ./gcc/testsuite/gcc.c-torture/execute/920625-1.c
-3030586241b ./gcc/testsuite/gcc.c-torture/execute/920710-1.c
-3876529175b ./gcc/testsuite/gcc.c-torture/execute/920711-1.c
- 818049019b ./gcc/testsuite/gcc.c-torture/execute/920721-1.c
-3191124720b ./gcc/testsuite/gcc.c-torture/execute/920721-2.c
-3879255001b ./gcc/testsuite/gcc.c-torture/execute/920721-3.c
-2852120360b ./gcc/testsuite/gcc.c-torture/execute/920721-4.c
- 792790044b ./gcc/testsuite/gcc.c-torture/execute/920726-1.c
-2154603996b ./gcc/testsuite/gcc.c-torture/execute/920728-1.c
- 917858221b ./gcc/testsuite/gcc.c-torture/execute/920730-1.c
-1400910240b ./gcc/testsuite/gcc.c-torture/execute/920730-1t.c
-3331598307b ./gcc/testsuite/gcc.c-torture/execute/920730-1t.x
-3574659813b ./gcc/testsuite/gcc.c-torture/execute/920731-1.c
-1308229799b ./gcc/testsuite/gcc.c-torture/execute/920810-1.c
- 950989321b ./gcc/testsuite/gcc.c-torture/execute/920812-1.c
-4187598456b ./gcc/testsuite/gcc.c-torture/execute/920829-1.c
- 559637020b ./gcc/testsuite/gcc.c-torture/execute/920908-1.c
-2513627586b ./gcc/testsuite/gcc.c-torture/execute/920908-2.c
-2499750871b ./gcc/testsuite/gcc.c-torture/execute/920909-1.c
- 714100171b ./gcc/testsuite/gcc.c-torture/execute/920922-1.c
-2279537940b ./gcc/testsuite/gcc.c-torture/execute/920929-1.c
- 70714742b ./gcc/testsuite/gcc.c-torture/execute/921006-1.c
- 137444921b ./gcc/testsuite/gcc.c-torture/execute/921007-1.c
-2897219149b ./gcc/testsuite/gcc.c-torture/execute/921013-1.c
-1296914634b ./gcc/testsuite/gcc.c-torture/execute/921016-1.c
-1596244093b ./gcc/testsuite/gcc.c-torture/execute/921017-1.c
-4199584647b ./gcc/testsuite/gcc.c-torture/execute/921019-1.c
-2431715965b ./gcc/testsuite/gcc.c-torture/execute/921019-2.c
-3170380362b ./gcc/testsuite/gcc.c-torture/execute/921029-1.c
- 487195362b ./gcc/testsuite/gcc.c-torture/execute/921104-1.c
-2352124020b ./gcc/testsuite/gcc.c-torture/execute/921110-1.c
- 207021478b ./gcc/testsuite/gcc.c-torture/execute/921112-1.c
- 283175496b ./gcc/testsuite/gcc.c-torture/execute/921113-1.c
-2879836698b ./gcc/testsuite/gcc.c-torture/execute/921117-1.c
- 201436377b ./gcc/testsuite/gcc.c-torture/execute/921123-1.c
-4236695419b ./gcc/testsuite/gcc.c-torture/execute/921123-2.c
- 316909011b ./gcc/testsuite/gcc.c-torture/execute/921124-1.c
-3328444406b ./gcc/testsuite/gcc.c-torture/execute/921202-1.c
-2280032251b ./gcc/testsuite/gcc.c-torture/execute/921202-2.c
-1311000952b ./gcc/testsuite/gcc.c-torture/execute/921204-1.c
-2949408934b ./gcc/testsuite/gcc.c-torture/execute/921207-1.c
- 870865911b ./gcc/testsuite/gcc.c-torture/execute/921208-1.c
-2032495193b ./gcc/testsuite/gcc.c-torture/execute/921208-2.c
- 283353483b ./gcc/testsuite/gcc.c-torture/execute/921215-1.c
- 130096086b ./gcc/testsuite/gcc.c-torture/execute/921218-1.c
-2115073235b ./gcc/testsuite/gcc.c-torture/execute/921218-2.c
-3561999462b ./gcc/testsuite/gcc.c-torture/execute/930106-1.c
-3160736499b ./gcc/testsuite/gcc.c-torture/execute/930111-1.c
-4162371994b ./gcc/testsuite/gcc.c-torture/execute/930123-1.c
-3265874780b ./gcc/testsuite/gcc.c-torture/execute/930126-1.c
-2299871172b ./gcc/testsuite/gcc.c-torture/execute/930208-1.c
-3144873997b ./gcc/testsuite/gcc.c-torture/execute/930406-1.c
-3189774734b ./gcc/testsuite/gcc.c-torture/execute/930408-1.c
-3400489427b ./gcc/testsuite/gcc.c-torture/execute/930429-1.c
-2948158283b ./gcc/testsuite/gcc.c-torture/execute/930429-2.c
-3905354169b ./gcc/testsuite/gcc.c-torture/execute/930513-1.c
-1273235575b ./gcc/testsuite/gcc.c-torture/execute/930513-1.x
-2524183853b ./gcc/testsuite/gcc.c-torture/execute/930513-2.c
-2391753101b ./gcc/testsuite/gcc.c-torture/execute/930518-1.c
- 576031745b ./gcc/testsuite/gcc.c-torture/execute/930526-1.c
- 956415563b ./gcc/testsuite/gcc.c-torture/execute/930527-1.c
-4026322841b ./gcc/testsuite/gcc.c-torture/execute/930529-1.c
-2050475769b ./gcc/testsuite/gcc.c-torture/execute/930529-1.x
- 310850888b ./gcc/testsuite/gcc.c-torture/execute/930603-1.c
- 572652809b ./gcc/testsuite/gcc.c-torture/execute/930603-2.c
-3452170691b ./gcc/testsuite/gcc.c-torture/execute/930603-3.c
- 352498879b ./gcc/testsuite/gcc.c-torture/execute/930608-1.c
-2318312710b ./gcc/testsuite/gcc.c-torture/execute/930614-1.c
- 307026414b ./gcc/testsuite/gcc.c-torture/execute/930614-2.c
- 380017129b ./gcc/testsuite/gcc.c-torture/execute/930621-1.c
- 852093434b ./gcc/testsuite/gcc.c-torture/execute/930622-1.c
-1010026580b ./gcc/testsuite/gcc.c-torture/execute/930622-2.c
-2381515578b ./gcc/testsuite/gcc.c-torture/execute/930628-1.c
-3968663339b ./gcc/testsuite/gcc.c-torture/execute/930630-1.c
-1360276333b ./gcc/testsuite/gcc.c-torture/execute/930702-1.c
-2690450552b ./gcc/testsuite/gcc.c-torture/execute/930713-1.c
-3621302381b ./gcc/testsuite/gcc.c-torture/execute/930718-1.c
-1853260970b ./gcc/testsuite/gcc.c-torture/execute/930719-1.c
-2257054643b ./gcc/testsuite/gcc.c-torture/execute/930725-1.c
-1877434408b ./gcc/testsuite/gcc.c-torture/execute/930818-1.c
-1262159860b ./gcc/testsuite/gcc.c-torture/execute/930916-1.c
-2667793229b ./gcc/testsuite/gcc.c-torture/execute/930921-1.c
-2351038398b ./gcc/testsuite/gcc.c-torture/execute/930929-1.c
-2863421839b ./gcc/testsuite/gcc.c-torture/execute/930930-1.c
- 557816592b ./gcc/testsuite/gcc.c-torture/execute/930930-2.c
-2101614510b ./gcc/testsuite/gcc.c-torture/execute/931002-1.c
-1700898376b ./gcc/testsuite/gcc.c-torture/execute/931004-10.c
- 962417771b ./gcc/testsuite/gcc.c-torture/execute/931004-11.c
-2700865821b ./gcc/testsuite/gcc.c-torture/execute/931004-12.c
-3436458492b ./gcc/testsuite/gcc.c-torture/execute/931004-13.c
-4127270352b ./gcc/testsuite/gcc.c-torture/execute/931004-14.c
-2742393702b ./gcc/testsuite/gcc.c-torture/execute/931004-1.c
- 346996272b ./gcc/testsuite/gcc.c-torture/execute/931004-2.c
-1206221721b ./gcc/testsuite/gcc.c-torture/execute/931004-3.c
-3166093368b ./gcc/testsuite/gcc.c-torture/execute/931004-4.c
-1452916171b ./gcc/testsuite/gcc.c-torture/execute/931004-5.c
-2022610295b ./gcc/testsuite/gcc.c-torture/execute/931004-6.c
-2036744892b ./gcc/testsuite/gcc.c-torture/execute/931004-7.c
-1586770276b ./gcc/testsuite/gcc.c-torture/execute/931004-8.c
-3369996669b ./gcc/testsuite/gcc.c-torture/execute/931004-9.c
-3731237663b ./gcc/testsuite/gcc.c-torture/execute/931005-1.c
-3432311031b ./gcc/testsuite/gcc.c-torture/execute/931009-1.c
-1834388885b ./gcc/testsuite/gcc.c-torture/execute/931012-1.c
-2534034619b ./gcc/testsuite/gcc.c-torture/execute/931017-1.c
-1949677962b ./gcc/testsuite/gcc.c-torture/execute/931018-1.c
-3825241545b ./gcc/testsuite/gcc.c-torture/execute/931031-1.c
-1877484625b ./gcc/testsuite/gcc.c-torture/execute/931102-1.c
-3927915289b ./gcc/testsuite/gcc.c-torture/execute/931102-2.c
- 480430370b ./gcc/testsuite/gcc.c-torture/execute/931110-1.c
-3822785940b ./gcc/testsuite/gcc.c-torture/execute/931110-2.c
- 967340546b ./gcc/testsuite/gcc.c-torture/execute/931208-1.c
-2682740818b ./gcc/testsuite/gcc.c-torture/execute/931228-1.c
-2017170797b ./gcc/testsuite/gcc.c-torture/execute/940115-1.c
- 82400069b ./gcc/testsuite/gcc.c-torture/execute/940122-1.c
-4235476365b ./gcc/testsuite/gcc.c-torture/execute/941014-1.c
- 645804174b ./gcc/testsuite/gcc.c-torture/execute/941014-1.x
-1977507646b ./gcc/testsuite/gcc.c-torture/execute/941014-2.c
- 310736147b ./gcc/testsuite/gcc.c-torture/execute/941015-1.c
-1318043175b ./gcc/testsuite/gcc.c-torture/execute/941021-1.c
-3185365004b ./gcc/testsuite/gcc.c-torture/execute/941025-1.c
- 678677907b ./gcc/testsuite/gcc.c-torture/execute/941031-1.c
-3905782643b ./gcc/testsuite/gcc.c-torture/execute/941101-1.c
-1810551831b ./gcc/testsuite/gcc.c-torture/execute/941110-1.c
-3428057334b ./gcc/testsuite/gcc.c-torture/execute/941202-1.c
-3908063718b ./gcc/testsuite/gcc.c-torture/execute/950221-1.c
-1873160895b ./gcc/testsuite/gcc.c-torture/execute/950322-1.c
-1672610716b ./gcc/testsuite/gcc.c-torture/execute/950426-1.c
-3465653006b ./gcc/testsuite/gcc.c-torture/execute/950426-2.c
-3696703975b ./gcc/testsuite/gcc.c-torture/execute/950503-1.c
-1556250294b ./gcc/testsuite/gcc.c-torture/execute/950511-1.c
-2857896870b ./gcc/testsuite/gcc.c-torture/execute/950512-1.c
- 114570668b ./gcc/testsuite/gcc.c-torture/execute/950605-1.c
-2991280268b ./gcc/testsuite/gcc.c-torture/execute/950607-1.c
- 437837801b ./gcc/testsuite/gcc.c-torture/execute/950607-2.c
-3950265298b ./gcc/testsuite/gcc.c-torture/execute/950612-1.c
-1778400537b ./gcc/testsuite/gcc.c-torture/execute/950621-1.c
-2070936302b ./gcc/testsuite/gcc.c-torture/execute/950628-1.c
-3165536281b ./gcc/testsuite/gcc.c-torture/execute/950704-1.c
-2486390814b ./gcc/testsuite/gcc.c-torture/execute/950706-1.c
-1322454782b ./gcc/testsuite/gcc.c-torture/execute/950710-1.c
-4241980915b ./gcc/testsuite/gcc.c-torture/execute/950714-1.c
-3308590304b ./gcc/testsuite/gcc.c-torture/execute/950809-1.c
-4154904713b ./gcc/testsuite/gcc.c-torture/execute/950906-1.c
-1101166652b ./gcc/testsuite/gcc.c-torture/execute/950915-1.c
- 24392721b ./gcc/testsuite/gcc.c-torture/execute/950929-1.c
-1234781098b ./gcc/testsuite/gcc.c-torture/execute/951003-1.c
-3737612481b ./gcc/testsuite/gcc.c-torture/execute/951115-1.c
-2658922424b ./gcc/testsuite/gcc.c-torture/execute/951204-1.c
-3956410619b ./gcc/testsuite/gcc.c-torture/execute/960116-1.c
-2093624467b ./gcc/testsuite/gcc.c-torture/execute/960117-1.c
-1694357534b ./gcc/testsuite/gcc.c-torture/execute/960209-1.c
-1952007331b ./gcc/testsuite/gcc.c-torture/execute/960215-1.c
- 60263952b ./gcc/testsuite/gcc.c-torture/execute/960218-1.c
-1161569283b ./gcc/testsuite/gcc.c-torture/execute/960219-1.c
-3429934900b ./gcc/testsuite/gcc.c-torture/execute/960301-1.c
- 160802950b ./gcc/testsuite/gcc.c-torture/execute/960302-1.c
-2772979130b ./gcc/testsuite/gcc.c-torture/execute/960311-1.c
-1259407124b ./gcc/testsuite/gcc.c-torture/execute/960311-2.c
-3608527152b ./gcc/testsuite/gcc.c-torture/execute/960311-3.c
-2087520542b ./gcc/testsuite/gcc.c-torture/execute/960312-1.c
-1208600766b ./gcc/testsuite/gcc.c-torture/execute/960317-1.c
-1889026562b ./gcc/testsuite/gcc.c-torture/execute/960321-1.c
- 271449701b ./gcc/testsuite/gcc.c-torture/execute/960326-1.c
-2449729039b ./gcc/testsuite/gcc.c-torture/execute/960327-1.c
-2463095434b ./gcc/testsuite/gcc.c-torture/execute/960402-1.c
-3079720318b ./gcc/testsuite/gcc.c-torture/execute/960405-1.c
-4251399269b ./gcc/testsuite/gcc.c-torture/execute/960416-1.c
-2615797380b ./gcc/testsuite/gcc.c-torture/execute/960416-1.x
-2014388579b ./gcc/testsuite/gcc.c-torture/execute/960419-1.c
- 235840907b ./gcc/testsuite/gcc.c-torture/execute/960419-2.c
-4266479970b ./gcc/testsuite/gcc.c-torture/execute/960512-1.c
-3785913788b ./gcc/testsuite/gcc.c-torture/execute/960513-1.c
- 488880971b ./gcc/testsuite/gcc.c-torture/execute/960521-1.c
-2321951599b ./gcc/testsuite/gcc.c-torture/execute/960608-1.c
-4052360482b ./gcc/testsuite/gcc.c-torture/execute/960801-1.c
-2655742085b ./gcc/testsuite/gcc.c-torture/execute/960802-1.c
- 135771086b ./gcc/testsuite/gcc.c-torture/execute/960830-1.c
-2582740546b ./gcc/testsuite/gcc.c-torture/execute/960909-1.c
-1944495033b ./gcc/testsuite/gcc.c-torture/execute/961004-1.c
- 658313774b ./gcc/testsuite/gcc.c-torture/execute/961017-1.c
- 785421501b ./gcc/testsuite/gcc.c-torture/execute/961017-2.c
-2852845535b ./gcc/testsuite/gcc.c-torture/execute/961026-1.c
-2375210094b ./gcc/testsuite/gcc.c-torture/execute/961112-1.c
-2553026408b ./gcc/testsuite/gcc.c-torture/execute/961122-1.c
-2422282222b ./gcc/testsuite/gcc.c-torture/execute/961122-2.c
-3575956796b ./gcc/testsuite/gcc.c-torture/execute/961125-1.c
- 577488172b ./gcc/testsuite/gcc.c-torture/execute/961206-1.c
-1182447544b ./gcc/testsuite/gcc.c-torture/execute/961213-1.c
-2704046666b ./gcc/testsuite/gcc.c-torture/execute/961223-1.c
-1973936950b ./gcc/testsuite/gcc.c-torture/execute/970214-1.c
-1571629264b ./gcc/testsuite/gcc.c-torture/execute/970214-2.c
- 167780433b ./gcc/testsuite/gcc.c-torture/execute/970217-1.c
-2343108590b ./gcc/testsuite/gcc.c-torture/execute/970923-1.c
-2894602056b ./gcc/testsuite/gcc.c-torture/execute/980205.c
-4265139835b ./gcc/testsuite/gcc.c-torture/execute/980223.c
-1143734080b ./gcc/testsuite/gcc.c-torture/execute/980424-1.c
-3704443102b ./gcc/testsuite/gcc.c-torture/execute/980505-1.c
-2419800133b ./gcc/testsuite/gcc.c-torture/execute/980505-2.c
-1955794056b ./gcc/testsuite/gcc.c-torture/execute/980506-1.c
-2173791379b ./gcc/testsuite/gcc.c-torture/execute/980506-2.c
- 492472793b ./gcc/testsuite/gcc.c-torture/execute/980506-3.c
-3939060245b ./gcc/testsuite/gcc.c-torture/execute/980526-1.c
-1183240780b ./gcc/testsuite/gcc.c-torture/execute/980526-2.c
- 798626284b ./gcc/testsuite/gcc.c-torture/execute/980526-3.c
- 686935511b ./gcc/testsuite/gcc.c-torture/execute/980602-1.c
- 148166585b ./gcc/testsuite/gcc.c-torture/execute/980602-2.c
-2555041864b ./gcc/testsuite/gcc.c-torture/execute/980604-1.c
-2921367481b ./gcc/testsuite/gcc.c-torture/execute/980605-1.c
- 327024946b ./gcc/testsuite/gcc.c-torture/execute/980608-1.c
- 636602589b ./gcc/testsuite/gcc.c-torture/execute/980612-1.c
-1796014237b ./gcc/testsuite/gcc.c-torture/execute/980617-1.c
-1416887007b ./gcc/testsuite/gcc.c-torture/execute/980618-1.c
-3252251770b ./gcc/testsuite/gcc.c-torture/execute/980701-1.c
-3843080992b ./gcc/testsuite/gcc.c-torture/execute/980707-1.c
-3327976229b ./gcc/testsuite/gcc.c-torture/execute/980709-1.c
-2346484511b ./gcc/testsuite/gcc.c-torture/execute/980709-1.x
-1464453071b ./gcc/testsuite/gcc.c-torture/execute/980716-1.c
-1144140014b ./gcc/testsuite/gcc.c-torture/execute/980929-1.c
-2567595595b ./gcc/testsuite/gcc.c-torture/execute/981001-1.c
-1496092063b ./gcc/testsuite/gcc.c-torture/execute/981019-1.c
-1493534646b ./gcc/testsuite/gcc.c-torture/execute/981130-1.c
- 296945303b ./gcc/testsuite/gcc.c-torture/execute/981130-1.x
-2098827021b ./gcc/testsuite/gcc.c-torture/execute/981206-1.c
- 785276758b ./gcc/testsuite/gcc.c-torture/execute/990106-1.c
-1458926953b ./gcc/testsuite/gcc.c-torture/execute/990106-2.c
-1443443587b ./gcc/testsuite/gcc.c-torture/execute/990117-1.c
- 98144727b ./gcc/testsuite/gcc.c-torture/execute/990127-1.c
-4206968879b ./gcc/testsuite/gcc.c-torture/execute/990127-2.c
-1805424399b ./gcc/testsuite/gcc.c-torture/execute/990128-1.c
-1406479809b ./gcc/testsuite/gcc.c-torture/execute/990130-1.c
-1075245403b ./gcc/testsuite/gcc.c-torture/execute/990208-1.c
-1370072006b ./gcc/testsuite/gcc.c-torture/execute/990208-1.x
-1910322968b ./gcc/testsuite/gcc.c-torture/execute/990211-1.c
-2520747136b ./gcc/testsuite/gcc.c-torture/execute/990222-1.c
-4167898413b ./gcc/testsuite/gcc.c-torture/execute/990324-1.c
-1316369295b ./gcc/testsuite/gcc.c-torture/execute/990326-1.c
-2237806705b ./gcc/testsuite/gcc.c-torture/execute/990404-1.c
-3506652867b ./gcc/testsuite/gcc.c-torture/execute/990413-2.c
-1028733236b ./gcc/testsuite/gcc.c-torture/execute/990413-2.x
- 533594278b ./gcc/testsuite/gcc.c-torture/execute/990513-1.c
-2242042026b ./gcc/testsuite/gcc.c-torture/execute/990524-1.c
-1608250007b ./gcc/testsuite/gcc.c-torture/execute/990525-1.c
-1043856586b ./gcc/testsuite/gcc.c-torture/execute/990525-2.c
-1233686917b ./gcc/testsuite/gcc.c-torture/execute/990527-1.c
-1220250784b ./gcc/testsuite/gcc.c-torture/execute/990531-1.c
-3289696997b ./gcc/testsuite/gcc.c-torture/execute/990604-1.c
- 80435005b ./gcc/testsuite/gcc.c-torture/execute/990628-1.c
-2064588039b ./gcc/testsuite/gcc.c-torture/execute/990804-1.c
-2063909199b ./gcc/testsuite/gcc.c-torture/execute/990811-1.c
-1435922216b ./gcc/testsuite/gcc.c-torture/execute/990826-0.c
-2369075067b ./gcc/testsuite/gcc.c-torture/execute/990826-0.x
-3894203537b ./gcc/testsuite/gcc.c-torture/execute/990827-1.c
-1924065387b ./gcc/testsuite/gcc.c-torture/execute/990829-1.c
-3657724130b ./gcc/testsuite/gcc.c-torture/execute/990923-1.c
-3037719587b ./gcc/testsuite/gcc.c-torture/execute/991014-1.c
- 340177342b ./gcc/testsuite/gcc.c-torture/execute/991016-1.c
-2236305082b ./gcc/testsuite/gcc.c-torture/execute/991019-1.c
-4202756321b ./gcc/testsuite/gcc.c-torture/execute/991023-1.c
-1824884313b ./gcc/testsuite/gcc.c-torture/execute/991030-1.c
-4138873239b ./gcc/testsuite/gcc.c-torture/execute/991112-1.c
-2109536582b ./gcc/testsuite/gcc.c-torture/execute/991118-1.c
-1316882767b ./gcc/testsuite/gcc.c-torture/execute/991201-1.c
-2220300988b ./gcc/testsuite/gcc.c-torture/execute/991202-1.c
-1285333003b ./gcc/testsuite/gcc.c-torture/execute/991202-2.c
-2329096948b ./gcc/testsuite/gcc.c-torture/execute/991202-3.c
-3117583172b ./gcc/testsuite/gcc.c-torture/execute/991216-1.c
-4234986278b ./gcc/testsuite/gcc.c-torture/execute/991216-2.c
- 631159512b ./gcc/testsuite/gcc.c-torture/execute/991216-3.c
-4137201305b ./gcc/testsuite/gcc.c-torture/execute/991216-4.c
- 882138391b ./gcc/testsuite/gcc.c-torture/execute/991221-1.c
-2854457808b ./gcc/testsuite/gcc.c-torture/execute/991227-1.c
-3688640862b ./gcc/testsuite/gcc.c-torture/execute/991228-1.c
-3793831392b ./gcc/testsuite/gcc.c-torture/execute/align-1.c
-4120792597b ./gcc/testsuite/gcc.c-torture/execute/align-2.c
-1274835551b ./gcc/testsuite/gcc.c-torture/execute/alloca-1.c
-3292072248b ./gcc/testsuite/gcc.c-torture/execute/anon-1.c
-1605923399b ./gcc/testsuite/gcc.c-torture/execute/arith-1.c
- 343449147b ./gcc/testsuite/gcc.c-torture/execute/arith-rand.c
- 312869222b ./gcc/testsuite/gcc.c-torture/execute/ashldi-1.c
-1327544364b ./gcc/testsuite/gcc.c-torture/execute/ashrdi-1.c
- 629391558b ./gcc/testsuite/gcc.c-torture/execute/bcp-1.c
- 323354359b ./gcc/testsuite/gcc.c-torture/execute/bf64-1.c
-3097986350b ./gcc/testsuite/gcc.c-torture/execute/bf64-1.x
-2311291194b ./gcc/testsuite/gcc.c-torture/execute/bf-layout-1.c
-2757361338b ./gcc/testsuite/gcc.c-torture/execute/bf-pack-1.c
-3543906045b ./gcc/testsuite/gcc.c-torture/execute/bf-sign-1.c
-1320697357b ./gcc/testsuite/gcc.c-torture/execute/bf-sign-2.c
-1331291117b ./gcc/testsuite/gcc.c-torture/execute/bitfld-1.c
-3644699221b ./gcc/testsuite/gcc.c-torture/execute/bitfld-1.x
-1684940093b ./gcc/testsuite/gcc.c-torture/execute/bitfld-2.c
-1673141587b ./gcc/testsuite/gcc.c-torture/execute/builtin-abs-1.c
-2056736695b ./gcc/testsuite/gcc.c-torture/execute/builtin-abs-2.c
-3097553545b ./gcc/testsuite/gcc.c-torture/execute/builtin-complex-1.c
-1581619700b ./gcc/testsuite/gcc.c-torture/execute/builtin-noret-1.c
- 329340471b ./gcc/testsuite/gcc.c-torture/execute/builtin-prefetch-1.c
- 397570715b ./gcc/testsuite/gcc.c-torture/execute/builtin-prefetch-2.c
-1484227202b ./gcc/testsuite/gcc.c-torture/execute/builtin-prefetch-3.c
-1934387710b ./gcc/testsuite/gcc.c-torture/execute/builtin-prefetch-4.c
-2627312111b ./gcc/testsuite/gcc.c-torture/execute/builtin-prefetch-5.c
-3741124173b ./gcc/testsuite/gcc.c-torture/execute/builtin-prefetch-6.c
-4012339802b ./gcc/testsuite/gcc.c-torture/execute/built-in-setjmp.c
-2250919883b ./gcc/testsuite/gcc.c-torture/execute/builtin-types-compatible-p.c
-2177138525b ./gcc/testsuite/gcc.c-torture/execute/cbrt.c
-2994579909b ./gcc/testsuite/gcc.c-torture/execute/cmpdi-1.c
-3257252249b ./gcc/testsuite/gcc.c-torture/execute/cmpsi-1.c
-3943123822b ./gcc/testsuite/gcc.c-torture/execute/comp-goto-1.c
-3449149566b ./gcc/testsuite/gcc.c-torture/execute/comp-goto-2.c
- 760972136b ./gcc/testsuite/gcc.c-torture/execute/complex-1.c
-3034158014b ./gcc/testsuite/gcc.c-torture/execute/complex-2.c
- 478689052b ./gcc/testsuite/gcc.c-torture/execute/complex-3.c
- 662396237b ./gcc/testsuite/gcc.c-torture/execute/complex-4.c
-1022468052b ./gcc/testsuite/gcc.c-torture/execute/complex-5.c
-3814081986b ./gcc/testsuite/gcc.c-torture/execute/complex-6.c
-1079537985b ./gcc/testsuite/gcc.c-torture/execute/compndlit-1.c
-4213843385b ./gcc/testsuite/gcc.c-torture/execute/conversion.c
-1362123497b ./gcc/testsuite/gcc.c-torture/execute/cvt-1.c
- 732726874b ./gcc/testsuite/gcc.c-torture/execute/cvt-1.x
-1037739064b ./gcc/testsuite/gcc.c-torture/execute/dbra-1.c
-3567725587b ./gcc/testsuite/gcc.c-torture/execute/divconst-1.c
-3321693440b ./gcc/testsuite/gcc.c-torture/execute/divconst-2.c
- 506840532b ./gcc/testsuite/gcc.c-torture/execute/divconst-3.c
-2615797380b ./gcc/testsuite/gcc.c-torture/execute/divconst-3.x
-2274689094b ./gcc/testsuite/gcc.c-torture/execute/divmod-1.c
-1808173474b ./gcc/testsuite/gcc.c-torture/execute/eeprof-1.c
-2216490291b ./gcc/testsuite/gcc.c-torture/execute/eeprof-1.x
-1886321368b ./gcc/testsuite/gcc.c-torture/execute/enum-1.c
-3916720934b ./gcc/testsuite/gcc.c-torture/execute/enum-2.c
-2211348141b ./gcc/testsuite/gcc.c-torture/execute/execute.exp
-1911697643b ./gcc/testsuite/gcc.c-torture/execute/extzvsi.c
- 155906334b ./gcc/testsuite/gcc.c-torture/execute/func-ptr-1.c
-1157816092b ./gcc/testsuite/gcc.c-torture/execute/gofast.c
-3099798770b ./gcc/testsuite/gcc.c-torture/execute/ieee/20000320-1.c
- 981656236b ./gcc/testsuite/gcc.c-torture/execute/ieee/20001122-1.c
-2602526611b ./gcc/testsuite/gcc.c-torture/execute/ieee/20010114-2.c
-3379104705b ./gcc/testsuite/gcc.c-torture/execute/ieee/20010226-1.c
- 372215662b ./gcc/testsuite/gcc.c-torture/execute/ieee/20011123-1.c
-2046772610b ./gcc/testsuite/gcc.c-torture/execute/ieee/920518-1.c
-3673851898b ./gcc/testsuite/gcc.c-torture/execute/ieee/920810-1.c
-1813910189b ./gcc/testsuite/gcc.c-torture/execute/ieee/930529-1.c
- 73602629b ./gcc/testsuite/gcc.c-torture/execute/ieee/980619-1.c
-1659512392b ./gcc/testsuite/gcc.c-torture/execute/ieee/980619-1.x
-1948647907b ./gcc/testsuite/gcc.c-torture/execute/ieee/fp-cmp-1.c
-1935804586b ./gcc/testsuite/gcc.c-torture/execute/ieee/fp-cmp-2.c
- 817625481b ./gcc/testsuite/gcc.c-torture/execute/ieee/fp-cmp-3.c
-3452570198b ./gcc/testsuite/gcc.c-torture/execute/ieee/fp-cmp-4.c
- 330892698b ./gcc/testsuite/gcc.c-torture/execute/ieee/fp-cmp-5.c
-4125344101b ./gcc/testsuite/gcc.c-torture/execute/ieee/hugeval.c
-1953413990b ./gcc/testsuite/gcc.c-torture/execute/ieee/hugeval.x
-2299573411b ./gcc/testsuite/gcc.c-torture/execute/ieee/ieee.exp
-4017678214b ./gcc/testsuite/gcc.c-torture/execute/ieee/minuszero.c
-3545392440b ./gcc/testsuite/gcc.c-torture/execute/ieee/mzero2.c
-2290856575b ./gcc/testsuite/gcc.c-torture/execute/ieee/mzero2.x
-3203549249b ./gcc/testsuite/gcc.c-torture/execute/ieee/mzero3.c
- 545426428b ./gcc/testsuite/gcc.c-torture/execute/ieee/rbug.c
-2631912054b ./gcc/testsuite/gcc.c-torture/execute/ieee/rbug.x
- 287394580b ./gcc/testsuite/gcc.c-torture/execute/index-1.c
-3728840213b ./gcc/testsuite/gcc.c-torture/execute/inst-check.c
-2015511278b ./gcc/testsuite/gcc.c-torture/execute/int-compare.c
-2503239574b ./gcc/testsuite/gcc.c-torture/execute/longlong.c
-3284814162b ./gcc/testsuite/gcc.c-torture/execute/loop-10.c
-2766603756b ./gcc/testsuite/gcc.c-torture/execute/loop-11.c
-3036735737b ./gcc/testsuite/gcc.c-torture/execute/loop-12.c
-2537268960b ./gcc/testsuite/gcc.c-torture/execute/loop-14.c
- 995264748b ./gcc/testsuite/gcc.c-torture/execute/loop-15.c
-2701191371b ./gcc/testsuite/gcc.c-torture/execute/loop-1.c
-3443893179b ./gcc/testsuite/gcc.c-torture/execute/loop-2b.c
- 869002341b ./gcc/testsuite/gcc.c-torture/execute/loop-2.c
- 153943550b ./gcc/testsuite/gcc.c-torture/execute/loop-2c.c
- 720145550b ./gcc/testsuite/gcc.c-torture/execute/loop-2d.c
-2058046897b ./gcc/testsuite/gcc.c-torture/execute/loop-2e.c
-2718531033b ./gcc/testsuite/gcc.c-torture/execute/loop-2e.x
-1291794748b ./gcc/testsuite/gcc.c-torture/execute/loop-2f.c
-3280299116b ./gcc/testsuite/gcc.c-torture/execute/loop-2f.x
- 661111306b ./gcc/testsuite/gcc.c-torture/execute/loop-2g.c
-3280299116b ./gcc/testsuite/gcc.c-torture/execute/loop-2g.x
-4068453712b ./gcc/testsuite/gcc.c-torture/execute/loop-3b.c
-3620613760b ./gcc/testsuite/gcc.c-torture/execute/loop-3.c
-2778041526b ./gcc/testsuite/gcc.c-torture/execute/loop-3c.c
-2249811917b ./gcc/testsuite/gcc.c-torture/execute/loop-3c.x
-1791416082b ./gcc/testsuite/gcc.c-torture/execute/loop-4b.c
-3316778727b ./gcc/testsuite/gcc.c-torture/execute/loop-4.c
-3541035036b ./gcc/testsuite/gcc.c-torture/execute/loop-5.c
-4217961697b ./gcc/testsuite/gcc.c-torture/execute/loop-6.c
-3649171232b ./gcc/testsuite/gcc.c-torture/execute/loop-7.c
-3999194364b ./gcc/testsuite/gcc.c-torture/execute/loop-8.c
- 239440461b ./gcc/testsuite/gcc.c-torture/execute/loop-9.c
-3308349321b ./gcc/testsuite/gcc.c-torture/execute/lshrdi-1.c
-1655048971b ./gcc/testsuite/gcc.c-torture/execute/memcpy-1.c
-1198957866b ./gcc/testsuite/gcc.c-torture/execute/memcpy-bi.c
-2259057543b ./gcc/testsuite/gcc.c-torture/execute/memset-3.c
-1146723390b ./gcc/testsuite/gcc.c-torture/execute/mod-1.c
- 843122257b ./gcc/testsuite/gcc.c-torture/execute/nestfunc-1.c
-2875393797b ./gcc/testsuite/gcc.c-torture/execute/nestfunc-2.c
-3451120516b ./gcc/testsuite/gcc.c-torture/execute/nestfunc-3.c
-1193207968b ./gcc/testsuite/gcc.c-torture/execute/nestfunc-4.c
- 462740811b ./gcc/testsuite/gcc.c-torture/execute/nest-stdar-1.c
-1347988605b ./gcc/testsuite/gcc.c-torture/execute/packed-1.c
-3662025483b ./gcc/testsuite/gcc.c-torture/execute/packed-2.c
- 781350511b ./gcc/testsuite/gcc.c-torture/execute/pending-4.c
-1246182987b ./gcc/testsuite/gcc.c-torture/execute/ptr-arith-1.c
- 146053249b ./gcc/testsuite/gcc.c-torture/execute/regstack-1.c
-1827676873b ./gcc/testsuite/gcc.c-torture/execute/scope-1.c
- 990025742b ./gcc/testsuite/gcc.c-torture/execute/scope-2.c
-3788353048b ./gcc/testsuite/gcc.c-torture/execute/shiftdi.c
- 75800580b ./gcc/testsuite/gcc.c-torture/execute/stdio-opt-1.c
-2726881848b ./gcc/testsuite/gcc.c-torture/execute/stdio-opt-2.c
-2215607685b ./gcc/testsuite/gcc.c-torture/execute/stdio-opt-3.c
-4127514660b ./gcc/testsuite/gcc.c-torture/execute/strct-pack-1.c
-2567091361b ./gcc/testsuite/gcc.c-torture/execute/strct-pack-2.c
-3788900866b ./gcc/testsuite/gcc.c-torture/execute/strct-pack-3.c
-3787465303b ./gcc/testsuite/gcc.c-torture/execute/strct-pack-4.c
-2204360040b ./gcc/testsuite/gcc.c-torture/execute/strct-stdarg-1.c
- 665194027b ./gcc/testsuite/gcc.c-torture/execute/strct-stdarg-1.x
-3638595647b ./gcc/testsuite/gcc.c-torture/execute/strct-varg-1.c
-2424749175b ./gcc/testsuite/gcc.c-torture/execute/strct-varg-1.x
-2004905304b ./gcc/testsuite/gcc.c-torture/execute/string-opt-10.c
-1757228388b ./gcc/testsuite/gcc.c-torture/execute/string-opt-11.c
-3269205009b ./gcc/testsuite/gcc.c-torture/execute/string-opt-12.c
-1302429529b ./gcc/testsuite/gcc.c-torture/execute/string-opt-13.c
-1984203373b ./gcc/testsuite/gcc.c-torture/execute/string-opt-14.c
- 206750096b ./gcc/testsuite/gcc.c-torture/execute/string-opt-15.c
- 2089995b ./gcc/testsuite/gcc.c-torture/execute/string-opt-16.c
-3389618360b ./gcc/testsuite/gcc.c-torture/execute/string-opt-1.c
-2499130848b ./gcc/testsuite/gcc.c-torture/execute/string-opt-2.c
- 307949358b ./gcc/testsuite/gcc.c-torture/execute/string-opt-3.c
-1473532603b ./gcc/testsuite/gcc.c-torture/execute/string-opt-4.c
-2202340101b ./gcc/testsuite/gcc.c-torture/execute/string-opt-5.c
- 196339167b ./gcc/testsuite/gcc.c-torture/execute/string-opt-6.c
-2437896034b ./gcc/testsuite/gcc.c-torture/execute/string-opt-7.c
- 524866461b ./gcc/testsuite/gcc.c-torture/execute/string-opt-8.c
-2299025367b ./gcc/testsuite/gcc.c-torture/execute/string-opt-9.c
-2234035225b ./gcc/testsuite/gcc.c-torture/execute/struct-ini-1.c
-1176467633b ./gcc/testsuite/gcc.c-torture/execute/struct-ini-2.c
-2162338370b ./gcc/testsuite/gcc.c-torture/execute/struct-ini-3.c
-3372312182b ./gcc/testsuite/gcc.c-torture/execute/struct-ini-4.c
-1924491577b ./gcc/testsuite/gcc.c-torture/execute/struct-ret-1.c
-2222062805b ./gcc/testsuite/gcc.c-torture/execute/struct-ret-2.c
-2658407134b ./gcc/testsuite/gcc.c-torture/execute/tstdi-1.c
-1760191623b ./gcc/testsuite/gcc.c-torture/execute/unroll-1.c
- 150011334b ./gcc/testsuite/gcc.c-torture/execute/va-arg-10.c
-1341755443b ./gcc/testsuite/gcc.c-torture/execute/va-arg-11.c
-3741851708b ./gcc/testsuite/gcc.c-torture/execute/va-arg-12.c
-2056576210b ./gcc/testsuite/gcc.c-torture/execute/va-arg-13.c
-1501818131b ./gcc/testsuite/gcc.c-torture/execute/va-arg-14.c
- 625024539b ./gcc/testsuite/gcc.c-torture/execute/va-arg-15.c
- 905618458b ./gcc/testsuite/gcc.c-torture/execute/va-arg-15.x
-1304294650b ./gcc/testsuite/gcc.c-torture/execute/va-arg-16.c
- 905618458b ./gcc/testsuite/gcc.c-torture/execute/va-arg-16.x
-3654734537b ./gcc/testsuite/gcc.c-torture/execute/va-arg-17.c
- 905618458b ./gcc/testsuite/gcc.c-torture/execute/va-arg-17.x
-2108289558b ./gcc/testsuite/gcc.c-torture/execute/va-arg-18.c
-2682407156b ./gcc/testsuite/gcc.c-torture/execute/va-arg-19.c
-4100317579b ./gcc/testsuite/gcc.c-torture/execute/va-arg-1.c
- 366376907b ./gcc/testsuite/gcc.c-torture/execute/va-arg-20.c
-3416533370b ./gcc/testsuite/gcc.c-torture/execute/va-arg-21.c
-1403664843b ./gcc/testsuite/gcc.c-torture/execute/va-arg-22.c
-3898927180b ./gcc/testsuite/gcc.c-torture/execute/va-arg-2.c
-3316575978b ./gcc/testsuite/gcc.c-torture/execute/va-arg-3.c
-2693536633b ./gcc/testsuite/gcc.c-torture/execute/va-arg-3.x
- 839866355b ./gcc/testsuite/gcc.c-torture/execute/va-arg-4.c
-1210036672b ./gcc/testsuite/gcc.c-torture/execute/va-arg-5.c
- 365894168b ./gcc/testsuite/gcc.c-torture/execute/va-arg-6.c
-3547378445b ./gcc/testsuite/gcc.c-torture/execute/va-arg-7.c
-3028804389b ./gcc/testsuite/gcc.c-torture/execute/va-arg-8.c
-2833151734b ./gcc/testsuite/gcc.c-torture/execute/va-arg-9.c
-1911372417b ./gcc/testsuite/gcc.c-torture/execute/wchar_t-1.c
- 529327846b ./gcc/testsuite/gcc.c-torture/execute/widechar-1.c
-1902127658b ./gcc/testsuite/gcc.c-torture/execute/widechar-2.c
-2556092488b ./gcc/testsuite/gcc.c-torture/execute/zerolen-1.c
-4066787379b ./gcc/testsuite/gcc.c-torture/execute/zerolen-2.c
- 634421910b ./gcc/testsuite/gcc.c-torture/unsorted/386.c
-2512826658b ./gcc/testsuite/gcc.c-torture/unsorted/86.c
-2687046562b ./gcc/testsuite/gcc.c-torture/unsorted/a1.c
-3122819825b ./gcc/testsuite/gcc.c-torture/unsorted/a3.c
-1905897475b ./gcc/testsuite/gcc.c-torture/unsorted/aaa.c
-1430858172b ./gcc/testsuite/gcc.c-torture/unsorted/aa.c
-2128951928b ./gcc/testsuite/gcc.c-torture/unsorted/abs.c
- 51945996b ./gcc/testsuite/gcc.c-torture/unsorted/a.c
-4087775597b ./gcc/testsuite/gcc.c-torture/unsorted/ac.c
-4108214922b ./gcc/testsuite/gcc.c-torture/unsorted/acc.c
- 178238083b ./gcc/testsuite/gcc.c-torture/unsorted/add386.c
-1561010997b ./gcc/testsuite/gcc.c-torture/unsorted/add.c
- 425148131b ./gcc/testsuite/gcc.c-torture/unsorted/addcc.c
-1010727230b ./gcc/testsuite/gcc.c-torture/unsorted/andm.c
-1804826393b ./gcc/testsuite/gcc.c-torture/unsorted/andmem.c
-1939054464b ./gcc/testsuite/gcc.c-torture/unsorted/andn.c
- 958534456b ./gcc/testsuite/gcc.c-torture/unsorted/andok.c
-4100679649b ./gcc/testsuite/gcc.c-torture/unsorted/andsi.c
-1812217387b ./gcc/testsuite/gcc.c-torture/unsorted/andsparc.c
-1261488553b ./gcc/testsuite/gcc.c-torture/unsorted/aos.c
-3358660284b ./gcc/testsuite/gcc.c-torture/unsorted/arr.c
- 529589500b ./gcc/testsuite/gcc.c-torture/unsorted/as.c
-2341774096b ./gcc/testsuite/gcc.c-torture/unsorted/ase.c
- 278197700b ./gcc/testsuite/gcc.c-torture/unsorted/b1.c
-1838022421b ./gcc/testsuite/gcc.c-torture/unsorted/b2.c
-1297638431b ./gcc/testsuite/gcc.c-torture/unsorted/b3.c
- 98906803b ./gcc/testsuite/gcc.c-torture/unsorted/b88.c
-4166624962b ./gcc/testsuite/gcc.c-torture/unsorted/bad.c
- 909355576b ./gcc/testsuite/gcc.c-torture/unsorted/band.c
- 782217635b ./gcc/testsuite/gcc.c-torture/unsorted/bb0.c
- 104727600b ./gcc/testsuite/gcc.c-torture/unsorted/bb1.c
-2113129899b ./gcc/testsuite/gcc.c-torture/unsorted/bbb.c
-3604241750b ./gcc/testsuite/gcc.c-torture/unsorted/b.c
-2670310529b ./gcc/testsuite/gcc.c-torture/unsorted/bc.c
-3090384483b ./gcc/testsuite/gcc.c-torture/unsorted/bcopy.c
-2685623920b ./gcc/testsuite/gcc.c-torture/unsorted/bf.c
-1825505370b ./gcc/testsuite/gcc.c-torture/unsorted/bfins.c
-3222678366b ./gcc/testsuite/gcc.c-torture/unsorted/bfx.c
-1818008243b ./gcc/testsuite/gcc.c-torture/unsorted/bge.c
-1169896684b ./gcc/testsuite/gcc.c-torture/unsorted/bit.c
-4267772046b ./gcc/testsuite/gcc.c-torture/unsorted/bitf.c
-1244917866b ./gcc/testsuite/gcc.c-torture/unsorted/bitw.c
-3205164461b ./gcc/testsuite/gcc.c-torture/unsorted/blk.c
-3930520391b ./gcc/testsuite/gcc.c-torture/unsorted/bt386.c
-3879987638b ./gcc/testsuite/gcc.c-torture/unsorted/bt.c
-2930337150b ./gcc/testsuite/gcc.c-torture/unsorted/BUG11.c
- 645328736b ./gcc/testsuite/gcc.c-torture/unsorted/BUG12.c
-3447791606b ./gcc/testsuite/gcc.c-torture/unsorted/BUG13.c
-1345083343b ./gcc/testsuite/gcc.c-torture/unsorted/BUG16.c
-2211699544b ./gcc/testsuite/gcc.c-torture/unsorted/BUG17.c
-3824994911b ./gcc/testsuite/gcc.c-torture/unsorted/BUG18.c
-1577087180b ./gcc/testsuite/gcc.c-torture/unsorted/BUG1.c
-2177082003b ./gcc/testsuite/gcc.c-torture/unsorted/BUG21.c
-1740665759b ./gcc/testsuite/gcc.c-torture/unsorted/BUG22.c
-4075155387b ./gcc/testsuite/gcc.c-torture/unsorted/BUG23.c
-3968893634b ./gcc/testsuite/gcc.c-torture/unsorted/BUG24.c
- 459689731b ./gcc/testsuite/gcc.c-torture/unsorted/BUG25.c
-3618943848b ./gcc/testsuite/gcc.c-torture/unsorted/BUG2.c
- 474328818b ./gcc/testsuite/gcc.c-torture/unsorted/BUG3.c
-1462112702b ./gcc/testsuite/gcc.c-torture/unsorted/BUG4.c
-3140531389b ./gcc/testsuite/gcc.c-torture/unsorted/BUG5.c
- 460917160b ./gcc/testsuite/gcc.c-torture/unsorted/BUG6.c
-2778832219b ./gcc/testsuite/gcc.c-torture/unsorted/bug.c
- 909529146b ./gcc/testsuite/gcc.c-torture/unsorted/bugc.c
-3859987766b ./gcc/testsuite/gcc.c-torture/unsorted/buns.c
-2981977682b ./gcc/testsuite/gcc.c-torture/unsorted/bx.c
-3824196498b ./gcc/testsuite/gcc.c-torture/unsorted/c1.c
-3656093116b ./gcc/testsuite/gcc.c-torture/unsorted/c2.c
-3745915003b ./gcc/testsuite/gcc.c-torture/unsorted/call386.c
-3818633964b ./gcc/testsuite/gcc.c-torture/unsorted/call.c
-3496796739b ./gcc/testsuite/gcc.c-torture/unsorted/callind.c
-3780608001b ./gcc/testsuite/gcc.c-torture/unsorted/c.c
- 162598922b ./gcc/testsuite/gcc.c-torture/unsorted/cc.c
-2143288465b ./gcc/testsuite/gcc.c-torture/unsorted/charmtst.c
-1855363258b ./gcc/testsuite/gcc.c-torture/unsorted/cmb.c
-1285046858b ./gcc/testsuite/gcc.c-torture/unsorted/cmp.c
-1423312127b ./gcc/testsuite/gcc.c-torture/unsorted/cmphi.c
-2318993881b ./gcc/testsuite/gcc.c-torture/unsorted/cmpsi386.c
-4235211728b ./gcc/testsuite/gcc.c-torture/unsorted/cmul.c
- 854170788b ./gcc/testsuite/gcc.c-torture/unsorted/cn1.c
- 935857365b ./gcc/testsuite/gcc.c-torture/unsorted/comb.c
-1810135123b ./gcc/testsuite/gcc.c-torture/unsorted/consec.c
- 181790131b ./gcc/testsuite/gcc.c-torture/unsorted/const.c
-2353636753b ./gcc/testsuite/gcc.c-torture/unsorted/conv.c
-3252387675b ./gcc/testsuite/gcc.c-torture/unsorted/conv_tst.c
-2280634062b ./gcc/testsuite/gcc.c-torture/unsorted/cp.c
-1738381851b ./gcc/testsuite/gcc.c-torture/unsorted/csebug.c
-1464956912b ./gcc/testsuite/gcc.c-torture/unsorted/cvt.c
- 606535868b ./gcc/testsuite/gcc.c-torture/unsorted/dblbug.c
-3851183583b ./gcc/testsuite/gcc.c-torture/unsorted/dbl_parm.c
-3440041653b ./gcc/testsuite/gcc.c-torture/unsorted/d.c
-2925438011b ./gcc/testsuite/gcc.c-torture/unsorted/ddd.c
-2791348449b ./gcc/testsuite/gcc.c-torture/unsorted/dead.c
- 609366019b ./gcc/testsuite/gcc.c-torture/unsorted/delay.c
- 305442480b ./gcc/testsuite/gcc.c-torture/unsorted/DFcmp.c
-3029371757b ./gcc/testsuite/gcc.c-torture/unsorted/di.c
- 420255576b ./gcc/testsuite/gcc.c-torture/unsorted/dic.c
- 716977667b ./gcc/testsuite/gcc.c-torture/unsorted/dilayout.c
-1071957355b ./gcc/testsuite/gcc.c-torture/unsorted/dimove.c
- 163894537b ./gcc/testsuite/gcc.c-torture/unsorted/dimul.c
-1962021495b ./gcc/testsuite/gcc.c-torture/unsorted/div.c
-1911882561b ./gcc/testsuite/gcc.c-torture/unsorted/divdf.c
-3643811739b ./gcc/testsuite/gcc.c-torture/unsorted/dm.c
-3366321383b ./gcc/testsuite/gcc.c-torture/unsorted/dshift.c
- 691935419b ./gcc/testsuite/gcc.c-torture/unsorted/e.c
-3422715387b ./gcc/testsuite/gcc.c-torture/unsorted/ex.c
-3295431583b ./gcc/testsuite/gcc.c-torture/unsorted/ext.c
-3418757365b ./gcc/testsuite/gcc.c-torture/unsorted/f1.c
-1799287010b ./gcc/testsuite/gcc.c-torture/unsorted/f2.c
- 742887905b ./gcc/testsuite/gcc.c-torture/unsorted/fdmul.c
-3396096931b ./gcc/testsuite/gcc.c-torture/unsorted/float.c
-2705424580b ./gcc/testsuite/gcc.c-torture/unsorted/flo.c
-1861286853b ./gcc/testsuite/gcc.c-torture/unsorted/flt_const.c
-1778808555b ./gcc/testsuite/gcc.c-torture/unsorted/fnul.c
- 837581993b ./gcc/testsuite/gcc.c-torture/unsorted/foo.c
-2603890884b ./gcc/testsuite/gcc.c-torture/unsorted/forgetcc.c
-1311942689b ./gcc/testsuite/gcc.c-torture/unsorted/fq.c
-2823794598b ./gcc/testsuite/gcc.c-torture/unsorted/g.c
-4182806672b ./gcc/testsuite/gcc.c-torture/unsorted/gen_tst.c
- 440386278b ./gcc/testsuite/gcc.c-torture/unsorted/glob.c
-2712797412b ./gcc/testsuite/gcc.c-torture/unsorted/gronk.c
-2912660272b ./gcc/testsuite/gcc.c-torture/unsorted/hibug.c
-2506280517b ./gcc/testsuite/gcc.c-torture/unsorted/hi.c
-4088813022b ./gcc/testsuite/gcc.c-torture/unsorted/HIcmp.c
-2060643608b ./gcc/testsuite/gcc.c-torture/unsorted/HIset.c
-1463391444b ./gcc/testsuite/gcc.c-torture/unsorted/i.c
-3171392500b ./gcc/testsuite/gcc.c-torture/unsorted/i++.c
-1222319492b ./gcc/testsuite/gcc.c-torture/unsorted/ic.c
-2244080969b ./gcc/testsuite/gcc.c-torture/unsorted/icmp.c
-3544970343b ./gcc/testsuite/gcc.c-torture/unsorted/ifreg.c
-1391595029b ./gcc/testsuite/gcc.c-torture/unsorted/imm.c
- 125065552b ./gcc/testsuite/gcc.c-torture/unsorted/isinf.c
-3010843181b ./gcc/testsuite/gcc.c-torture/unsorted/jmp.c
-2660706970b ./gcc/testsuite/gcc.c-torture/unsorted/jumptab.c
-2953050089b ./gcc/testsuite/gcc.c-torture/unsorted/layout.c
-3456840745b ./gcc/testsuite/gcc.c-torture/unsorted/lbug.c
-1238043529b ./gcc/testsuite/gcc.c-torture/unsorted/l.c
-2906412336b ./gcc/testsuite/gcc.c-torture/unsorted/ll1.c
-2085462310b ./gcc/testsuite/gcc.c-torture/unsorted/llbug.c
-1419215241b ./gcc/testsuite/gcc.c-torture/unsorted/lll.c
-3825978026b ./gcc/testsuite/gcc.c-torture/unsorted/load8.c
- 791778479b ./gcc/testsuite/gcc.c-torture/unsorted/loadhicc.c
- 439371726b ./gcc/testsuite/gcc.c-torture/unsorted/log2.c
- 418270073b ./gcc/testsuite/gcc.c-torture/unsorted/logic.c
- 388000712b ./gcc/testsuite/gcc.c-torture/unsorted/loop-1.c
-2317019693b ./gcc/testsuite/gcc.c-torture/unsorted/loop386.c
-3780249238b ./gcc/testsuite/gcc.c-torture/unsorted/lop.c
-3011092171b ./gcc/testsuite/gcc.c-torture/unsorted/m1.c
-1664237855b ./gcc/testsuite/gcc.c-torture/unsorted/m2.c
- 836486950b ./gcc/testsuite/gcc.c-torture/unsorted/m5.c
-1315431234b ./gcc/testsuite/gcc.c-torture/unsorted/m68.c
-1140567438b ./gcc/testsuite/gcc.c-torture/unsorted/mbyte.c
-1343630589b ./gcc/testsuite/gcc.c-torture/unsorted/mchar.c
-1971867771b ./gcc/testsuite/gcc.c-torture/unsorted/mcmp.c
-1050674918b ./gcc/testsuite/gcc.c-torture/unsorted/mdouble.c
-3545288402b ./gcc/testsuite/gcc.c-torture/unsorted/memtst.c
-1607208885b ./gcc/testsuite/gcc.c-torture/unsorted/miscomp.c
- 517599771b ./gcc/testsuite/gcc.c-torture/unsorted/mm.c
-3498200377b ./gcc/testsuite/gcc.c-torture/unsorted/mod.c
- 852673854b ./gcc/testsuite/gcc.c-torture/unsorted/modcc.c
-3290683845b ./gcc/testsuite/gcc.c-torture/unsorted/move.c
-2934241414b ./gcc/testsuite/gcc.c-torture/unsorted/move_qhi.c
-2156076426b ./gcc/testsuite/gcc.c-torture/unsorted/mregtst.c
-2833441830b ./gcc/testsuite/gcc.c-torture/unsorted/msp.c
-3686945259b ./gcc/testsuite/gcc.c-torture/unsorted/mtst.c
- 650788304b ./gcc/testsuite/gcc.c-torture/unsorted/mu.c
-3210222105b ./gcc/testsuite/gcc.c-torture/unsorted/mul.c
- 206884481b ./gcc/testsuite/gcc.c-torture/unsorted/mword1.c
-3114106310b ./gcc/testsuite/gcc.c-torture/unsorted/mword.c
-1193753806b ./gcc/testsuite/gcc.c-torture/unsorted/n1.c
-3021632957b ./gcc/testsuite/gcc.c-torture/unsorted/nand.c
-1942143253b ./gcc/testsuite/gcc.c-torture/unsorted/n.c
-1255157012b ./gcc/testsuite/gcc.c-torture/unsorted/neg.c
-2666891841b ./gcc/testsuite/gcc.c-torture/unsorted/o.c
-1641502386b ./gcc/testsuite/gcc.c-torture/unsorted/omit.c
-2947983429b ./gcc/testsuite/gcc.c-torture/unsorted/opout.c
-4144556375b ./gcc/testsuite/gcc.c-torture/unsorted/opt.c
-2570634505b ./gcc/testsuite/gcc.c-torture/unsorted/or386.c
-1221510857b ./gcc/testsuite/gcc.c-torture/unsorted/or.c
-3498239118b ./gcc/testsuite/gcc.c-torture/unsorted/parms.c
-4291861284b ./gcc/testsuite/gcc.c-torture/unsorted/pass.c
-3299772143b ./gcc/testsuite/gcc.c-torture/unsorted/p.c
-1371923458b ./gcc/testsuite/gcc.c-torture/unsorted/pmt.c
-2511249387b ./gcc/testsuite/gcc.c-torture/unsorted/poor.c
- 745326023b ./gcc/testsuite/gcc.c-torture/unsorted/pp.c
-1391345399b ./gcc/testsuite/gcc.c-torture/unsorted/pret-arg.c
-3407302768b ./gcc/testsuite/gcc.c-torture/unsorted/pyr2.c
-2603570420b ./gcc/testsuite/gcc.c-torture/unsorted/PYRBUG.c
- 697484600b ./gcc/testsuite/gcc.c-torture/unsorted/pyr.c
-1835488344b ./gcc/testsuite/gcc.c-torture/unsorted/q.c
- 839150718b ./gcc/testsuite/gcc.c-torture/unsorted/QIcmp.c
-2111121086b ./gcc/testsuite/gcc.c-torture/unsorted/QIset.c
-4283361995b ./gcc/testsuite/gcc.c-torture/unsorted/r1.c
-1427595492b ./gcc/testsuite/gcc.c-torture/unsorted/r.c
-4078624014b ./gcc/testsuite/gcc.c-torture/unsorted/rel.c
-3414105414b ./gcc/testsuite/gcc.c-torture/unsorted/rmsc.c
-1012332947b ./gcc/testsuite/gcc.c-torture/unsorted/round.c
-3178090569b ./gcc/testsuite/gcc.c-torture/unsorted/run.c
-3862968210b ./gcc/testsuite/gcc.c-torture/unsorted/sar.c
-1744325584b ./gcc/testsuite/gcc.c-torture/unsorted/s.c
-2416335748b ./gcc/testsuite/gcc.c-torture/unsorted/scal.c
-4292026279b ./gcc/testsuite/gcc.c-torture/unsorted/sc.c
-1669731371b ./gcc/testsuite/gcc.c-torture/unsorted/scc.c
-3073011184b ./gcc/testsuite/gcc.c-torture/unsorted/scond.c
-4127283390b ./gcc/testsuite/gcc.c-torture/unsorted/selfrec.c
- 772856379b ./gcc/testsuite/gcc.c-torture/unsorted/seq.c
-3595435741b ./gcc/testsuite/gcc.c-torture/unsorted/set386.c
- 772098437b ./gcc/testsuite/gcc.c-torture/unsorted/set88.c
-1791217871b ./gcc/testsuite/gcc.c-torture/unsorted/SFset.c
-2510322715b ./gcc/testsuite/gcc.c-torture/unsorted/shand.c
-1917728540b ./gcc/testsuite/gcc.c-torture/unsorted/sh.c
- 369189446b ./gcc/testsuite/gcc.c-torture/unsorted/shft.c
- 786362264b ./gcc/testsuite/gcc.c-torture/unsorted/shift.c
-1326810661b ./gcc/testsuite/gcc.c-torture/unsorted/shloop.c
-1731774655b ./gcc/testsuite/gcc.c-torture/unsorted/shm.c
-3855537843b ./gcc/testsuite/gcc.c-torture/unsorted/SIcmp.c
-3198420130b ./gcc/testsuite/gcc.c-torture/unsorted/signext2.c
-3333038544b ./gcc/testsuite/gcc.c-torture/unsorted/signext.c
-1627754274b ./gcc/testsuite/gcc.c-torture/unsorted/sim.c
- 380795934b ./gcc/testsuite/gcc.c-torture/unsorted/simple.c
-2010223878b ./gcc/testsuite/gcc.c-torture/unsorted/SIset.c
- 927966180b ./gcc/testsuite/gcc.c-torture/unsorted/sne.c
-1732276088b ./gcc/testsuite/gcc.c-torture/unsorted/sound.c
-1462108320b ./gcc/testsuite/gcc.c-torture/unsorted/sparcbug.c
- 680850660b ./gcc/testsuite/gcc.c-torture/unsorted/speed.c
-1459712797b ./gcc/testsuite/gcc.c-torture/unsorted/stor.c
-3521937419b ./gcc/testsuite/gcc.c-torture/unsorted/store0.c
- 429514643b ./gcc/testsuite/gcc.c-torture/unsorted/storecc.c
-2367209182b ./gcc/testsuite/gcc.c-torture/unsorted/str.c
-1212744014b ./gcc/testsuite/gcc.c-torture/unsorted/stru.c
-2936891454b ./gcc/testsuite/gcc.c-torture/unsorted/structret.c
-1723639277b ./gcc/testsuite/gcc.c-torture/unsorted/stuct.c
-3579655725b ./gcc/testsuite/gcc.c-torture/unsorted/sub32.c
-2225754564b ./gcc/testsuite/gcc.c-torture/unsorted/subcc.c
-1610852268b ./gcc/testsuite/gcc.c-torture/unsorted/subcse.c
-1291307272b ./gcc/testsuite/gcc.c-torture/unsorted/sym.c
- 319785041b ./gcc/testsuite/gcc.c-torture/unsorted/symconst.c
-1215688317b ./gcc/testsuite/gcc.c-torture/unsorted/t.c
-3564367767b ./gcc/testsuite/gcc.c-torture/unsorted/test.c
- 585245677b ./gcc/testsuite/gcc.c-torture/unsorted/test-flow.c
-1417505636b ./gcc/testsuite/gcc.c-torture/unsorted/test-loop.c
-1907124578b ./gcc/testsuite/gcc.c-torture/unsorted/time.c
- 316618822b ./gcc/testsuite/gcc.c-torture/unsorted/tmp.c
- 551299652b ./gcc/testsuite/gcc.c-torture/unsorted/trivial.c
- 54055479b ./gcc/testsuite/gcc.c-torture/unsorted/trunc.c
-1458206113b ./gcc/testsuite/gcc.c-torture/unsorted/u.c
- 620556027b ./gcc/testsuite/gcc.c-torture/unsorted/udconvert.c
-4030884798b ./gcc/testsuite/gcc.c-torture/unsorted/udivmod4.c
- 367886956b ./gcc/testsuite/gcc.c-torture/unsorted/UHIcmp.c
-2240659922b ./gcc/testsuite/gcc.c-torture/unsorted/uns.c
- 434767322b ./gcc/testsuite/gcc.c-torture/unsorted/unsorted.exp
-4067751424b ./gcc/testsuite/gcc.c-torture/unsorted/uns_tst.c
-3380740291b ./gcc/testsuite/gcc.c-torture/unsorted/UQIcmp.c
-3065994513b ./gcc/testsuite/gcc.c-torture/unsorted/USIcmp.c
-3061572007b ./gcc/testsuite/gcc.c-torture/unsorted/uuarg.c
- 339227429b ./gcc/testsuite/gcc.c-torture/unsorted/v.c
- 97022866b ./gcc/testsuite/gcc.c-torture/unsorted/w.c
- 502682554b ./gcc/testsuite/gcc.c-torture/unsorted/ww.c
-1561412324b ./gcc/testsuite/gcc.c-torture/unsorted/xb.c
-3522679530b ./gcc/testsuite/gcc.c-torture/unsorted/xbg.c
-2143513908b ./gcc/testsuite/gcc.c-torture/unsorted/x.c
-2513066849b ./gcc/testsuite/gcc.c-torture/unsorted/xc.c
-3791802167b ./gcc/testsuite/gcc.c-torture/unsorted/xcsebug.c
- 753765877b ./gcc/testsuite/gcc.c-torture/unsorted/xdi.c
-2449229476b ./gcc/testsuite/gcc.c-torture/unsorted/xfoo.c
-1976729056b ./gcc/testsuite/gcc.c-torture/unsorted/xi.c
- 467677832b ./gcc/testsuite/gcc.c-torture/unsorted/xlop.c
-2772134709b ./gcc/testsuite/gcc.c-torture/unsorted/xmtst.c
-2887718336b ./gcc/testsuite/gcc.c-torture/unsorted/xneg.c
- 891585403b ./gcc/testsuite/gcc.c-torture/unsorted/xopt.c
-3158383083b ./gcc/testsuite/gcc.c-torture/unsorted/xor.c
-2275025612b ./gcc/testsuite/gcc.c-torture/unsorted/xorn.c
- 696616007b ./gcc/testsuite/gcc.c-torture/unsorted/xp.c
-3369544877b ./gcc/testsuite/gcc.c-torture/unsorted/xpp.c
- 687461532b ./gcc/testsuite/gcc.c-torture/unsorted/xs.c
-2453856793b ./gcc/testsuite/gcc.c-torture/unsorted/xsh.c
- 749676174b ./gcc/testsuite/gcc.c-torture/unsorted/xz.c
-3236233174b ./gcc/testsuite/gcc.c-torture/unsorted/xzz.c
-1020735670b ./gcc/testsuite/gcc.dg/20000108-1.c
- 289377156b ./gcc/testsuite/gcc.dg/20000111-1.c
- 441096099b ./gcc/testsuite/gcc.dg/20000609-1.c
- 843859427b ./gcc/testsuite/gcc.dg/20000614-1.c
- 984866335b ./gcc/testsuite/gcc.dg/20000614-2.c
-2687914259b ./gcc/testsuite/gcc.dg/20000623-1.c
-1697494088b ./gcc/testsuite/gcc.dg/20000629-1.c
-2411171658b ./gcc/testsuite/gcc.dg/20000707-1.c
-1242354775b ./gcc/testsuite/gcc.dg/20000715-1.c
-2414727429b ./gcc/testsuite/gcc.dg/20000720-1.c
-2628509241b ./gcc/testsuite/gcc.dg/20000724-1.c
- 855317863b ./gcc/testsuite/gcc.dg/20000807-1.c
-2282190390b ./gcc/testsuite/gcc.dg/20000904-1.c
-1205584698b ./gcc/testsuite/gcc.dg/20000906-1.c
-2401733773b ./gcc/testsuite/gcc.dg/20000926-1.c
- 912559247b ./gcc/testsuite/gcc.dg/20001009-1.c
-4235098888b ./gcc/testsuite/gcc.dg/20001012-1.c
-3084023965b ./gcc/testsuite/gcc.dg/20001012-2.c
-2504286200b ./gcc/testsuite/gcc.dg/20001013-1.c
- 989710521b ./gcc/testsuite/gcc.dg/20001023-1.c
-2648600842b ./gcc/testsuite/gcc.dg/20001101-1.c
- 452608955b ./gcc/testsuite/gcc.dg/20001102-1.c
-2644591049b ./gcc/testsuite/gcc.dg/20001108-1.c
-3796315325b ./gcc/testsuite/gcc.dg/20001116-1.c
- 280677441b ./gcc/testsuite/gcc.dg/20001117-1.c
- 752060605b ./gcc/testsuite/gcc.dg/20001127-1.c
-1243003570b ./gcc/testsuite/gcc.dg/20001201-1.c
-1646064105b ./gcc/testsuite/gcc.dg/20001228-1.c
-2498549558b ./gcc/testsuite/gcc.dg/20010202-1.c
-2616951355b ./gcc/testsuite/gcc.dg/20010405-1.c
-2545788691b ./gcc/testsuite/gcc.dg/20010423-1.c
-3041407018b ./gcc/testsuite/gcc.dg/20010520-1.c
-3520626317b ./gcc/testsuite/gcc.dg/20010622-1.c
-2877988798b ./gcc/testsuite/gcc.dg/20010822-1.c
-2149609410b ./gcc/testsuite/gcc.dg/20010912-1.c
-2349250184b ./gcc/testsuite/gcc.dg/20011008-1.c
-2932858639b ./gcc/testsuite/gcc.dg/20011008-2.c
-2130390160b ./gcc/testsuite/gcc.dg/20011009-1.c
-1094879191b ./gcc/testsuite/gcc.dg/20011015-1.c
-3257749642b ./gcc/testsuite/gcc.dg/20011018-1.c
-1920312928b ./gcc/testsuite/gcc.dg/20011021-1.c
- 707554340b ./gcc/testsuite/gcc.dg/20011029-2.c
-1124303586b ./gcc/testsuite/gcc.dg/20011107-1.c
-3977721072b ./gcc/testsuite/gcc.dg/20011113-1.c
- 43629702b ./gcc/testsuite/gcc.dg/20011119-1.c
-1970395659b ./gcc/testsuite/gcc.dg/20011127-1.c
- 640681704b ./gcc/testsuite/gcc.dg/20011130-1.c
- 715751053b ./gcc/testsuite/gcc.dg/20011214-1.c
-2394786434b ./gcc/testsuite/gcc.dg/20020103-1.c
-2180708198b ./gcc/testsuite/gcc.dg/20020104-1.c
- 98244853b ./gcc/testsuite/gcc.dg/20020108-1.c
- 951724852b ./gcc/testsuite/gcc.dg/20020115-1.c
- 785896302b ./gcc/testsuite/gcc.dg/20020116-1.c
-3842134030b ./gcc/testsuite/gcc.dg/20020116-2.c
-4113077329b ./gcc/testsuite/gcc.dg/20020118-1.c
-3751699275b ./gcc/testsuite/gcc.dg/20020122-1.c
- 150189901b ./gcc/testsuite/gcc.dg/20020122-2.c
- 57782331b ./gcc/testsuite/gcc.dg/20020122-3.c
-2367653115b ./gcc/testsuite/gcc.dg/20020122-4.c
-4139034769b ./gcc/testsuite/gcc.dg/20020201-1.c
- 205098899b ./gcc/testsuite/gcc.dg/20020201-2.c
- 821274050b ./gcc/testsuite/gcc.dg/20020201-3.c
-2936802890b ./gcc/testsuite/gcc.dg/20020201-4.c
-2531686627b ./gcc/testsuite/gcc.dg/20020206-1.c
- 756555090b ./gcc/testsuite/gcc.dg/20020210-1.c
-3546737192b ./gcc/testsuite/gcc.dg/20020218-1.c
-2855726391b ./gcc/testsuite/gcc.dg/20020219-1.c
- 794792782b ./gcc/testsuite/gcc.dg/20020220-1.c
-1662033181b ./gcc/testsuite/gcc.dg/20020220-2.c
-2954578455b ./gcc/testsuite/gcc.dg/20020222-1.c
-2546434352b ./gcc/testsuite/gcc.dg/20020224-1.c
- 627755992b ./gcc/testsuite/gcc.dg/20020304-1.c
-2738421039b ./gcc/testsuite/gcc.dg/20020310-1.c
- 767384458b ./gcc/testsuite/gcc.dg/20020312-1.c
-1632668533b ./gcc/testsuite/gcc.dg/20020312-2.c
-3842300935b ./gcc/testsuite/gcc.dg/20020313-1.c
- 663674028b ./gcc/testsuite/gcc.dg/20020319-1.c
-3802202669b ./gcc/testsuite/gcc.dg/20020326-1.c
- 926713919b ./gcc/testsuite/gcc.dg/20020411-1.c
-2767099233b ./gcc/testsuite/gcc.dg/20020415-1.c
-2427264054b ./gcc/testsuite/gcc.dg/20020416-1.c
-1785651312b ./gcc/testsuite/gcc.dg/20020418-1.c
-1527728757b ./gcc/testsuite/gcc.dg/20020418-2.c
-2088656022b ./gcc/testsuite/gcc.dg/20020426-1.c
-4234050901b ./gcc/testsuite/gcc.dg/20020426-2.c
- 464722125b ./gcc/testsuite/gcc.dg/20020430-1.c
-1745642748b ./gcc/testsuite/gcc.dg/20020503-1.c
-3667555097b ./gcc/testsuite/gcc.dg/20020517-1.c
- 536325431b ./gcc/testsuite/gcc.dg/20020523-1.c
-1463174796b ./gcc/testsuite/gcc.dg/20020527-1.c
-2086765142b ./gcc/testsuite/gcc.dg/20020530-1.c
-1518490714b ./gcc/testsuite/gcc.dg/20020616-1.c
- 344810811b ./gcc/testsuite/gcc.dg/20021014-1.c
-1577979025b ./gcc/testsuite/gcc.dg/920413-1.c
-2176221389b ./gcc/testsuite/gcc.dg/940409-1.c
-1567764883b ./gcc/testsuite/gcc.dg/940510-1.c
-1435563142b ./gcc/testsuite/gcc.dg/951130-1.c
-1414883796b ./gcc/testsuite/gcc.dg/980211-1.c
-1568764691b ./gcc/testsuite/gcc.dg/980217-1.c
- 474510323b ./gcc/testsuite/gcc.dg/980226-1.c
-2630738251b ./gcc/testsuite/gcc.dg/980312-1.c
-2097327868b ./gcc/testsuite/gcc.dg/980313-1.c
- 372605499b ./gcc/testsuite/gcc.dg/980414-1.c
-1500377530b ./gcc/testsuite/gcc.dg/980502-1.c
-1541851881b ./gcc/testsuite/gcc.dg/980520-1.c
-1113123204b ./gcc/testsuite/gcc.dg/980523-1.c
-2389539979b ./gcc/testsuite/gcc.dg/980526-1.c
- 384442948b ./gcc/testsuite/gcc.dg/980709-1.c
-1276688993b ./gcc/testsuite/gcc.dg/980816-1.c
-2659217655b ./gcc/testsuite/gcc.dg/980827-1.c
- 844249748b ./gcc/testsuite/gcc.dg/990117-1.c
-3592792935b ./gcc/testsuite/gcc.dg/990130-1.c
-2565768458b ./gcc/testsuite/gcc.dg/990213-1.c
-2125486048b ./gcc/testsuite/gcc.dg/990213-2.c
- 318703178b ./gcc/testsuite/gcc.dg/990214-1.c
-1614449588b ./gcc/testsuite/gcc.dg/990424-1.c
-1324715064b ./gcc/testsuite/gcc.dg/990506-0.c
- 714032148b ./gcc/testsuite/gcc.dg/990524-1.c
-3071468415b ./gcc/testsuite/gcc.dg/991129-1.c
- 156954019b ./gcc/testsuite/gcc.dg/991209-1.c
-1980057279b ./gcc/testsuite/gcc.dg/991214-1.c
-3370443605b ./gcc/testsuite/gcc.dg/991230-1.c
-3936329118b ./gcc/testsuite/gcc.dg/altivec-1.c
- 79724433b ./gcc/testsuite/gcc.dg/altivec-2.c
- 967922284b ./gcc/testsuite/gcc.dg/altivec-3.c
- 93905551b ./gcc/testsuite/gcc.dg/altivec-4.c
-1274871710b ./gcc/testsuite/gcc.dg/array-1.c
-3861156036b ./gcc/testsuite/gcc.dg/array-2.c
-1410330225b ./gcc/testsuite/gcc.dg/array-3.c
-2440308460b ./gcc/testsuite/gcc.dg/array-4.c
-2233987289b ./gcc/testsuite/gcc.dg/array-5.c
-3636290766b ./gcc/testsuite/gcc.dg/array-6.c
-2814093959b ./gcc/testsuite/gcc.dg/asm-1.c
-3024001214b ./gcc/testsuite/gcc.dg/asm-2.c
-2686162767b ./gcc/testsuite/gcc.dg/asm-3.c
- 339244874b ./gcc/testsuite/gcc.dg/asm-4.c
-2673255882b ./gcc/testsuite/gcc.dg/asm-5.c
-2560291160b ./gcc/testsuite/gcc.dg/asm-fs-1.c
-1287172903b ./gcc/testsuite/gcc.dg/asm-names.c
-2801105283b ./gcc/testsuite/gcc.dg/attr-alwaysinline.c
-1514674985b ./gcc/testsuite/gcc.dg/attr-invalid.c
-1915283314b ./gcc/testsuite/gcc.dg/attr-nest.c
-2689909602b ./gcc/testsuite/gcc.dg/attr-noinline.c
- 745375068b ./gcc/testsuite/gcc.dg/attr-used.c
-3155000092b ./gcc/testsuite/gcc.dg/bconstp-1.c
- 15751103b ./gcc/testsuite/gcc.dg/bf-spl1.c
-1274634279b ./gcc/testsuite/gcc.dg/bitfld-1.c
- 865608720b ./gcc/testsuite/gcc.dg/bitfld-2.c
-2003841110b ./gcc/testsuite/gcc.dg/bitfld-3.c
-1594168367b ./gcc/testsuite/gcc.dg/builtin-choose-expr.c
-2462561678b ./gcc/testsuite/gcc.dg/builtin-prefetch-1.c
-3153387113b ./gcc/testsuite/gcc.dg/c90-arraydecl-1.c
-2243816200b ./gcc/testsuite/gcc.dg/c90-array-lval-1.c
-2768106060b ./gcc/testsuite/gcc.dg/c90-array-lval-2.c
-4098525451b ./gcc/testsuite/gcc.dg/c90-array-lval-3.c
-3655088604b ./gcc/testsuite/gcc.dg/c90-array-lval-4.c
-1572913366b ./gcc/testsuite/gcc.dg/c90-array-lval-5.c
-4018159207b ./gcc/testsuite/gcc.dg/c90-complex-1.c
-3681535923b ./gcc/testsuite/gcc.dg/c90-complit-1.c
-1705314837b ./gcc/testsuite/gcc.dg/c90-const-expr-1.c
- 78994009b ./gcc/testsuite/gcc.dg/c90-const-expr-2.c
- 822031417b ./gcc/testsuite/gcc.dg/c90-const-expr-3.c
-4085555442b ./gcc/testsuite/gcc.dg/c90-digraph-1.c
-3599184840b ./gcc/testsuite/gcc.dg/c90-enum-comma-1.c
-2306764382b ./gcc/testsuite/gcc.dg/c90-float-1.c
- 566533628b ./gcc/testsuite/gcc.dg/c90-fordecl-1.c
-1928391037b ./gcc/testsuite/gcc.dg/c90-hexfloat-1.c
-4124256667b ./gcc/testsuite/gcc.dg/c90-hexfloat-2.c
-2581693818b ./gcc/testsuite/gcc.dg/c90-idem-qual-1.c
-1581289258b ./gcc/testsuite/gcc.dg/c90-impl-decl-1.c
- 440307834b ./gcc/testsuite/gcc.dg/c90-impl-int-1.c
-2344767678b ./gcc/testsuite/gcc.dg/c90-impl-int-2.c
- 970479166b ./gcc/testsuite/gcc.dg/c90-init-1.c
-2729946148b ./gcc/testsuite/gcc.dg/c90-intconst-1.c
-3559700294b ./gcc/testsuite/gcc.dg/c90-longlong-1.c
-3728641939b ./gcc/testsuite/gcc.dg/c90-mixdecl-1.c
- 211178091b ./gcc/testsuite/gcc.dg/c90-restrict-1.c
-3688680206b ./gcc/testsuite/gcc.dg/c90-return-1.c
-1775037086b ./gcc/testsuite/gcc.dg/c90-scope-1.c
-3958618876b ./gcc/testsuite/gcc.dg/c94-digraph-1.c
- 815267755b ./gcc/testsuite/gcc.dg/c99-arraydecl-1.c
-1553286096b ./gcc/testsuite/gcc.dg/c99-array-lval-1.c
- 695388665b ./gcc/testsuite/gcc.dg/c99-array-lval-2.c
- 533861407b ./gcc/testsuite/gcc.dg/c99-array-lval-3.c
-2215212813b ./gcc/testsuite/gcc.dg/c99-array-lval-4.c
-3070583409b ./gcc/testsuite/gcc.dg/c99-array-lval-5.c
-1817213908b ./gcc/testsuite/gcc.dg/c99-array-nonobj-1.c
-1951407439b ./gcc/testsuite/gcc.dg/c99-bool-1.c
-2269932988b ./gcc/testsuite/gcc.dg/c99-complex-1.c
- 820370146b ./gcc/testsuite/gcc.dg/c99-complex-2.c
-3348642281b ./gcc/testsuite/gcc.dg/c99-complit-1.c
-2252128544b ./gcc/testsuite/gcc.dg/c99-complit-2.c
-1355429032b ./gcc/testsuite/gcc.dg/c99-condexpr-1.c
-1666861367b ./gcc/testsuite/gcc.dg/c99-const-expr-1.c
-1567288443b ./gcc/testsuite/gcc.dg/c99-const-expr-2.c
-1530464516b ./gcc/testsuite/gcc.dg/c99-const-expr-3.c
-1067407398b ./gcc/testsuite/gcc.dg/c99-digraph-1.c
- 436400556b ./gcc/testsuite/gcc.dg/c99-enum-comma-1.c
-3680360076b ./gcc/testsuite/gcc.dg/c99-flex-array-1.c
-1133393573b ./gcc/testsuite/gcc.dg/c99-flex-array-2.c
-4185875504b ./gcc/testsuite/gcc.dg/c99-float-1.c
- 553627065b ./gcc/testsuite/gcc.dg/c99-fordecl-1.c
- 561068221b ./gcc/testsuite/gcc.dg/c99-fordecl-2.c
-2859208293b ./gcc/testsuite/gcc.dg/c99-func-1.c
-2626542091b ./gcc/testsuite/gcc.dg/c99-func-2.c
-2857481018b ./gcc/testsuite/gcc.dg/c99-func-3.c
-3824254533b ./gcc/testsuite/gcc.dg/c99-func-4.c
- 403500133b ./gcc/testsuite/gcc.dg/c99-hexfloat-1.c
- 442351990b ./gcc/testsuite/gcc.dg/c99-hexfloat-2.c
-1046797268b ./gcc/testsuite/gcc.dg/c99-idem-qual-1.c
-1293044648b ./gcc/testsuite/gcc.dg/c99-impl-decl-1.c
- 818104690b ./gcc/testsuite/gcc.dg/c99-impl-int-1.c
-2312236475b ./gcc/testsuite/gcc.dg/c99-impl-int-2.c
- 829207642b ./gcc/testsuite/gcc.dg/c99-init-1.c
- 938647013b ./gcc/testsuite/gcc.dg/c99-init-2.c
-3578360837b ./gcc/testsuite/gcc.dg/c99-intconst-1.c
- 336478880b ./gcc/testsuite/gcc.dg/c99-longlong-1.c
-2179124750b ./gcc/testsuite/gcc.dg/c99-main-1.c
-1603510892b ./gcc/testsuite/gcc.dg/c99-mixdecl-1.c
-2789813637b ./gcc/testsuite/gcc.dg/c99-restrict-1.c
-1090698500b ./gcc/testsuite/gcc.dg/c99-return-1.c
-1305485104b ./gcc/testsuite/gcc.dg/c99-scope-1.c
- 328628580b ./gcc/testsuite/gcc.dg/c99-scope-2.c
-1500087630b ./gcc/testsuite/gcc.dg/c99-tag-1.c
-3333661125b ./gcc/testsuite/gcc.dg/cast-qual-1.c
-1853040812b ./gcc/testsuite/gcc.dg/cast-qual-2.c
-3509657813b ./gcc/testsuite/gcc.dg/clobbers.c
-3796475762b ./gcc/testsuite/gcc.dg/compare1.c
- 280070085b ./gcc/testsuite/gcc.dg/compare2.c
-1929905505b ./gcc/testsuite/gcc.dg/compare3.c
-4172088563b ./gcc/testsuite/gcc.dg/compare4.c
-2873193357b ./gcc/testsuite/gcc.dg/compare5.c
-2818358019b ./gcc/testsuite/gcc.dg/complete-port.c
-2444556566b ./gcc/testsuite/gcc.dg/concat.c
- 872352985b ./gcc/testsuite/gcc.dg/conv-1.c
-2296607049b ./gcc/testsuite/gcc.dg/cpp/19921210-1.c
- 446012754b ./gcc/testsuite/gcc.dg/cpp/19930510-1.c
-1310331126b ./gcc/testsuite/gcc.dg/cpp/19940712-1a.h
-1255987496b ./gcc/testsuite/gcc.dg/cpp/19940712-1b.h
-3035400854b ./gcc/testsuite/gcc.dg/cpp/19940712-1.c
-3911462043b ./gcc/testsuite/gcc.dg/cpp/19940712-1.h
-3107147397b ./gcc/testsuite/gcc.dg/cpp/19951025-1.c
-1152006619b ./gcc/testsuite/gcc.dg/cpp/19951227-1.c
-3844252401b ./gcc/testsuite/gcc.dg/cpp/19960224-1.c
-2681484848b ./gcc/testsuite/gcc.dg/cpp/19990119-1.c
- 152529314b ./gcc/testsuite/gcc.dg/cpp/19990228-1.c
-2850976318b ./gcc/testsuite/gcc.dg/cpp/19990407-1.c
-1821165639b ./gcc/testsuite/gcc.dg/cpp/19990409-1.c
-2941995947b ./gcc/testsuite/gcc.dg/cpp/19990413-1.c
-3962958732b ./gcc/testsuite/gcc.dg/cpp/20000127-1.c
-2271984635b ./gcc/testsuite/gcc.dg/cpp/20000129-1.c
-2675766007b ./gcc/testsuite/gcc.dg/cpp/20000207-1.c
-4123239500b ./gcc/testsuite/gcc.dg/cpp/20000207-2.c
-4036437808b ./gcc/testsuite/gcc.dg/cpp/20000209-1.c
-1472416455b ./gcc/testsuite/gcc.dg/cpp/20000209-2.c
-2174334870b ./gcc/testsuite/gcc.dg/cpp/20000301-1.c
-1872528864b ./gcc/testsuite/gcc.dg/cpp/20000419-1.c
-2720098340b ./gcc/testsuite/gcc.dg/cpp/20000519-1.c
- 96666994b ./gcc/testsuite/gcc.dg/cpp/20000529-1.c
-1226501171b ./gcc/testsuite/gcc.dg/cpp/20000625-1.c
-2192746957b ./gcc/testsuite/gcc.dg/cpp/20000625-2.c
-3024473110b ./gcc/testsuite/gcc.dg/cpp/20000627-1.c
-1252878971b ./gcc/testsuite/gcc.dg/cpp/20000628-1a.h
-3176910360b ./gcc/testsuite/gcc.dg/cpp/20000628-1.c
- 302522843b ./gcc/testsuite/gcc.dg/cpp/20000628-1.h
-3939185973b ./gcc/testsuite/gcc.dg/cpp/20000725-1.c
-1092019739b ./gcc/testsuite/gcc.dg/cpp/20020927-1.c
-3918751425b ./gcc/testsuite/gcc.dg/cpp/assembl2.S
-2829543114b ./gcc/testsuite/gcc.dg/cpp/assembler.S
-2692554582b ./gcc/testsuite/gcc.dg/cpp/assert1.c
-3542126362b ./gcc/testsuite/gcc.dg/cpp/assert2.c
-1282180884b ./gcc/testsuite/gcc.dg/cpp/assert3.c
-2600163266b ./gcc/testsuite/gcc.dg/cpp/assert_trad1.c
-4025150262b ./gcc/testsuite/gcc.dg/cpp/assert_trad2.c
-1560406171b ./gcc/testsuite/gcc.dg/cpp/assert_trad3.c
-1134445732b ./gcc/testsuite/gcc.dg/cpp/avoidpaste1.c
-1804955265b ./gcc/testsuite/gcc.dg/cpp/avoidpaste2.c
-1837306227b ./gcc/testsuite/gcc.dg/cpp/backslash2.c
-2909138544b ./gcc/testsuite/gcc.dg/cpp/backslash.c
-1769035451b ./gcc/testsuite/gcc.dg/cpp/c89.c
-3749407486b ./gcc/testsuite/gcc.dg/cpp/c89-pedantic.c
- 925335145b ./gcc/testsuite/gcc.dg/cpp/c94.c
-1510840104b ./gcc/testsuite/gcc.dg/cpp/c94-pedantic.c
-1689064567b ./gcc/testsuite/gcc.dg/cpp/c++98.c
-2939353970b ./gcc/testsuite/gcc.dg/cpp/c++98-pedantic.c
-3857361837b ./gcc/testsuite/gcc.dg/cpp/c99.c
-3306050866b ./gcc/testsuite/gcc.dg/cpp/c99-pedantic.c
-3516322832b ./gcc/testsuite/gcc.dg/cpp/charconst-2.c
- 796483159b ./gcc/testsuite/gcc.dg/cpp/charconst.c
-1491584113b ./gcc/testsuite/gcc.dg/cpp/cmdlne-C2.c
-3355056256b ./gcc/testsuite/gcc.dg/cpp/cmdlne-C.c
-2496993356b ./gcc/testsuite/gcc.dg/cpp/cmdlne-dD.c
- 609905807b ./gcc/testsuite/gcc.dg/cpp/cmdlne-dD-dM.c
-1600174935b ./gcc/testsuite/gcc.dg/cpp/cmdlne-dD-M.c
-3705836802b ./gcc/testsuite/gcc.dg/cpp/cmdlne-dI-M.c
-3088209084b ./gcc/testsuite/gcc.dg/cpp/cmdlne-dI-M.h
-1486055617b ./gcc/testsuite/gcc.dg/cpp/cmdlne-dM.c
-1101687822b ./gcc/testsuite/gcc.dg/cpp/cmdlne-dM-dD.c
- 932524367b ./gcc/testsuite/gcc.dg/cpp/cmdlne-dM-M.c
- 553926808b ./gcc/testsuite/gcc.dg/cpp/cmdlne-dN-M.c
-2953736128b ./gcc/testsuite/gcc.dg/cpp/cmdlne-P.c
-2647411665b ./gcc/testsuite/gcc.dg/cpp/cpp.exp
-3494213157b ./gcc/testsuite/gcc.dg/cpp/cxxcom1.c
-3135164554b ./gcc/testsuite/gcc.dg/cpp/cxxcom2.c
-2496170433b ./gcc/testsuite/gcc.dg/cpp/defined.c
-3663773136b ./gcc/testsuite/gcc.dg/cpp/defined_trad.c
-1438288565b ./gcc/testsuite/gcc.dg/cpp/digraph1.c
-2968203420b ./gcc/testsuite/gcc.dg/cpp/digraph2.c
-2068680422b ./gcc/testsuite/gcc.dg/cpp/digraphs.c
-1984293489b ./gcc/testsuite/gcc.dg/cpp/direct2.c
-3678821918b ./gcc/testsuite/gcc.dg/cpp/direct2s.c
-3290053048b ./gcc/testsuite/gcc.dg/cpp/directiv.c
-3129493545b ./gcc/testsuite/gcc.dg/cpp/endif.c
-3479505545b ./gcc/testsuite/gcc.dg/cpp/endif.h
-2483248350b ./gcc/testsuite/gcc.dg/cpp/escape-1.c
-1730195871b ./gcc/testsuite/gcc.dg/cpp/escape-2.c
-3767981014b ./gcc/testsuite/gcc.dg/cpp/escape.c
-2697913940b ./gcc/testsuite/gcc.dg/cpp/extratokens.c
- 905736b ./gcc/testsuite/gcc.dg/cpp/fpreprocessed.c
-3280737784b ./gcc/testsuite/gcc.dg/cpp/gnuc89.c
- 836196340b ./gcc/testsuite/gcc.dg/cpp/gnuc89-pedantic.c
-1263189585b ./gcc/testsuite/gcc.dg/cpp/gnuc99.c
-1601787549b ./gcc/testsuite/gcc.dg/cpp/gnuc99-pedantic.c
-4214308249b ./gcc/testsuite/gcc.dg/cpp/hash1.c
-1903615326b ./gcc/testsuite/gcc.dg/cpp/hash2.c
-2366342564b ./gcc/testsuite/gcc.dg/cpp/ident.c
-1133669485b ./gcc/testsuite/gcc.dg/cpp/if-1.c
-3352628668b ./gcc/testsuite/gcc.dg/cpp/if-2.c
-1439970428b ./gcc/testsuite/gcc.dg/cpp/if-3.c
- 489101197b ./gcc/testsuite/gcc.dg/cpp/if-4.c
- 882715641b ./gcc/testsuite/gcc.dg/cpp/if-5.c
-3507076303b ./gcc/testsuite/gcc.dg/cpp/if-cexp.c
-2728498877b ./gcc/testsuite/gcc.dg/cpp/if-mop.c
-1281382817b ./gcc/testsuite/gcc.dg/cpp/if-mpar.c
-3079188871b ./gcc/testsuite/gcc.dg/cpp/if-oppr.c
-1490350403b ./gcc/testsuite/gcc.dg/cpp/if-paren.c
-3952218044b ./gcc/testsuite/gcc.dg/cpp/if-sc.c
-2598999845b ./gcc/testsuite/gcc.dg/cpp/if-shift.c
-3593199515b ./gcc/testsuite/gcc.dg/cpp/if-unary.c
-2159210260b ./gcc/testsuite/gcc.dg/cpp/include1.c
-2421188667b ./gcc/testsuite/gcc.dg/cpp/include2.c
- 104604027b ./gcc/testsuite/gcc.dg/cpp/lexident.c
-2395885746b ./gcc/testsuite/gcc.dg/cpp/lexnum.c
-3213919551b ./gcc/testsuite/gcc.dg/cpp/lexstrng.c
-3897829843b ./gcc/testsuite/gcc.dg/cpp/line1.c
- 100687188b ./gcc/testsuite/gcc.dg/cpp/line2.c
- 567370415b ./gcc/testsuite/gcc.dg/cpp/line3.c
-1626475943b ./gcc/testsuite/gcc.dg/cpp/line4.c
-4294705052b ./gcc/testsuite/gcc.dg/cpp/line5.c
-1379729851b ./gcc/testsuite/gcc.dg/cpp/macro10.c
-3340222164b ./gcc/testsuite/gcc.dg/cpp/macro11.c
- 271504116b ./gcc/testsuite/gcc.dg/cpp/macro1.c
-4270051746b ./gcc/testsuite/gcc.dg/cpp/macro2.c
-2969168869b ./gcc/testsuite/gcc.dg/cpp/macro3.c
-1188431715b ./gcc/testsuite/gcc.dg/cpp/macro4.c
-1628527586b ./gcc/testsuite/gcc.dg/cpp/macro5.c
-2368380713b ./gcc/testsuite/gcc.dg/cpp/macro6.c
-2072551274b ./gcc/testsuite/gcc.dg/cpp/macro7.c
- 613805223b ./gcc/testsuite/gcc.dg/cpp/macro8.c
-2926705982b ./gcc/testsuite/gcc.dg/cpp/macro9.c
- 5175037b ./gcc/testsuite/gcc.dg/cpp/macsyntx.c
-3610840456b ./gcc/testsuite/gcc.dg/cpp/mi1.c
-4261701187b ./gcc/testsuite/gcc.dg/cpp/mi1cc.h
- 419074706b ./gcc/testsuite/gcc.dg/cpp/mi1c.h
-3904566528b ./gcc/testsuite/gcc.dg/cpp/mi1nd.h
-3410643645b ./gcc/testsuite/gcc.dg/cpp/mi1ndp.h
-2792742846b ./gcc/testsuite/gcc.dg/cpp/mi1x.h
-2971656236b ./gcc/testsuite/gcc.dg/cpp/mi2a.h
-2249557715b ./gcc/testsuite/gcc.dg/cpp/mi2b.h
-2949078889b ./gcc/testsuite/gcc.dg/cpp/mi2.c
- 975601727b ./gcc/testsuite/gcc.dg/cpp/mi2c.h
-1340631459b ./gcc/testsuite/gcc.dg/cpp/mi3.c
-3410155219b ./gcc/testsuite/gcc.dg/cpp/mi3.def
-1784999780b ./gcc/testsuite/gcc.dg/cpp/mi3.h
-3722098684b ./gcc/testsuite/gcc.dg/cpp/mi4.c
-1150462829b ./gcc/testsuite/gcc.dg/cpp/mi5.c
-1358227252b ./gcc/testsuite/gcc.dg/cpp/mi6a.h
- 641332290b ./gcc/testsuite/gcc.dg/cpp/mi6b.h
-1142195235b ./gcc/testsuite/gcc.dg/cpp/mi6.c
-4070915278b ./gcc/testsuite/gcc.dg/cpp/mi6c.h
-1337479900b ./gcc/testsuite/gcc.dg/cpp/mi6d.h
- 509977090b ./gcc/testsuite/gcc.dg/cpp/mi6e.h
- 68499164b ./gcc/testsuite/gcc.dg/cpp/multiline.c
-2266859121b ./gcc/testsuite/gcc.dg/cpp/paste10.c
-4285709590b ./gcc/testsuite/gcc.dg/cpp/paste11.c
-3149837578b ./gcc/testsuite/gcc.dg/cpp/paste12.c
-3165908728b ./gcc/testsuite/gcc.dg/cpp/paste1.c
-1864172813b ./gcc/testsuite/gcc.dg/cpp/paste2.c
-3026273649b ./gcc/testsuite/gcc.dg/cpp/paste3.c
-3384566195b ./gcc/testsuite/gcc.dg/cpp/paste4.c
-4196513421b ./gcc/testsuite/gcc.dg/cpp/paste5.c
-3141633537b ./gcc/testsuite/gcc.dg/cpp/paste6.c
-2441365564b ./gcc/testsuite/gcc.dg/cpp/paste7.c
-1061671229b ./gcc/testsuite/gcc.dg/cpp/paste8.c
-2408632284b ./gcc/testsuite/gcc.dg/cpp/paste9.c
-1054364467b ./gcc/testsuite/gcc.dg/cpp/poison.c
- 858950276b ./gcc/testsuite/gcc.dg/cpp/pragma-1.c
-3534493797b ./gcc/testsuite/gcc.dg/cpp/_Pragma1.c
-2473416313b ./gcc/testsuite/gcc.dg/cpp/pragma-2.c
-4186091043b ./gcc/testsuite/gcc.dg/cpp/_Pragma2.c
-1230813557b ./gcc/testsuite/gcc.dg/cpp/_Pragma3.c
-3384939096b ./gcc/testsuite/gcc.dg/cpp/_Pragma4.c
-1107840471b ./gcc/testsuite/gcc.dg/cpp/redef1.c
-1601641321b ./gcc/testsuite/gcc.dg/cpp/redef2.c
-2020720031b ./gcc/testsuite/gcc.dg/cpp/skipping2.c
-3846911977b ./gcc/testsuite/gcc.dg/cpp/skipping.c
-3873271528b ./gcc/testsuite/gcc.dg/cpp/spacing1.c
-1299147601b ./gcc/testsuite/gcc.dg/cpp/spacing2.c
-3081823659b ./gcc/testsuite/gcc.dg/cpp/strify1.c
-3973832195b ./gcc/testsuite/gcc.dg/cpp/strify2.c
-2418211010b ./gcc/testsuite/gcc.dg/cpp/strify3.c
-2496189814b ./gcc/testsuite/gcc.dg/cpp/strp1.c
-3609546715b ./gcc/testsuite/gcc.dg/cpp/strp2.c
-3648062425b ./gcc/testsuite/gcc.dg/cpp/syshdr1.h
- 930452060b ./gcc/testsuite/gcc.dg/cpp/syshdr2.h
-2075703559b ./gcc/testsuite/gcc.dg/cpp/syshdr.c
-3898065321b ./gcc/testsuite/gcc.dg/cpp/syshdr.h
-3033820257b ./gcc/testsuite/gcc.dg/cpp/sysmac1.c
-2994610141b ./gcc/testsuite/gcc.dg/cpp/sysmac2.c
-3021818451b ./gcc/testsuite/gcc.dg/cpp/tr-define.c
- 298013196b ./gcc/testsuite/gcc.dg/cpp/tr-direct.c
- 580041869b ./gcc/testsuite/gcc.dg/cpp/trigraphs.c
-3954705973b ./gcc/testsuite/gcc.dg/cpp/tr-paste.c
- 56672469b ./gcc/testsuite/gcc.dg/cpp/tr-sign.c
-2430481737b ./gcc/testsuite/gcc.dg/cpp/tr-str.c
-2720640173b ./gcc/testsuite/gcc.dg/cpp/tr-warn1.c
-4214944447b ./gcc/testsuite/gcc.dg/cpp/tr-warn2.c
-3053015314b ./gcc/testsuite/gcc.dg/cpp/tr-warn3.c
-2634569795b ./gcc/testsuite/gcc.dg/cpp/tr-warn4.c
- 733328423b ./gcc/testsuite/gcc.dg/cpp/tr-warn5.c
- 880495829b ./gcc/testsuite/gcc.dg/cpp/tr-warn6.c
-2894747317b ./gcc/testsuite/gcc.dg/cpp/uchar-1.c
-1961440147b ./gcc/testsuite/gcc.dg/cpp/uchar-2.c
-2806339500b ./gcc/testsuite/gcc.dg/cpp/uchar-3.c
-3156619494b ./gcc/testsuite/gcc.dg/cpp/ucs.c
-1271068491b ./gcc/testsuite/gcc.dg/cpp/unc1.c
-2985690540b ./gcc/testsuite/gcc.dg/cpp/unc2.c
- 479621763b ./gcc/testsuite/gcc.dg/cpp/unc3.c
-1549705287b ./gcc/testsuite/gcc.dg/cpp/unc4.c
-3474810570b ./gcc/testsuite/gcc.dg/cpp/undef1.c
-1052162081b ./gcc/testsuite/gcc.dg/cpp/undef2.c
-1278828881b ./gcc/testsuite/gcc.dg/cpp/vararg1.c
- 270851301b ./gcc/testsuite/gcc.dg/cpp/vararg2.c
- 203701001b ./gcc/testsuite/gcc.dg/cpp/vararg3.c
-2222858341b ./gcc/testsuite/gcc.dg/cpp/vararg4.c
-3684840524b ./gcc/testsuite/gcc.dg/cpp/wchar-1.c
-2112571638b ./gcc/testsuite/gcc.dg/cpp/widestr1.c
-1685485063b ./gcc/testsuite/gcc.dg/cpp/Wtrigraphs.c
-2478073469b ./gcc/testsuite/gcc.dg/debug/20000503-1.c
-1850073884b ./gcc/testsuite/gcc.dg/debug/20010207-1.c
-2575589968b ./gcc/testsuite/gcc.dg/debug/20011223-1.c
-3480555031b ./gcc/testsuite/gcc.dg/debug/20020104-2.c
- 465470758b ./gcc/testsuite/gcc.dg/debug/20020220-1.c
- 38521003b ./gcc/testsuite/gcc.dg/debug/20020224-1.c
-1897254689b ./gcc/testsuite/gcc.dg/debug/20020327-1.c
-2095797855b ./gcc/testsuite/gcc.dg/debug/debug-1.c
- 936371752b ./gcc/testsuite/gcc.dg/debug/debug-2.c
-1466203416b ./gcc/testsuite/gcc.dg/debug/debug-3.c
- 591803753b ./gcc/testsuite/gcc.dg/debug/debug-4.c
- 524177325b ./gcc/testsuite/gcc.dg/debug/debug-5.c
-4017752601b ./gcc/testsuite/gcc.dg/debug/debug-6.c
-2820451029b ./gcc/testsuite/gcc.dg/debug/debug.exp
-3154398188b ./gcc/testsuite/gcc.dg/debug/dwarf2-1.c
-3551380716b ./gcc/testsuite/gcc.dg/debug/dwarf2-2.c
-1865154101b ./gcc/testsuite/gcc.dg/debug/trivial.c
-2108424497b ./gcc/testsuite/gcc.dg/decl-1.c
-2106699188b ./gcc/testsuite/gcc.dg/deprecated.c
- 462220244b ./gcc/testsuite/gcc.dg/dg.exp
-3005671194b ./gcc/testsuite/gcc.dg/divbyzero.c
-3732188130b ./gcc/testsuite/gcc.dg/dll-1.c
-2397785716b ./gcc/testsuite/gcc.dg/dll-2.c
-4107998098b ./gcc/testsuite/gcc.dg/dll-3.c
- 38849204b ./gcc/testsuite/gcc.dg/dll-4.c
-2135186629b ./gcc/testsuite/gcc.dg/enum1.c
-2635594155b ./gcc/testsuite/gcc.dg/ext-glob.c
-3222632325b ./gcc/testsuite/gcc.dg/format/array-1.c
-1862455428b ./gcc/testsuite/gcc.dg/format/attr-1.c
-3131101897b ./gcc/testsuite/gcc.dg/format/attr-2.c
- 884013987b ./gcc/testsuite/gcc.dg/format/attr-3.c
-1282524185b ./gcc/testsuite/gcc.dg/format/attr-4.c
-3309516915b ./gcc/testsuite/gcc.dg/format/attr-5.c
-1342273591b ./gcc/testsuite/gcc.dg/format/attr-6.c
-3314290167b ./gcc/testsuite/gcc.dg/format/attr-7.c
-2805119685b ./gcc/testsuite/gcc.dg/format/branch-1.c
- 753102824b ./gcc/testsuite/gcc.dg/format/builtin-1.c
-1458645895b ./gcc/testsuite/gcc.dg/format/c90-printf-1.c
-2152399739b ./gcc/testsuite/gcc.dg/format/c90-printf-2.c
- 576410250b ./gcc/testsuite/gcc.dg/format/c90-printf-3.c
-1600984968b ./gcc/testsuite/gcc.dg/format/c90-scanf-1.c
- 461393812b ./gcc/testsuite/gcc.dg/format/c90-scanf-2.c
-2607652439b ./gcc/testsuite/gcc.dg/format/c90-scanf-3.c
-2060901849b ./gcc/testsuite/gcc.dg/format/c90-scanf-4.c
-3830240101b ./gcc/testsuite/gcc.dg/format/c90-strftime-1.c
- 908665911b ./gcc/testsuite/gcc.dg/format/c90-strftime-2.c
-2447449665b ./gcc/testsuite/gcc.dg/format/c94-printf-1.c
-1772682986b ./gcc/testsuite/gcc.dg/format/c94-scanf-1.c
-2398886219b ./gcc/testsuite/gcc.dg/format/c99-printf-1.c
-1982196060b ./gcc/testsuite/gcc.dg/format/c99-printf-2.c
-3845709577b ./gcc/testsuite/gcc.dg/format/c99-printf-3.c
- 842927031b ./gcc/testsuite/gcc.dg/format/c99-scanf-1.c
-3735460767b ./gcc/testsuite/gcc.dg/format/c99-scanf-2.c
-3432916856b ./gcc/testsuite/gcc.dg/format/c99-scanf-3.c
-3177298628b ./gcc/testsuite/gcc.dg/format/c99-strftime-1.c
-2090637496b ./gcc/testsuite/gcc.dg/format/c99-strftime-2.c
-2345337374b ./gcc/testsuite/gcc.dg/format/diag-1.c
-1250738052b ./gcc/testsuite/gcc.dg/format/errmk-1.c
-1927556152b ./gcc/testsuite/gcc.dg/format/ext-1.c
- 230043853b ./gcc/testsuite/gcc.dg/format/ext-2.c
-3735744313b ./gcc/testsuite/gcc.dg/format/ext-3.c
-2712114535b ./gcc/testsuite/gcc.dg/format/ext-4.c
-3870005152b ./gcc/testsuite/gcc.dg/format/ext-5.c
-4154438977b ./gcc/testsuite/gcc.dg/format/ext-6.c
- 174407969b ./gcc/testsuite/gcc.dg/format/format.exp
-2650327793b ./gcc/testsuite/gcc.dg/format/format.h
-3030055438b ./gcc/testsuite/gcc.dg/format/miss-1.c
- 58040071b ./gcc/testsuite/gcc.dg/format/miss-2.c
-1680800961b ./gcc/testsuite/gcc.dg/format/multattr-1.c
-3511814217b ./gcc/testsuite/gcc.dg/format/multattr-2.c
-1621224881b ./gcc/testsuite/gcc.dg/format/multattr-3.c
-2482792163b ./gcc/testsuite/gcc.dg/format/no-exargs-1.c
-3432514252b ./gcc/testsuite/gcc.dg/format/no-exargs-2.c
-2335984266b ./gcc/testsuite/gcc.dg/format/nonlit-1.c
-3055177111b ./gcc/testsuite/gcc.dg/format/nonlit-2.c
- 449451912b ./gcc/testsuite/gcc.dg/format/nonlit-3.c
-4199776146b ./gcc/testsuite/gcc.dg/format/no-y2k-1.c
-3652642152b ./gcc/testsuite/gcc.dg/format/plus-1.c
-2673114039b ./gcc/testsuite/gcc.dg/format/sec-1.c
-1815893280b ./gcc/testsuite/gcc.dg/format/strfmon-1.c
- 821372176b ./gcc/testsuite/gcc.dg/format/va-1.c
- 358822374b ./gcc/testsuite/gcc.dg/format/warnll-1.c
-3962912739b ./gcc/testsuite/gcc.dg/format/xopen-1.c
- 73044124b ./gcc/testsuite/gcc.dg/format/z-1.c
- 745582715b ./gcc/testsuite/gcc.dg/gnu89-init-1.c
- 339065893b ./gcc/testsuite/gcc.dg/gnu89-init-2.c
-1770671475b ./gcc/testsuite/gcc.dg/gnu99-init-1.c
- 885923224b ./gcc/testsuite/gcc.dg/i386-387-1.c
-4204057333b ./gcc/testsuite/gcc.dg/i386-387-2.c
-3371905361b ./gcc/testsuite/gcc.dg/i386-bitfield1.c
-2049230625b ./gcc/testsuite/gcc.dg/i386-mmx-1.c
-3973906625b ./gcc/testsuite/gcc.dg/i386-mmx-2.c
-2923520039b ./gcc/testsuite/gcc.dg/i386-sse-1.c
-1935024742b ./gcc/testsuite/gcc.dg/i386-sse-2.c
-2407665653b ./gcc/testsuite/gcc.dg/i386-sse-3.c
- 646600080b ./gcc/testsuite/gcc.dg/ia64-asm-1.c
-2995485298b ./gcc/testsuite/gcc.dg/ia64-sync-1.c
- 72205644b ./gcc/testsuite/gcc.dg/ia64-sync-2.c
-1374850312b ./gcc/testsuite/gcc.dg/ifelse-1.c
-4085178572b ./gcc/testsuite/gcc.dg/iftrap-1.c
- 448418366b ./gcc/testsuite/gcc.dg/iftrap-2.c
-3685495880b ./gcc/testsuite/gcc.dg/inline-1.c
- 6005157b ./gcc/testsuite/gcc.dg/inline-2.c
- 247919548b ./gcc/testsuite/gcc.dg/loop-1.c
-2954420820b ./gcc/testsuite/gcc.dg/mmix-1.c
-2663557248b ./gcc/testsuite/gcc.dg/m-un-1.c
-2341407016b ./gcc/testsuite/gcc.dg/m-un-2.c
- 167742958b ./gcc/testsuite/gcc.dg/no-builtin-1.c
-2208318132b ./gcc/testsuite/gcc.dg/noncompile/20000901-1.c
-3562764821b ./gcc/testsuite/gcc.dg/noncompile/20001228-1.c
- 677199841b ./gcc/testsuite/gcc.dg/noncompile/20010425-1.c
- 100652056b ./gcc/testsuite/gcc.dg/noncompile/20010524-1.c
- 292530438b ./gcc/testsuite/gcc.dg/noncompile/20011025-1.c
-3164469142b ./gcc/testsuite/gcc.dg/noncompile/20020130-1.c
-3055182962b ./gcc/testsuite/gcc.dg/noncompile/20020207-1.c
-3889627347b ./gcc/testsuite/gcc.dg/noncompile/20020213-1.c
-1457569280b ./gcc/testsuite/gcc.dg/noncompile/20020220-1.c
-2964160251b ./gcc/testsuite/gcc.dg/noncompile/920507-1.c
-2161867266b ./gcc/testsuite/gcc.dg/noncompile/920616-2.c
-1449844754b ./gcc/testsuite/gcc.dg/noncompile/920721-2.c
-2834384944b ./gcc/testsuite/gcc.dg/noncompile/920824-1.c
-3955955814b ./gcc/testsuite/gcc.dg/noncompile/920923-1.c
-3162370830b ./gcc/testsuite/gcc.dg/noncompile/921102-1.c
-2258888666b ./gcc/testsuite/gcc.dg/noncompile/921116-1.c
-4097035630b ./gcc/testsuite/gcc.dg/noncompile/930301-1.c
- 840634782b ./gcc/testsuite/gcc.dg/noncompile/930622-1.c
-3660680341b ./gcc/testsuite/gcc.dg/noncompile/930622-2.c
- 181482966b ./gcc/testsuite/gcc.dg/noncompile/930714-1.c
-3515814095b ./gcc/testsuite/gcc.dg/noncompile/931203-1.c
-3543956028b ./gcc/testsuite/gcc.dg/noncompile/940112-1.c
-3064722803b ./gcc/testsuite/gcc.dg/noncompile/940227-1.c
- 667278578b ./gcc/testsuite/gcc.dg/noncompile/950825-1.c
- 759990906b ./gcc/testsuite/gcc.dg/noncompile/950921-1.c
-1191362120b ./gcc/testsuite/gcc.dg/noncompile/951123-1.c
-3560178109b ./gcc/testsuite/gcc.dg/noncompile/971104-1.c
-3188649114b ./gcc/testsuite/gcc.dg/noncompile/990416-1.c
-3596296296b ./gcc/testsuite/gcc.dg/noncompile/const-ll-1.c
-1128187562b ./gcc/testsuite/gcc.dg/noncompile/init-1.c
-2927938029b ./gcc/testsuite/gcc.dg/noncompile/init-2.c
-4011814030b ./gcc/testsuite/gcc.dg/noncompile/init-3.c
- 835046904b ./gcc/testsuite/gcc.dg/noncompile/invalid_asm.c
-3441206096b ./gcc/testsuite/gcc.dg/noncompile/label-lineno-1.c
- 348329041b ./gcc/testsuite/gcc.dg/noncompile/noncompile.exp
-3105423709b ./gcc/testsuite/gcc.dg/noncompile/redecl-1.c
-1781438824b ./gcc/testsuite/gcc.dg/noncompile/va-arg-1.c
-3381135030b ./gcc/testsuite/gcc.dg/noncompile/voidparam-1.c
-1329170478b ./gcc/testsuite/gcc.dg/noreturn-1.c
-2267400179b ./gcc/testsuite/gcc.dg/noreturn-2.c
-1222476594b ./gcc/testsuite/gcc.dg/noreturn-3.c
-4260549149b ./gcc/testsuite/gcc.dg/noreturn-4.c
-1662299957b ./gcc/testsuite/gcc.dg/pack-test-1.c
-2754082325b ./gcc/testsuite/gcc.dg/pack-test-1.h
-2875409621b ./gcc/testsuite/gcc.dg/pack-test-2.c
-3395691298b ./gcc/testsuite/gcc.dg/pragma-align.c
-2976918557b ./gcc/testsuite/gcc.dg/pragma-darwin.c
- 967979463b ./gcc/testsuite/gcc.dg/pragma-ep-1.c
- 689657683b ./gcc/testsuite/gcc.dg/pragma-ep-2.c
- 375277958b ./gcc/testsuite/gcc.dg/pragma-ep-3.c
- 18511022b ./gcc/testsuite/gcc.dg/pragma-re-1.c
-3911201539b ./gcc/testsuite/gcc.dg/pragma-re-2.c
-3011001240b ./gcc/testsuite/gcc.dg/qual-return-1.c
-4111880764b ./gcc/testsuite/gcc.dg/qual-return-2.c
-2426423235b ./gcc/testsuite/gcc.dg/README
-2127458656b ./gcc/testsuite/gcc.dg/return-type-1.c
-3519355790b ./gcc/testsuite/gcc.dg/return-type-2.c
-3862146754b ./gcc/testsuite/gcc.dg/sequence-pt-1.c
-3997091992b ./gcc/testsuite/gcc.dg/setjmp-1.c
- 802040009b ./gcc/testsuite/gcc.dg/sparc-ret.c
-1993113484b ./gcc/testsuite/gcc.dg/special/20000419-2.c
-3430419731b ./gcc/testsuite/gcc.dg/special/alias-1.c
- 7306739b ./gcc/testsuite/gcc.dg/special/alias-2.c
- 371725929b ./gcc/testsuite/gcc.dg/special/ecos.exp
-4212112354b ./gcc/testsuite/gcc.dg/special/gcsec-1.c
- 274062869b ./gcc/testsuite/gcc.dg/special/special.exp
-3422703148b ./gcc/testsuite/gcc.dg/special/weak-1a.c
-2943372070b ./gcc/testsuite/gcc.dg/special/weak-1.c
- 389288806b ./gcc/testsuite/gcc.dg/special/weak-2a.c
-3422703148b ./gcc/testsuite/gcc.dg/special/weak-2b.c
-3142421222b ./gcc/testsuite/gcc.dg/special/weak-2.c
-2222470584b ./gcc/testsuite/gcc.dg/special/wkali-1.c
- 206085145b ./gcc/testsuite/gcc.dg/special/wkali-2a.c
-2277202182b ./gcc/testsuite/gcc.dg/special/wkali-2b.c
-3142421222b ./gcc/testsuite/gcc.dg/special/wkali-2.c
-1648410279b ./gcc/testsuite/gcc.dg/splet-1.c
- 276809676b ./gcc/testsuite/gcc.dg/struct-alias-1.c
-2735438447b ./gcc/testsuite/gcc.dg/struct-by-value-1.c
- 935614314b ./gcc/testsuite/gcc.dg/struct-ret-1.c
-1932500816b ./gcc/testsuite/gcc.dg/struct-ret-2.c
- 548999932b ./gcc/testsuite/gcc.dg/switch-1.c
-1141366394b ./gcc/testsuite/gcc.dg/trunc-1.c
-1890682509b ./gcc/testsuite/gcc.dg/typedef-init.c
-1892637986b ./gcc/testsuite/gcc.dg/typeof-1.c
-4017319276b ./gcc/testsuite/gcc.dg/typeof-2.c
-1860858242b ./gcc/testsuite/gcc.dg/ultrasp1.c
- 789972216b ./gcc/testsuite/gcc.dg/ultrasp2.c
-2708772692b ./gcc/testsuite/gcc.dg/ultrasp3.c
-1890424464b ./gcc/testsuite/gcc.dg/ultrasp4.c
-2258658308b ./gcc/testsuite/gcc.dg/uninit-1.c
- 608086310b ./gcc/testsuite/gcc.dg/uninit-2.c
-2219873069b ./gcc/testsuite/gcc.dg/uninit-3.c
-3153724678b ./gcc/testsuite/gcc.dg/uninit-4.c
-2761916267b ./gcc/testsuite/gcc.dg/uninit-5.c
-4187609695b ./gcc/testsuite/gcc.dg/uninit-6.c
-3846997492b ./gcc/testsuite/gcc.dg/uninit-8.c
- 390912088b ./gcc/testsuite/gcc.dg/uninit-9.c
-4065754561b ./gcc/testsuite/gcc.dg/uninit-A.c
-3967573468b ./gcc/testsuite/gcc.dg/uninit-B.c
- 977726966b ./gcc/testsuite/gcc.dg/unused-1.c
-3484455791b ./gcc/testsuite/gcc.dg/unused-2.c
- 865910481b ./gcc/testsuite/gcc.dg/unused-3.c
-3706472995b ./gcc/testsuite/gcc.dg/va-arg-1.c
-2932877249b ./gcc/testsuite/gcc.dg/verbose-asm.c
-3017845162b ./gcc/testsuite/gcc.dg/vla-2.c
-2427295047b ./gcc/testsuite/gcc.dg/vla-init-1.c
-2228363679b ./gcc/testsuite/gcc.dg/wchar_t-1.c
- 943771070b ./gcc/testsuite/gcc.dg/Wconversion.c
-2603701000b ./gcc/testsuite/gcc.dg/weak-1.c
-2107795305b ./gcc/testsuite/gcc.dg/weak-2.c
-2916280352b ./gcc/testsuite/gcc.dg/weak-3.c
- 190723555b ./gcc/testsuite/gcc.dg/weak-4.c
- 176100891b ./gcc/testsuite/gcc.dg/weak-5.c
-1022686552b ./gcc/testsuite/gcc.dg/weak-6.c
- 789089149b ./gcc/testsuite/gcc.dg/weak-7.c
-2849791540b ./gcc/testsuite/gcc.dg/weak-9.c
- 455748560b ./gcc/testsuite/gcc.dg/wint_t-1.c
-3364645726b ./gcc/testsuite/gcc.dg/Wlarger-than.c
-3791055151b ./gcc/testsuite/gcc.dg/Wparentheses-1.c
-3316229121b ./gcc/testsuite/gcc.dg/Wreturn-type2.c
-2809247827b ./gcc/testsuite/gcc.dg/Wreturn-type.c
-3907876407b ./gcc/testsuite/gcc.dg/Wshadow-1.c
-3928913400b ./gcc/testsuite/gcc.dg/Wswitch-2.c
- 49151727b ./gcc/testsuite/gcc.dg/Wswitch.c
-1217899241b ./gcc/testsuite/gcc.dg/wtr-aggr-init-1.c
-3348015737b ./gcc/testsuite/gcc.dg/wtr-conversion-1.c
-3943648306b ./gcc/testsuite/gcc.dg/wtr-escape-1.c
-1258505090b ./gcc/testsuite/gcc.dg/wtr-int-type-1.c
-2927503050b ./gcc/testsuite/gcc.dg/wtr-label-1.c
-2138480914b ./gcc/testsuite/gcc.dg/wtr-static-1.c
-3063513729b ./gcc/testsuite/gcc.dg/wtr-strcat-1.c
-2559544004b ./gcc/testsuite/gcc.dg/wtr-suffix-1.c
-2920370985b ./gcc/testsuite/gcc.dg/wtr-switch-1.c
- 569838363b ./gcc/testsuite/gcc.dg/wtr-unary-plus-1.c
-1007453610b ./gcc/testsuite/gcc.dg/wtr-union-init-1.c
-1817815277b ./gcc/testsuite/gcc.dg/wtr-union-init-2.c
-3147738885b ./gcc/testsuite/gcc.dg/wtr-union-init-3.c
-2078992029b ./gcc/testsuite/gcc.dg/Wunknownprag.c
-1674197654b ./gcc/testsuite/gcc.dg/Wunreachable-1.c
-3581949676b ./gcc/testsuite/gcc.dg/Wunreachable-2.c
-1769759078b ./gcc/testsuite/gcc.misc-tests/acker1.c
-1443030966b ./gcc/testsuite/gcc.misc-tests/acker1.exp
- 278378178b ./gcc/testsuite/gcc.misc-tests/arm-isr.c
-1193019601b ./gcc/testsuite/gcc.misc-tests/arm-isr.exp
-2075376861b ./gcc/testsuite/gcc.misc-tests/bprob-1.c
-3293027214b ./gcc/testsuite/gcc.misc-tests/bprob-2.c
-2453911973b ./gcc/testsuite/gcc.misc-tests/bprob.exp
- 865542926b ./gcc/testsuite/gcc.misc-tests/dg-10.c
-2063159250b ./gcc/testsuite/gcc.misc-tests/dg-11.c
- 33043738b ./gcc/testsuite/gcc.misc-tests/dg-12.c
- 730919505b ./gcc/testsuite/gcc.misc-tests/dg-1.c
-3096773472b ./gcc/testsuite/gcc.misc-tests/dg-2.c
-3661115972b ./gcc/testsuite/gcc.misc-tests/dg-3.c
-3160178728b ./gcc/testsuite/gcc.misc-tests/dg-4.c
-2494962233b ./gcc/testsuite/gcc.misc-tests/dg-5.c
-2938473505b ./gcc/testsuite/gcc.misc-tests/dg-6.c
-3402935282b ./gcc/testsuite/gcc.misc-tests/dg-7.c
-1050718588b ./gcc/testsuite/gcc.misc-tests/dg-8.c
-1666656352b ./gcc/testsuite/gcc.misc-tests/dg-9.c
-1706908915b ./gcc/testsuite/gcc.misc-tests/dg-test.exp
-1483515495b ./gcc/testsuite/gcc.misc-tests/dhry.c
-1824463967b ./gcc/testsuite/gcc.misc-tests/dhry.exp
- 208907585b ./gcc/testsuite/gcc.misc-tests/dhry.h
- 779830061b ./gcc/testsuite/gcc.misc-tests/gcov-1.c
-3193043874b ./gcc/testsuite/gcc.misc-tests/gcov-2.c
-4211514085b ./gcc/testsuite/gcc.misc-tests/gcov-3.c
- 527032712b ./gcc/testsuite/gcc.misc-tests/gcov-4b.c
-3346981345b ./gcc/testsuite/gcc.misc-tests/gcov-4b.x
-3919110722b ./gcc/testsuite/gcc.misc-tests/gcov-4.c
- 695277662b ./gcc/testsuite/gcc.misc-tests/gcov-5b.c
-3346981345b ./gcc/testsuite/gcc.misc-tests/gcov-5b.x
- 790797496b ./gcc/testsuite/gcc.misc-tests/gcov-6.c
-2262587727b ./gcc/testsuite/gcc.misc-tests/gcov-6.x
-2647301947b ./gcc/testsuite/gcc.misc-tests/gcov-7.c
-2262587727b ./gcc/testsuite/gcc.misc-tests/gcov-7.x
- 283921131b ./gcc/testsuite/gcc.misc-tests/gcov.exp
-1258478426b ./gcc/testsuite/gcc.misc-tests/i386-pf-3dnow-1.c
-3346801828b ./gcc/testsuite/gcc.misc-tests/i386-pf-athlon-1.c
-2266643451b ./gcc/testsuite/gcc.misc-tests/i386-pf-none-1.c
-2697809529b ./gcc/testsuite/gcc.misc-tests/i386-pf-sse-1.c
-2256410310b ./gcc/testsuite/gcc.misc-tests/i386-prefetch.exp
-1392461362b ./gcc/testsuite/gcc.misc-tests/linkage.exp
-2071381157b ./gcc/testsuite/gcc.misc-tests/linkage-x.c
-3975807378b ./gcc/testsuite/gcc.misc-tests/linkage-y.c
-2874350784b ./gcc/testsuite/gcc.misc-tests/matrix1.c
-1686589144b ./gcc/testsuite/gcc.misc-tests/matrix1.exp
-1813429392b ./gcc/testsuite/gcc.misc-tests/mg.c
-1868251641b ./gcc/testsuite/gcc.misc-tests/mg.exp
-1983153897b ./gcc/testsuite/gcc.misc-tests/sieve.c
-3220093576b ./gcc/testsuite/gcc.misc-tests/sieve.exp
-4235385594b ./gcc/testsuite/gcc.misc-tests/sort2.c
- 232815709b ./gcc/testsuite/gcc.misc-tests/sort2.exp
- 885716516b ./gcc/testsuite/g++.dg/abi/bitfield1.C
- 479436735b ./gcc/testsuite/g++.dg/abi/bitfield2.C
-3225280346b ./gcc/testsuite/g++.dg/abi/bitfield3.C
-1735502164b ./gcc/testsuite/g++.dg/abi/bitfield5.C
- 257517025b ./gcc/testsuite/g++.dg/abi/empty4.C
-2703592525b ./gcc/testsuite/g++.dg/abi/enum1.C
-3235702061b ./gcc/testsuite/g++.dg/abi/layout1.C
-4006829604b ./gcc/testsuite/g++.dg/abi/layout2.C
-2689331463b ./gcc/testsuite/g++.dg/abi/mangle11.C
- 356153643b ./gcc/testsuite/g++.dg/abi/mangle14.C
- 238964482b ./gcc/testsuite/g++.dg/abi/mangle17.C
-4166781498b ./gcc/testsuite/g++.dg/abi/mangle1.C
-4182318030b ./gcc/testsuite/g++.dg/abi/mangle2.C
-1755377648b ./gcc/testsuite/g++.dg/abi/mangle3.C
-3981957296b ./gcc/testsuite/g++.dg/abi/mangle4.C
-4052214936b ./gcc/testsuite/g++.dg/abi/mangle5.C
- 31392269b ./gcc/testsuite/g++.dg/abi/mangle6.C
-1724007624b ./gcc/testsuite/g++.dg/abi/mangle7.C
- 638258652b ./gcc/testsuite/g++.dg/abi/mangle8.C
-1969970486b ./gcc/testsuite/g++.dg/abi/offsetof.C
-2141080121b ./gcc/testsuite/g++.dg/abi/rtti1.C
-1053392201b ./gcc/testsuite/g++.dg/abi/vbase10.C
- 20126271b ./gcc/testsuite/g++.dg/abi/vbase1.C
-1286609512b ./gcc/testsuite/g++.dg/abi/vbase8-10.C
-3227029100b ./gcc/testsuite/g++.dg/abi/vbase8-21.C
-1921427599b ./gcc/testsuite/g++.dg/abi/vbase8-22.C
-3728366429b ./gcc/testsuite/g++.dg/abi/vbase8-4.C
-2997752155b ./gcc/testsuite/g++.dg/abi/vbase9.C
-4073115738b ./gcc/testsuite/g++.dg/abi/vthunk1.C
-1740237496b ./gcc/testsuite/g++.dg/debug/debug1.C
-1473360233b ./gcc/testsuite/g++.dg/debug/debug2.C
-4057306503b ./gcc/testsuite/g++.dg/debug/debug3.C
-4063448821b ./gcc/testsuite/g++.dg/debug/debug4.C
-2101587412b ./gcc/testsuite/g++.dg/debug/debug5.C
-2910185760b ./gcc/testsuite/g++.dg/debug/debug6.C
-2476891002b ./gcc/testsuite/g++.dg/debug/debug7.C
-1949293295b ./gcc/testsuite/g++.dg/debug/debug.exp
-1865154101b ./gcc/testsuite/g++.dg/debug/trivial.C
-2006018373b ./gcc/testsuite/g++.dg/dg.exp
- 65538524b ./gcc/testsuite/g++.dg/eh/ctor1.C
-3380022165b ./gcc/testsuite/g++.dg/eh/dead1.C
-2307599878b ./gcc/testsuite/g++.dg/eh/dtor1.C
-3289569863b ./gcc/testsuite/g++.dg/eh/filter1.C
-1460645953b ./gcc/testsuite/g++.dg/eh/filter2.C
- 507841710b ./gcc/testsuite/g++.dg/eh/loop1.C
-4035633334b ./gcc/testsuite/g++.dg/eh/omit-frame-pointer.C
-1888049158b ./gcc/testsuite/g++.dg/eh/registers1.C
-2204781248b ./gcc/testsuite/g++.dg/eh/spec1.C
- 985744667b ./gcc/testsuite/g++.dg/eh/synth1.C
-2213107508b ./gcc/testsuite/g++.dg/eh/template1.C
-3379396295b ./gcc/testsuite/g++.dg/eh/template2.C
-1789254796b ./gcc/testsuite/g++.dg/eh/unexpected1.C
- 880147168b ./gcc/testsuite/g++.dg/expr/cond1.C
- 10818138b ./gcc/testsuite/g++.dg/ext/align1.C
-4214519942b ./gcc/testsuite/g++.dg/ext/attrib1.C
-2242814507b ./gcc/testsuite/g++.dg/ext/attrib2.C
-2606851845b ./gcc/testsuite/g++.dg/ext/attrib3.C
-3822844850b ./gcc/testsuite/g++.dg/ext/attrib4.C
- 783893625b ./gcc/testsuite/g++.dg/ext/attrib5.C
-2703749043b ./gcc/testsuite/g++.dg/ext/conv1.C
-4165742225b ./gcc/testsuite/g++.dg/ext/forscope1.C
-4019239529b ./gcc/testsuite/g++.dg/ext/forscope2.C
-2832497986b ./gcc/testsuite/g++.dg/ext/instantiate1.C
-1033795910b ./gcc/testsuite/g++.dg/ext/instantiate2.C
- 631460058b ./gcc/testsuite/g++.dg/ext/instantiate3.C
- 433892339b ./gcc/testsuite/g++.dg/ext/lvalue1.C
-1765466377b ./gcc/testsuite/g++.dg/ext/member-attr.C
- 714299152b ./gcc/testsuite/g++.dg/ext/typedef-init.C
-3028501104b ./gcc/testsuite/g++.dg/ext/typeof1.C
-2139267109b ./gcc/testsuite/g++.dg/ext/typeof2.C
-3384117993b ./gcc/testsuite/g++.dg/ext/vla1.C
-4261072225b ./gcc/testsuite/g++.dg/ext/vlm1.C
- 546216042b ./gcc/testsuite/g++.dg/ext/vlm2.C
-2576905511b ./gcc/testsuite/g++.dg/inherit/access1.C
-3833575012b ./gcc/testsuite/g++.dg/inherit/access2.C
-3439912284b ./gcc/testsuite/g++.dg/inherit/base1.C
-2309234518b ./gcc/testsuite/g++.dg/inherit/namespace-as-base.C
-4167951109b ./gcc/testsuite/g++.dg/inherit/null1.C
-3799679971b ./gcc/testsuite/g++.dg/inherit/using1.C
-2391219706b ./gcc/testsuite/g++.dg/inherit/using3.C
-3967911027b ./gcc/testsuite/g++.dg/init/array1.C
-3157994593b ./gcc/testsuite/g++.dg/init/array2.C
-2628461993b ./gcc/testsuite/g++.dg/init/array4.C
- 267149531b ./gcc/testsuite/g++.dg/init/array5.C
-3220934948b ./gcc/testsuite/g++.dg/init/array7.C
- 486682064b ./gcc/testsuite/g++.dg/init/copy1.C
-1741245578b ./gcc/testsuite/g++.dg/init/dtor1.C
- 356489409b ./gcc/testsuite/g++.dg/init/dtor2.C
- 486760656b ./gcc/testsuite/g++.dg/init/elide1.C
-2797496870b ./gcc/testsuite/g++.dg/init/empty1.C
-2640181867b ./gcc/testsuite/g++.dg/init/init-ref1.C
-3275947242b ./gcc/testsuite/g++.dg/init/init-ref2.C
-1678560039b ./gcc/testsuite/g++.dg/init/new1.C
-4033502091b ./gcc/testsuite/g++.dg/init/new2.C
-1385694165b ./gcc/testsuite/g++.dg/init/pm1.C
- 766167426b ./gcc/testsuite/g++.dg/lookup/pretty1.C
- 684033142b ./gcc/testsuite/g++.dg/lookup/struct1.C
-3358174935b ./gcc/testsuite/g++.dg/lookup/using2.C
-3384907788b ./gcc/testsuite/g++.dg/lookup/using.C
- 421486798b ./gcc/testsuite/g++.dg/opt/alias1.C
-3198583204b ./gcc/testsuite/g++.dg/opt/alias2.C
-1878509122b ./gcc/testsuite/g++.dg/opt/anonunion1.C
- 845836056b ./gcc/testsuite/g++.dg/opt/asm1.C
-1484527337b ./gcc/testsuite/g++.dg/opt/cleanup1.C
-3120356664b ./gcc/testsuite/g++.dg/opt/conj1.C
-4054451892b ./gcc/testsuite/g++.dg/opt/conj2.C
-2033783153b ./gcc/testsuite/g++.dg/opt/const1.C
- 975231214b ./gcc/testsuite/g++.dg/opt/const2.C
-2113737922b ./gcc/testsuite/g++.dg/opt/cse1.C
-1501006084b ./gcc/testsuite/g++.dg/opt/cse2.C
-1685294627b ./gcc/testsuite/g++.dg/opt/dtor1.C
-3770486737b ./gcc/testsuite/g++.dg/opt/inline1.C
-2869206713b ./gcc/testsuite/g++.dg/opt/inline2.C
-3194356521b ./gcc/testsuite/g++.dg/opt/inline3.C
- 373643534b ./gcc/testsuite/g++.dg/opt/local1.C
-3146403914b ./gcc/testsuite/g++.dg/opt/longbranch1.C
-2026702440b ./gcc/testsuite/g++.dg/opt/mmx1.C
-2857034604b ./gcc/testsuite/g++.dg/opt/nrv1.C
-2448700667b ./gcc/testsuite/g++.dg/opt/nrv2.C
- 442892442b ./gcc/testsuite/g++.dg/opt/preinc1.C
-1496969096b ./gcc/testsuite/g++.dg/opt/ptrintsum1.C
- 571185401b ./gcc/testsuite/g++.dg/opt/reg-stack.C
-1557651694b ./gcc/testsuite/g++.dg/opt/reload1.C
-1124740865b ./gcc/testsuite/g++.dg/opt/static1.C
- 684782459b ./gcc/testsuite/g++.dg/opt/static2.C
-4154721541b ./gcc/testsuite/g++.dg/opt/thunk1.C
-4029726050b ./gcc/testsuite/g++.dg/opt/vt1.C
- 135165742b ./gcc/testsuite/g++.dg/opt/vtgc1.C
- 686527483b ./gcc/testsuite/g++.dg/other/access1.C
-3285252373b ./gcc/testsuite/g++.dg/other/anon2.C
- 681497421b ./gcc/testsuite/g++.dg/other/anon-struct.C
-1585173858b ./gcc/testsuite/g++.dg/other/anon-union.C
-1233509973b ./gcc/testsuite/g++.dg/other/array1.C
-2359273471b ./gcc/testsuite/g++.dg/other/big-struct.C
-2708764484b ./gcc/testsuite/g++.dg/other/classkey1.C
- 867943500b ./gcc/testsuite/g++.dg/other/component1.C
-4045861590b ./gcc/testsuite/g++.dg/other/const1.C
- 109747091b ./gcc/testsuite/g++.dg/other/const2.C
-3254620469b ./gcc/testsuite/g++.dg/other/copy1.C
-4162972212b ./gcc/testsuite/g++.dg/other/cxa-atexit1.C
-1287592684b ./gcc/testsuite/g++.dg/other/deprecated.C
-1127806654b ./gcc/testsuite/g++.dg/other/enum1.C
-3062339491b ./gcc/testsuite/g++.dg/other/error1.C
-4222650217b ./gcc/testsuite/g++.dg/other/error2.C
- 490611048b ./gcc/testsuite/g++.dg/other/error3.C
-2120952916b ./gcc/testsuite/g++.dg/other/exception-specification.C
-1698581993b ./gcc/testsuite/g++.dg/other/forscope1.C
-2764746133b ./gcc/testsuite/g++.dg/other/friend1.C
-2377020172b ./gcc/testsuite/g++.dg/other/gc1.C
-2096815409b ./gcc/testsuite/g++.dg/other/init1.C
-2028368016b ./gcc/testsuite/g++.dg/other/init2.C
-2143945221b ./gcc/testsuite/g++.dg/other/linkage1.C
-2384288796b ./gcc/testsuite/g++.dg/other/pragma-ep-1.C
- 198088036b ./gcc/testsuite/g++.dg/other/pragma-re-1.C
-1453288357b ./gcc/testsuite/g++.dg/other/ptrmem1.C
- 392352692b ./gcc/testsuite/g++.dg/other/ptrmem2.C
- 522786262b ./gcc/testsuite/g++.dg/other/scope1.C
-3572380294b ./gcc/testsuite/g++.dg/other/stdarg1.C
- 873911472b ./gcc/testsuite/g++.dg/other/stdbool-if.C
- 492684594b ./gcc/testsuite/g++.dg/overload/builtin1.C
-3775778165b ./gcc/testsuite/g++.dg/overload/cond1.C
-1110519878b ./gcc/testsuite/g++.dg/overload/error1.C
-3780752279b ./gcc/testsuite/g++.dg/overload/member2.C
-3588815363b ./gcc/testsuite/g++.dg/overload/pmf1.C
-2166944080b ./gcc/testsuite/g++.dg/parse/angle-bracket.C
-3621016079b ./gcc/testsuite/g++.dg/parse/attr1.C
-2532827057b ./gcc/testsuite/g++.dg/parse/decl-specifier-1.C
-3454082090b ./gcc/testsuite/g++.dg/parse/friend1.C
- 849996881b ./gcc/testsuite/g++.dg/parse/inline1.C
-1601717576b ./gcc/testsuite/g++.dg/parse/named_ops.C
-4289007099b ./gcc/testsuite/g++.dg/parse/saved1.C
-1402579554b ./gcc/testsuite/g++.dg/parse/stmtexpr1.C
-2804352074b ./gcc/testsuite/g++.dg/parse/stmtexpr2.C
- 254645785b ./gcc/testsuite/g++.dg/parse/stmtexpr3.C
- 805014732b ./gcc/testsuite/g++.dg/parse/typedef1.C
- 739732730b ./gcc/testsuite/g++.dg/README
- 522523166b ./gcc/testsuite/g++.dg/ref1.C
- 438642550b ./gcc/testsuite/g++.dg/rtti/crash1.C
-1942107252b ./gcc/testsuite/g++.dg/sizeof1.C
- 370035332b ./gcc/testsuite/g++.dg/special/conpr-1.C
-1217683257b ./gcc/testsuite/g++.dg/special/conpr-2a.C
-1019201819b ./gcc/testsuite/g++.dg/special/conpr-2.C
-3756639268b ./gcc/testsuite/g++.dg/special/conpr-3a.C
-3436726377b ./gcc/testsuite/g++.dg/special/conpr-3b.C
-1019201819b ./gcc/testsuite/g++.dg/special/conpr-3.C
-4265992428b ./gcc/testsuite/g++.dg/special/ecos.exp
-1952533588b ./gcc/testsuite/g++.dg/special/initp1.C
-3059417569b ./gcc/testsuite/g++.dg/template/access1.C
- 826296459b ./gcc/testsuite/g++.dg/template/alignof1.C
- 783556741b ./gcc/testsuite/g++.dg/template/complit1.C
-2083292273b ./gcc/testsuite/g++.dg/template/copy1.C
-1072669517b ./gcc/testsuite/g++.dg/template/crash1.C
-3504290323b ./gcc/testsuite/g++.dg/template/ctor1.C
-1161800603b ./gcc/testsuite/g++.dg/template/explicit-instantiation.C
-3302501697b ./gcc/testsuite/g++.dg/template/friend3.C
- 587931705b ./gcc/testsuite/g++.dg/template/friend4.C
-3560434139b ./gcc/testsuite/g++.dg/template/friend5.C
- 590954347b ./gcc/testsuite/g++.dg/template/friend6.C
-3646815886b ./gcc/testsuite/g++.dg/template/friend7.C
-3595433718b ./gcc/testsuite/g++.dg/template/friend.C
- 438837461b ./gcc/testsuite/g++.dg/template/inherit.C
-2872339928b ./gcc/testsuite/g++.dg/template/init-list.C
-2182099475b ./gcc/testsuite/g++.dg/template/instantiate1.C
- 416617778b ./gcc/testsuite/g++.dg/template/local1.C
-1449269044b ./gcc/testsuite/g++.dg/template/member.C
-2815776671b ./gcc/testsuite/g++.dg/template/meminit1.C
-2073430043b ./gcc/testsuite/g++.dg/template/ntp1.C
- 188396250b ./gcc/testsuite/g++.dg/template/partial-specialization.C
- 601175114b ./gcc/testsuite/g++.dg/template/ptrmem1.C
-3748090308b ./gcc/testsuite/g++.dg/template/ptrmem2.C
-1117759327b ./gcc/testsuite/g++.dg/template/qual1.C
-4043559007b ./gcc/testsuite/g++.dg/template/qualttp10.C
- 265969049b ./gcc/testsuite/g++.dg/template/qualttp11.C
-3320116615b ./gcc/testsuite/g++.dg/template/qualttp12.C
-1886222588b ./gcc/testsuite/g++.dg/template/qualttp13.C
- 349133345b ./gcc/testsuite/g++.dg/template/qualttp14.C
-1405414284b ./gcc/testsuite/g++.dg/template/qualttp15.C
-1602753867b ./gcc/testsuite/g++.dg/template/qualttp16.C
- 730215493b ./gcc/testsuite/g++.dg/template/qualttp17.C
-2705854603b ./gcc/testsuite/g++.dg/template/qualttp18.C
-2340914395b ./gcc/testsuite/g++.dg/template/qualttp19.C
-3125902504b ./gcc/testsuite/g++.dg/template/qualttp1.C
-1471270599b ./gcc/testsuite/g++.dg/template/qualttp20.C
- 662492681b ./gcc/testsuite/g++.dg/template/qualttp2.C
-2704736755b ./gcc/testsuite/g++.dg/template/qualttp3.C
-2095971540b ./gcc/testsuite/g++.dg/template/qualttp4.C
-1142633939b ./gcc/testsuite/g++.dg/template/qualttp5.C
- 950873247b ./gcc/testsuite/g++.dg/template/qualttp6.C
- 433357978b ./gcc/testsuite/g++.dg/template/qualttp7.C
-1704860378b ./gcc/testsuite/g++.dg/template/qualttp8.C
- 700938418b ./gcc/testsuite/g++.dg/template/qualttp9.C
-4163290563b ./gcc/testsuite/g++.dg/template/recurse.C
-1960444878b ./gcc/testsuite/g++.dg/template/ref1.C
-1028564434b ./gcc/testsuite/g++.dg/template/sizeof1.C
-2914549620b ./gcc/testsuite/g++.dg/template/spec1.C
-2378483146b ./gcc/testsuite/g++.dg/template/spec2.C
-4241261648b ./gcc/testsuite/g++.dg/template/ttp1.C
-2877667245b ./gcc/testsuite/g++.dg/template/ttp2.C
- 764874225b ./gcc/testsuite/g++.dg/template/ttp3.C
- 212083769b ./gcc/testsuite/g++.dg/template/ttp4.C
-4098822025b ./gcc/testsuite/g++.dg/template/type1.C
-1430073082b ./gcc/testsuite/g++.dg/template/typedef1.C
-3583659165b ./gcc/testsuite/g++.dg/template/typename1.C
- 566916814b ./gcc/testsuite/g++.dg/template/typename2.C
- 471145990b ./gcc/testsuite/g++.dg/template/typename3.C
-1606799647b ./gcc/testsuite/g++.dg/template/typename4.C
-3595370582b ./gcc/testsuite/g++.dg/template/unify1.C
-3639225580b ./gcc/testsuite/g++.dg/template/unify2.C
-4266445185b ./gcc/testsuite/g++.dg/template/unify3.C
- 509779393b ./gcc/testsuite/g++.dg/template/union1.C
-3718685372b ./gcc/testsuite/g++.dg/template/vtable1.C
-2244072137b ./gcc/testsuite/g++.dg/warn/effc1.C
-1455133800b ./gcc/testsuite/g++.dg/warn/format1.C
- 886747822b ./gcc/testsuite/g++.dg/warn/format2.C
-2805519034b ./gcc/testsuite/g++.dg/warn/friend.C
-3402610409b ./gcc/testsuite/g++.dg/warn/oldcast1.C
-2394314287b ./gcc/testsuite/g++.dg/warn/return-reference.C
-3714230484b ./gcc/testsuite/g++.dg/warn/weak1.C
-1594659113b ./gcc/testsuite/g++.dg/warn/Wshadow-1.C
-3339416566b ./gcc/testsuite/g++.dg/warn/Wswitch-1.C
-3928913400b ./gcc/testsuite/g++.dg/warn/Wswitch-2.C
- 223408438b ./gcc/testsuite/g++.dg/warn/Wunused-1.C
-1014061570b ./gcc/testsuite/g++.old-deja/g++.abi/aggregates.C
-3074970655b ./gcc/testsuite/g++.old-deja/g++.abi/align.C
-1155806507b ./gcc/testsuite/g++.old-deja/g++.abi/arraynew.C
-3647855758b ./gcc/testsuite/g++.old-deja/g++.abi/bitfields.C
-2026386788b ./gcc/testsuite/g++.old-deja/g++.abi/crash1.C
-1147144784b ./gcc/testsuite/g++.old-deja/g++.abi/cxa_vec.C
-4096109742b ./gcc/testsuite/g++.old-deja/g++.abi/empty2.C
-1878628007b ./gcc/testsuite/g++.old-deja/g++.abi/empty3.C
-2936636767b ./gcc/testsuite/g++.old-deja/g++.abi/empty.C
- 239352654b ./gcc/testsuite/g++.old-deja/g++.abi/layout1.C
-3009318595b ./gcc/testsuite/g++.old-deja/g++.abi/mangle1.C
-2807005291b ./gcc/testsuite/g++.old-deja/g++.abi/primary2.C
-3282879605b ./gcc/testsuite/g++.old-deja/g++.abi/primary3.C
-1642224875b ./gcc/testsuite/g++.old-deja/g++.abi/primary4.C
- 758749582b ./gcc/testsuite/g++.old-deja/g++.abi/primary5.C
- 694100951b ./gcc/testsuite/g++.old-deja/g++.abi/primary.C
- 123432225b ./gcc/testsuite/g++.old-deja/g++.abi/ptrflags.C
-3967703303b ./gcc/testsuite/g++.old-deja/g++.abi/ptrmem.C
- 627664718b ./gcc/testsuite/g++.old-deja/g++.abi/vbase1.C
-1393433492b ./gcc/testsuite/g++.old-deja/g++.abi/vbase2.C
-1591406699b ./gcc/testsuite/g++.old-deja/g++.abi/vbase3.C
-2878658307b ./gcc/testsuite/g++.old-deja/g++.abi/vbase4.C
-2484396991b ./gcc/testsuite/g++.old-deja/g++.abi/vbase5.C
- 762829112b ./gcc/testsuite/g++.old-deja/g++.abi/vbase6.C
-2351342219b ./gcc/testsuite/g++.old-deja/g++.abi/vbase7.C
-3914589079b ./gcc/testsuite/g++.old-deja/g++.abi/vbase8-5.C
-3332397893b ./gcc/testsuite/g++.old-deja/g++.abi/vbase8-9.C
- 186405531b ./gcc/testsuite/g++.old-deja/g++.abi/vmihint.C
-1117843110b ./gcc/testsuite/g++.old-deja/g++.abi/vtable2.C
-3601882386b ./gcc/testsuite/g++.old-deja/g++.abi/vtable3a.C
-1066819949b ./gcc/testsuite/g++.old-deja/g++.abi/vtable3b.C
- 733573133b ./gcc/testsuite/g++.old-deja/g++.abi/vtable3c.C
-2659325300b ./gcc/testsuite/g++.old-deja/g++.abi/vtable3d.C
-2504154034b ./gcc/testsuite/g++.old-deja/g++.abi/vtable3e.C
- 841363633b ./gcc/testsuite/g++.old-deja/g++.abi/vtable3f.C
-1020377548b ./gcc/testsuite/g++.old-deja/g++.abi/vtable3g.C
-3689828910b ./gcc/testsuite/g++.old-deja/g++.abi/vtable3.h
-1675326614b ./gcc/testsuite/g++.old-deja/g++.abi/vtable3h.C
-3323598815b ./gcc/testsuite/g++.old-deja/g++.abi/vtable3i.C
-4291841254b ./gcc/testsuite/g++.old-deja/g++.abi/vtable3j.C
-2313706108b ./gcc/testsuite/g++.old-deja/g++.abi/vtable.C
-3645238009b ./gcc/testsuite/g++.old-deja/g++.benjamin/13478.C
-1290057507b ./gcc/testsuite/g++.old-deja/g++.benjamin/13523.C
-3226269269b ./gcc/testsuite/g++.old-deja/g++.benjamin/13908.C
-2784092938b ./gcc/testsuite/g++.old-deja/g++.benjamin/14139.C
-2423853762b ./gcc/testsuite/g++.old-deja/g++.benjamin/14664-1.C
-2212548175b ./gcc/testsuite/g++.old-deja/g++.benjamin/14664-2.C
-3677086750b ./gcc/testsuite/g++.old-deja/g++.benjamin/14687.C
-1586319624b ./gcc/testsuite/g++.old-deja/g++.benjamin/15054.C
-3684855646b ./gcc/testsuite/g++.old-deja/g++.benjamin/15071.C
-1623288966b ./gcc/testsuite/g++.old-deja/g++.benjamin/15309-1.C
- 504940539b ./gcc/testsuite/g++.old-deja/g++.benjamin/15309-2.C
-3331129895b ./gcc/testsuite/g++.old-deja/g++.benjamin/15351-1.C
- 474009375b ./gcc/testsuite/g++.old-deja/g++.benjamin/15351-2.C
-2917600664b ./gcc/testsuite/g++.old-deja/g++.benjamin/15756-1.C
-2360709744b ./gcc/testsuite/g++.old-deja/g++.benjamin/15756-2.C
-2662607350b ./gcc/testsuite/g++.old-deja/g++.benjamin/15799.C
-2302070128b ./gcc/testsuite/g++.old-deja/g++.benjamin/15800-1.C
-1420401846b ./gcc/testsuite/g++.old-deja/g++.benjamin/15800-2.C
-3811260428b ./gcc/testsuite/g++.old-deja/g++.benjamin/15822.C
- 515618176b ./gcc/testsuite/g++.old-deja/g++.benjamin/16077.C
-1192292165b ./gcc/testsuite/g++.old-deja/g++.benjamin/16567.C
-3161986254b ./gcc/testsuite/g++.old-deja/g++.benjamin/17922.C
-3967012349b ./gcc/testsuite/g++.old-deja/g++.benjamin/17930.C
-1677939904b ./gcc/testsuite/g++.old-deja/g++.benjamin/18208.C
-3086868742b ./gcc/testsuite/g++.old-deja/g++.benjamin/bool01.C
-3598814632b ./gcc/testsuite/g++.old-deja/g++.benjamin/bool02.C
-3056861018b ./gcc/testsuite/g++.old-deja/g++.benjamin/.cvsignore
-1967242900b ./gcc/testsuite/g++.old-deja/g++.benjamin/friend01.C
-2225156638b ./gcc/testsuite/g++.old-deja/g++.benjamin/friend02.C
-3667301284b ./gcc/testsuite/g++.old-deja/g++.benjamin/p12475.C
-3256842151b ./gcc/testsuite/g++.old-deja/g++.benjamin/p13417.C
-1722427082b ./gcc/testsuite/g++.old-deja/g++.benjamin/p13721.C
-2217061296b ./gcc/testsuite/g++.old-deja/g++.benjamin/scope01.C
-2240065974b ./gcc/testsuite/g++.old-deja/g++.benjamin/scope02.C
-2951719986b ./gcc/testsuite/g++.old-deja/g++.benjamin/tem01.C
- 702039111b ./gcc/testsuite/g++.old-deja/g++.benjamin/tem02.C
- 923827380b ./gcc/testsuite/g++.old-deja/g++.benjamin/tem03.C
-3406491154b ./gcc/testsuite/g++.old-deja/g++.benjamin/tem04.C
-2664329213b ./gcc/testsuite/g++.old-deja/g++.benjamin/tem05.C
-3864493283b ./gcc/testsuite/g++.old-deja/g++.benjamin/tem06.C
-2084088837b ./gcc/testsuite/g++.old-deja/g++.benjamin/tem07.C
-1086694463b ./gcc/testsuite/g++.old-deja/g++.benjamin/typedef01.C
-3459483931b ./gcc/testsuite/g++.old-deja/g++.benjamin/typedef03.C
-2369679358b ./gcc/testsuite/g++.old-deja/g++.benjamin/typeid01.C
-3535655349b ./gcc/testsuite/g++.old-deja/g++.benjamin/warn01.C
-2610555481b ./gcc/testsuite/g++.old-deja/g++.benjamin/warn02.C
-2745105879b ./gcc/testsuite/g++.old-deja/g++.benjamin/warn03.C
-1949674339b ./gcc/testsuite/g++.old-deja/g++.benjamin/warn04.C
- 171203016b ./gcc/testsuite/g++.old-deja/g++.bob/array1.C
-2104392657b ./gcc/testsuite/g++.old-deja/g++.bob/array2.C
-3389809483b ./gcc/testsuite/g++.old-deja/g++.bob/case1.C
-2080938439b ./gcc/testsuite/g++.old-deja/g++.bob/cond1.C
-3873529664b ./gcc/testsuite/g++.old-deja/g++.bob/delete1.C
-2731071171b ./gcc/testsuite/g++.old-deja/g++.bob/extern_C.C
-3066265332b ./gcc/testsuite/g++.old-deja/g++.bob/friend1.C
- 128684785b ./gcc/testsuite/g++.old-deja/g++.bob/incomplete-cast1.C
-2721973759b ./gcc/testsuite/g++.old-deja/g++.bob/inherit1.C
-1103043835b ./gcc/testsuite/g++.old-deja/g++.bob/inherit2.C
-2833738657b ./gcc/testsuite/g++.old-deja/g++.bob/nested1.C
-3565275304b ./gcc/testsuite/g++.old-deja/g++.bob/packed1.C
-4197806151b ./gcc/testsuite/g++.old-deja/g++.bob/protected1.C
-4234249418b ./gcc/testsuite/g++.old-deja/g++.bob/static1.C
- 122187457b ./gcc/testsuite/g++.old-deja/g++.bob/template1.C
-1370912247b ./gcc/testsuite/g++.old-deja/g++.bob/template2.C
-2571452914b ./gcc/testsuite/g++.old-deja/g++.bob/template3.C
-2876511802b ./gcc/testsuite/g++.old-deja/g++.bob/template4.C
- 934227986b ./gcc/testsuite/g++.old-deja/g++.brendan/abstract1.C
-2431794017b ./gcc/testsuite/g++.old-deja/g++.brendan/access1.C
-2157723684b ./gcc/testsuite/g++.old-deja/g++.brendan/alignof.C
- 214451177b ./gcc/testsuite/g++.old-deja/g++.brendan/ambiguity1.C
-3629703719b ./gcc/testsuite/g++.old-deja/g++.brendan/anon-union1.C
-3428758154b ./gcc/testsuite/g++.old-deja/g++.brendan/arm1.C
-2574740314b ./gcc/testsuite/g++.old-deja/g++.brendan/arm2.C
-2227979686b ./gcc/testsuite/g++.old-deja/g++.brendan/arm3.C
-2917176441b ./gcc/testsuite/g++.old-deja/g++.brendan/array1.C
-1965428160b ./gcc/testsuite/g++.old-deja/g++.brendan/array-refs.C
-1940036338b ./gcc/testsuite/g++.old-deja/g++.brendan/asm-extn1.C
- 294912826b ./gcc/testsuite/g++.old-deja/g++.brendan/bit-fields1.C
-3253987007b ./gcc/testsuite/g++.old-deja/g++.brendan/bit-fields2.C
-2295880526b ./gcc/testsuite/g++.old-deja/g++.brendan/bool1.C
-4273223623b ./gcc/testsuite/g++.old-deja/g++.brendan/code-gen1.C
-1645524661b ./gcc/testsuite/g++.old-deja/g++.brendan/code-gen2.C
-3644865515b ./gcc/testsuite/g++.old-deja/g++.brendan/code-gen3.C
-2948051712b ./gcc/testsuite/g++.old-deja/g++.brendan/code-gen4.C
-1620487125b ./gcc/testsuite/g++.old-deja/g++.brendan/code-gen6.C
-1741291892b ./gcc/testsuite/g++.old-deja/g++.brendan/complex1.C
- 793374686b ./gcc/testsuite/g++.old-deja/g++.brendan/copy1.C
-3632592804b ./gcc/testsuite/g++.old-deja/g++.brendan/copy2.C
-2563077575b ./gcc/testsuite/g++.old-deja/g++.brendan/copy3.C
-2853493438b ./gcc/testsuite/g++.old-deja/g++.brendan/copy4.C
- 654573812b ./gcc/testsuite/g++.old-deja/g++.brendan/copy5.C
- 949668502b ./gcc/testsuite/g++.old-deja/g++.brendan/copy6.C
-1985077243b ./gcc/testsuite/g++.old-deja/g++.brendan/copy7.C
-2478516341b ./gcc/testsuite/g++.old-deja/g++.brendan/copy8.C
-4007430298b ./gcc/testsuite/g++.old-deja/g++.brendan/copy9.C
-2509157689b ./gcc/testsuite/g++.old-deja/g++.brendan/crash10.C
-1585446941b ./gcc/testsuite/g++.old-deja/g++.brendan/crash11.C
-1430846464b ./gcc/testsuite/g++.old-deja/g++.brendan/crash12.C
- 162053895b ./gcc/testsuite/g++.old-deja/g++.brendan/crash13.C
-1549271196b ./gcc/testsuite/g++.old-deja/g++.brendan/crash14.C
-2286955722b ./gcc/testsuite/g++.old-deja/g++.brendan/crash15.C
- 183613091b ./gcc/testsuite/g++.old-deja/g++.brendan/crash16.C
-3586612658b ./gcc/testsuite/g++.old-deja/g++.brendan/crash17.C
- 563583842b ./gcc/testsuite/g++.old-deja/g++.brendan/crash18.C
- 73005642b ./gcc/testsuite/g++.old-deja/g++.brendan/crash1.C
-4119104494b ./gcc/testsuite/g++.old-deja/g++.brendan/crash20.C
- 927230476b ./gcc/testsuite/g++.old-deja/g++.brendan/crash22.C
- 547223421b ./gcc/testsuite/g++.old-deja/g++.brendan/crash23.C
-1835086247b ./gcc/testsuite/g++.old-deja/g++.brendan/crash24.C
-1526375664b ./gcc/testsuite/g++.old-deja/g++.brendan/crash25.C
-2644738903b ./gcc/testsuite/g++.old-deja/g++.brendan/crash26.C
-1537159422b ./gcc/testsuite/g++.old-deja/g++.brendan/crash27.C
-1095243311b ./gcc/testsuite/g++.old-deja/g++.brendan/crash28.C
- 899543906b ./gcc/testsuite/g++.old-deja/g++.brendan/crash29.C
-2936347090b ./gcc/testsuite/g++.old-deja/g++.brendan/crash2.C
- 454853598b ./gcc/testsuite/g++.old-deja/g++.brendan/crash30.C
-3144780301b ./gcc/testsuite/g++.old-deja/g++.brendan/crash31.C
- 255295637b ./gcc/testsuite/g++.old-deja/g++.brendan/crash32.C
-1337786658b ./gcc/testsuite/g++.old-deja/g++.brendan/crash33.C
-2946805769b ./gcc/testsuite/g++.old-deja/g++.brendan/crash34.C
-1475644375b ./gcc/testsuite/g++.old-deja/g++.brendan/crash35.C
-1156826769b ./gcc/testsuite/g++.old-deja/g++.brendan/crash36.C
-4095821179b ./gcc/testsuite/g++.old-deja/g++.brendan/crash37.C
-3095994190b ./gcc/testsuite/g++.old-deja/g++.brendan/crash38.C
-1186001658b ./gcc/testsuite/g++.old-deja/g++.brendan/crash39.C
-1740428956b ./gcc/testsuite/g++.old-deja/g++.brendan/crash3.C
-2475994253b ./gcc/testsuite/g++.old-deja/g++.brendan/crash40.C
-4225248580b ./gcc/testsuite/g++.old-deja/g++.brendan/crash41.C
-2430128234b ./gcc/testsuite/g++.old-deja/g++.brendan/crash42.C
-2513849144b ./gcc/testsuite/g++.old-deja/g++.brendan/crash43.C
-4266258254b ./gcc/testsuite/g++.old-deja/g++.brendan/crash44.C
-2678379673b ./gcc/testsuite/g++.old-deja/g++.brendan/crash45.C
-2885801112b ./gcc/testsuite/g++.old-deja/g++.brendan/crash46.C
-3880129363b ./gcc/testsuite/g++.old-deja/g++.brendan/crash47.C
- 740147641b ./gcc/testsuite/g++.old-deja/g++.brendan/crash48.C
- 991257367b ./gcc/testsuite/g++.old-deja/g++.brendan/crash49.C
-2075374404b ./gcc/testsuite/g++.old-deja/g++.brendan/crash4.C
-3106709406b ./gcc/testsuite/g++.old-deja/g++.brendan/crash50.C
-2259885687b ./gcc/testsuite/g++.old-deja/g++.brendan/crash51.C
-2036848605b ./gcc/testsuite/g++.old-deja/g++.brendan/crash52.C
- 353501789b ./gcc/testsuite/g++.old-deja/g++.brendan/crash53.C
- 249063748b ./gcc/testsuite/g++.old-deja/g++.brendan/crash54.C
- 88615881b ./gcc/testsuite/g++.old-deja/g++.brendan/crash55.C
-1729790662b ./gcc/testsuite/g++.old-deja/g++.brendan/crash56.C
-2097488269b ./gcc/testsuite/g++.old-deja/g++.brendan/crash57.C
-1260831404b ./gcc/testsuite/g++.old-deja/g++.brendan/crash58.C
-1308193179b ./gcc/testsuite/g++.old-deja/g++.brendan/crash5.C
-3431262814b ./gcc/testsuite/g++.old-deja/g++.brendan/crash60.C
-3845483878b ./gcc/testsuite/g++.old-deja/g++.brendan/crash61.C
-2163074363b ./gcc/testsuite/g++.old-deja/g++.brendan/crash62.C
-3068166302b ./gcc/testsuite/g++.old-deja/g++.brendan/crash63.C
-1926363821b ./gcc/testsuite/g++.old-deja/g++.brendan/crash64.C
-3191901754b ./gcc/testsuite/g++.old-deja/g++.brendan/crash65.C
-2970533101b ./gcc/testsuite/g++.old-deja/g++.brendan/crash66.C
-1982272158b ./gcc/testsuite/g++.old-deja/g++.brendan/crash67.C
-3682557717b ./gcc/testsuite/g++.old-deja/g++.brendan/crash68.C
-3392471730b ./gcc/testsuite/g++.old-deja/g++.brendan/crash6.C
- 345174202b ./gcc/testsuite/g++.old-deja/g++.brendan/crash7.C
-4188483267b ./gcc/testsuite/g++.old-deja/g++.brendan/crash8.C
-3802934826b ./gcc/testsuite/g++.old-deja/g++.brendan/crash9.C
- 906320343b ./gcc/testsuite/g++.old-deja/g++.brendan/ctors1.C
-2290504125b ./gcc/testsuite/g++.old-deja/g++.brendan/ctors2.C
- 398361887b ./gcc/testsuite/g++.old-deja/g++.brendan/ctors3.C
-3763220792b ./gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C
- 419606832b ./gcc/testsuite/g++.old-deja/g++.brendan/cvt2.C
- 919133975b ./gcc/testsuite/g++.old-deja/g++.brendan/cvt3.C
-2031200997b ./gcc/testsuite/g++.old-deja/g++.brendan/cvt4.C
-2406274048b ./gcc/testsuite/g++.old-deja/g++.brendan/cvt5.C
- 316645702b ./gcc/testsuite/g++.old-deja/g++.brendan/def-args1.C
-1784724453b ./gcc/testsuite/g++.old-deja/g++.brendan/def-fns1.C
-1567398405b ./gcc/testsuite/g++.old-deja/g++.brendan/delete1.C
-3911201775b ./gcc/testsuite/g++.old-deja/g++.brendan/delete2.C
-2974300615b ./gcc/testsuite/g++.old-deja/g++.brendan/dtors1.C
-1270991957b ./gcc/testsuite/g++.old-deja/g++.brendan/dtors2.C
-1405617163b ./gcc/testsuite/g++.old-deja/g++.brendan/dtors3.C
- 50594595b ./gcc/testsuite/g++.old-deja/g++.brendan/eh1.C
-2154024297b ./gcc/testsuite/g++.old-deja/g++.brendan/enum10.C
-1012457759b ./gcc/testsuite/g++.old-deja/g++.brendan/enum11.C
-3613259052b ./gcc/testsuite/g++.old-deja/g++.brendan/enum12.C
-4062281691b ./gcc/testsuite/g++.old-deja/g++.brendan/enum13.C
-1026608225b ./gcc/testsuite/g++.old-deja/g++.brendan/enum14.C
-2752357079b ./gcc/testsuite/g++.old-deja/g++.brendan/enum1.C
-2495301458b ./gcc/testsuite/g++.old-deja/g++.brendan/enum2.C
- 857641714b ./gcc/testsuite/g++.old-deja/g++.brendan/enum3.C
-2436566654b ./gcc/testsuite/g++.old-deja/g++.brendan/enum4.C
-2794281986b ./gcc/testsuite/g++.old-deja/g++.brendan/enum5.C
-3270336565b ./gcc/testsuite/g++.old-deja/g++.brendan/enum6.C
-1144354186b ./gcc/testsuite/g++.old-deja/g++.brendan/enum7.C
-3721081721b ./gcc/testsuite/g++.old-deja/g++.brendan/enum8.C
-1284409256b ./gcc/testsuite/g++.old-deja/g++.brendan/enum9.C
-4113228927b ./gcc/testsuite/g++.old-deja/g++.brendan/enum-clash.C
-3510755439b ./gcc/testsuite/g++.old-deja/g++.brendan/err-msg10.C
-3189183114b ./gcc/testsuite/g++.old-deja/g++.brendan/err-msg11.C
-1104107183b ./gcc/testsuite/g++.old-deja/g++.brendan/err-msg12.C
-1658458603b ./gcc/testsuite/g++.old-deja/g++.brendan/err-msg1.C
-1956101213b ./gcc/testsuite/g++.old-deja/g++.brendan/err-msg2.C
- 139198600b ./gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C
-3762408786b ./gcc/testsuite/g++.old-deja/g++.brendan/err-msg4.C
-4113288075b ./gcc/testsuite/g++.old-deja/g++.brendan/err-msg5.C
-1901492381b ./gcc/testsuite/g++.old-deja/g++.brendan/err-msg6.C
- 851805023b ./gcc/testsuite/g++.old-deja/g++.brendan/err-msg7.C
- 721709084b ./gcc/testsuite/g++.old-deja/g++.brendan/err-msg8.C
- 420911498b ./gcc/testsuite/g++.old-deja/g++.brendan/err-msg9.C
-3557744186b ./gcc/testsuite/g++.old-deja/g++.brendan/explicit1.C
-3505755144b ./gcc/testsuite/g++.old-deja/g++.brendan/friend1.C
-1863938790b ./gcc/testsuite/g++.old-deja/g++.brendan/friend2.C
-2483886013b ./gcc/testsuite/g++.old-deja/g++.brendan/friend3.C
-3122834560b ./gcc/testsuite/g++.old-deja/g++.brendan/friend4.C
-1714830524b ./gcc/testsuite/g++.old-deja/g++.brendan/groff1.C
-2246409428b ./gcc/testsuite/g++.old-deja/g++.brendan/init10.C
-1901230214b ./gcc/testsuite/g++.old-deja/g++.brendan/init11.C
- 851254540b ./gcc/testsuite/g++.old-deja/g++.brendan/init12.C
-2224246807b ./gcc/testsuite/g++.old-deja/g++.brendan/init13.C
-3909689745b ./gcc/testsuite/g++.old-deja/g++.brendan/init1.C
-1726022047b ./gcc/testsuite/g++.old-deja/g++.brendan/init2.C
-2066877415b ./gcc/testsuite/g++.old-deja/g++.brendan/init3.C
-1439428404b ./gcc/testsuite/g++.old-deja/g++.brendan/init4.C
-4054847189b ./gcc/testsuite/g++.old-deja/g++.brendan/init5.C
- 248682492b ./gcc/testsuite/g++.old-deja/g++.brendan/init6.C
-3084232903b ./gcc/testsuite/g++.old-deja/g++.brendan/init7.C
-3733555155b ./gcc/testsuite/g++.old-deja/g++.brendan/init8.C
- 743854867b ./gcc/testsuite/g++.old-deja/g++.brendan/init9.C
-2492742855b ./gcc/testsuite/g++.old-deja/g++.brendan/label1.C
-2945125995b ./gcc/testsuite/g++.old-deja/g++.brendan/label2.C
-4243229627b ./gcc/testsuite/g++.old-deja/g++.brendan/line1.C
- 840292246b ./gcc/testsuite/g++.old-deja/g++.brendan/misc10.C
-3482838045b ./gcc/testsuite/g++.old-deja/g++.brendan/misc11.C
-2371682672b ./gcc/testsuite/g++.old-deja/g++.brendan/misc14.C
-4172246159b ./gcc/testsuite/g++.old-deja/g++.brendan/misc15.C
-1840031399b ./gcc/testsuite/g++.old-deja/g++.brendan/misc16.C
-4145144968b ./gcc/testsuite/g++.old-deja/g++.brendan/misc17.C
-3260792263b ./gcc/testsuite/g++.old-deja/g++.brendan/misc1.C
-1747247058b ./gcc/testsuite/g++.old-deja/g++.brendan/misc2.C
-1984879017b ./gcc/testsuite/g++.old-deja/g++.brendan/misc3.C
-3850320829b ./gcc/testsuite/g++.old-deja/g++.brendan/misc4.C
- 556499795b ./gcc/testsuite/g++.old-deja/g++.brendan/misc5.C
-2119421590b ./gcc/testsuite/g++.old-deja/g++.brendan/misc6.C
-3952284631b ./gcc/testsuite/g++.old-deja/g++.brendan/misc7.C
-4192698961b ./gcc/testsuite/g++.old-deja/g++.brendan/misc8.C
- 464358847b ./gcc/testsuite/g++.old-deja/g++.brendan/misc9.C
-4175086610b ./gcc/testsuite/g++.old-deja/g++.brendan/mutable1.C
-4218289945b ./gcc/testsuite/g++.old-deja/g++.brendan/nest10.C
-2376522411b ./gcc/testsuite/g++.old-deja/g++.brendan/nest11.C
-1975302793b ./gcc/testsuite/g++.old-deja/g++.brendan/nest12.C
-1958887360b ./gcc/testsuite/g++.old-deja/g++.brendan/nest13.C
- 29264456b ./gcc/testsuite/g++.old-deja/g++.brendan/nest15.C
-2705266460b ./gcc/testsuite/g++.old-deja/g++.brendan/nest16.C
-1548858648b ./gcc/testsuite/g++.old-deja/g++.brendan/nest17.C
-3262257927b ./gcc/testsuite/g++.old-deja/g++.brendan/nest18.C
-2348257545b ./gcc/testsuite/g++.old-deja/g++.brendan/nest19.C
-2880395837b ./gcc/testsuite/g++.old-deja/g++.brendan/nest1.C
-3266883735b ./gcc/testsuite/g++.old-deja/g++.brendan/nest20.C
- 269879871b ./gcc/testsuite/g++.old-deja/g++.brendan/nest21.C
-3747210741b ./gcc/testsuite/g++.old-deja/g++.brendan/nest22.C
-3359473085b ./gcc/testsuite/g++.old-deja/g++.brendan/nest23.C
- 741780000b ./gcc/testsuite/g++.old-deja/g++.brendan/nest24.C
-4158798113b ./gcc/testsuite/g++.old-deja/g++.brendan/nest2.C
-3460040540b ./gcc/testsuite/g++.old-deja/g++.brendan/nest3.C
-3092321784b ./gcc/testsuite/g++.old-deja/g++.brendan/nest4.C
-3209968741b ./gcc/testsuite/g++.old-deja/g++.brendan/new1.C
- 560844122b ./gcc/testsuite/g++.old-deja/g++.brendan/new2.C
- 952562718b ./gcc/testsuite/g++.old-deja/g++.brendan/new3.C
- 611468654b ./gcc/testsuite/g++.old-deja/g++.brendan/new-array.C
- 864176391b ./gcc/testsuite/g++.old-deja/g++.brendan/ns1.C
-2649926624b ./gcc/testsuite/g++.old-deja/g++.brendan/operators1.C
-2592721748b ./gcc/testsuite/g++.old-deja/g++.brendan/operators2.C
-2129877497b ./gcc/testsuite/g++.old-deja/g++.brendan/operators3.C
-3437294529b ./gcc/testsuite/g++.old-deja/g++.brendan/operators4.C
-1333590464b ./gcc/testsuite/g++.old-deja/g++.brendan/operators5.C
-1939786411b ./gcc/testsuite/g++.old-deja/g++.brendan/operators6.C
-2774653307b ./gcc/testsuite/g++.old-deja/g++.brendan/operators7.C
-1264143080b ./gcc/testsuite/g++.old-deja/g++.brendan/operators8.C
-2183452204b ./gcc/testsuite/g++.old-deja/g++.brendan/overload10.C
-1188978134b ./gcc/testsuite/g++.old-deja/g++.brendan/overload11.C
- 785078285b ./gcc/testsuite/g++.old-deja/g++.brendan/overload1.C
-2745841756b ./gcc/testsuite/g++.old-deja/g++.brendan/overload2.C
-4234832416b ./gcc/testsuite/g++.old-deja/g++.brendan/overload3.C
-1846706050b ./gcc/testsuite/g++.old-deja/g++.brendan/overload4.C
-4113371844b ./gcc/testsuite/g++.old-deja/g++.brendan/overload5.C
- 401815179b ./gcc/testsuite/g++.old-deja/g++.brendan/overload6.C
-2944730687b ./gcc/testsuite/g++.old-deja/g++.brendan/overload7.C
-4047120274b ./gcc/testsuite/g++.old-deja/g++.brendan/overload8.C
-3089598546b ./gcc/testsuite/g++.old-deja/g++.brendan/overload9.C
-3352057260b ./gcc/testsuite/g++.old-deja/g++.brendan/parse1.C
-3784585361b ./gcc/testsuite/g++.old-deja/g++.brendan/parse2.C
-3312018900b ./gcc/testsuite/g++.old-deja/g++.brendan/parse3.C
-2326400572b ./gcc/testsuite/g++.old-deja/g++.brendan/parse4.C
-3249609747b ./gcc/testsuite/g++.old-deja/g++.brendan/parse5.C
-3147672451b ./gcc/testsuite/g++.old-deja/g++.brendan/parse6.C
-3126677669b ./gcc/testsuite/g++.old-deja/g++.brendan/prepost1.C
-2799625909b ./gcc/testsuite/g++.old-deja/g++.brendan/prepost2.C
- 870942291b ./gcc/testsuite/g++.old-deja/g++.brendan/prepost3.C
-1385259160b ./gcc/testsuite/g++.old-deja/g++.brendan/prepost4.C
-2200714766b ./gcc/testsuite/g++.old-deja/g++.brendan/ptolemy1.C
-2953958728b ./gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C
- 38057973b ./gcc/testsuite/g++.old-deja/g++.brendan/ptrmem1.C
-4022822146b ./gcc/testsuite/g++.old-deja/g++.brendan/ptrmem2.C
- 619231948b ./gcc/testsuite/g++.old-deja/g++.brendan/ptrmem3.C
-2919120027b ./gcc/testsuite/g++.old-deja/g++.brendan/ptrmem4.C
-3336461445b ./gcc/testsuite/g++.old-deja/g++.brendan/README
-2442841220b ./gcc/testsuite/g++.old-deja/g++.brendan/recurse.C
-3187500629b ./gcc/testsuite/g++.old-deja/g++.brendan/redecl1.C
-3919299369b ./gcc/testsuite/g++.old-deja/g++.brendan/redecl2.C
-4124591660b ./gcc/testsuite/g++.old-deja/g++.brendan/redecl3.C
- 408503266b ./gcc/testsuite/g++.old-deja/g++.brendan/reference1.C
-2740944344b ./gcc/testsuite/g++.old-deja/g++.brendan/rtti1.C
-2296175777b ./gcc/testsuite/g++.old-deja/g++.brendan/scope1.C
-3174533815b ./gcc/testsuite/g++.old-deja/g++.brendan/scope2.C
- 984705374b ./gcc/testsuite/g++.old-deja/g++.brendan/scope3.C
- 530491368b ./gcc/testsuite/g++.old-deja/g++.brendan/scope4.C
-2958119224b ./gcc/testsuite/g++.old-deja/g++.brendan/scope5.C
-3517883150b ./gcc/testsuite/g++.old-deja/g++.brendan/shadow1.C
-1298625279b ./gcc/testsuite/g++.old-deja/g++.brendan/sizeof1.C
-1606736953b ./gcc/testsuite/g++.old-deja/g++.brendan/sizeof2.C
-1309373439b ./gcc/testsuite/g++.old-deja/g++.brendan/sizeof3.C
-2843507191b ./gcc/testsuite/g++.old-deja/g++.brendan/sizeof4.C
- 728696962b ./gcc/testsuite/g++.old-deja/g++.brendan/sizeof5.C
-4271892241b ./gcc/testsuite/g++.old-deja/g++.brendan/sorry1.C
-3244246119b ./gcc/testsuite/g++.old-deja/g++.brendan/static1.C
-3667553213b ./gcc/testsuite/g++.old-deja/g++.brendan/static2.C
-3518242349b ./gcc/testsuite/g++.old-deja/g++.brendan/static3.C
-1578126603b ./gcc/testsuite/g++.old-deja/g++.brendan/synth1.C
- 486716772b ./gcc/testsuite/g++.old-deja/g++.brendan/template11.C
- 675307124b ./gcc/testsuite/g++.old-deja/g++.brendan/template12.C
-4278394002b ./gcc/testsuite/g++.old-deja/g++.brendan/template13.C
-4135240635b ./gcc/testsuite/g++.old-deja/g++.brendan/template15.C
-3955771564b ./gcc/testsuite/g++.old-deja/g++.brendan/template16.C
-3118430115b ./gcc/testsuite/g++.old-deja/g++.brendan/template17.C
- 378060276b ./gcc/testsuite/g++.old-deja/g++.brendan/template18.C
-3959082203b ./gcc/testsuite/g++.old-deja/g++.brendan/template19.C
-2963427658b ./gcc/testsuite/g++.old-deja/g++.brendan/template1.C
-4030461184b ./gcc/testsuite/g++.old-deja/g++.brendan/template20.C
-1759284086b ./gcc/testsuite/g++.old-deja/g++.brendan/template21.C
-2020058736b ./gcc/testsuite/g++.old-deja/g++.brendan/template22.C
- 880621627b ./gcc/testsuite/g++.old-deja/g++.brendan/template23.C
-2295592255b ./gcc/testsuite/g++.old-deja/g++.brendan/template24.C
-1978252533b ./gcc/testsuite/g++.old-deja/g++.brendan/template25.C
- 730754006b ./gcc/testsuite/g++.old-deja/g++.brendan/template26.C
-1378450506b ./gcc/testsuite/g++.old-deja/g++.brendan/template27.C
-1797214646b ./gcc/testsuite/g++.old-deja/g++.brendan/template28.C
- 290486161b ./gcc/testsuite/g++.old-deja/g++.brendan/template29.C
-4292737843b ./gcc/testsuite/g++.old-deja/g++.brendan/template2.C
-3262101990b ./gcc/testsuite/g++.old-deja/g++.brendan/template30.C
-3508460272b ./gcc/testsuite/g++.old-deja/g++.brendan/template31.C
-1373002312b ./gcc/testsuite/g++.old-deja/g++.brendan/template3.C
-2599566194b ./gcc/testsuite/g++.old-deja/g++.brendan/template4.C
- 575580037b ./gcc/testsuite/g++.old-deja/g++.brendan/template5.C
- 534471494b ./gcc/testsuite/g++.old-deja/g++.brendan/template6.C
-1095287366b ./gcc/testsuite/g++.old-deja/g++.brendan/template7.C
- 517567456b ./gcc/testsuite/g++.old-deja/g++.brendan/template8.C
-1644370694b ./gcc/testsuite/g++.old-deja/g++.brendan/temporary1.C
-2369869850b ./gcc/testsuite/g++.old-deja/g++.brendan/typedef1.C
-2846047998b ./gcc/testsuite/g++.old-deja/g++.brendan/union1.C
- 823018336b ./gcc/testsuite/g++.old-deja/g++.brendan/union2.C
-2620564840b ./gcc/testsuite/g++.old-deja/g++.brendan/union3.C
-1914281947b ./gcc/testsuite/g++.old-deja/g++.brendan/visibility10.C
-2922551156b ./gcc/testsuite/g++.old-deja/g++.brendan/visibility1.C
-3793323471b ./gcc/testsuite/g++.old-deja/g++.brendan/visibility2.C
- 399740001b ./gcc/testsuite/g++.old-deja/g++.brendan/visibility3.C
-2097292018b ./gcc/testsuite/g++.old-deja/g++.brendan/visibility4.C
- 574178981b ./gcc/testsuite/g++.old-deja/g++.brendan/visibility5.C
-1490006646b ./gcc/testsuite/g++.old-deja/g++.brendan/visibility6.C
-2737828036b ./gcc/testsuite/g++.old-deja/g++.brendan/visibility7.C
-1186381819b ./gcc/testsuite/g++.old-deja/g++.brendan/visibility8.C
- 350593631b ./gcc/testsuite/g++.old-deja/g++.brendan/visibility9.C
-1417363197b ./gcc/testsuite/g++.old-deja/g++.brendan/vtables1.C
-2127742392b ./gcc/testsuite/g++.old-deja/g++.brendan/warnings10.C
-4011038443b ./gcc/testsuite/g++.old-deja/g++.brendan/warnings1.C
- 752421094b ./gcc/testsuite/g++.old-deja/g++.brendan/warnings2.C
-2267971773b ./gcc/testsuite/g++.old-deja/g++.brendan/warnings3.C
- 60611814b ./gcc/testsuite/g++.old-deja/g++.brendan/warnings4.C
-1620038153b ./gcc/testsuite/g++.old-deja/g++.brendan/warnings5.C
- 601010719b ./gcc/testsuite/g++.old-deja/g++.brendan/warnings6.C
-1529970043b ./gcc/testsuite/g++.old-deja/g++.brendan/warnings7.C
-2592942829b ./gcc/testsuite/g++.old-deja/g++.brendan/warnings8.C
-2410309597b ./gcc/testsuite/g++.old-deja/g++.brendan/warnings9.C
- 879793477b ./gcc/testsuite/g++.old-deja/g++.bugs/891229_02.C
- 995524953b ./gcc/testsuite/g++.old-deja/g++.bugs/891230_01.C
-3396939769b ./gcc/testsuite/g++.old-deja/g++.bugs/900107_01.C
-3168842964b ./gcc/testsuite/g++.old-deja/g++.bugs/900119_01.C
-3900455611b ./gcc/testsuite/g++.old-deja/g++.bugs/900121_01.C
-2146350614b ./gcc/testsuite/g++.old-deja/g++.bugs/900121_02.C
- 584636864b ./gcc/testsuite/g++.old-deja/g++.bugs/900121_05.C
-1991520903b ./gcc/testsuite/g++.old-deja/g++.bugs/900127_01.C
-2330321470b ./gcc/testsuite/g++.old-deja/g++.bugs/900127_02.C
-3489166192b ./gcc/testsuite/g++.old-deja/g++.bugs/900205_02.C
-3457661037b ./gcc/testsuite/g++.old-deja/g++.bugs/900205_03.C
-1813191232b ./gcc/testsuite/g++.old-deja/g++.bugs/900205_04.C
-2807062312b ./gcc/testsuite/g++.old-deja/g++.bugs/900207_03.C
-1397162767b ./gcc/testsuite/g++.old-deja/g++.bugs/900208_02.C
-2651120681b ./gcc/testsuite/g++.old-deja/g++.bugs/900208_03.C
-2171781580b ./gcc/testsuite/g++.old-deja/g++.bugs/900208_04.C
-3303782315b ./gcc/testsuite/g++.old-deja/g++.bugs/900209_01.C
- 780393726b ./gcc/testsuite/g++.old-deja/g++.bugs/900210_01.C
- 6412645b ./gcc/testsuite/g++.old-deja/g++.bugs/900210_02.C
-4275693472b ./gcc/testsuite/g++.old-deja/g++.bugs/900210_03.C
-1292327254b ./gcc/testsuite/g++.old-deja/g++.bugs/900210_05.C
-4037536992b ./gcc/testsuite/g++.old-deja/g++.bugs/900210_06.C
-2622921904b ./gcc/testsuite/g++.old-deja/g++.bugs/900210_07.C
- 690087876b ./gcc/testsuite/g++.old-deja/g++.bugs/900210_08.C
-2026146424b ./gcc/testsuite/g++.old-deja/g++.bugs/900210_09.C
-3600304327b ./gcc/testsuite/g++.old-deja/g++.bugs/900210_10.C
-1256707550b ./gcc/testsuite/g++.old-deja/g++.bugs/900211_01.C
-1084090140b ./gcc/testsuite/g++.old-deja/g++.bugs/900211_02.C
-3916124462b ./gcc/testsuite/g++.old-deja/g++.bugs/900211_03.C
- 241770712b ./gcc/testsuite/g++.old-deja/g++.bugs/900211_04.C
-1582696199b ./gcc/testsuite/g++.old-deja/g++.bugs/900212_01.C
-1974918899b ./gcc/testsuite/g++.old-deja/g++.bugs/900212_02.C
- 203635920b ./gcc/testsuite/g++.old-deja/g++.bugs/900212_03.C
-4232472999b ./gcc/testsuite/g++.old-deja/g++.bugs/900213_01.C
-1276348303b ./gcc/testsuite/g++.old-deja/g++.bugs/900213_02.C
-2887201610b ./gcc/testsuite/g++.old-deja/g++.bugs/900213_03.C
-1660260745b ./gcc/testsuite/g++.old-deja/g++.bugs/900214_01.C
-2447884275b ./gcc/testsuite/g++.old-deja/g++.bugs/900215_01.C
-1381602623b ./gcc/testsuite/g++.old-deja/g++.bugs/900215_02.C
- 994946835b ./gcc/testsuite/g++.old-deja/g++.bugs/900220_01.C
-3910347278b ./gcc/testsuite/g++.old-deja/g++.bugs/900220_02.C
-4252298896b ./gcc/testsuite/g++.old-deja/g++.bugs/900220_03.C
-1290432832b ./gcc/testsuite/g++.old-deja/g++.bugs/900221_01.C
-1900361967b ./gcc/testsuite/g++.old-deja/g++.bugs/900227_01.C
-1984786856b ./gcc/testsuite/g++.old-deja/g++.bugs/900321_01.C
-3263132139b ./gcc/testsuite/g++.old-deja/g++.bugs/900321_02.C
-3726833614b ./gcc/testsuite/g++.old-deja/g++.bugs/900321_04.C
-3208622461b ./gcc/testsuite/g++.old-deja/g++.bugs/900321_05.C
-2500096956b ./gcc/testsuite/g++.old-deja/g++.bugs/900322_01.C
- 681072542b ./gcc/testsuite/g++.old-deja/g++.bugs/900324_02.C
-2572761897b ./gcc/testsuite/g++.old-deja/g++.bugs/900324_03.C
-2694477972b ./gcc/testsuite/g++.old-deja/g++.bugs/900324_04.C
- 690195427b ./gcc/testsuite/g++.old-deja/g++.bugs/900324_05.C
- 317521719b ./gcc/testsuite/g++.old-deja/g++.bugs/900324_06.C
-3073385107b ./gcc/testsuite/g++.old-deja/g++.bugs/900325_01.C
-3117943928b ./gcc/testsuite/g++.old-deja/g++.bugs/900330_01.C
-3120423847b ./gcc/testsuite/g++.old-deja/g++.bugs/900330_02.C
-4248455686b ./gcc/testsuite/g++.old-deja/g++.bugs/900331_02.C
-3962158950b ./gcc/testsuite/g++.old-deja/g++.bugs/900331_03.C
-3297726587b ./gcc/testsuite/g++.old-deja/g++.bugs/900331_04.C
-1155342042b ./gcc/testsuite/g++.old-deja/g++.bugs/900401_01.C
-2499836717b ./gcc/testsuite/g++.old-deja/g++.bugs/900402_01.C
- 845652229b ./gcc/testsuite/g++.old-deja/g++.bugs/900402_02.C
-1163828267b ./gcc/testsuite/g++.old-deja/g++.bugs/900403_01.C
-4141739844b ./gcc/testsuite/g++.old-deja/g++.bugs/900403_04.C
-1907728591b ./gcc/testsuite/g++.old-deja/g++.bugs/900404_01.C
-2723342095b ./gcc/testsuite/g++.old-deja/g++.bugs/900404_02.C
-1026865843b ./gcc/testsuite/g++.old-deja/g++.bugs/900404_03.C
-1793308826b ./gcc/testsuite/g++.old-deja/g++.bugs/900404_04.C
-3075423771b ./gcc/testsuite/g++.old-deja/g++.bugs/900404_07.C
- 769125852b ./gcc/testsuite/g++.old-deja/g++.bugs/900405_01.C
- 527599451b ./gcc/testsuite/g++.old-deja/g++.bugs/900406_01.C
-1181207035b ./gcc/testsuite/g++.old-deja/g++.bugs/900406_02.C
- 467084117b ./gcc/testsuite/g++.old-deja/g++.bugs/900407_01.C
-1144474754b ./gcc/testsuite/g++.old-deja/g++.bugs/900428_01.C
-3966201362b ./gcc/testsuite/g++.old-deja/g++.bugs/900428_02.C
-2804257500b ./gcc/testsuite/g++.old-deja/g++.bugs/900428_03.C
-2638840723b ./gcc/testsuite/g++.old-deja/g++.bugs/900511_01.C
-1121452894b ./gcc/testsuite/g++.old-deja/g++.bugs/900511_02.C
-2969943864b ./gcc/testsuite/g++.old-deja/g++.bugs/900511_03.C
-3359430702b ./gcc/testsuite/g++.old-deja/g++.bugs/900514_03.C
-2924879685b ./gcc/testsuite/g++.old-deja/g++.bugs/900519_01.C
-1121534730b ./gcc/testsuite/g++.old-deja/g++.bugs/900519_02.C
-4018294577b ./gcc/testsuite/g++.old-deja/g++.bugs/900519_03.C
- 39270680b ./gcc/testsuite/g++.old-deja/g++.bugs/900519_04.C
- 786299821b ./gcc/testsuite/g++.old-deja/g++.bugs/900519_05.C
-1520079302b ./gcc/testsuite/g++.old-deja/g++.bugs/900519_06.C
-3679461455b ./gcc/testsuite/g++.old-deja/g++.bugs/900519_07.C
-1493720581b ./gcc/testsuite/g++.old-deja/g++.bugs/900519_09.C
-1369816343b ./gcc/testsuite/g++.old-deja/g++.bugs/900519_12.C
-3378349206b ./gcc/testsuite/g++.old-deja/g++.bugs/900519_13.C
- 398333614b ./gcc/testsuite/g++.old-deja/g++.bugs/900520_02.C
- 592030193b ./gcc/testsuite/g++.old-deja/g++.bugs/900520_03.C
-3373505469b ./gcc/testsuite/g++.old-deja/g++.bugs/900520_04.C
-1381261051b ./gcc/testsuite/g++.old-deja/g++.bugs/900520_05.C
-3515041132b ./gcc/testsuite/g++.old-deja/g++.bugs/900520_06.C
-1287054743b ./gcc/testsuite/g++.old-deja/g++.eh/badalloc1.C
-3799957377b ./gcc/testsuite/g++.old-deja/g++.eh/catch10.C
-2291520496b ./gcc/testsuite/g++.old-deja/g++.eh/catch11.C
-3311967999b ./gcc/testsuite/g++.old-deja/g++.eh/catch12.C
-3320439198b ./gcc/testsuite/g++.old-deja/g++.eh/catch13.C
- 998245899b ./gcc/testsuite/g++.old-deja/g++.eh/catch14.C
- 669779261b ./gcc/testsuite/g++.old-deja/g++.eh/catch1.C
-2873880433b ./gcc/testsuite/g++.old-deja/g++.eh/catch2.C
-2886528606b ./gcc/testsuite/g++.old-deja/g++.eh/catch3.C
- 237405446b ./gcc/testsuite/g++.old-deja/g++.eh/catch3p.C
-2597913212b ./gcc/testsuite/g++.old-deja/g++.eh/catch4.C
-3784511797b ./gcc/testsuite/g++.old-deja/g++.eh/catch4p.C
-2773413264b ./gcc/testsuite/g++.old-deja/g++.eh/catch5.C
-1526932366b ./gcc/testsuite/g++.old-deja/g++.eh/catch5p.C
-4221257197b ./gcc/testsuite/g++.old-deja/g++.eh/catch6.C
-3963959238b ./gcc/testsuite/g++.old-deja/g++.eh/catch6p.C
-4294525621b ./gcc/testsuite/g++.old-deja/g++.eh/catch7.C
-2328109815b ./gcc/testsuite/g++.old-deja/g++.eh/catch7p.C
- 62947948b ./gcc/testsuite/g++.old-deja/g++.eh/catch8.C
-1196849462b ./gcc/testsuite/g++.old-deja/g++.eh/catch8p.C
-1548291979b ./gcc/testsuite/g++.old-deja/g++.eh/catch9.C
-2807268437b ./gcc/testsuite/g++.old-deja/g++.eh/catch9p.C
-1011765156b ./gcc/testsuite/g++.old-deja/g++.eh/catchptr1.C
-3391348266b ./gcc/testsuite/g++.old-deja/g++.eh/cleanup1.C
-2075767168b ./gcc/testsuite/g++.old-deja/g++.eh/cleanup2.C
-4233648694b ./gcc/testsuite/g++.old-deja/g++.eh/cond1.C
- 482630604b ./gcc/testsuite/g++.old-deja/g++.eh/crash1.C
-3487010399b ./gcc/testsuite/g++.old-deja/g++.eh/crash2.C
-3059731247b ./gcc/testsuite/g++.old-deja/g++.eh/crash3.C
-1684457203b ./gcc/testsuite/g++.old-deja/g++.eh/crash4.C
-3254817681b ./gcc/testsuite/g++.old-deja/g++.eh/crash5.C
-2429027833b ./gcc/testsuite/g++.old-deja/g++.eh/crash6.C
- 633960827b ./gcc/testsuite/g++.old-deja/g++.eh/ctor1.C
-2442750901b ./gcc/testsuite/g++.old-deja/g++.eh/flow1.C
- 735112314b ./gcc/testsuite/g++.old-deja/g++.eh/fntry1.C
-2322235726b ./gcc/testsuite/g++.old-deja/g++.eh/ia64-1.C
- 676523103b ./gcc/testsuite/g++.old-deja/g++.eh/inline1.C
-1365103519b ./gcc/testsuite/g++.old-deja/g++.eh/inline2.C
-3790493474b ./gcc/testsuite/g++.old-deja/g++.eh/new1.C
- 535130965b ./gcc/testsuite/g++.old-deja/g++.eh/new2.C
-3634137795b ./gcc/testsuite/g++.old-deja/g++.eh/pdel1.C
-2137801791b ./gcc/testsuite/g++.old-deja/g++.eh/pdel2.C
- 281186416b ./gcc/testsuite/g++.old-deja/g++.eh/ptr1.C
- 576857198b ./gcc/testsuite/g++.old-deja/g++.eh/ptrmem1.C
-1768169036b ./gcc/testsuite/g++.old-deja/g++.eh/rethrow1.C
-2742043120b ./gcc/testsuite/g++.old-deja/g++.eh/rethrow2.C
- 797701813b ./gcc/testsuite/g++.old-deja/g++.eh/rethrow3.C
-1092183660b ./gcc/testsuite/g++.old-deja/g++.eh/rethrow4.C
-1908139767b ./gcc/testsuite/g++.old-deja/g++.eh/rethrow5.C
-1673259087b ./gcc/testsuite/g++.old-deja/g++.eh/rethrow6.C
-3587234868b ./gcc/testsuite/g++.old-deja/g++.eh/spec1.C
- 575869724b ./gcc/testsuite/g++.old-deja/g++.eh/spec2.C
-3512769980b ./gcc/testsuite/g++.old-deja/g++.eh/spec3.C
- 733574694b ./gcc/testsuite/g++.old-deja/g++.eh/spec4.C
-3529701833b ./gcc/testsuite/g++.old-deja/g++.eh/spec5.C
-3545946102b ./gcc/testsuite/g++.old-deja/g++.eh/spec6.C
-3657524244b ./gcc/testsuite/g++.old-deja/g++.eh/spec7.C
-1957276023b ./gcc/testsuite/g++.old-deja/g++.eh/terminate1.C
-2882522407b ./gcc/testsuite/g++.old-deja/g++.eh/terminate2.C
- 2244717b ./gcc/testsuite/g++.old-deja/g++.eh/throw1.C
- 67637737b ./gcc/testsuite/g++.old-deja/g++.eh/throw2.C
-2714145986b ./gcc/testsuite/g++.old-deja/g++.eh/tmpl1.C
-3174750751b ./gcc/testsuite/g++.old-deja/g++.eh/tmpl2.C
-2148656642b ./gcc/testsuite/g++.old-deja/g++.eh/tmpl3.C
-2285781015b ./gcc/testsuite/g++.old-deja/g++.eh/tmpl4.C
-3757999789b ./gcc/testsuite/g++.old-deja/g++.eh/tmpl5.C
-2082523657b ./gcc/testsuite/g++.old-deja/g++.eh/tmpl6.C
-1395348093b ./gcc/testsuite/g++.old-deja/g++.eh/unwind1.C
-4087820734b ./gcc/testsuite/g++.old-deja/g++.eh/vbase1.C
- 7954090b ./gcc/testsuite/g++.old-deja/g++.eh/vbase2.C
- 597975959b ./gcc/testsuite/g++.old-deja/g++.eh/vbase3.C
-3027059078b ./gcc/testsuite/g++.old-deja/g++.eh/vbase4.C
-4199943262b ./gcc/testsuite/g++.old-deja/g++.ext/addrfunc1.C
- 159934505b ./gcc/testsuite/g++.old-deja/g++.ext/addrfunc2.C
- 585898936b ./gcc/testsuite/g++.old-deja/g++.ext/addrfunc3.C
-2984020525b ./gcc/testsuite/g++.old-deja/g++.ext/addrfunc4.C
-3380550287b ./gcc/testsuite/g++.old-deja/g++.ext/anon1.C
-1974705038b ./gcc/testsuite/g++.old-deja/g++.ext/anon2.C
- 813082081b ./gcc/testsuite/g++.old-deja/g++.ext/anon3.C
-4292815255b ./gcc/testsuite/g++.old-deja/g++.ext/array1.C
-2976027349b ./gcc/testsuite/g++.old-deja/g++.ext/array2.C
-3272522793b ./gcc/testsuite/g++.old-deja/g++.ext/array3.C
-3707624253b ./gcc/testsuite/g++.old-deja/g++.ext/array4.C
-2445582885b ./gcc/testsuite/g++.old-deja/g++.ext/arrnew2.C
-1417245570b ./gcc/testsuite/g++.old-deja/g++.ext/arrnew.C
-3682137158b ./gcc/testsuite/g++.old-deja/g++.ext/asmspec1.C
-4101102615b ./gcc/testsuite/g++.old-deja/g++.ext/attrib1.C
-3350275577b ./gcc/testsuite/g++.old-deja/g++.ext/attrib2.C
-1053733436b ./gcc/testsuite/g++.old-deja/g++.ext/attrib3.C
-1626467181b ./gcc/testsuite/g++.old-deja/g++.ext/attrib4.C
-3199258020b ./gcc/testsuite/g++.old-deja/g++.ext/attrib5.C
-1231673353b ./gcc/testsuite/g++.old-deja/g++.ext/attrib6.C
-1172027159b ./gcc/testsuite/g++.old-deja/g++.ext/bound1.C
-2395600799b ./gcc/testsuite/g++.old-deja/g++.ext/constructor.C
-2324105514b ./gcc/testsuite/g++.old-deja/g++.ext/default.C
-3043261002b ./gcc/testsuite/g++.old-deja/g++.ext/delvoid.C
-1220140779b ./gcc/testsuite/g++.old-deja/g++.ext/jump1.C
-3122237559b ./gcc/testsuite/g++.old-deja/g++.ext/label1.C
-1955233630b ./gcc/testsuite/g++.old-deja/g++.ext/label2.C
-1326698912b ./gcc/testsuite/g++.old-deja/g++.ext/memconst.C
-3051345065b ./gcc/testsuite/g++.old-deja/g++.ext/namedret1.C
-1721594512b ./gcc/testsuite/g++.old-deja/g++.ext/namedret2.C
-1693910821b ./gcc/testsuite/g++.old-deja/g++.ext/namedret3.C
-4236509390b ./gcc/testsuite/g++.old-deja/g++.ext/noweak1.C
-1485906792b ./gcc/testsuite/g++.old-deja/g++.ext/null1.C
-1534627522b ./gcc/testsuite/g++.old-deja/g++.ext/overload1.C
-2789279145b ./gcc/testsuite/g++.old-deja/g++.ext/pretty2.C
-1721106953b ./gcc/testsuite/g++.old-deja/g++.ext/pretty3.C
-2283773682b ./gcc/testsuite/g++.old-deja/g++.ext/pretty4.C
-2953041955b ./gcc/testsuite/g++.old-deja/g++.ext/pretty.C
-1326958568b ./gcc/testsuite/g++.old-deja/g++.ext/restrict1.C
-1853972109b ./gcc/testsuite/g++.old-deja/g++.ext/return1.C
- 463327965b ./gcc/testsuite/g++.old-deja/g++.ext/stmtexpr1.C
-3353267413b ./gcc/testsuite/g++.old-deja/g++.ext/syshdr1.C
-1434079824b ./gcc/testsuite/g++.old-deja/g++.ext/typename1.C
-3055500151b ./gcc/testsuite/g++.old-deja/g++.ext/typeof1.C
-3482525745b ./gcc/testsuite/g++.old-deja/g++.ext/typeof2.C
- 122985883b ./gcc/testsuite/g++.old-deja/g++.gb/README
-3834907847b ./gcc/testsuite/g++.old-deja/g++.gb/scope01.C
-2804649369b ./gcc/testsuite/g++.old-deja/g++.gb/scope02.C
- 435367782b ./gcc/testsuite/g++.old-deja/g++.gb/scope03.C
-4065080798b ./gcc/testsuite/g++.old-deja/g++.gb/scope04.C
-3804153482b ./gcc/testsuite/g++.old-deja/g++.gb/scope05.C
- 810866747b ./gcc/testsuite/g++.old-deja/g++.gb/scope06.C
-2470529748b ./gcc/testsuite/g++.old-deja/g++.gb/scope07.C
-3372453011b ./gcc/testsuite/g++.old-deja/g++.gb/scope08.C
-3802132245b ./gcc/testsuite/g++.old-deja/g++.gb/scope09.C
-1805528465b ./gcc/testsuite/g++.old-deja/g++.gb/scope10.C
-2330909859b ./gcc/testsuite/g++.old-deja/g++.gb/scope11.C
-3275516446b ./gcc/testsuite/g++.old-deja/g++.gb/scope12.C
- 732967750b ./gcc/testsuite/g++.old-deja/g++.gb/scope13.C
- 939161176b ./gcc/testsuite/g++.old-deja/g++.jason/2371.C
-3968774299b ./gcc/testsuite/g++.old-deja/g++.jason/3523.C
-1546884424b ./gcc/testsuite/g++.old-deja/g++.jason/access10.C
- 739404807b ./gcc/testsuite/g++.old-deja/g++.jason/access11.C
- 512908443b ./gcc/testsuite/g++.old-deja/g++.jason/access12.C
-2380497170b ./gcc/testsuite/g++.old-deja/g++.jason/access13.C
- 955814506b ./gcc/testsuite/g++.old-deja/g++.jason/access14.C
- 896691556b ./gcc/testsuite/g++.old-deja/g++.jason/access15.C
- 667302295b ./gcc/testsuite/g++.old-deja/g++.jason/access16.C
-2572582943b ./gcc/testsuite/g++.old-deja/g++.jason/access17.C
-2772251892b ./gcc/testsuite/g++.old-deja/g++.jason/access18.C
- 906409788b ./gcc/testsuite/g++.old-deja/g++.jason/access1.C
-2659493566b ./gcc/testsuite/g++.old-deja/g++.jason/access20.C
-2929579271b ./gcc/testsuite/g++.old-deja/g++.jason/access21.C
-3020128764b ./gcc/testsuite/g++.old-deja/g++.jason/access22.C
-2730640435b ./gcc/testsuite/g++.old-deja/g++.jason/access23.C
- 338921992b ./gcc/testsuite/g++.old-deja/g++.jason/access24.C
-3689044609b ./gcc/testsuite/g++.old-deja/g++.jason/access2.C
- 642011051b ./gcc/testsuite/g++.old-deja/g++.jason/access3.C
-3641897763b ./gcc/testsuite/g++.old-deja/g++.jason/access4.C
-3768207880b ./gcc/testsuite/g++.old-deja/g++.jason/access5.C
-1482167820b ./gcc/testsuite/g++.old-deja/g++.jason/access6.C
-2788333672b ./gcc/testsuite/g++.old-deja/g++.jason/access7.C
-3806038473b ./gcc/testsuite/g++.old-deja/g++.jason/access8.C
- 570522205b ./gcc/testsuite/g++.old-deja/g++.jason/access9.C
-2808067800b ./gcc/testsuite/g++.old-deja/g++.jason/aggregate.C
-3728379159b ./gcc/testsuite/g++.old-deja/g++.jason/ambig1.C
-2153743197b ./gcc/testsuite/g++.old-deja/g++.jason/ambig2.C
- 970394079b ./gcc/testsuite/g++.old-deja/g++.jason/ambig3.C
-3198278705b ./gcc/testsuite/g++.old-deja/g++.jason/anon2.C
- 221090634b ./gcc/testsuite/g++.old-deja/g++.jason/anon3.C
-1050500875b ./gcc/testsuite/g++.old-deja/g++.jason/anon4.C
-3828622053b ./gcc/testsuite/g++.old-deja/g++.jason/anon.C
-1263298999b ./gcc/testsuite/g++.old-deja/g++.jason/binding2.C
-2916172455b ./gcc/testsuite/g++.old-deja/g++.jason/binding3.C
-3877580602b ./gcc/testsuite/g++.old-deja/g++.jason/binding.C
- 406790293b ./gcc/testsuite/g++.old-deja/g++.jason/bool2.C
-4269822269b ./gcc/testsuite/g++.old-deja/g++.jason/bool3.C
-4291089432b ./gcc/testsuite/g++.old-deja/g++.jason/bool4.C
- 423379068b ./gcc/testsuite/g++.old-deja/g++.jason/bool5.C
-3708944851b ./gcc/testsuite/g++.old-deja/g++.jason/bool6.C
-2188617432b ./gcc/testsuite/g++.old-deja/g++.jason/bool7.C
- 876810594b ./gcc/testsuite/g++.old-deja/g++.jason/bool.C
- 910455504b ./gcc/testsuite/g++.old-deja/g++.jason/builtin2.C
-1992610065b ./gcc/testsuite/g++.old-deja/g++.jason/builtin.C
-3965054847b ./gcc/testsuite/g++.old-deja/g++.jason/byval2.C
-3007011667b ./gcc/testsuite/g++.old-deja/g++.jason/byval3.C
-2992950563b ./gcc/testsuite/g++.old-deja/g++.jason/byval.C
-4208843404b ./gcc/testsuite/g++.old-deja/g++.jason/cast1.C
- 864249402b ./gcc/testsuite/g++.old-deja/g++.jason/cast2.C
-3757749527b ./gcc/testsuite/g++.old-deja/g++.jason/cast3.C
-1840939242b ./gcc/testsuite/g++.old-deja/g++.jason/c-inline.C
-3337873852b ./gcc/testsuite/g++.old-deja/g++.jason/cleanup2.C
- 807930816b ./gcc/testsuite/g++.old-deja/g++.jason/cleanup.C
-4038763735b ./gcc/testsuite/g++.old-deja/g++.jason/complete1.C
-2828665920b ./gcc/testsuite/g++.old-deja/g++.jason/cond2.C
-4148991120b ./gcc/testsuite/g++.old-deja/g++.jason/cond.C
-3479274833b ./gcc/testsuite/g++.old-deja/g++.jason/condexp.C
-1286943233b ./gcc/testsuite/g++.old-deja/g++.jason/const2.C
-1359832484b ./gcc/testsuite/g++.old-deja/g++.jason/const3.C
- 217115665b ./gcc/testsuite/g++.old-deja/g++.jason/const4.C
- 455783151b ./gcc/testsuite/g++.old-deja/g++.jason/const.C
-2571490602b ./gcc/testsuite/g++.old-deja/g++.jason/context.C
-3177251757b ./gcc/testsuite/g++.old-deja/g++.jason/conversion10.C
- 79208780b ./gcc/testsuite/g++.old-deja/g++.jason/conversion11.C
- 960166000b ./gcc/testsuite/g++.old-deja/g++.jason/conversion2.C
-2252122787b ./gcc/testsuite/g++.old-deja/g++.jason/conversion3.C
-2550379102b ./gcc/testsuite/g++.old-deja/g++.jason/conversion4.C
-2689671676b ./gcc/testsuite/g++.old-deja/g++.jason/conversion5.C
- 495771780b ./gcc/testsuite/g++.old-deja/g++.jason/conversion6.C
- 537258674b ./gcc/testsuite/g++.old-deja/g++.jason/conversion7.C
- 972941297b ./gcc/testsuite/g++.old-deja/g++.jason/conversion8.C
-1301591055b ./gcc/testsuite/g++.old-deja/g++.jason/conversion9.C
- 390853410b ./gcc/testsuite/g++.old-deja/g++.jason/conversion.C
-3868623548b ./gcc/testsuite/g++.old-deja/g++.jason/crash10.C
- 672669842b ./gcc/testsuite/g++.old-deja/g++.jason/crash11.C
-2043944323b ./gcc/testsuite/g++.old-deja/g++.jason/crash12.C
-3761548571b ./gcc/testsuite/g++.old-deja/g++.jason/crash1.C
-2330655654b ./gcc/testsuite/g++.old-deja/g++.jason/crash3.C
- 631879164b ./gcc/testsuite/g++.old-deja/g++.jason/crash4.C
-1898220452b ./gcc/testsuite/g++.old-deja/g++.jason/crash5.C
-1438239883b ./gcc/testsuite/g++.old-deja/g++.jason/crash6.C
- 221060352b ./gcc/testsuite/g++.old-deja/g++.jason/crash7.C
-2108184879b ./gcc/testsuite/g++.old-deja/g++.jason/crash8.C
- 332002169b ./gcc/testsuite/g++.old-deja/g++.jason/crash9.C
-4104833271b ./gcc/testsuite/g++.old-deja/g++.jason/ctor1.C
-3353106178b ./gcc/testsuite/g++.old-deja/g++.jason/ctor2.C
- 832809616b ./gcc/testsuite/g++.old-deja/g++.jason/dcast1.C
-4007059639b ./gcc/testsuite/g++.old-deja/g++.jason/dcast2.C
-1042330916b ./gcc/testsuite/g++.old-deja/g++.jason/dcast3.C
-1151204277b ./gcc/testsuite/g++.old-deja/g++.jason/default1.C
- 480787751b ./gcc/testsuite/g++.old-deja/g++.jason/default2.C
-2355609557b ./gcc/testsuite/g++.old-deja/g++.jason/default3.C
-2216109544b ./gcc/testsuite/g++.old-deja/g++.jason/defctor.C
-3740171614b ./gcc/testsuite/g++.old-deja/g++.jason/delete1.C
-3574023328b ./gcc/testsuite/g++.old-deja/g++.jason/delete2.C
-2124825264b ./gcc/testsuite/g++.old-deja/g++.jason/delete3.C
-2782278746b ./gcc/testsuite/g++.old-deja/g++.jason/destruct2.C
-2184115717b ./gcc/testsuite/g++.old-deja/g++.jason/destruct3.C
-2354427725b ./gcc/testsuite/g++.old-deja/g++.jason/destruct4.C
-2111475973b ./gcc/testsuite/g++.old-deja/g++.jason/destruct.C
-1012609499b ./gcc/testsuite/g++.old-deja/g++.jason/dot.C
-2941621886b ./gcc/testsuite/g++.old-deja/g++.jason/dtor2.C
-2007513193b ./gcc/testsuite/g++.old-deja/g++.jason/dtor3.C
-4216434532b ./gcc/testsuite/g++.old-deja/g++.jason/dtor4.C
-2710770854b ./gcc/testsuite/g++.old-deja/g++.jason/dtor5.C
-2968837117b ./gcc/testsuite/g++.old-deja/g++.jason/dtor.C
-3290035079b ./gcc/testsuite/g++.old-deja/g++.jason/enum2.C
-2249058705b ./gcc/testsuite/g++.old-deja/g++.jason/enum3.C
-2986066562b ./gcc/testsuite/g++.old-deja/g++.jason/enum4.C
-3998200564b ./gcc/testsuite/g++.old-deja/g++.jason/enum5.C
-1384011452b ./gcc/testsuite/g++.old-deja/g++.jason/enum6.C
-1992437340b ./gcc/testsuite/g++.old-deja/g++.jason/enum7.C
- 301848339b ./gcc/testsuite/g++.old-deja/g++.jason/enum8.C
-1321613329b ./gcc/testsuite/g++.old-deja/g++.jason/enum.C
-4190940764b ./gcc/testsuite/g++.old-deja/g++.jason/explicit.C
-2873291254b ./gcc/testsuite/g++.old-deja/g++.jason/expr1.C
- 58017093b ./gcc/testsuite/g++.old-deja/g++.jason/friend2.C
- 547919805b ./gcc/testsuite/g++.old-deja/g++.jason/friend.C
-2216580894b ./gcc/testsuite/g++.old-deja/g++.jason/groff1.C
-2374680588b ./gcc/testsuite/g++.old-deja/g++.jason/hmc1.C
-4181972071b ./gcc/testsuite/g++.old-deja/g++.jason/incomplete1.C
-3516752956b ./gcc/testsuite/g++.old-deja/g++.jason/incomplete2.C
-1181670562b ./gcc/testsuite/g++.old-deja/g++.jason/init2.C
-1300989165b ./gcc/testsuite/g++.old-deja/g++.jason/init3.C
-1056655196b ./gcc/testsuite/g++.old-deja/g++.jason/init4.C
-3118714958b ./gcc/testsuite/g++.old-deja/g++.jason/init.C
-1350717964b ./gcc/testsuite/g++.old-deja/g++.jason/inline2.C
-3599001559b ./gcc/testsuite/g++.old-deja/g++.jason/inline3.C
-3360472142b ./gcc/testsuite/g++.old-deja/g++.jason/inline.C
-1197315088b ./gcc/testsuite/g++.old-deja/g++.jason/jump.C
-4143262839b ./gcc/testsuite/g++.old-deja/g++.jason/lex1.C
-3982979093b ./gcc/testsuite/g++.old-deja/g++.jason/lineno2.C
-1533566087b ./gcc/testsuite/g++.old-deja/g++.jason/lineno3.C
-3991632661b ./gcc/testsuite/g++.old-deja/g++.jason/lineno4.C
-2838970132b ./gcc/testsuite/g++.old-deja/g++.jason/lineno5.C
-4180318534b ./gcc/testsuite/g++.old-deja/g++.jason/lineno.C
-3655803253b ./gcc/testsuite/g++.old-deja/g++.jason/local.C
-1387367938b ./gcc/testsuite/g++.old-deja/g++.jason/lookup2.C
- 999889620b ./gcc/testsuite/g++.old-deja/g++.jason/lookup3.C
-1599936145b ./gcc/testsuite/g++.old-deja/g++.jason/lookup.C
- 568852262b ./gcc/testsuite/g++.old-deja/g++.jason/loverload3.C
-3199076242b ./gcc/testsuite/g++.old-deja/g++.jason/loverload4.C
-2443057294b ./gcc/testsuite/g++.old-deja/g++.jason/loverload.C
-1478776091b ./gcc/testsuite/g++.old-deja/g++.jason/lvalue2.C
-2486776920b ./gcc/testsuite/g++.old-deja/g++.jason/lvalue3.C
-2798615405b ./gcc/testsuite/g++.old-deja/g++.jason/lvalue4.C
-3786923619b ./gcc/testsuite/g++.old-deja/g++.jason/lvalue.C
-4250081538b ./gcc/testsuite/g++.old-deja/g++.jason/mangle1.C
-2194458585b ./gcc/testsuite/g++.old-deja/g++.jason/mangle2.C
-3647115525b ./gcc/testsuite/g++.old-deja/g++.jason/mangle3.C
-2894228846b ./gcc/testsuite/g++.old-deja/g++.jason/member.C
-1051601664b ./gcc/testsuite/g++.old-deja/g++.jason/method.C
-4260969442b ./gcc/testsuite/g++.old-deja/g++.jason/mi.C
-1705975415b ./gcc/testsuite/g++.old-deja/g++.jason/mutable1.C
-1037927762b ./gcc/testsuite/g++.old-deja/g++.jason/nested1.C
-2952138325b ./gcc/testsuite/g++.old-deja/g++.jason/nested2.C
-3141195955b ./gcc/testsuite/g++.old-deja/g++.jason/nested4.C
-1483140137b ./gcc/testsuite/g++.old-deja/g++.jason/nested5.C
- 626314633b ./gcc/testsuite/g++.old-deja/g++.jason/nested6.C
-1780563080b ./gcc/testsuite/g++.old-deja/g++.jason/nested7.C
- 496854853b ./gcc/testsuite/g++.old-deja/g++.jason/nested8.C
- 814313341b ./gcc/testsuite/g++.old-deja/g++.jason/net2.C
-2330092476b ./gcc/testsuite/g++.old-deja/g++.jason/net.C
-4108034998b ./gcc/testsuite/g++.old-deja/g++.jason/new2.C
-2192651651b ./gcc/testsuite/g++.old-deja/g++.jason/new3.C
-2568972186b ./gcc/testsuite/g++.old-deja/g++.jason/new4.C
-3405685275b ./gcc/testsuite/g++.old-deja/g++.jason/new5.C
- 761357985b ./gcc/testsuite/g++.old-deja/g++.jason/new.C
- 293878671b ./gcc/testsuite/g++.old-deja/g++.jason/offset1.C
-4268803500b ./gcc/testsuite/g++.old-deja/g++.jason/offset2.C
-3340471795b ./gcc/testsuite/g++.old-deja/g++.jason/offset3.C
- 832296383b ./gcc/testsuite/g++.old-deja/g++.jason/offset4.C
-1182090566b ./gcc/testsuite/g++.old-deja/g++.jason/opeq2.C
- 454853917b ./gcc/testsuite/g++.old-deja/g++.jason/opeq3.C
-2472414567b ./gcc/testsuite/g++.old-deja/g++.jason/opeq4.C
- 238172458b ./gcc/testsuite/g++.old-deja/g++.jason/opeq5.C
-4059740226b ./gcc/testsuite/g++.old-deja/g++.jason/opeq6.C
-1753231050b ./gcc/testsuite/g++.old-deja/g++.jason/opeq.C
- 688207169b ./gcc/testsuite/g++.old-deja/g++.jason/operator2.C
- 577328766b ./gcc/testsuite/g++.old-deja/g++.jason/operator.C
- 754653379b ./gcc/testsuite/g++.old-deja/g++.jason/opover.C
-2635243370b ./gcc/testsuite/g++.old-deja/g++.jason/optimize2.C
-1303452248b ./gcc/testsuite/g++.old-deja/g++.jason/optimize.C
- 836020261b ./gcc/testsuite/g++.old-deja/g++.jason/overload11.C
-3916743053b ./gcc/testsuite/g++.old-deja/g++.jason/overload12.C
-2565712491b ./gcc/testsuite/g++.old-deja/g++.jason/overload13.C
- 726365895b ./gcc/testsuite/g++.old-deja/g++.jason/overload14.C
-1696533816b ./gcc/testsuite/g++.old-deja/g++.jason/overload15.C
- 472911773b ./gcc/testsuite/g++.old-deja/g++.jason/overload16.C
- 996751401b ./gcc/testsuite/g++.old-deja/g++.jason/overload17.C
-3773007718b ./gcc/testsuite/g++.old-deja/g++.jason/overload18.C
-2041143457b ./gcc/testsuite/g++.old-deja/g++.jason/overload19.C
-3391930718b ./gcc/testsuite/g++.old-deja/g++.jason/overload1.C
-1992601156b ./gcc/testsuite/g++.old-deja/g++.jason/overload20.C
- 415714207b ./gcc/testsuite/g++.old-deja/g++.jason/overload21.C
- 109216083b ./gcc/testsuite/g++.old-deja/g++.jason/overload22.C
-2153494648b ./gcc/testsuite/g++.old-deja/g++.jason/overload23.C
-3487011657b ./gcc/testsuite/g++.old-deja/g++.jason/overload24.C
- 419380100b ./gcc/testsuite/g++.old-deja/g++.jason/overload26.C
-2193486232b ./gcc/testsuite/g++.old-deja/g++.jason/overload27.C
-2342247690b ./gcc/testsuite/g++.old-deja/g++.jason/overload28.C
-4082490103b ./gcc/testsuite/g++.old-deja/g++.jason/overload29.C
-1769317874b ./gcc/testsuite/g++.old-deja/g++.jason/overload2.C
-1565023156b ./gcc/testsuite/g++.old-deja/g++.jason/overload30.C
-1649077682b ./gcc/testsuite/g++.old-deja/g++.jason/overload31.C
-3667286916b ./gcc/testsuite/g++.old-deja/g++.jason/overload32.C
- 226155295b ./gcc/testsuite/g++.old-deja/g++.jason/overload33.C
-3641493497b ./gcc/testsuite/g++.old-deja/g++.jason/overload34.C
-3176325712b ./gcc/testsuite/g++.old-deja/g++.jason/overload35.C
-3976015069b ./gcc/testsuite/g++.old-deja/g++.jason/overload36.C
-1344900458b ./gcc/testsuite/g++.old-deja/g++.jason/overload3.C
-1743964910b ./gcc/testsuite/g++.old-deja/g++.jason/overload4.C
-2748549869b ./gcc/testsuite/g++.old-deja/g++.jason/overload5.C
-2771085460b ./gcc/testsuite/g++.old-deja/g++.jason/overload6.C
-4124673438b ./gcc/testsuite/g++.old-deja/g++.jason/overload7.C
-2918456708b ./gcc/testsuite/g++.old-deja/g++.jason/overload8.C
-2194408276b ./gcc/testsuite/g++.old-deja/g++.jason/overload9.C
-2991781301b ./gcc/testsuite/g++.old-deja/g++.jason/overload.C
- 947289597b ./gcc/testsuite/g++.old-deja/g++.jason/parse10.C
-3841541211b ./gcc/testsuite/g++.old-deja/g++.jason/parse11.C
-3217450619b ./gcc/testsuite/g++.old-deja/g++.jason/parse12.C
-1215499670b ./gcc/testsuite/g++.old-deja/g++.jason/parse13.C
-3456522595b ./gcc/testsuite/g++.old-deja/g++.jason/parse14.C
-4063544381b ./gcc/testsuite/g++.old-deja/g++.jason/parse1.C
-3921597478b ./gcc/testsuite/g++.old-deja/g++.jason/parse2.C
-2265325245b ./gcc/testsuite/g++.old-deja/g++.jason/parse3.C
-1946466186b ./gcc/testsuite/g++.old-deja/g++.jason/parse4.C
-2253877513b ./gcc/testsuite/g++.old-deja/g++.jason/parse5.C
-1310766643b ./gcc/testsuite/g++.old-deja/g++.jason/parse6.C
-1407239852b ./gcc/testsuite/g++.old-deja/g++.jason/parse7.C
-2608587867b ./gcc/testsuite/g++.old-deja/g++.jason/parse8.C
-2097676131b ./gcc/testsuite/g++.old-deja/g++.jason/parse9.C
-2869094375b ./gcc/testsuite/g++.old-deja/g++.jason/pmem2.C
- 515838035b ./gcc/testsuite/g++.old-deja/g++.jason/pmem3.C
- 882646803b ./gcc/testsuite/g++.old-deja/g++.jason/pmem4.C
-3300711445b ./gcc/testsuite/g++.old-deja/g++.jason/pmem.C
-2099557976b ./gcc/testsuite/g++.old-deja/g++.jason/pmf2.C
-2245415039b ./gcc/testsuite/g++.old-deja/g++.jason/pmf3.C
-2911197085b ./gcc/testsuite/g++.old-deja/g++.jason/pmf4.C
-3829985497b ./gcc/testsuite/g++.old-deja/g++.jason/pmf5.C
-2138251562b ./gcc/testsuite/g++.old-deja/g++.jason/pmf6.C
-2487032279b ./gcc/testsuite/g++.old-deja/g++.jason/pmf7.C
-2987146868b ./gcc/testsuite/g++.old-deja/g++.jason/pmf8.C
- 788166114b ./gcc/testsuite/g++.old-deja/g++.jason/pmf9.C
-2275329075b ./gcc/testsuite/g++.old-deja/g++.jason/pmf.C
-1423191415b ./gcc/testsuite/g++.old-deja/g++.jason/pmftemp.C
-2592898175b ./gcc/testsuite/g++.old-deja/g++.jason/precedence.C
-2132972863b ./gcc/testsuite/g++.old-deja/g++.jason/redecl1.C
-2423430425b ./gcc/testsuite/g++.old-deja/g++.jason/ref10.C
- 252373474b ./gcc/testsuite/g++.old-deja/g++.jason/ref11.C
-4220963029b ./gcc/testsuite/g++.old-deja/g++.jason/ref12.C
- 829230497b ./gcc/testsuite/g++.old-deja/g++.jason/ref1.C
-1138343018b ./gcc/testsuite/g++.old-deja/g++.jason/ref2.C
-4198332542b ./gcc/testsuite/g++.old-deja/g++.jason/ref3.C
-3108698233b ./gcc/testsuite/g++.old-deja/g++.jason/ref4.C
- 649579178b ./gcc/testsuite/g++.old-deja/g++.jason/ref5.C
-1504658699b ./gcc/testsuite/g++.old-deja/g++.jason/ref6.C
-3285486142b ./gcc/testsuite/g++.old-deja/g++.jason/ref7.C
-1357591997b ./gcc/testsuite/g++.old-deja/g++.jason/ref8.C
-1262470243b ./gcc/testsuite/g++.old-deja/g++.jason/ref9.C
-2679324150b ./gcc/testsuite/g++.old-deja/g++.jason/report.C
-1302488236b ./gcc/testsuite/g++.old-deja/g++.jason/return2.C
-1422012899b ./gcc/testsuite/g++.old-deja/g++.jason/return3.C
-2084961742b ./gcc/testsuite/g++.old-deja/g++.jason/return.C
- 364370005b ./gcc/testsuite/g++.old-deja/g++.jason/rfg10.C
-3958400971b ./gcc/testsuite/g++.old-deja/g++.jason/rfg11.C
- 288348052b ./gcc/testsuite/g++.old-deja/g++.jason/rfg12.C
-1796028566b ./gcc/testsuite/g++.old-deja/g++.jason/rfg13.C
-1386111440b ./gcc/testsuite/g++.old-deja/g++.jason/rfg14.C
-2961300206b ./gcc/testsuite/g++.old-deja/g++.jason/rfg16.C
-3703739742b ./gcc/testsuite/g++.old-deja/g++.jason/rfg17.C
-3495930194b ./gcc/testsuite/g++.old-deja/g++.jason/rfg18.C
-4282982182b ./gcc/testsuite/g++.old-deja/g++.jason/rfg1.C
-3118729702b ./gcc/testsuite/g++.old-deja/g++.jason/rfg20.C
- 258053642b ./gcc/testsuite/g++.old-deja/g++.jason/rfg21.C
-1272258763b ./gcc/testsuite/g++.old-deja/g++.jason/rfg22.C
-4108777186b ./gcc/testsuite/g++.old-deja/g++.jason/rfg23.C
-2848746038b ./gcc/testsuite/g++.old-deja/g++.jason/rfg24.C
- 641797911b ./gcc/testsuite/g++.old-deja/g++.jason/rfg25.C
-4125676781b ./gcc/testsuite/g++.old-deja/g++.jason/rfg26.C
-2764234637b ./gcc/testsuite/g++.old-deja/g++.jason/rfg27.C
- 838463016b ./gcc/testsuite/g++.old-deja/g++.jason/rfg28.C
-3117732826b ./gcc/testsuite/g++.old-deja/g++.jason/rfg2.C
- 148681664b ./gcc/testsuite/g++.old-deja/g++.jason/rfg3.C
-3129549671b ./gcc/testsuite/g++.old-deja/g++.jason/rfg4.C
- 295301056b ./gcc/testsuite/g++.old-deja/g++.jason/rfg5.C
- 133547703b ./gcc/testsuite/g++.old-deja/g++.jason/rfg6.C
-4261887891b ./gcc/testsuite/g++.old-deja/g++.jason/rfg7.C
-2396445002b ./gcc/testsuite/g++.old-deja/g++.jason/rfg8.C
-1855801091b ./gcc/testsuite/g++.old-deja/g++.jason/rfg9.C
-4260838706b ./gcc/testsuite/g++.old-deja/g++.jason/rvalue1.C
-2113044148b ./gcc/testsuite/g++.old-deja/g++.jason/rvalue2.C
-3051419482b ./gcc/testsuite/g++.old-deja/g++.jason/rvalue3.C
-3805792750b ./gcc/testsuite/g++.old-deja/g++.jason/scoping10.C
-3393161477b ./gcc/testsuite/g++.old-deja/g++.jason/scoping11.C
- 703500731b ./gcc/testsuite/g++.old-deja/g++.jason/scoping12.C
-1582373194b ./gcc/testsuite/g++.old-deja/g++.jason/scoping13.C
-2742637818b ./gcc/testsuite/g++.old-deja/g++.jason/scoping14.C
-2567200952b ./gcc/testsuite/g++.old-deja/g++.jason/scoping15.C
-3388918749b ./gcc/testsuite/g++.old-deja/g++.jason/scoping16.C
-2179647693b ./gcc/testsuite/g++.old-deja/g++.jason/scoping17.C
-1834126148b ./gcc/testsuite/g++.old-deja/g++.jason/scoping2.C
- 136403461b ./gcc/testsuite/g++.old-deja/g++.jason/scoping3.C
-1602656589b ./gcc/testsuite/g++.old-deja/g++.jason/scoping4.C
-3284836457b ./gcc/testsuite/g++.old-deja/g++.jason/scoping5.C
-1370340055b ./gcc/testsuite/g++.old-deja/g++.jason/scoping6.C
-3067776040b ./gcc/testsuite/g++.old-deja/g++.jason/scoping7.C
-2559597057b ./gcc/testsuite/g++.old-deja/g++.jason/scoping8.C
-3161523697b ./gcc/testsuite/g++.old-deja/g++.jason/scoping9.C
-2200136874b ./gcc/testsuite/g++.old-deja/g++.jason/scoping.C
-3886458318b ./gcc/testsuite/g++.old-deja/g++.jason/shadow1.C
-1823439671b ./gcc/testsuite/g++.old-deja/g++.jason/soverload.C
-2071551425b ./gcc/testsuite/g++.old-deja/g++.jason/special.C
-1986795528b ./gcc/testsuite/g++.old-deja/g++.jason/static1.C
- 298249268b ./gcc/testsuite/g++.old-deja/g++.jason/synth10.C
-2450156296b ./gcc/testsuite/g++.old-deja/g++.jason/synth2.C
- 160110469b ./gcc/testsuite/g++.old-deja/g++.jason/synth3.C
-1411162779b ./gcc/testsuite/g++.old-deja/g++.jason/synth4.C
- 79423264b ./gcc/testsuite/g++.old-deja/g++.jason/synth5.C
-2282657951b ./gcc/testsuite/g++.old-deja/g++.jason/synth6.C
- 192973807b ./gcc/testsuite/g++.old-deja/g++.jason/synth7.C
-1655213980b ./gcc/testsuite/g++.old-deja/g++.jason/synth8.C
-1526912645b ./gcc/testsuite/g++.old-deja/g++.jason/synth9.C
-3703096829b ./gcc/testsuite/g++.old-deja/g++.jason/synth.C
-1892722905b ./gcc/testsuite/g++.old-deja/g++.jason/tempargs.C
-2837214502b ./gcc/testsuite/g++.old-deja/g++.jason/tempcons.C
- 869843187b ./gcc/testsuite/g++.old-deja/g++.jason/tempdest.C
-2805267621b ./gcc/testsuite/g++.old-deja/g++.jason/tempinst1.C
-3406530265b ./gcc/testsuite/g++.old-deja/g++.jason/template10.C
-2580181076b ./gcc/testsuite/g++.old-deja/g++.jason/template11.C
-1678941454b ./gcc/testsuite/g++.old-deja/g++.jason/template12.C
-2871221872b ./gcc/testsuite/g++.old-deja/g++.jason/template14.C
-1159298863b ./gcc/testsuite/g++.old-deja/g++.jason/template15.C
-2954276864b ./gcc/testsuite/g++.old-deja/g++.jason/template16.C
-1681885743b ./gcc/testsuite/g++.old-deja/g++.jason/template17.C
- 885790390b ./gcc/testsuite/g++.old-deja/g++.jason/template18.C
-3406115895b ./gcc/testsuite/g++.old-deja/g++.jason/template19.C
-3635346741b ./gcc/testsuite/g++.old-deja/g++.jason/template1.C
-3294085147b ./gcc/testsuite/g++.old-deja/g++.jason/template20.C
-1417003889b ./gcc/testsuite/g++.old-deja/g++.jason/template21.C
-3311958351b ./gcc/testsuite/g++.old-deja/g++.jason/template22.C
-1503356994b ./gcc/testsuite/g++.old-deja/g++.jason/template23.C
-2025042004b ./gcc/testsuite/g++.old-deja/g++.jason/template24.C
- 406184991b ./gcc/testsuite/g++.old-deja/g++.jason/template25.C
-2223219564b ./gcc/testsuite/g++.old-deja/g++.jason/template26.C
- 407308284b ./gcc/testsuite/g++.old-deja/g++.jason/template27.C
-2630100527b ./gcc/testsuite/g++.old-deja/g++.jason/template28.C
-3438625432b ./gcc/testsuite/g++.old-deja/g++.jason/template29.C
- 43030923b ./gcc/testsuite/g++.old-deja/g++.jason/template2.C
-2310025160b ./gcc/testsuite/g++.old-deja/g++.jason/template30.C
-3335790712b ./gcc/testsuite/g++.old-deja/g++.jason/template31.C
- 987062964b ./gcc/testsuite/g++.old-deja/g++.jason/template32.C
-1904333349b ./gcc/testsuite/g++.old-deja/g++.jason/template33.C
-2135579206b ./gcc/testsuite/g++.old-deja/g++.jason/template34.C
-3189860272b ./gcc/testsuite/g++.old-deja/g++.jason/template35.C
- 805289702b ./gcc/testsuite/g++.old-deja/g++.jason/template36.C
-2952351972b ./gcc/testsuite/g++.old-deja/g++.jason/template37.C
-1653595335b ./gcc/testsuite/g++.old-deja/g++.jason/template39.C
-2243617030b ./gcc/testsuite/g++.old-deja/g++.jason/template3.C
- 856312588b ./gcc/testsuite/g++.old-deja/g++.jason/template40.C
-3809808817b ./gcc/testsuite/g++.old-deja/g++.jason/template41.C
-1916885555b ./gcc/testsuite/g++.old-deja/g++.jason/template42.C
-2401225387b ./gcc/testsuite/g++.old-deja/g++.jason/template43.C
- 702715140b ./gcc/testsuite/g++.old-deja/g++.jason/template44.C
-2458850401b ./gcc/testsuite/g++.old-deja/g++.jason/template4.C
-3543005329b ./gcc/testsuite/g++.old-deja/g++.jason/template5.C
- 769854245b ./gcc/testsuite/g++.old-deja/g++.jason/template6.C
-2079411687b ./gcc/testsuite/g++.old-deja/g++.jason/template7.C
- 700019405b ./gcc/testsuite/g++.old-deja/g++.jason/template8.C
-3077908891b ./gcc/testsuite/g++.old-deja/g++.jason/template9.C
-2081867311b ./gcc/testsuite/g++.old-deja/g++.jason/temporary2.C
-3434711731b ./gcc/testsuite/g++.old-deja/g++.jason/temporary3.C
-2488321595b ./gcc/testsuite/g++.old-deja/g++.jason/temporary4.C
-1042965294b ./gcc/testsuite/g++.old-deja/g++.jason/temporary5.C
-3514956217b ./gcc/testsuite/g++.old-deja/g++.jason/temporary6.C
-2628353068b ./gcc/testsuite/g++.old-deja/g++.jason/temporary7.C
-1522627554b ./gcc/testsuite/g++.old-deja/g++.jason/temporary8.C
-2460644105b ./gcc/testsuite/g++.old-deja/g++.jason/temporary.C
-3278590279b ./gcc/testsuite/g++.old-deja/g++.jason/tempover.C
-2151541644b ./gcc/testsuite/g++.old-deja/g++.jason/tempparse.C
-2779254633b ./gcc/testsuite/g++.old-deja/g++.jason/tempsub.C
- 853323087b ./gcc/testsuite/g++.old-deja/g++.jason/this.C
-4280002449b ./gcc/testsuite/g++.old-deja/g++.jason/thunk1.C
- 274835885b ./gcc/testsuite/g++.old-deja/g++.jason/thunk2.C
-1347779987b ./gcc/testsuite/g++.old-deja/g++.jason/thunk3.C
-2448025143b ./gcc/testsuite/g++.old-deja/g++.jason/tredecl2.C
-3072514699b ./gcc/testsuite/g++.old-deja/g++.jason/tredecl3.C
- 979924921b ./gcc/testsuite/g++.old-deja/g++.jason/tredecl4.C
-3711346877b ./gcc/testsuite/g++.old-deja/g++.jason/tredecl.C
- 569137935b ./gcc/testsuite/g++.old-deja/g++.jason/trivial.C
-2659060194b ./gcc/testsuite/g++.old-deja/g++.jason/typeck.C
-2723549891b ./gcc/testsuite/g++.old-deja/g++.jason/typedef2.C
-3743711814b ./gcc/testsuite/g++.old-deja/g++.jason/typedef3.C
- 299682196b ./gcc/testsuite/g++.old-deja/g++.jason/typedef.C
-3951989009b ./gcc/testsuite/g++.old-deja/g++.jason/typeid1.C
- 999555960b ./gcc/testsuite/g++.old-deja/g++.jason/typeid2.C
- 281221996b ./gcc/testsuite/g++.old-deja/g++.jason/union.C
-4213241018b ./gcc/testsuite/g++.old-deja/g++.jason/vecdel.C
-1193567888b ./gcc/testsuite/g++.old-deja/g++.jason/virtual2.C
-3907710929b ./gcc/testsuite/g++.old-deja/g++.jason/virtual.C
- 628732210b ./gcc/testsuite/g++.old-deja/g++.jason/warning10.C
- 230540000b ./gcc/testsuite/g++.old-deja/g++.jason/warning1.C
-4258001283b ./gcc/testsuite/g++.old-deja/g++.jason/warning2.C
-1528338319b ./gcc/testsuite/g++.old-deja/g++.jason/warning3.C
-4233202460b ./gcc/testsuite/g++.old-deja/g++.jason/warning4.C
-2344004192b ./gcc/testsuite/g++.old-deja/g++.jason/warning5.C
-3616427734b ./gcc/testsuite/g++.old-deja/g++.jason/warning6.C
-1089399134b ./gcc/testsuite/g++.old-deja/g++.jason/warning7.C
-2423657184b ./gcc/testsuite/g++.old-deja/g++.jason/warning8.C
-2936679445b ./gcc/testsuite/g++.old-deja/g++.jason/warning9.C
-2476588872b ./gcc/testsuite/g++.old-deja/g++.law/access1.C
-1417723751b ./gcc/testsuite/g++.old-deja/g++.law/access2.C
-1986081483b ./gcc/testsuite/g++.old-deja/g++.law/access3.C
-2335314782b ./gcc/testsuite/g++.old-deja/g++.law/access4.C
-2106211778b ./gcc/testsuite/g++.old-deja/g++.law/access5.C
-2654444924b ./gcc/testsuite/g++.old-deja/g++.law/arg10.C
-3238389534b ./gcc/testsuite/g++.old-deja/g++.law/arg11.C
-4149004511b ./gcc/testsuite/g++.old-deja/g++.law/arg1.C
- 629763071b ./gcc/testsuite/g++.old-deja/g++.law/arg2.C
-3123919430b ./gcc/testsuite/g++.old-deja/g++.law/arg3.C
-2520473449b ./gcc/testsuite/g++.old-deja/g++.law/arg4.C
-2497627375b ./gcc/testsuite/g++.old-deja/g++.law/arg5.C
- 668182423b ./gcc/testsuite/g++.old-deja/g++.law/arg6.C
-4040623157b ./gcc/testsuite/g++.old-deja/g++.law/arg7.C
-3232506355b ./gcc/testsuite/g++.old-deja/g++.law/arg8.C
-1902710110b ./gcc/testsuite/g++.old-deja/g++.law/arg9.C
-2967336193b ./gcc/testsuite/g++.old-deja/g++.law/arm10.C
- 256975320b ./gcc/testsuite/g++.old-deja/g++.law/arm11.C
-2111564718b ./gcc/testsuite/g++.old-deja/g++.law/arm12.C
-1879426060b ./gcc/testsuite/g++.old-deja/g++.law/arm13.C
-1730130090b ./gcc/testsuite/g++.old-deja/g++.law/arm14.C
- 730443534b ./gcc/testsuite/g++.old-deja/g++.law/arm15.C
-2538202217b ./gcc/testsuite/g++.old-deja/g++.law/arm16.C
-1082355743b ./gcc/testsuite/g++.old-deja/g++.law/arm1.C
- 396475240b ./gcc/testsuite/g++.old-deja/g++.law/arm2.C
- 684470600b ./gcc/testsuite/g++.old-deja/g++.law/arm3.C
- 123832841b ./gcc/testsuite/g++.old-deja/g++.law/arm4.C
-1397196608b ./gcc/testsuite/g++.old-deja/g++.law/arm5.C
-1863539998b ./gcc/testsuite/g++.old-deja/g++.law/arm6.C
-1092943914b ./gcc/testsuite/g++.old-deja/g++.law/arm7.C
- 156062104b ./gcc/testsuite/g++.old-deja/g++.law/arm8.C
-3680909273b ./gcc/testsuite/g++.old-deja/g++.law/arm9.C
-3246271332b ./gcc/testsuite/g++.old-deja/g++.law/array1.C
-3109915032b ./gcc/testsuite/g++.old-deja/g++.law/array2.C
-4092916240b ./gcc/testsuite/g++.old-deja/g++.law/bad-error1.C
-3315748895b ./gcc/testsuite/g++.old-deja/g++.law/bad-error3.C
- 17463055b ./gcc/testsuite/g++.old-deja/g++.law/bad-error4.C
-3420787868b ./gcc/testsuite/g++.old-deja/g++.law/bad-error6.C
-3619362891b ./gcc/testsuite/g++.old-deja/g++.law/bad-error7.C
-3180589913b ./gcc/testsuite/g++.old-deja/g++.law/bit-fields1.C
- 987706110b ./gcc/testsuite/g++.old-deja/g++.law/bit-fields2.C
-2693195990b ./gcc/testsuite/g++.old-deja/g++.law/bit-fields3.C
-2084814101b ./gcc/testsuite/g++.old-deja/g++.law/builtin1.C
- 282097136b ./gcc/testsuite/g++.old-deja/g++.law/casts1.C
- 992091015b ./gcc/testsuite/g++.old-deja/g++.law/casts2.C
-3081944627b ./gcc/testsuite/g++.old-deja/g++.law/casts3.C
-2365431738b ./gcc/testsuite/g++.old-deja/g++.law/code-gen1.C
-3963562220b ./gcc/testsuite/g++.old-deja/g++.law/code-gen2.C
- 642563506b ./gcc/testsuite/g++.old-deja/g++.law/code-gen4.C
-1581356732b ./gcc/testsuite/g++.old-deja/g++.law/code-gen5.C
-3634037248b ./gcc/testsuite/g++.old-deja/g++.law/copy1.C
-1559838734b ./gcc/testsuite/g++.old-deja/g++.law/copy2.C
-2824193941b ./gcc/testsuite/g++.old-deja/g++.law/ctors10.C
-3669003858b ./gcc/testsuite/g++.old-deja/g++.law/ctors11.C
- 162342663b ./gcc/testsuite/g++.old-deja/g++.law/ctors12.C
-2682605352b ./gcc/testsuite/g++.old-deja/g++.law/ctors13.C
-2981100605b ./gcc/testsuite/g++.old-deja/g++.law/ctors14.C
-2355681221b ./gcc/testsuite/g++.old-deja/g++.law/ctors15.C
-2426347265b ./gcc/testsuite/g++.old-deja/g++.law/ctors16.C
-4195839953b ./gcc/testsuite/g++.old-deja/g++.law/ctors17.C
- 795806665b ./gcc/testsuite/g++.old-deja/g++.law/ctors18.C
- 669077619b ./gcc/testsuite/g++.old-deja/g++.law/ctors19.C
-1092557618b ./gcc/testsuite/g++.old-deja/g++.law/ctors1.C
-1400780598b ./gcc/testsuite/g++.old-deja/g++.law/ctors20.C
- 217884353b ./gcc/testsuite/g++.old-deja/g++.law/ctors21.C
- 487905434b ./gcc/testsuite/g++.old-deja/g++.law/ctors2.C
-1618360763b ./gcc/testsuite/g++.old-deja/g++.law/ctors3.C
-2740682745b ./gcc/testsuite/g++.old-deja/g++.law/ctors4.C
-4199368053b ./gcc/testsuite/g++.old-deja/g++.law/ctors5.C
-2129919082b ./gcc/testsuite/g++.old-deja/g++.law/ctors6.C
-1869709463b ./gcc/testsuite/g++.old-deja/g++.law/ctors7.C
- 526334519b ./gcc/testsuite/g++.old-deja/g++.law/ctors8.C
- 270958262b ./gcc/testsuite/g++.old-deja/g++.law/ctors9.C
-2152841651b ./gcc/testsuite/g++.old-deja/g++.law/cvt10.C
-3565079229b ./gcc/testsuite/g++.old-deja/g++.law/cvt11.C
-2546176762b ./gcc/testsuite/g++.old-deja/g++.law/cvt12.C
-3264317807b ./gcc/testsuite/g++.old-deja/g++.law/cvt13.C
- 421661935b ./gcc/testsuite/g++.old-deja/g++.law/cvt14.C
-2631308961b ./gcc/testsuite/g++.old-deja/g++.law/cvt15.C
-1587124897b ./gcc/testsuite/g++.old-deja/g++.law/cvt16.C
- 394815871b ./gcc/testsuite/g++.old-deja/g++.law/cvt17.C
-3549238781b ./gcc/testsuite/g++.old-deja/g++.law/cvt18.C
-3392944402b ./gcc/testsuite/g++.old-deja/g++.law/cvt19.C
-2381956011b ./gcc/testsuite/g++.old-deja/g++.law/cvt1.C
-2158455043b ./gcc/testsuite/g++.old-deja/g++.law/cvt20.C
- 836977921b ./gcc/testsuite/g++.old-deja/g++.law/cvt21.C
-2819411287b ./gcc/testsuite/g++.old-deja/g++.law/cvt22.C
-3913198799b ./gcc/testsuite/g++.old-deja/g++.law/cvt23.C
- 689250222b ./gcc/testsuite/g++.old-deja/g++.law/cvt2.C
-2951649907b ./gcc/testsuite/g++.old-deja/g++.law/cvt3.C
-1937028645b ./gcc/testsuite/g++.old-deja/g++.law/cvt4.C
-2149948272b ./gcc/testsuite/g++.old-deja/g++.law/cvt5.C
-1375863901b ./gcc/testsuite/g++.old-deja/g++.law/cvt6.C
-2338585473b ./gcc/testsuite/g++.old-deja/g++.law/cvt7.C
-4106332146b ./gcc/testsuite/g++.old-deja/g++.law/cvt8.C
-3074219571b ./gcc/testsuite/g++.old-deja/g++.law/cvt9.C
-3892359310b ./gcc/testsuite/g++.old-deja/g++.law/dossier1.C
-1852727691b ./gcc/testsuite/g++.old-deja/g++.law/dtors1.C
- 417330939b ./gcc/testsuite/g++.old-deja/g++.law/dtors2.C
- 937750634b ./gcc/testsuite/g++.old-deja/g++.law/dtors3.C
- 674694281b ./gcc/testsuite/g++.old-deja/g++.law/dtors4.C
- 148445216b ./gcc/testsuite/g++.old-deja/g++.law/dtors5.C
-3496311789b ./gcc/testsuite/g++.old-deja/g++.law/enum1.C
-2839303777b ./gcc/testsuite/g++.old-deja/g++.law/enum2.C
- 606148435b ./gcc/testsuite/g++.old-deja/g++.law/enum3.C
-1232585368b ./gcc/testsuite/g++.old-deja/g++.law/enum4.C
-3791083426b ./gcc/testsuite/g++.old-deja/g++.law/enum6.C
-3394503156b ./gcc/testsuite/g++.old-deja/g++.law/enum7.C
-1026608225b ./gcc/testsuite/g++.old-deja/g++.law/enum8.C
-4123082037b ./gcc/testsuite/g++.old-deja/g++.law/enum9.C
-2196184153b ./gcc/testsuite/g++.old-deja/g++.law/except1.C
-1409867857b ./gcc/testsuite/g++.old-deja/g++.law/except2.C
-4240738373b ./gcc/testsuite/g++.old-deja/g++.law/except3.C
-2625185129b ./gcc/testsuite/g++.old-deja/g++.law/except4.C
-4029601209b ./gcc/testsuite/g++.old-deja/g++.law/except5.C
-1616938742b ./gcc/testsuite/g++.old-deja/g++.law/except6.C
-1596582118b ./gcc/testsuite/g++.old-deja/g++.law/friend1.C
-3071269392b ./gcc/testsuite/g++.old-deja/g++.law/friend4.C
- 353712724b ./gcc/testsuite/g++.old-deja/g++.law/friend5.C
-2516415904b ./gcc/testsuite/g++.old-deja/g++.law/global-init1.C
-2935803087b ./gcc/testsuite/g++.old-deja/g++.law/incdec1.C
-3566036893b ./gcc/testsuite/g++.old-deja/g++.law/init10.C
-3857491837b ./gcc/testsuite/g++.old-deja/g++.law/init11.C
-4138152619b ./gcc/testsuite/g++.old-deja/g++.law/init13.C
-1266397199b ./gcc/testsuite/g++.old-deja/g++.law/init14.C
-1302059369b ./gcc/testsuite/g++.old-deja/g++.law/init1.C
-2233506301b ./gcc/testsuite/g++.old-deja/g++.law/init2.C
-2232979686b ./gcc/testsuite/g++.old-deja/g++.law/init3.C
-1022202873b ./gcc/testsuite/g++.old-deja/g++.law/init4.C
-3023067824b ./gcc/testsuite/g++.old-deja/g++.law/init5.C
-1140061940b ./gcc/testsuite/g++.old-deja/g++.law/init6.C
-2796925503b ./gcc/testsuite/g++.old-deja/g++.law/init7.C
-3753762488b ./gcc/testsuite/g++.old-deja/g++.law/init8.C
-2957670852b ./gcc/testsuite/g++.old-deja/g++.law/init9.C
-1705968800b ./gcc/testsuite/g++.old-deja/g++.law/inline4.C
-2020382912b ./gcc/testsuite/g++.old-deja/g++.law/inline6.C
-1885239478b ./gcc/testsuite/g++.old-deja/g++.law/inline7.C
-1019141845b ./gcc/testsuite/g++.old-deja/g++.law/memoized1.C
-1827735870b ./gcc/testsuite/g++.old-deja/g++.law/mentor1.C
-2244874817b ./gcc/testsuite/g++.old-deja/g++.law/missed-error1.C
-1475603256b ./gcc/testsuite/g++.old-deja/g++.law/missed-error2.C
-4040030816b ./gcc/testsuite/g++.old-deja/g++.law/missed-error3.C
-3651573595b ./gcc/testsuite/g++.old-deja/g++.law/missing1.C
-4134785097b ./gcc/testsuite/g++.old-deja/g++.law/nest1.C
-2835730985b ./gcc/testsuite/g++.old-deja/g++.law/nest2.C
-2294472523b ./gcc/testsuite/g++.old-deja/g++.law/nest3.C
-2512749755b ./gcc/testsuite/g++.old-deja/g++.law/nest4.C
-1532872015b ./gcc/testsuite/g++.old-deja/g++.law/nest5.C
- 724141249b ./gcc/testsuite/g++.old-deja/g++.law/operators10.C
- 953903384b ./gcc/testsuite/g++.old-deja/g++.law/operators11.C
-1531795317b ./gcc/testsuite/g++.old-deja/g++.law/operators12.C
- 381569792b ./gcc/testsuite/g++.old-deja/g++.law/operators13.C
- 723011663b ./gcc/testsuite/g++.old-deja/g++.law/operators14.C
-3803866684b ./gcc/testsuite/g++.old-deja/g++.law/operators15.C
-2547646465b ./gcc/testsuite/g++.old-deja/g++.law/operators16.C
- 367329317b ./gcc/testsuite/g++.old-deja/g++.law/operators17.C
-1796063085b ./gcc/testsuite/g++.old-deja/g++.law/operators18.C
- 909424019b ./gcc/testsuite/g++.old-deja/g++.law/operators19.C
- 799876233b ./gcc/testsuite/g++.old-deja/g++.law/operators21.C
-2652758137b ./gcc/testsuite/g++.old-deja/g++.law/operators22.C
-1066444429b ./gcc/testsuite/g++.old-deja/g++.law/operators23.C
-3984151042b ./gcc/testsuite/g++.old-deja/g++.law/operators24.C
-3486772822b ./gcc/testsuite/g++.old-deja/g++.law/operators25.C
-1064475993b ./gcc/testsuite/g++.old-deja/g++.law/operators27.C
-1472827461b ./gcc/testsuite/g++.old-deja/g++.law/operators28.C
-3543940161b ./gcc/testsuite/g++.old-deja/g++.law/operators29.C
-3492185823b ./gcc/testsuite/g++.old-deja/g++.law/operators2.C
- 936276361b ./gcc/testsuite/g++.old-deja/g++.law/operators30.C
-1540784012b ./gcc/testsuite/g++.old-deja/g++.law/operators31.C
-1046500493b ./gcc/testsuite/g++.old-deja/g++.law/operators32.C
-1564136570b ./gcc/testsuite/g++.old-deja/g++.law/operators33.C
-2258128088b ./gcc/testsuite/g++.old-deja/g++.law/operators34.C
- 578739979b ./gcc/testsuite/g++.old-deja/g++.law/operators3.C
- 608812129b ./gcc/testsuite/g++.old-deja/g++.law/operators4.C
-1329892354b ./gcc/testsuite/g++.old-deja/g++.law/operators6.C
- 355314823b ./gcc/testsuite/g++.old-deja/g++.law/operators8.C
-1673377936b ./gcc/testsuite/g++.old-deja/g++.law/operators9.C
-3113604261b ./gcc/testsuite/g++.old-deja/g++.law/parsing10.C
-2567910598b ./gcc/testsuite/g++.old-deja/g++.law/parsing1.C
-1152481023b ./gcc/testsuite/g++.old-deja/g++.law/parsing2.C
-1999913694b ./gcc/testsuite/g++.old-deja/g++.law/parsing3.C
-2775279224b ./gcc/testsuite/g++.old-deja/g++.law/parsing4.C
- 945709973b ./gcc/testsuite/g++.old-deja/g++.law/parsing5.C
-3261275788b ./gcc/testsuite/g++.old-deja/g++.law/parsing6.C
-3164438769b ./gcc/testsuite/g++.old-deja/g++.law/parsing7.C
-3538222549b ./gcc/testsuite/g++.old-deja/g++.law/parsing8.C
-1385735776b ./gcc/testsuite/g++.old-deja/g++.law/parsing9.C
- 924440791b ./gcc/testsuite/g++.old-deja/g++.law/patches1.C
-1946496748b ./gcc/testsuite/g++.old-deja/g++.law/pic1.C
-3426894706b ./gcc/testsuite/g++.old-deja/g++.law/profile1.C
-2206977733b ./gcc/testsuite/g++.old-deja/g++.law/refs1.C
- 466403547b ./gcc/testsuite/g++.old-deja/g++.law/refs2.C
-2895961411b ./gcc/testsuite/g++.old-deja/g++.law/refs3.C
-1709521392b ./gcc/testsuite/g++.old-deja/g++.law/refs4.C
- 562827880b ./gcc/testsuite/g++.old-deja/g++.law/scope1.C
-1371353669b ./gcc/testsuite/g++.old-deja/g++.law/scope2.C
-1832191731b ./gcc/testsuite/g++.old-deja/g++.law/scope3.C
-3169914322b ./gcc/testsuite/g++.old-deja/g++.law/scope4.C
-4090034442b ./gcc/testsuite/g++.old-deja/g++.law/scope5.C
-4169140490b ./gcc/testsuite/g++.old-deja/g++.law/shadow1.C
- 553385792b ./gcc/testsuite/g++.old-deja/g++.law/shadow2.C
-1398083680b ./gcc/testsuite/g++.old-deja/g++.law/static-mem2.C
-2622216343b ./gcc/testsuite/g++.old-deja/g++.law/static-mem3.C
-2403834071b ./gcc/testsuite/g++.old-deja/g++.law/static-mem4.C
-4200938119b ./gcc/testsuite/g++.old-deja/g++.law/static-mem5.C
- 639091837b ./gcc/testsuite/g++.old-deja/g++.law/template1.C
- 375189935b ./gcc/testsuite/g++.old-deja/g++.law/template3.C
- 4284541b ./gcc/testsuite/g++.old-deja/g++.law/temps1.C
-1612155730b ./gcc/testsuite/g++.old-deja/g++.law/temps2.C
-1353434176b ./gcc/testsuite/g++.old-deja/g++.law/temps3.C
-3401895101b ./gcc/testsuite/g++.old-deja/g++.law/temps4.C
-4070589019b ./gcc/testsuite/g++.old-deja/g++.law/temps5.C
-3020683221b ./gcc/testsuite/g++.old-deja/g++.law/temps6.C
- 117460955b ./gcc/testsuite/g++.old-deja/g++.law/temps7.C
-2464264368b ./gcc/testsuite/g++.old-deja/g++.law/typeck1.C
-1916360322b ./gcc/testsuite/g++.old-deja/g++.law/typeck2.C
-3305279025b ./gcc/testsuite/g++.old-deja/g++.law/typeck3.C
-4132228740b ./gcc/testsuite/g++.old-deja/g++.law/typeck4.C
-2802123026b ./gcc/testsuite/g++.old-deja/g++.law/union1.C
-3824263681b ./gcc/testsuite/g++.old-deja/g++.law/union2.C
- 64483607b ./gcc/testsuite/g++.old-deja/g++.law/union3.C
- 865388513b ./gcc/testsuite/g++.old-deja/g++.law/union4.C
- 729275465b ./gcc/testsuite/g++.old-deja/g++.law/unsorted1.C
-1458104982b ./gcc/testsuite/g++.old-deja/g++.law/unsorted2.C
- 202333534b ./gcc/testsuite/g++.old-deja/g++.law/vbase1.C
-3288872398b ./gcc/testsuite/g++.old-deja/g++.law/virtual1.C
- 698640776b ./gcc/testsuite/g++.old-deja/g++.law/virtual2.C
-3868729894b ./gcc/testsuite/g++.old-deja/g++.law/virtual3.C
-3199255308b ./gcc/testsuite/g++.old-deja/g++.law/virtual4.C
-3314718848b ./gcc/testsuite/g++.old-deja/g++.law/visibility10.C
-3972415808b ./gcc/testsuite/g++.old-deja/g++.law/visibility11.C
-1008837063b ./gcc/testsuite/g++.old-deja/g++.law/visibility12.C
-4257392333b ./gcc/testsuite/g++.old-deja/g++.law/visibility13.C
-2184184428b ./gcc/testsuite/g++.old-deja/g++.law/visibility14.C
-3711813419b ./gcc/testsuite/g++.old-deja/g++.law/visibility15.C
-2324534234b ./gcc/testsuite/g++.old-deja/g++.law/visibility16.C
-1421043627b ./gcc/testsuite/g++.old-deja/g++.law/visibility17.C
-2757911294b ./gcc/testsuite/g++.old-deja/g++.law/visibility18.C
-1759487204b ./gcc/testsuite/g++.old-deja/g++.law/visibility19.C
- 62330698b ./gcc/testsuite/g++.old-deja/g++.law/visibility1.C
-1427247483b ./gcc/testsuite/g++.old-deja/g++.law/visibility20.C
-3793046825b ./gcc/testsuite/g++.old-deja/g++.law/visibility21.C
- 271235804b ./gcc/testsuite/g++.old-deja/g++.law/visibility22.C
- 797044341b ./gcc/testsuite/g++.old-deja/g++.law/visibility24.C
-3910738507b ./gcc/testsuite/g++.old-deja/g++.law/visibility25.C
- 322999725b ./gcc/testsuite/g++.old-deja/g++.law/visibility26.C
-4190347231b ./gcc/testsuite/g++.old-deja/g++.law/visibility27.C
-2911402499b ./gcc/testsuite/g++.old-deja/g++.law/visibility28.C
- 734410929b ./gcc/testsuite/g++.old-deja/g++.law/visibility2.C
-4290227694b ./gcc/testsuite/g++.old-deja/g++.law/visibility3.C
-4210487078b ./gcc/testsuite/g++.old-deja/g++.law/visibility4.C
-3907786275b ./gcc/testsuite/g++.old-deja/g++.law/visibility5.C
-1875984515b ./gcc/testsuite/g++.old-deja/g++.law/visibility6.C
-1405044481b ./gcc/testsuite/g++.old-deja/g++.law/visibility7.C
-1869720260b ./gcc/testsuite/g++.old-deja/g++.law/visibility8.C
-1999285628b ./gcc/testsuite/g++.old-deja/g++.law/visibility9.C
-1085746750b ./gcc/testsuite/g++.old-deja/g++.law/vtable1.C
-3660889277b ./gcc/testsuite/g++.old-deja/g++.law/vtable2.C
-4243784891b ./gcc/testsuite/g++.old-deja/g++.law/vtable3.C
- 143886912b ./gcc/testsuite/g++.old-deja/g++.law/weak.C
- 830532494b ./gcc/testsuite/g++.old-deja/g++.martin/access1.C
-1002906292b ./gcc/testsuite/g++.old-deja/g++.martin/ambig1.C
-3743350975b ./gcc/testsuite/g++.old-deja/g++.martin/bitset1.C
-3416204241b ./gcc/testsuite/g++.old-deja/g++.martin/conv1.C
- 825042238b ./gcc/testsuite/g++.old-deja/g++.martin/crash1.C
-2926428355b ./gcc/testsuite/g++.old-deja/g++.martin/eval1.C
- 317249347b ./gcc/testsuite/g++.old-deja/g++.martin/lookup1.C
-4131538183b ./gcc/testsuite/g++.old-deja/g++.martin/new1.C
- 405917420b ./gcc/testsuite/g++.old-deja/g++.martin/overload1.C
-3541772795b ./gcc/testsuite/g++.old-deja/g++.martin/pmf1.C
-2582334596b ./gcc/testsuite/g++.old-deja/g++.martin/pmf2.C
- 342889991b ./gcc/testsuite/g++.old-deja/g++.martin/pure1.C
-2187620834b ./gcc/testsuite/g++.old-deja/g++.martin/sts_conv.C
-2965838669b ./gcc/testsuite/g++.old-deja/g++.martin/sts_iarr.C
- 968074107b ./gcc/testsuite/g++.old-deja/g++.martin/sts_partial.C
-1222988217b ./gcc/testsuite/g++.old-deja/g++.martin/sts_vectini.C
-3722279134b ./gcc/testsuite/g++.old-deja/g++.martin/typedef1.C
-1998658156b ./gcc/testsuite/g++.old-deja/g++.martin/typedef2.C
-3366578564b ./gcc/testsuite/g++.old-deja/g++.mike/align1.C
-1357275564b ./gcc/testsuite/g++.old-deja/g++.mike/align2.C
-1852680562b ./gcc/testsuite/g++.old-deja/g++.mike/ambig1.C
-3007848512b ./gcc/testsuite/g++.old-deja/g++.mike/asm1.C
-1252651637b ./gcc/testsuite/g++.old-deja/g++.mike/asm2.C
-3511956480b ./gcc/testsuite/g++.old-deja/g++.mike/bool1.C
-1798037413b ./gcc/testsuite/g++.old-deja/g++.mike/bool2.C
-2574680481b ./gcc/testsuite/g++.old-deja/g++.mike/bool4.C
-2735658565b ./gcc/testsuite/g++.old-deja/g++.mike/conv1.C
-3056861018b ./gcc/testsuite/g++.old-deja/g++.mike/.cvsignore
-4048777742b ./gcc/testsuite/g++.old-deja/g++.mike/debug1.C
-4010324445b ./gcc/testsuite/g++.old-deja/g++.mike/dyncast1.C
-3503712059b ./gcc/testsuite/g++.old-deja/g++.mike/dyncast2.C
- 161009263b ./gcc/testsuite/g++.old-deja/g++.mike/dyncast3.C
- 161214417b ./gcc/testsuite/g++.old-deja/g++.mike/dyncast4.C
-4283652211b ./gcc/testsuite/g++.old-deja/g++.mike/dyncast5.C
-3480128091b ./gcc/testsuite/g++.old-deja/g++.mike/dyncast6.C
- 549691660b ./gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C
-2943523376b ./gcc/testsuite/g++.old-deja/g++.mike/dyncast8.C
- 715384563b ./gcc/testsuite/g++.old-deja/g++.mike/dyncast9.C
-1898950024b ./gcc/testsuite/g++.old-deja/g++.mike/eh10.C
-1222256435b ./gcc/testsuite/g++.old-deja/g++.mike/eh11.C
-1447734306b ./gcc/testsuite/g++.old-deja/g++.mike/eh12.C
- 561534286b ./gcc/testsuite/g++.old-deja/g++.mike/eh13.C
-2951469127b ./gcc/testsuite/g++.old-deja/g++.mike/eh14.C
- 20718997b ./gcc/testsuite/g++.old-deja/g++.mike/eh15.C
-4209055786b ./gcc/testsuite/g++.old-deja/g++.mike/eh16.C
-3368269369b ./gcc/testsuite/g++.old-deja/g++.mike/eh17.C
-1954288096b ./gcc/testsuite/g++.old-deja/g++.mike/eh18.C
-1564767830b ./gcc/testsuite/g++.old-deja/g++.mike/eh19.C
-1479132794b ./gcc/testsuite/g++.old-deja/g++.mike/eh1.C
-2941675313b ./gcc/testsuite/g++.old-deja/g++.mike/eh20.C
-1220907911b ./gcc/testsuite/g++.old-deja/g++.mike/eh21.C
- 517637270b ./gcc/testsuite/g++.old-deja/g++.mike/eh23.C
- 333053405b ./gcc/testsuite/g++.old-deja/g++.mike/eh24.C
- 994888022b ./gcc/testsuite/g++.old-deja/g++.mike/eh25.C
-3348536359b ./gcc/testsuite/g++.old-deja/g++.mike/eh26.C
-2419761913b ./gcc/testsuite/g++.old-deja/g++.mike/eh27.C
-1187597651b ./gcc/testsuite/g++.old-deja/g++.mike/eh28.C
-1211663524b ./gcc/testsuite/g++.old-deja/g++.mike/eh29.C
- 925380975b ./gcc/testsuite/g++.old-deja/g++.mike/eh2.C
- 19764474b ./gcc/testsuite/g++.old-deja/g++.mike/eh30.C
-2656014861b ./gcc/testsuite/g++.old-deja/g++.mike/eh31.C
-3196832667b ./gcc/testsuite/g++.old-deja/g++.mike/eh32.C
- 66552972b ./gcc/testsuite/g++.old-deja/g++.mike/eh33.C
- 503529587b ./gcc/testsuite/g++.old-deja/g++.mike/eh34.C
-3352893098b ./gcc/testsuite/g++.old-deja/g++.mike/eh35.C
- 647929045b ./gcc/testsuite/g++.old-deja/g++.mike/eh36.C
-1379433802b ./gcc/testsuite/g++.old-deja/g++.mike/eh37.C
-2520417864b ./gcc/testsuite/g++.old-deja/g++.mike/eh38.C
-2239202212b ./gcc/testsuite/g++.old-deja/g++.mike/eh39.C
-3592708402b ./gcc/testsuite/g++.old-deja/g++.mike/eh3.C
- 812645089b ./gcc/testsuite/g++.old-deja/g++.mike/eh40.C
-2008000368b ./gcc/testsuite/g++.old-deja/g++.mike/eh41.C
- 396786327b ./gcc/testsuite/g++.old-deja/g++.mike/eh42.C
-2531873137b ./gcc/testsuite/g++.old-deja/g++.mike/eh44.C
-3669787943b ./gcc/testsuite/g++.old-deja/g++.mike/eh45.C
-3841647794b ./gcc/testsuite/g++.old-deja/g++.mike/eh46.C
-2543002191b ./gcc/testsuite/g++.old-deja/g++.mike/eh47.C
-3489458651b ./gcc/testsuite/g++.old-deja/g++.mike/eh48.C
- 836588330b ./gcc/testsuite/g++.old-deja/g++.mike/eh49.C
- 833195775b ./gcc/testsuite/g++.old-deja/g++.mike/eh4.C
-2022453553b ./gcc/testsuite/g++.old-deja/g++.mike/eh50.C
-2472994932b ./gcc/testsuite/g++.old-deja/g++.mike/eh51.C
- 359223272b ./gcc/testsuite/g++.old-deja/g++.mike/eh52.C
-4025472676b ./gcc/testsuite/g++.old-deja/g++.mike/eh53.C
-2118473425b ./gcc/testsuite/g++.old-deja/g++.mike/eh54.C
-3012652134b ./gcc/testsuite/g++.old-deja/g++.mike/eh55.C
-3093785743b ./gcc/testsuite/g++.old-deja/g++.mike/eh56.C
-4236094512b ./gcc/testsuite/g++.old-deja/g++.mike/eh57.C
-1057069707b ./gcc/testsuite/g++.old-deja/g++.mike/eh58.C
-3255147266b ./gcc/testsuite/g++.old-deja/g++.mike/eh59.C
-2616136317b ./gcc/testsuite/g++.old-deja/g++.mike/eh5.C
-1226767941b ./gcc/testsuite/g++.old-deja/g++.mike/eh6.C
- 42372650b ./gcc/testsuite/g++.old-deja/g++.mike/eh7.C
- 851372296b ./gcc/testsuite/g++.old-deja/g++.mike/eh8.C
-1319332410b ./gcc/testsuite/g++.old-deja/g++.mike/eh9.C
-2247541281b ./gcc/testsuite/g++.old-deja/g++.mike/enum1.C
-2068312285b ./gcc/testsuite/g++.old-deja/g++.mike/err1.C
-1927043546b ./gcc/testsuite/g++.old-deja/g++.mike/err2.C
-3135074705b ./gcc/testsuite/g++.old-deja/g++.mike/err3.C
-3586800574b ./gcc/testsuite/g++.old-deja/g++.mike/explicit1.C
-3536764934b ./gcc/testsuite/g++.old-deja/g++.mike/explicit2.C
-1026557390b ./gcc/testsuite/g++.old-deja/g++.mike/for1.C
-2974641653b ./gcc/testsuite/g++.old-deja/g++.mike/for2.C
-2702017140b ./gcc/testsuite/g++.old-deja/g++.mike/for3.C
-2404672898b ./gcc/testsuite/g++.old-deja/g++.mike/fresco1.C
-3102490391b ./gcc/testsuite/g++.old-deja/g++.mike/hog1.C
-2749462033b ./gcc/testsuite/g++.old-deja/g++.mike/init1.C
- 208643595b ./gcc/testsuite/g++.old-deja/g++.mike/init2.C
-4003638268b ./gcc/testsuite/g++.old-deja/g++.mike/leak1.C
- 232475713b ./gcc/testsuite/g++.old-deja/g++.mike/mangle1.C
-2886304989b ./gcc/testsuite/g++.old-deja/g++.mike/mangle2.C
-2130648103b ./gcc/testsuite/g++.old-deja/g++.mike/mangle3.C
-3720053646b ./gcc/testsuite/g++.old-deja/g++.mike/memoize1.C
- 227243000b ./gcc/testsuite/g++.old-deja/g++.mike/mi1.C
-4025070490b ./gcc/testsuite/g++.old-deja/g++.mike/mi2.C
-4041946331b ./gcc/testsuite/g++.old-deja/g++.mike/misc11.C
-3057947029b ./gcc/testsuite/g++.old-deja/g++.mike/misc12.C
- 430127070b ./gcc/testsuite/g++.old-deja/g++.mike/misc13.C
-2291534767b ./gcc/testsuite/g++.old-deja/g++.mike/misc14.C
- 693076493b ./gcc/testsuite/g++.old-deja/g++.mike/misc1.C
-2351659378b ./gcc/testsuite/g++.old-deja/g++.mike/misc2.C
- 48579344b ./gcc/testsuite/g++.old-deja/g++.mike/misc3.C
- 263841150b ./gcc/testsuite/g++.old-deja/g++.mike/misc5.C
-2015338154b ./gcc/testsuite/g++.old-deja/g++.mike/misc6.C
-3029506356b ./gcc/testsuite/g++.old-deja/g++.mike/misc7.C
-3400747232b ./gcc/testsuite/g++.old-deja/g++.mike/misc8.C
-2472705454b ./gcc/testsuite/g++.old-deja/g++.mike/misc9.C
-2347594484b ./gcc/testsuite/g++.old-deja/g++.mike/net10.C
-2264540476b ./gcc/testsuite/g++.old-deja/g++.mike/net11.C
-1619954363b ./gcc/testsuite/g++.old-deja/g++.mike/net12.C
-2744123724b ./gcc/testsuite/g++.old-deja/g++.mike/net13.C
-2330778782b ./gcc/testsuite/g++.old-deja/g++.mike/net14.C
-3750320204b ./gcc/testsuite/g++.old-deja/g++.mike/net15.C
- 324833536b ./gcc/testsuite/g++.old-deja/g++.mike/net16.C
-2790494835b ./gcc/testsuite/g++.old-deja/g++.mike/net17.C
- 128141995b ./gcc/testsuite/g++.old-deja/g++.mike/net18.C
- 948890721b ./gcc/testsuite/g++.old-deja/g++.mike/net19.C
-2700723029b ./gcc/testsuite/g++.old-deja/g++.mike/net1.C
-4292061310b ./gcc/testsuite/g++.old-deja/g++.mike/net20.C
- 226565812b ./gcc/testsuite/g++.old-deja/g++.mike/net21.C
-1728885921b ./gcc/testsuite/g++.old-deja/g++.mike/net22.C
-4024678725b ./gcc/testsuite/g++.old-deja/g++.mike/net23.C
-2009996072b ./gcc/testsuite/g++.old-deja/g++.mike/net24.C
-1310377974b ./gcc/testsuite/g++.old-deja/g++.mike/net25.C
- 193486024b ./gcc/testsuite/g++.old-deja/g++.mike/net26.C
- 94102590b ./gcc/testsuite/g++.old-deja/g++.mike/net27.C
-1622305952b ./gcc/testsuite/g++.old-deja/g++.mike/net28.C
-2635182781b ./gcc/testsuite/g++.old-deja/g++.mike/net29.C
-4151722351b ./gcc/testsuite/g++.old-deja/g++.mike/net2.C
- 623832663b ./gcc/testsuite/g++.old-deja/g++.mike/net30.C
-1863329456b ./gcc/testsuite/g++.old-deja/g++.mike/net31.C
-1380727967b ./gcc/testsuite/g++.old-deja/g++.mike/net32.C
- 643638364b ./gcc/testsuite/g++.old-deja/g++.mike/net34.C
-1703492289b ./gcc/testsuite/g++.old-deja/g++.mike/net35.C
-2640637763b ./gcc/testsuite/g++.old-deja/g++.mike/net36.C
- 404712047b ./gcc/testsuite/g++.old-deja/g++.mike/net37.C
- 373469883b ./gcc/testsuite/g++.old-deja/g++.mike/net38.C
-3771016947b ./gcc/testsuite/g++.old-deja/g++.mike/net39.C
-2896773743b ./gcc/testsuite/g++.old-deja/g++.mike/net3.C
-3117098407b ./gcc/testsuite/g++.old-deja/g++.mike/net40.C
-2329906223b ./gcc/testsuite/g++.old-deja/g++.mike/net41.C
- 257842077b ./gcc/testsuite/g++.old-deja/g++.mike/net42.C
- 273531074b ./gcc/testsuite/g++.old-deja/g++.mike/net43.C
-1013597348b ./gcc/testsuite/g++.old-deja/g++.mike/net44.C
- 533128132b ./gcc/testsuite/g++.old-deja/g++.mike/net45.C
-4252296965b ./gcc/testsuite/g++.old-deja/g++.mike/net46.C
-3377446225b ./gcc/testsuite/g++.old-deja/g++.mike/net47.C
-3175541105b ./gcc/testsuite/g++.old-deja/g++.mike/net48.C
-2596381910b ./gcc/testsuite/g++.old-deja/g++.mike/net4.C
- 557858870b ./gcc/testsuite/g++.old-deja/g++.mike/net6.C
-2207442407b ./gcc/testsuite/g++.old-deja/g++.mike/net7.C
-2718402760b ./gcc/testsuite/g++.old-deja/g++.mike/net8.C
-2353333727b ./gcc/testsuite/g++.old-deja/g++.mike/net9.C
- 567253957b ./gcc/testsuite/g++.old-deja/g++.mike/ns10.C
-2416554745b ./gcc/testsuite/g++.old-deja/g++.mike/ns11.C
- 533880824b ./gcc/testsuite/g++.old-deja/g++.mike/ns12.C
-1634894638b ./gcc/testsuite/g++.old-deja/g++.mike/ns13.C
- 133757607b ./gcc/testsuite/g++.old-deja/g++.mike/ns14.C
-2272679205b ./gcc/testsuite/g++.old-deja/g++.mike/ns15.C
- 452066686b ./gcc/testsuite/g++.old-deja/g++.mike/ns1.C
-3588362593b ./gcc/testsuite/g++.old-deja/g++.mike/ns2.C
-1013122739b ./gcc/testsuite/g++.old-deja/g++.mike/ns3.C
-1600942614b ./gcc/testsuite/g++.old-deja/g++.mike/ns4.C
-2720204670b ./gcc/testsuite/g++.old-deja/g++.mike/ns5.C
-2915175087b ./gcc/testsuite/g++.old-deja/g++.mike/ns6.C
- 411910103b ./gcc/testsuite/g++.old-deja/g++.mike/ns7.C
-2915175087b ./gcc/testsuite/g++.old-deja/g++.mike/ns8.C
-2464609892b ./gcc/testsuite/g++.old-deja/g++.mike/ns9.C
- 42776282b ./gcc/testsuite/g++.old-deja/g++.mike/offset1.C
-4011496147b ./gcc/testsuite/g++.old-deja/g++.mike/opr-as1.C
-1648867065b ./gcc/testsuite/g++.old-deja/g++.mike/opr-dot1.C
-3930590560b ./gcc/testsuite/g++.old-deja/g++.mike/p10148.C
-3568933834b ./gcc/testsuite/g++.old-deja/g++.mike/p10247.C
-3637822285b ./gcc/testsuite/g++.old-deja/g++.mike/p10416.C
-2277517536b ./gcc/testsuite/g++.old-deja/g++.mike/p10511.C
-2480212522b ./gcc/testsuite/g++.old-deja/g++.mike/p10769a.C
-3120977893b ./gcc/testsuite/g++.old-deja/g++.mike/p10769b.C
-2837914956b ./gcc/testsuite/g++.old-deja/g++.mike/p10849a.C
- 288448977b ./gcc/testsuite/g++.old-deja/g++.mike/p10951.C
- 885447599b ./gcc/testsuite/g++.old-deja/g++.mike/p11012.C
-3327529664b ./gcc/testsuite/g++.old-deja/g++.mike/p11110.C
-1723536064b ./gcc/testsuite/g++.old-deja/g++.mike/p11142.C
-2584300706b ./gcc/testsuite/g++.old-deja/g++.mike/p11144.C
-1612526821b ./gcc/testsuite/g++.old-deja/g++.mike/p11482.C
- 18099126b ./gcc/testsuite/g++.old-deja/g++.mike/p11667.C
- 783911097b ./gcc/testsuite/g++.old-deja/g++.mike/p12306a.C
-3634094361b ./gcc/testsuite/g++.old-deja/g++.mike/p12306.C
-3834401134b ./gcc/testsuite/g++.old-deja/g++.mike/p1248.C
-2006378635b ./gcc/testsuite/g++.old-deja/g++.mike/p1567.C
-3231801438b ./gcc/testsuite/g++.old-deja/g++.mike/p16146.C
-2589988330b ./gcc/testsuite/g++.old-deja/g++.mike/p1862.C
- 925204121b ./gcc/testsuite/g++.old-deja/g++.mike/p1989.C
-1780707146b ./gcc/testsuite/g++.old-deja/g++.mike/p2394.C
-3869537152b ./gcc/testsuite/g++.old-deja/g++.mike/p2431.C
-1198556431b ./gcc/testsuite/g++.old-deja/g++.mike/p2573.C
-2790074021b ./gcc/testsuite/g++.old-deja/g++.mike/p2736.C
-3189296082b ./gcc/testsuite/g++.old-deja/g++.mike/p2746.C
-2655922230b ./gcc/testsuite/g++.old-deja/g++.mike/p2793.C
-2222530613b ./gcc/testsuite/g++.old-deja/g++.mike/p2806.C
-3941688151b ./gcc/testsuite/g++.old-deja/g++.mike/p2846a.C
- 481437008b ./gcc/testsuite/g++.old-deja/g++.mike/p2846b.C
-1350283959b ./gcc/testsuite/g++.old-deja/g++.mike/p2846.C
- 231166541b ./gcc/testsuite/g++.old-deja/g++.mike/p2855.C
-1228637975b ./gcc/testsuite/g++.old-deja/g++.mike/p2960.C
- 172879720b ./gcc/testsuite/g++.old-deja/g++.mike/p3041.C
- 478907680b ./gcc/testsuite/g++.old-deja/g++.mike/p3060c.C
-2112233765b ./gcc/testsuite/g++.old-deja/g++.mike/p3060d.C
-3103033154b ./gcc/testsuite/g++.old-deja/g++.mike/p3068.C
- 598059428b ./gcc/testsuite/g++.old-deja/g++.mike/p3070.C
-2642893029b ./gcc/testsuite/g++.old-deja/g++.mike/p3139.C
- 270639587b ./gcc/testsuite/g++.old-deja/g++.mike/p3524a.C
-2843604235b ./gcc/testsuite/g++.old-deja/g++.mike/p3524b.C
-1750695024b ./gcc/testsuite/g++.old-deja/g++.mike/p3524c.C
-2033912183b ./gcc/testsuite/g++.old-deja/g++.mike/p3538a.C
-2629346869b ./gcc/testsuite/g++.old-deja/g++.mike/p3538b.C
-1918171545b ./gcc/testsuite/g++.old-deja/g++.mike/p3570.C
-2384869664b ./gcc/testsuite/g++.old-deja/g++.mike/p3579.C
-4049970058b ./gcc/testsuite/g++.old-deja/g++.mike/p3708a.C
-2170847074b ./gcc/testsuite/g++.old-deja/g++.mike/p3708b.C
-1307191770b ./gcc/testsuite/g++.old-deja/g++.mike/p3708.C
-3856504451b ./gcc/testsuite/g++.old-deja/g++.mike/p3764.C
-2579187029b ./gcc/testsuite/g++.old-deja/g++.mike/p3836.C
- 717100314b ./gcc/testsuite/g++.old-deja/g++.mike/p4068.C
-2802835745b ./gcc/testsuite/g++.old-deja/g++.mike/p4104.C
-3650578573b ./gcc/testsuite/g++.old-deja/g++.mike/p4173.C
-1273434326b ./gcc/testsuite/g++.old-deja/g++.mike/p418.C
-1819585103b ./gcc/testsuite/g++.old-deja/g++.mike/p4238.C
-4270040916b ./gcc/testsuite/g++.old-deja/g++.mike/p4246.C
-3157074609b ./gcc/testsuite/g++.old-deja/g++.mike/p4263.C
-4046363413b ./gcc/testsuite/g++.old-deja/g++.mike/p438.C
- 74576159b ./gcc/testsuite/g++.old-deja/g++.mike/p4484.C
-3721268143b ./gcc/testsuite/g++.old-deja/g++.mike/p4511.C
-2798533207b ./gcc/testsuite/g++.old-deja/g++.mike/p4619.C
- 876794667b ./gcc/testsuite/g++.old-deja/g++.mike/p4623.C
-3060461666b ./gcc/testsuite/g++.old-deja/g++.mike/p4667.C
-1693168022b ./gcc/testsuite/g++.old-deja/g++.mike/p4671.C
-2307560998b ./gcc/testsuite/g++.old-deja/g++.mike/p4677.C
-1172826827b ./gcc/testsuite/g++.old-deja/g++.mike/p4693.C
-2820686800b ./gcc/testsuite/g++.old-deja/g++.mike/p4736a.C
- 791627116b ./gcc/testsuite/g++.old-deja/g++.mike/p4736b.C
-3037713609b ./gcc/testsuite/g++.old-deja/g++.mike/p4736c.C
-3183066012b ./gcc/testsuite/g++.old-deja/g++.mike/p4750.C
-1643480270b ./gcc/testsuite/g++.old-deja/g++.mike/p5469a.C
-2783396832b ./gcc/testsuite/g++.old-deja/g++.mike/p5469.C
-1694086012b ./gcc/testsuite/g++.old-deja/g++.mike/p5571.C
-2030989669b ./gcc/testsuite/g++.old-deja/g++.mike/p5611.C
-3220562563b ./gcc/testsuite/g++.old-deja/g++.mike/p5673.C
-2367398371b ./gcc/testsuite/g++.old-deja/g++.mike/p5718.C
- 444505388b ./gcc/testsuite/g++.old-deja/g++.mike/p5793.C
-3682663456b ./gcc/testsuite/g++.old-deja/g++.mike/p5840.C
-3663869594b ./gcc/testsuite/g++.old-deja/g++.mike/p5958.C
-2532392225b ./gcc/testsuite/g++.old-deja/g++.mike/p6004.C
-2942988590b ./gcc/testsuite/g++.old-deja/g++.mike/p6058.C
-3283452059b ./gcc/testsuite/g++.old-deja/g++.mike/p6149.C
-2735139304b ./gcc/testsuite/g++.old-deja/g++.mike/p6311.C
-2969918780b ./gcc/testsuite/g++.old-deja/g++.mike/p646.C
-3736773751b ./gcc/testsuite/g++.old-deja/g++.mike/p6578.C
- 670197536b ./gcc/testsuite/g++.old-deja/g++.mike/p658.C
-4291654389b ./gcc/testsuite/g++.old-deja/g++.mike/p6610a.C
-3357719657b ./gcc/testsuite/g++.old-deja/g++.mike/p6610b.C
- 286526845b ./gcc/testsuite/g++.old-deja/g++.mike/p6611.C
-3897286393b ./gcc/testsuite/g++.old-deja/g++.mike/p6746.C
-2010877795b ./gcc/testsuite/g++.old-deja/g++.mike/p6901.C
-1810770013b ./gcc/testsuite/g++.old-deja/g++.mike/p6927.C
- 670062294b ./gcc/testsuite/g++.old-deja/g++.mike/p700.C
- 224810393b ./gcc/testsuite/g++.old-deja/g++.mike/p701.C
-2057788178b ./gcc/testsuite/g++.old-deja/g++.mike/p710.C
-1244723488b ./gcc/testsuite/g++.old-deja/g++.mike/p7180.C
-3521513511b ./gcc/testsuite/g++.old-deja/g++.mike/p7325.C
-3900843491b ./gcc/testsuite/g++.old-deja/g++.mike/p7476.C
-3394798100b ./gcc/testsuite/g++.old-deja/g++.mike/p755a.C
-2349738175b ./gcc/testsuite/g++.old-deja/g++.mike/p755.C
-1365378601b ./gcc/testsuite/g++.old-deja/g++.mike/p7626.C
-2818833306b ./gcc/testsuite/g++.old-deja/g++.mike/p7635.C
-2124571317b ./gcc/testsuite/g++.old-deja/g++.mike/p7651.C
-3247827104b ./gcc/testsuite/g++.old-deja/g++.mike/p783a.C
-3185815998b ./gcc/testsuite/g++.old-deja/g++.mike/p783b.C
- 298093700b ./gcc/testsuite/g++.old-deja/g++.mike/p783.C
-1112249731b ./gcc/testsuite/g++.old-deja/g++.mike/p784.C
-3281865096b ./gcc/testsuite/g++.old-deja/g++.mike/p7865.C
- 341429709b ./gcc/testsuite/g++.old-deja/g++.mike/p7868.C
-1887516335b ./gcc/testsuite/g++.old-deja/g++.mike/p786.C
- 973504582b ./gcc/testsuite/g++.old-deja/g++.mike/p789a.C
-1539916341b ./gcc/testsuite/g++.old-deja/g++.mike/p789.C
-2120486239b ./gcc/testsuite/g++.old-deja/g++.mike/p7912.C
-1656717793b ./gcc/testsuite/g++.old-deja/g++.mike/p8009.C
- 134774070b ./gcc/testsuite/g++.old-deja/g++.mike/p8018.C
-2662329366b ./gcc/testsuite/g++.old-deja/g++.mike/p8039.C
-3781414938b ./gcc/testsuite/g++.old-deja/g++.mike/p807a.C
-1398614996b ./gcc/testsuite/g++.old-deja/g++.mike/p807.C
-3344337430b ./gcc/testsuite/g++.old-deja/g++.mike/p811.C
-2698571232b ./gcc/testsuite/g++.old-deja/g++.mike/p8154.C
-3491611004b ./gcc/testsuite/g++.old-deja/g++.mike/p8155.C
-2633237714b ./gcc/testsuite/g++.old-deja/g++.mike/p8175.C
-2964779539b ./gcc/testsuite/g++.old-deja/g++.mike/p8269.C
-4289506060b ./gcc/testsuite/g++.old-deja/g++.mike/p8460.C
-2097683379b ./gcc/testsuite/g++.old-deja/g++.mike/p8483.C
-1218023303b ./gcc/testsuite/g++.old-deja/g++.mike/p8620.C
- 249128071b ./gcc/testsuite/g++.old-deja/g++.mike/p8786.C
- 771352385b ./gcc/testsuite/g++.old-deja/g++.mike/p8804.C
- 776812521b ./gcc/testsuite/g++.old-deja/g++.mike/p8825.C
-1371812496b ./gcc/testsuite/g++.old-deja/g++.mike/p9068.C
- 325691543b ./gcc/testsuite/g++.old-deja/g++.mike/p9129.C
-3342831000b ./gcc/testsuite/g++.old-deja/g++.mike/p9206.C
-2518851606b ./gcc/testsuite/g++.old-deja/g++.mike/p9506.C
-1690639952b ./gcc/testsuite/g++.old-deja/g++.mike/p9706.C
-3944011165b ./gcc/testsuite/g++.old-deja/g++.mike/p9732a.C
-3851742489b ./gcc/testsuite/g++.old-deja/g++.mike/p9732b.C
- 443576986b ./gcc/testsuite/g++.old-deja/g++.mike/p9732c.C
- 518416569b ./gcc/testsuite/g++.old-deja/g++.mike/p991.C
-2811267769b ./gcc/testsuite/g++.old-deja/g++.mike/parse1.C
-3910441412b ./gcc/testsuite/g++.old-deja/g++.mike/pmd1.C
-2358019327b ./gcc/testsuite/g++.old-deja/g++.mike/pmf1.C
- 745271252b ./gcc/testsuite/g++.old-deja/g++.mike/pmf2.C
-1703808507b ./gcc/testsuite/g++.old-deja/g++.mike/pmf3.C
- 869105864b ./gcc/testsuite/g++.old-deja/g++.mike/pmf4.C
-4282673891b ./gcc/testsuite/g++.old-deja/g++.mike/pmf6.C
- 395491161b ./gcc/testsuite/g++.old-deja/g++.mike/pmf7.C
-4282219054b ./gcc/testsuite/g++.old-deja/g++.mike/pmf8.C
-3714071418b ./gcc/testsuite/g++.old-deja/g++.mike/pmf9.C
-3325973629b ./gcc/testsuite/g++.old-deja/g++.mike/pt1.C
-2598621982b ./gcc/testsuite/g++.old-deja/g++.mike/pt2.C
-2307535900b ./gcc/testsuite/g++.old-deja/g++.mike/pt3.C
-3210931270b ./gcc/testsuite/g++.old-deja/g++.mike/pt4.C
-2439755306b ./gcc/testsuite/g++.old-deja/g++.mike/ref1.C
-3112607319b ./gcc/testsuite/g++.old-deja/g++.mike/rtti1.C
-1881087162b ./gcc/testsuite/g++.old-deja/g++.mike/rtti2.C
-1138172928b ./gcc/testsuite/g++.old-deja/g++.mike/rtti3.C
-2936617600b ./gcc/testsuite/g++.old-deja/g++.mike/s24939.C
-1604548693b ./gcc/testsuite/g++.old-deja/g++.mike/s35520.C
- 786052027b ./gcc/testsuite/g++.old-deja/g++.mike/s9959.C
-2301275682b ./gcc/testsuite/g++.old-deja/g++.mike/scast1.C
-3863602884b ./gcc/testsuite/g++.old-deja/g++.mike/temp.C
-1016068831b ./gcc/testsuite/g++.old-deja/g++.mike/thunk1.C
-3905632919b ./gcc/testsuite/g++.old-deja/g++.mike/thunk2.C
- 630939157b ./gcc/testsuite/g++.old-deja/g++.mike/thunk3.C
-4259046108b ./gcc/testsuite/g++.old-deja/g++.mike/unroll1.C
-1164439917b ./gcc/testsuite/g++.old-deja/g++.mike/virt1.C
-2927817139b ./gcc/testsuite/g++.old-deja/g++.mike/virt2.C
-1772591600b ./gcc/testsuite/g++.old-deja/g++.mike/virt3.C
-2392194899b ./gcc/testsuite/g++.old-deja/g++.mike/virt4.C
-2478016121b ./gcc/testsuite/g++.old-deja/g++.mike/virt5.C
-3288371737b ./gcc/testsuite/g++.old-deja/g++.mike/virt6.C
-1193160491b ./gcc/testsuite/g++.old-deja/g++.mike/vtable1.C
-3226895086b ./gcc/testsuite/g++.old-deja/g++.mike/warn1.C
-3433176936b ./gcc/testsuite/g++.old-deja/g++.mike/warn2.C
-1152844660b ./gcc/testsuite/g++.old-deja/g++.mike/warn3.C
-3770397490b ./gcc/testsuite/g++.old-deja/g++.mike/warn4.C
-2345927769b ./gcc/testsuite/g++.old-deja/g++.mike/warn5.C
-2855656530b ./gcc/testsuite/g++.old-deja/g++.mike/warn6.C
-1810473850b ./gcc/testsuite/g++.old-deja/g++.mike/warn7.C
-1569186871b ./gcc/testsuite/g++.old-deja/g++.mike/warn8.C
-3056861018b ./gcc/testsuite/g++.old-deja/g++.niklas/.cvsignore
-4133635689b ./gcc/testsuite/g++.old-deja/g++.niklas/README
-1859900513b ./gcc/testsuite/g++.old-deja/g++.niklas/t113.C
-3921758020b ./gcc/testsuite/g++.old-deja/g++.niklas/t114.C
-1052990327b ./gcc/testsuite/g++.old-deja/g++.niklas/t115.C
-3219478044b ./gcc/testsuite/g++.old-deja/g++.niklas/t118.C
-2028104920b ./gcc/testsuite/g++.old-deja/g++.niklas/t119.C
-1112136284b ./gcc/testsuite/g++.old-deja/g++.niklas/t120.C
- 197310626b ./gcc/testsuite/g++.old-deja/g++.niklas/t121.C
-2209127602b ./gcc/testsuite/g++.old-deja/g++.niklas/t122.C
-1716591189b ./gcc/testsuite/g++.old-deja/g++.niklas/t123.C
- 709937017b ./gcc/testsuite/g++.old-deja/g++.niklas/t124.C
-4167170414b ./gcc/testsuite/g++.old-deja/g++.niklas/t125.C
-2724654772b ./gcc/testsuite/g++.old-deja/g++.niklas/t126.C
-3948659357b ./gcc/testsuite/g++.old-deja/g++.niklas/t127.C
-2264211915b ./gcc/testsuite/g++.old-deja/g++.niklas/t128.C
-1867008357b ./gcc/testsuite/g++.old-deja/g++.niklas/t129.C
-4093189884b ./gcc/testsuite/g++.old-deja/g++.niklas/t130.C
-1806737839b ./gcc/testsuite/g++.old-deja/g++.niklas/t131.C
-3992567271b ./gcc/testsuite/g++.old-deja/g++.niklas/t132.C
-1882324382b ./gcc/testsuite/g++.old-deja/g++.niklas/t133.C
-2007964316b ./gcc/testsuite/g++.old-deja/g++.niklas/t134.C
- 237693360b ./gcc/testsuite/g++.old-deja/g++.niklas/t135.C
-2498734643b ./gcc/testsuite/g++.old-deja/g++.niklas/t136.C
-2536115327b ./gcc/testsuite/g++.old-deja/g++.niklas/t137.C
-3458381060b ./gcc/testsuite/g++.old-deja/g++.niklas/t138.C
-2261506284b ./gcc/testsuite/g++.old-deja/g++.niklas/t139.C
-3432935085b ./gcc/testsuite/g++.old-deja/g++.niklas/t140.C
-3319986880b ./gcc/testsuite/g++.old-deja/g++.niklas/t141.C
-3609938502b ./gcc/testsuite/g++.old-deja/g++.ns/alias1.C
- 592778024b ./gcc/testsuite/g++.old-deja/g++.ns/alias2.C
-3196887127b ./gcc/testsuite/g++.old-deja/g++.ns/alias3.C
-1946359707b ./gcc/testsuite/g++.old-deja/g++.ns/alias4.C
-3609938502b ./gcc/testsuite/g++.old-deja/g++.ns/alias5.C
-3903958846b ./gcc/testsuite/g++.old-deja/g++.ns/alias6.C
-2870125746b ./gcc/testsuite/g++.old-deja/g++.ns/alias7.C
-3962486569b ./gcc/testsuite/g++.old-deja/g++.ns/anon1.C
-1234174045b ./gcc/testsuite/g++.old-deja/g++.ns/bogus1.C
- 887554997b ./gcc/testsuite/g++.old-deja/g++.ns/crash1.C
-2464744464b ./gcc/testsuite/g++.old-deja/g++.ns/crash2.C
-3702812747b ./gcc/testsuite/g++.old-deja/g++.ns/crash3.C
-1039024293b ./gcc/testsuite/g++.old-deja/g++.ns/crash4.C
- 291093904b ./gcc/testsuite/g++.old-deja/g++.ns/extern1.C
-1173492084b ./gcc/testsuite/g++.old-deja/g++.ns/friend1.C
-1868773204b ./gcc/testsuite/g++.old-deja/g++.ns/friend2.C
-3202138550b ./gcc/testsuite/g++.old-deja/g++.ns/invalid1.C
- 906902326b ./gcc/testsuite/g++.old-deja/g++.ns/koenig1.C
-1411633778b ./gcc/testsuite/g++.old-deja/g++.ns/koenig2.C
-2631367576b ./gcc/testsuite/g++.old-deja/g++.ns/koenig3.C
-3382825940b ./gcc/testsuite/g++.old-deja/g++.ns/koenig4.C
-1611992557b ./gcc/testsuite/g++.old-deja/g++.ns/koenig5.C
-1887390137b ./gcc/testsuite/g++.old-deja/g++.ns/koenig6.C
-1096451021b ./gcc/testsuite/g++.old-deja/g++.ns/koenig7.C
-1122271156b ./gcc/testsuite/g++.old-deja/g++.ns/koenig8.C
-1715624709b ./gcc/testsuite/g++.old-deja/g++.ns/koenig9.C
-3901434139b ./gcc/testsuite/g++.old-deja/g++.ns/lookup1.C
- 386799298b ./gcc/testsuite/g++.old-deja/g++.ns/lookup2.C
- 457208660b ./gcc/testsuite/g++.old-deja/g++.ns/lookup3.C
-1271629498b ./gcc/testsuite/g++.old-deja/g++.ns/lookup4.C
- 99097863b ./gcc/testsuite/g++.old-deja/g++.ns/lookup5.C
-2416418172b ./gcc/testsuite/g++.old-deja/g++.ns/main1.C
- 462860645b ./gcc/testsuite/g++.old-deja/g++.ns/new1.C
-2286495086b ./gcc/testsuite/g++.old-deja/g++.ns/ns10.C
-2018913859b ./gcc/testsuite/g++.old-deja/g++.ns/ns11.C
-1953910502b ./gcc/testsuite/g++.old-deja/g++.ns/ns12.C
-1783653783b ./gcc/testsuite/g++.old-deja/g++.ns/ns13.C
- 649484463b ./gcc/testsuite/g++.old-deja/g++.ns/ns14.C
-3477570937b ./gcc/testsuite/g++.old-deja/g++.ns/ns15.C
-3961933508b ./gcc/testsuite/g++.old-deja/g++.ns/ns16.C
-2083452456b ./gcc/testsuite/g++.old-deja/g++.ns/ns17.C
-1679880705b ./gcc/testsuite/g++.old-deja/g++.ns/ns18.C
-3180343024b ./gcc/testsuite/g++.old-deja/g++.ns/ns19.C
- 320140404b ./gcc/testsuite/g++.old-deja/g++.ns/ns1.C
-1879177898b ./gcc/testsuite/g++.old-deja/g++.ns/ns2.C
-1465385187b ./gcc/testsuite/g++.old-deja/g++.ns/ns3.C
-4084737299b ./gcc/testsuite/g++.old-deja/g++.ns/ns4.C
-3095284437b ./gcc/testsuite/g++.old-deja/g++.ns/ns5.C
-3082882966b ./gcc/testsuite/g++.old-deja/g++.ns/ns6.C
-1632020321b ./gcc/testsuite/g++.old-deja/g++.ns/ns7.C
- 983347709b ./gcc/testsuite/g++.old-deja/g++.ns/ns8.C
-3680884696b ./gcc/testsuite/g++.old-deja/g++.ns/ns9.C
- 600497628b ./gcc/testsuite/g++.old-deja/g++.ns/overload1.C
- 192977486b ./gcc/testsuite/g++.old-deja/g++.ns/overload2.C
-2134480176b ./gcc/testsuite/g++.old-deja/g++.ns/overload3.C
-3876905928b ./gcc/testsuite/g++.old-deja/g++.ns/overload4.C
-2260598962b ./gcc/testsuite/g++.old-deja/g++.ns/overload5.C
-4131178865b ./gcc/testsuite/g++.old-deja/g++.ns/scoped1.C
-1593366070b ./gcc/testsuite/g++.old-deja/g++.ns/template10.C
- 227548188b ./gcc/testsuite/g++.old-deja/g++.ns/template11.C
-3712349348b ./gcc/testsuite/g++.old-deja/g++.ns/template12.C
- 79283455b ./gcc/testsuite/g++.old-deja/g++.ns/template13.C
-1942781319b ./gcc/testsuite/g++.old-deja/g++.ns/template14.C
-4227768604b ./gcc/testsuite/g++.old-deja/g++.ns/template15.C
- 703552988b ./gcc/testsuite/g++.old-deja/g++.ns/template16.C
-3733063651b ./gcc/testsuite/g++.old-deja/g++.ns/template17.C
-1888321924b ./gcc/testsuite/g++.old-deja/g++.ns/template18.C
-1497628723b ./gcc/testsuite/g++.old-deja/g++.ns/template1.C
-2875853595b ./gcc/testsuite/g++.old-deja/g++.ns/template2.C
-1112300813b ./gcc/testsuite/g++.old-deja/g++.ns/template3.C
-2350177435b ./gcc/testsuite/g++.old-deja/g++.ns/template4.C
-2979487904b ./gcc/testsuite/g++.old-deja/g++.ns/template5.C
-4046950700b ./gcc/testsuite/g++.old-deja/g++.ns/template6.C
-1696916874b ./gcc/testsuite/g++.old-deja/g++.ns/template7.C
-4106967799b ./gcc/testsuite/g++.old-deja/g++.ns/template8.C
-2144693012b ./gcc/testsuite/g++.old-deja/g++.ns/template9.C
- 84089911b ./gcc/testsuite/g++.old-deja/g++.ns/type1.C
-3277562556b ./gcc/testsuite/g++.old-deja/g++.ns/type2.C
-1028524427b ./gcc/testsuite/g++.old-deja/g++.ns/undef1.C
-3481627695b ./gcc/testsuite/g++.old-deja/g++.ns/using10.C
-3329538563b ./gcc/testsuite/g++.old-deja/g++.ns/using11.C
-1085995099b ./gcc/testsuite/g++.old-deja/g++.ns/using12.C
- 883766752b ./gcc/testsuite/g++.old-deja/g++.ns/using13.C
- 35819294b ./gcc/testsuite/g++.old-deja/g++.ns/using14.C
-1496925944b ./gcc/testsuite/g++.old-deja/g++.ns/using1.C
- 549926689b ./gcc/testsuite/g++.old-deja/g++.ns/using2.C
-2238481400b ./gcc/testsuite/g++.old-deja/g++.ns/using3.C
-3304922930b ./gcc/testsuite/g++.old-deja/g++.ns/using4.C
-3313223306b ./gcc/testsuite/g++.old-deja/g++.ns/using5.C
-3070329898b ./gcc/testsuite/g++.old-deja/g++.ns/using6.C
-3099602163b ./gcc/testsuite/g++.old-deja/g++.ns/using7.C
- 396388537b ./gcc/testsuite/g++.old-deja/g++.ns/using8.C
- 536814910b ./gcc/testsuite/g++.old-deja/g++.ns/using9.C
- 33710489b ./gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog
-3728265872b ./gcc/testsuite/g++.old-deja/g++.oliva/ctor1.C
-3026414575b ./gcc/testsuite/g++.old-deja/g++.oliva/delete1.C
-3639944207b ./gcc/testsuite/g++.old-deja/g++.oliva/delete2.C
-2643297136b ./gcc/testsuite/g++.old-deja/g++.oliva/delete3.C
-2694375318b ./gcc/testsuite/g++.old-deja/g++.oliva/delete4.C
- 344447742b ./gcc/testsuite/g++.old-deja/g++.oliva/delete5.C
-2655620155b ./gcc/testsuite/g++.old-deja/g++.oliva/dwarf1.C
-2964032756b ./gcc/testsuite/g++.old-deja/g++.oliva/dwarf2.C
-1746999930b ./gcc/testsuite/g++.old-deja/g++.oliva/dwarf3.C
-3764858774b ./gcc/testsuite/g++.old-deja/g++.oliva/expr1.C
-3287636659b ./gcc/testsuite/g++.old-deja/g++.oliva/expr2.C
- 738813804b ./gcc/testsuite/g++.old-deja/g++.oliva/ext1.C
- 149147424b ./gcc/testsuite/g++.old-deja/g++.oliva/friend1.C
-3385010570b ./gcc/testsuite/g++.old-deja/g++.oliva/inline1.C
-2214033786b ./gcc/testsuite/g++.old-deja/g++.oliva/nameret1.C
-2703397514b ./gcc/testsuite/g++.old-deja/g++.oliva/nameret2.C
- 759830263b ./gcc/testsuite/g++.old-deja/g++.oliva/new1.C
- 695336951b ./gcc/testsuite/g++.old-deja/g++.oliva/ns1.C
-2491296653b ./gcc/testsuite/g++.old-deja/g++.oliva/ns2.C
-2727020577b ./gcc/testsuite/g++.old-deja/g++.oliva/ns3.C
- 55143343b ./gcc/testsuite/g++.old-deja/g++.oliva/overload1.C
-2278180057b ./gcc/testsuite/g++.old-deja/g++.oliva/partord1.C
-4276767902b ./gcc/testsuite/g++.old-deja/g++.oliva/partspec1.C
-2386630112b ./gcc/testsuite/g++.old-deja/g++.oliva/stkalign.C
-4240481284b ./gcc/testsuite/g++.old-deja/g++.oliva/template10.C
-1309552996b ./gcc/testsuite/g++.old-deja/g++.oliva/template1.C
- 894610317b ./gcc/testsuite/g++.old-deja/g++.oliva/template2.C
-4111994491b ./gcc/testsuite/g++.old-deja/g++.oliva/template3.C
-3380741154b ./gcc/testsuite/g++.old-deja/g++.oliva/template4.C
-2219239694b ./gcc/testsuite/g++.old-deja/g++.oliva/template5.C
- 648492939b ./gcc/testsuite/g++.old-deja/g++.oliva/template6.C
-3724691458b ./gcc/testsuite/g++.old-deja/g++.oliva/template7.C
-2923124652b ./gcc/testsuite/g++.old-deja/g++.oliva/template8.C
-1030363186b ./gcc/testsuite/g++.old-deja/g++.oliva/template9.C
-3126175465b ./gcc/testsuite/g++.old-deja/g++.oliva/thunk1.C
-2910311896b ./gcc/testsuite/g++.old-deja/g++.oliva/typename1.C
-3314243773b ./gcc/testsuite/g++.old-deja/g++.oliva/typename2.C
-3536726592b ./gcc/testsuite/g++.old-deja/g++.oliva/typeof1.C
-1057884755b ./gcc/testsuite/g++.old-deja/g++.other/900403_04.C
-3988635652b ./gcc/testsuite/g++.old-deja/g++.other/900519_12.C
-3191928166b ./gcc/testsuite/g++.old-deja/g++.other/access10.C
-2726240569b ./gcc/testsuite/g++.old-deja/g++.other/access11.C
-2645069492b ./gcc/testsuite/g++.old-deja/g++.other/access1.C
- 627859229b ./gcc/testsuite/g++.old-deja/g++.other/access2.C
-2495312369b ./gcc/testsuite/g++.old-deja/g++.other/access3.C
-2750828805b ./gcc/testsuite/g++.old-deja/g++.other/access4.C
-2421996265b ./gcc/testsuite/g++.old-deja/g++.other/access5.C
-3545934529b ./gcc/testsuite/g++.old-deja/g++.other/access6.C
-3047622025b ./gcc/testsuite/g++.old-deja/g++.other/access7.C
- 503834536b ./gcc/testsuite/g++.old-deja/g++.other/access8.C
-2834461355b ./gcc/testsuite/g++.old-deja/g++.other/access9.C
-2214832839b ./gcc/testsuite/g++.old-deja/g++.other/addrof1.C
-1563340634b ./gcc/testsuite/g++.old-deja/g++.other/align.C
-2784356656b ./gcc/testsuite/g++.old-deja/g++.other/ambig1.C
-2097579030b ./gcc/testsuite/g++.old-deja/g++.other/ambig2.C
-1537055798b ./gcc/testsuite/g++.old-deja/g++.other/ambig3.C
-1344999649b ./gcc/testsuite/g++.old-deja/g++.other/anon1.C
-2190312352b ./gcc/testsuite/g++.old-deja/g++.other/anon2.C
-3495970892b ./gcc/testsuite/g++.old-deja/g++.other/anon3.C
- 328785145b ./gcc/testsuite/g++.old-deja/g++.other/anon4.C
-2706988209b ./gcc/testsuite/g++.old-deja/g++.other/anon5.C
-2854182173b ./gcc/testsuite/g++.old-deja/g++.other/anon6.C
-3655281019b ./gcc/testsuite/g++.old-deja/g++.other/anon7.C
-2243818429b ./gcc/testsuite/g++.old-deja/g++.other/anon8.C
-2944422964b ./gcc/testsuite/g++.old-deja/g++.other/anon9.C
-3655425788b ./gcc/testsuite/g++.old-deja/g++.other/array1.C
-2041445169b ./gcc/testsuite/g++.old-deja/g++.other/array2.C
- 817672117b ./gcc/testsuite/g++.old-deja/g++.other/array3.C
-1236007435b ./gcc/testsuite/g++.old-deja/g++.other/array4.C
-4210498948b ./gcc/testsuite/g++.old-deja/g++.other/array5.C
-1839235782b ./gcc/testsuite/g++.old-deja/g++.other/array6.C
- 128237130b ./gcc/testsuite/g++.old-deja/g++.other/array9.C
- 775293500b ./gcc/testsuite/g++.old-deja/g++.other/asm1.C
-1087917488b ./gcc/testsuite/g++.old-deja/g++.other/asm2.C
-2120817147b ./gcc/testsuite/g++.old-deja/g++.other/asm3.C
-4169192453b ./gcc/testsuite/g++.old-deja/g++.other/badarrow.C
-1457616136b ./gcc/testsuite/g++.old-deja/g++.other/badopt1.C
- 578421507b ./gcc/testsuite/g++.old-deja/g++.other/base1.C
- 727834736b ./gcc/testsuite/g++.old-deja/g++.other/bitfld1.C
-4101624820b ./gcc/testsuite/g++.old-deja/g++.other/bitfld2.C
-2880959878b ./gcc/testsuite/g++.old-deja/g++.other/bitfld3.C
- 574179745b ./gcc/testsuite/g++.old-deja/g++.other/bitfld4.C
-2818363580b ./gcc/testsuite/g++.old-deja/g++.other/bitfld5.C
- 849916728b ./gcc/testsuite/g++.old-deja/g++.other/builtins1.C
-1119192045b ./gcc/testsuite/g++.old-deja/g++.other/builtins2.C
-1541855856b ./gcc/testsuite/g++.old-deja/g++.other/builtins3.C
-3612794982b ./gcc/testsuite/g++.old-deja/g++.other/builtins4.C
-2609921973b ./gcc/testsuite/g++.old-deja/g++.other/builtins5.C
-1770005594b ./gcc/testsuite/g++.old-deja/g++.other/builtins6.C
-2118815705b ./gcc/testsuite/g++.old-deja/g++.other/builtins7.C
-3786327583b ./gcc/testsuite/g++.old-deja/g++.other/builtins8.C
-3198258077b ./gcc/testsuite/g++.old-deja/g++.other/builtins9.C
-1856291545b ./gcc/testsuite/g++.old-deja/g++.other/call1.C
-1948526601b ./gcc/testsuite/g++.old-deja/g++.other/cast1.C
-2969373696b ./gcc/testsuite/g++.old-deja/g++.other/cast2.C
- 604190312b ./gcc/testsuite/g++.old-deja/g++.other/cast3.C
-2184311979b ./gcc/testsuite/g++.old-deja/g++.other/cast4.C
- 24055341b ./gcc/testsuite/g++.old-deja/g++.other/cast5.C
- 749894899b ./gcc/testsuite/g++.old-deja/g++.other/cast6.C
-1982308839b ./gcc/testsuite/g++.old-deja/g++.other/cast7.C
-2304816521b ./gcc/testsuite/g++.old-deja/g++.other/cleanup1.C
-3543693514b ./gcc/testsuite/g++.old-deja/g++.other/cleanup2.C
- 995095788b ./gcc/testsuite/g++.old-deja/g++.other/cleanup4.C
-3815448745b ./gcc/testsuite/g++.old-deja/g++.other/comdat1-aux.cc
-3620214006b ./gcc/testsuite/g++.old-deja/g++.other/comdat1.C
-2015497124b ./gcc/testsuite/g++.old-deja/g++.other/comdat2-aux.cc
-1235507024b ./gcc/testsuite/g++.old-deja/g++.other/comdat2.C
- 32346335b ./gcc/testsuite/g++.old-deja/g++.other/cond1.C
-2040886616b ./gcc/testsuite/g++.old-deja/g++.other/cond2.C
-1693754994b ./gcc/testsuite/g++.old-deja/g++.other/cond3.C
- 670388594b ./gcc/testsuite/g++.old-deja/g++.other/cond4.C
-1262376075b ./gcc/testsuite/g++.old-deja/g++.other/cond5.C
-2676026586b ./gcc/testsuite/g++.old-deja/g++.other/cond6.C
-1953534421b ./gcc/testsuite/g++.old-deja/g++.other/cond7.C
-2177760584b ./gcc/testsuite/g++.old-deja/g++.other/const1.C
- 815940719b ./gcc/testsuite/g++.old-deja/g++.other/const2.C
-3115773883b ./gcc/testsuite/g++.old-deja/g++.other/conv1.C
- 831200322b ./gcc/testsuite/g++.old-deja/g++.other/conv2.C
-1628602313b ./gcc/testsuite/g++.old-deja/g++.other/conv3.C
-4233772671b ./gcc/testsuite/g++.old-deja/g++.other/conv4.C
- 310726280b ./gcc/testsuite/g++.old-deja/g++.other/conv5.C
-4132208036b ./gcc/testsuite/g++.old-deja/g++.other/conv6.C
-3821789807b ./gcc/testsuite/g++.old-deja/g++.other/conv7.C
-2577806949b ./gcc/testsuite/g++.old-deja/g++.other/conv8.C
-1535970476b ./gcc/testsuite/g++.old-deja/g++.other/conv9.C
-3587605986b ./gcc/testsuite/g++.old-deja/g++.other/copy1.C
-3735054018b ./gcc/testsuite/g++.old-deja/g++.other/copy2.C
-4116304803b ./gcc/testsuite/g++.old-deja/g++.other/copy3.C
- 809878899b ./gcc/testsuite/g++.old-deja/g++.other/covar1.C
-2622243234b ./gcc/testsuite/g++.old-deja/g++.other/crash10.C
-1409785718b ./gcc/testsuite/g++.old-deja/g++.other/crash11.C
- 155389209b ./gcc/testsuite/g++.old-deja/g++.other/crash12.C
-3778901334b ./gcc/testsuite/g++.old-deja/g++.other/crash13.C
-3521221636b ./gcc/testsuite/g++.old-deja/g++.other/crash14.C
-3608968471b ./gcc/testsuite/g++.old-deja/g++.other/crash15.C
-1523769869b ./gcc/testsuite/g++.old-deja/g++.other/crash16.C
-2768038718b ./gcc/testsuite/g++.old-deja/g++.other/crash17.C
-1844482260b ./gcc/testsuite/g++.old-deja/g++.other/crash18.C
-4239879636b ./gcc/testsuite/g++.old-deja/g++.other/crash19.C
-1458918645b ./gcc/testsuite/g++.old-deja/g++.other/crash1.C
-2114923665b ./gcc/testsuite/g++.old-deja/g++.other/crash20.C
-2408483670b ./gcc/testsuite/g++.old-deja/g++.other/crash21.C
- 389951009b ./gcc/testsuite/g++.old-deja/g++.other/crash22.C
-3346026369b ./gcc/testsuite/g++.old-deja/g++.other/crash23.C
-3240226401b ./gcc/testsuite/g++.old-deja/g++.other/crash24.C
-1103500081b ./gcc/testsuite/g++.old-deja/g++.other/crash25.C
- 662847024b ./gcc/testsuite/g++.old-deja/g++.other/crash26.C
- 621631894b ./gcc/testsuite/g++.old-deja/g++.other/crash27.C
-1274918070b ./gcc/testsuite/g++.old-deja/g++.other/crash28.C
-3218325168b ./gcc/testsuite/g++.old-deja/g++.other/crash29.C
-2556139745b ./gcc/testsuite/g++.old-deja/g++.other/crash2.C
-3863621974b ./gcc/testsuite/g++.old-deja/g++.other/crash30.C
-1567414961b ./gcc/testsuite/g++.old-deja/g++.other/crash31.C
-2337764618b ./gcc/testsuite/g++.old-deja/g++.other/crash32.C
-3826660229b ./gcc/testsuite/g++.old-deja/g++.other/crash33.C
-1464877078b ./gcc/testsuite/g++.old-deja/g++.other/crash34.C
-1090618161b ./gcc/testsuite/g++.old-deja/g++.other/crash35.C
-1919242889b ./gcc/testsuite/g++.old-deja/g++.other/crash36.C
-3888381363b ./gcc/testsuite/g++.old-deja/g++.other/crash37.C
-3660059490b ./gcc/testsuite/g++.old-deja/g++.other/crash38.C
- 465327177b ./gcc/testsuite/g++.old-deja/g++.other/crash39.C
-1986207284b ./gcc/testsuite/g++.old-deja/g++.other/crash3.C
-2473163715b ./gcc/testsuite/g++.old-deja/g++.other/crash40.C
-2559623170b ./gcc/testsuite/g++.old-deja/g++.other/crash41.C
-2300001961b ./gcc/testsuite/g++.old-deja/g++.other/crash42.C
- 226105322b ./gcc/testsuite/g++.old-deja/g++.other/crash4.C
-1657789856b ./gcc/testsuite/g++.old-deja/g++.other/crash5.C
-2889210351b ./gcc/testsuite/g++.old-deja/g++.other/crash60.C
-3212679954b ./gcc/testsuite/g++.old-deja/g++.other/crash6.C
-3092570108b ./gcc/testsuite/g++.old-deja/g++.other/crash7.C
-1968632283b ./gcc/testsuite/g++.old-deja/g++.other/crash8.C
- 739803606b ./gcc/testsuite/g++.old-deja/g++.other/crash9.C
- 531388331b ./gcc/testsuite/g++.old-deja/g++.other/ctor1-aux.cc
-2641112841b ./gcc/testsuite/g++.old-deja/g++.other/ctor1.C
-3378789352b ./gcc/testsuite/g++.old-deja/g++.other/cvqual1.C
-3056861018b ./gcc/testsuite/g++.old-deja/g++.other/.cvsignore
- 727094743b ./gcc/testsuite/g++.old-deja/g++.other/cvt1.C
-3756464148b ./gcc/testsuite/g++.old-deja/g++.other/dcast1.C
-3517388262b ./gcc/testsuite/g++.old-deja/g++.other/dcast2.C
-3685654707b ./gcc/testsuite/g++.old-deja/g++.other/debug1.C
-2822990897b ./gcc/testsuite/g++.old-deja/g++.other/debug2.C
-1189835698b ./gcc/testsuite/g++.old-deja/g++.other/debug3.C
-2324897352b ./gcc/testsuite/g++.old-deja/g++.other/debug4.C
-2810308932b ./gcc/testsuite/g++.old-deja/g++.other/debug5.C
- 295818831b ./gcc/testsuite/g++.old-deja/g++.other/debug6.C
-3988487536b ./gcc/testsuite/g++.old-deja/g++.other/debug7.C
-1879227744b ./gcc/testsuite/g++.old-deja/g++.other/debug8.C
-3358773301b ./gcc/testsuite/g++.old-deja/g++.other/debug9.C
-3900152738b ./gcc/testsuite/g++.old-deja/g++.other/decl1.C
- 424334940b ./gcc/testsuite/g++.old-deja/g++.other/decl2.C
-3608003944b ./gcc/testsuite/g++.old-deja/g++.other/decl3.C
-1694963597b ./gcc/testsuite/g++.old-deja/g++.other/decl4.C
-1101755295b ./gcc/testsuite/g++.old-deja/g++.other/decl5.C
-1313195230b ./gcc/testsuite/g++.old-deja/g++.other/decl6.C
- 634053859b ./gcc/testsuite/g++.old-deja/g++.other/decl7.C
- 681270539b ./gcc/testsuite/g++.old-deja/g++.other/decl8.C
-2910519026b ./gcc/testsuite/g++.old-deja/g++.other/decl9.C
-2306726678b ./gcc/testsuite/g++.old-deja/g++.other/defarg1.C
-2242070909b ./gcc/testsuite/g++.old-deja/g++.other/defarg2.C
-1782517406b ./gcc/testsuite/g++.old-deja/g++.other/defarg3.C
-1949407113b ./gcc/testsuite/g++.old-deja/g++.other/defarg4.C
-1986404254b ./gcc/testsuite/g++.old-deja/g++.other/defarg5.C
-1691336913b ./gcc/testsuite/g++.old-deja/g++.other/defarg6.C
- 702065579b ./gcc/testsuite/g++.old-deja/g++.other/defarg7.C
- 300009654b ./gcc/testsuite/g++.old-deja/g++.other/defarg8.C
- 192024979b ./gcc/testsuite/g++.old-deja/g++.other/defarg9.C
-2802881760b ./gcc/testsuite/g++.old-deja/g++.other/delete1.C
- 276485906b ./gcc/testsuite/g++.old-deja/g++.other/delete2.C
- 904586144b ./gcc/testsuite/g++.old-deja/g++.other/delete3.C
-3432343895b ./gcc/testsuite/g++.old-deja/g++.other/delete4.C
-1951825413b ./gcc/testsuite/g++.old-deja/g++.other/delete5.C
-3466783310b ./gcc/testsuite/g++.old-deja/g++.other/delete6.C
- 509373967b ./gcc/testsuite/g++.old-deja/g++.other/delete7.C
-3153510006b ./gcc/testsuite/g++.old-deja/g++.other/delete8.C
-2943694185b ./gcc/testsuite/g++.old-deja/g++.other/deref1.C
-1585360804b ./gcc/testsuite/g++.old-deja/g++.other/dll-1.C
-1264525517b ./gcc/testsuite/g++.old-deja/g++.other/dll-2.C
-1013566499b ./gcc/testsuite/g++.old-deja/g++.other/dll-3.C
-4096635328b ./gcc/testsuite/g++.old-deja/g++.other/dll-4.C
-4188389053b ./gcc/testsuite/g++.old-deja/g++.other/dll-5.C
-2919979689b ./gcc/testsuite/g++.old-deja/g++.other/dll-6.C
- 18134551b ./gcc/testsuite/g++.old-deja/g++.other/dtor10.C
-1164270328b ./gcc/testsuite/g++.old-deja/g++.other/dtor11.C
-3251874725b ./gcc/testsuite/g++.old-deja/g++.other/dtor12.C
-2995412590b ./gcc/testsuite/g++.old-deja/g++.other/dtor13.C
-1284663345b ./gcc/testsuite/g++.old-deja/g++.other/dtor1.C
- 19912911b ./gcc/testsuite/g++.old-deja/g++.other/dtor2.C
-1972124996b ./gcc/testsuite/g++.old-deja/g++.other/dtor3.C
-3858298340b ./gcc/testsuite/g++.old-deja/g++.other/dtor4.C
- 876617359b ./gcc/testsuite/g++.old-deja/g++.other/dtor5.C
-2345375085b ./gcc/testsuite/g++.old-deja/g++.other/dtor6.C
-3115840152b ./gcc/testsuite/g++.old-deja/g++.other/dtor7.C
-1228765847b ./gcc/testsuite/g++.old-deja/g++.other/dtor8.C
- 837300122b ./gcc/testsuite/g++.old-deja/g++.other/dtor9.C
-4176649198b ./gcc/testsuite/g++.old-deja/g++.other/dyncast1.C
-2159394165b ./gcc/testsuite/g++.old-deja/g++.other/dyncast2.C
-1576362312b ./gcc/testsuite/g++.old-deja/g++.other/dyncast3.C
- 771042933b ./gcc/testsuite/g++.old-deja/g++.other/dyncast4.C
-3056485598b ./gcc/testsuite/g++.old-deja/g++.other/dyncast5.C
-1196348440b ./gcc/testsuite/g++.old-deja/g++.other/dyncast6.C
-3203327173b ./gcc/testsuite/g++.old-deja/g++.other/eh1.C
-4127184370b ./gcc/testsuite/g++.old-deja/g++.other/eh2.C
-3559396844b ./gcc/testsuite/g++.old-deja/g++.other/eh3.C
-3143843455b ./gcc/testsuite/g++.old-deja/g++.other/eh4.C
-1752543333b ./gcc/testsuite/g++.old-deja/g++.other/eh5.C
- 326457279b ./gcc/testsuite/g++.old-deja/g++.other/eh.C
-3053308594b ./gcc/testsuite/g++.old-deja/g++.other/elab1.C
-3888745390b ./gcc/testsuite/g++.old-deja/g++.other/empty1.C
-3170636835b ./gcc/testsuite/g++.old-deja/g++.other/empty2.C
- 845552508b ./gcc/testsuite/g++.old-deja/g++.other/enum1.C
-1384469113b ./gcc/testsuite/g++.old-deja/g++.other/enum2.C
- 556645706b ./gcc/testsuite/g++.old-deja/g++.other/enum3.C
-3409398862b ./gcc/testsuite/g++.old-deja/g++.other/enum4.C
-1750723822b ./gcc/testsuite/g++.old-deja/g++.other/enum5.C
-2843499248b ./gcc/testsuite/g++.old-deja/g++.other/explicit1.C
-1334454026b ./gcc/testsuite/g++.old-deja/g++.other/expr1.C
-4041831790b ./gcc/testsuite/g++.old-deja/g++.other/exprstmt1.C
-1049589711b ./gcc/testsuite/g++.old-deja/g++.other/externC1.C
- 106210432b ./gcc/testsuite/g++.old-deja/g++.other/externC2.C
- 763760707b ./gcc/testsuite/g++.old-deja/g++.other/externC3.C
-3610590692b ./gcc/testsuite/g++.old-deja/g++.other/externC4.C
-1052362663b ./gcc/testsuite/g++.old-deja/g++.other/externC5.C
- 778443229b ./gcc/testsuite/g++.old-deja/g++.other/field1.C
- 250200362b ./gcc/testsuite/g++.old-deja/g++.other/field2.C
-1648602614b ./gcc/testsuite/g++.old-deja/g++.other/fnname1.C
-2595576321b ./gcc/testsuite/g++.old-deja/g++.other/for1.C
-3948754017b ./gcc/testsuite/g++.old-deja/g++.other/for2.C
-1195751396b ./gcc/testsuite/g++.old-deja/g++.other/friend10.C
-3233024721b ./gcc/testsuite/g++.old-deja/g++.other/friend11.C
-3153977462b ./gcc/testsuite/g++.old-deja/g++.other/friend1.C
-1833376578b ./gcc/testsuite/g++.old-deja/g++.other/friend2.C
-1953203540b ./gcc/testsuite/g++.old-deja/g++.other/friend3.C
- 438287814b ./gcc/testsuite/g++.old-deja/g++.other/friend4.C
-1535994258b ./gcc/testsuite/g++.old-deja/g++.other/friend5.C
- 334915341b ./gcc/testsuite/g++.old-deja/g++.other/friend6.C
-2487555281b ./gcc/testsuite/g++.old-deja/g++.other/friend7.C
- 993901545b ./gcc/testsuite/g++.old-deja/g++.other/friend8.C
-1702616549b ./gcc/testsuite/g++.old-deja/g++.other/friend9.C
-1706782876b ./gcc/testsuite/g++.old-deja/g++.other/goto1.C
-1113635348b ./gcc/testsuite/g++.old-deja/g++.other/goto2.C
-3060246492b ./gcc/testsuite/g++.old-deja/g++.other/goto3.C
-2785798940b ./gcc/testsuite/g++.old-deja/g++.other/goto4.C
-2615587703b ./gcc/testsuite/g++.old-deja/g++.other/headers1.C
-1685869594b ./gcc/testsuite/g++.old-deja/g++.other/incomplete.C
-1598723950b ./gcc/testsuite/g++.old-deja/g++.other/init10.C
-1393596821b ./gcc/testsuite/g++.old-deja/g++.other/init11.C
-3918302157b ./gcc/testsuite/g++.old-deja/g++.other/init12.C
-2230863646b ./gcc/testsuite/g++.old-deja/g++.other/init13.C
-4165471595b ./gcc/testsuite/g++.old-deja/g++.other/init14.C
-2091624673b ./gcc/testsuite/g++.old-deja/g++.other/init15.C
-1512725790b ./gcc/testsuite/g++.old-deja/g++.other/init16.C
-1093306404b ./gcc/testsuite/g++.old-deja/g++.other/init17.C
- 927757255b ./gcc/testsuite/g++.old-deja/g++.other/init1.C
-2603599454b ./gcc/testsuite/g++.old-deja/g++.other/init2.C
- 60242679b ./gcc/testsuite/g++.old-deja/g++.other/init3.C
-1928831477b ./gcc/testsuite/g++.old-deja/g++.other/init4.C
-2302598719b ./gcc/testsuite/g++.old-deja/g++.other/init5.C
- 49415730b ./gcc/testsuite/g++.old-deja/g++.other/init6.C
-3569419722b ./gcc/testsuite/g++.old-deja/g++.other/init7.C
-1098289890b ./gcc/testsuite/g++.old-deja/g++.other/init8.C
- 557927133b ./gcc/testsuite/g++.old-deja/g++.other/init9.C
-1778823150b ./gcc/testsuite/g++.old-deja/g++.other/initstring.C
-1695544611b ./gcc/testsuite/g++.old-deja/g++.other/inline10.C
-3270512395b ./gcc/testsuite/g++.old-deja/g++.other/inline11.C
-1325890431b ./gcc/testsuite/g++.old-deja/g++.other/inline12.C
-3738207064b ./gcc/testsuite/g++.old-deja/g++.other/inline13.C
-4172873175b ./gcc/testsuite/g++.old-deja/g++.other/inline14.C
-3062613130b ./gcc/testsuite/g++.old-deja/g++.other/inline15.C
-3811673527b ./gcc/testsuite/g++.old-deja/g++.other/inline16.C
-1438985095b ./gcc/testsuite/g++.old-deja/g++.other/inline17.C
- 938935758b ./gcc/testsuite/g++.old-deja/g++.other/inline18.C
-3672842965b ./gcc/testsuite/g++.old-deja/g++.other/inline19.C
-2434780038b ./gcc/testsuite/g++.old-deja/g++.other/inline1.C
-1204135970b ./gcc/testsuite/g++.old-deja/g++.other/inline20.C
-3724397225b ./gcc/testsuite/g++.old-deja/g++.other/inline21.C
-3956374226b ./gcc/testsuite/g++.old-deja/g++.other/inline23.C
-2138039153b ./gcc/testsuite/g++.old-deja/g++.other/inline2.C
-1052546588b ./gcc/testsuite/g++.old-deja/g++.other/inline3.C
- 56787941b ./gcc/testsuite/g++.old-deja/g++.other/inline4.C
-3486429137b ./gcc/testsuite/g++.old-deja/g++.other/inline5.C
-1620558402b ./gcc/testsuite/g++.old-deja/g++.other/inline6.C
-3584081324b ./gcc/testsuite/g++.old-deja/g++.other/inline7.C
-2265199062b ./gcc/testsuite/g++.old-deja/g++.other/inline8.C
-4185876620b ./gcc/testsuite/g++.old-deja/g++.other/inline9.C
-3998338845b ./gcc/testsuite/g++.old-deja/g++.other/instan1.C
-4152836602b ./gcc/testsuite/g++.old-deja/g++.other/lex1.C
-3192143530b ./gcc/testsuite/g++.old-deja/g++.other/lineno1.C
- 448802586b ./gcc/testsuite/g++.old-deja/g++.other/lineno2.C
-1798112973b ./gcc/testsuite/g++.old-deja/g++.other/lineno3.C
-3724478549b ./gcc/testsuite/g++.old-deja/g++.other/lineno4.C
-3655515541b ./gcc/testsuite/g++.old-deja/g++.other/lineno5.C
-1356735834b ./gcc/testsuite/g++.old-deja/g++.other/linkage1.C
-2749431766b ./gcc/testsuite/g++.old-deja/g++.other/linkage2.C
-3893718025b ./gcc/testsuite/g++.old-deja/g++.other/linkage3.C
- 821605289b ./gcc/testsuite/g++.old-deja/g++.other/linkage4.C
- 617990355b ./gcc/testsuite/g++.old-deja/g++.other/linkage5.C
-3257516835b ./gcc/testsuite/g++.old-deja/g++.other/linkage6.C
-1235107285b ./gcc/testsuite/g++.old-deja/g++.other/linkage7.C
- 577632193b ./gcc/testsuite/g++.old-deja/g++.other/local1.C
- 88188461b ./gcc/testsuite/g++.old-deja/g++.other/local2.C
-2840919735b ./gcc/testsuite/g++.old-deja/g++.other/local3.C
-1540707900b ./gcc/testsuite/g++.old-deja/g++.other/local4.C
-3682661614b ./gcc/testsuite/g++.old-deja/g++.other/local-alloc1.C
-1737066412b ./gcc/testsuite/g++.old-deja/g++.other/lookup10.C
-1037102268b ./gcc/testsuite/g++.old-deja/g++.other/lookup11.C
- 245062181b ./gcc/testsuite/g++.old-deja/g++.other/lookup12.C
- 294960660b ./gcc/testsuite/g++.old-deja/g++.other/lookup13.C
-1052787057b ./gcc/testsuite/g++.old-deja/g++.other/lookup14.C
-3620167133b ./gcc/testsuite/g++.old-deja/g++.other/lookup15.C
-3544839285b ./gcc/testsuite/g++.old-deja/g++.other/lookup16.C
- 697721056b ./gcc/testsuite/g++.old-deja/g++.other/lookup17.C
- 815912902b ./gcc/testsuite/g++.old-deja/g++.other/lookup18.C
- 280785492b ./gcc/testsuite/g++.old-deja/g++.other/lookup19.C
-2269210126b ./gcc/testsuite/g++.old-deja/g++.other/lookup1.C
- 436406477b ./gcc/testsuite/g++.old-deja/g++.other/lookup20.C
-1209560984b ./gcc/testsuite/g++.old-deja/g++.other/lookup21.C
- 614093465b ./gcc/testsuite/g++.old-deja/g++.other/lookup22.C
-2433482316b ./gcc/testsuite/g++.old-deja/g++.other/lookup23.C
-3765524406b ./gcc/testsuite/g++.old-deja/g++.other/lookup2.C
-2344878047b ./gcc/testsuite/g++.old-deja/g++.other/lookup3.C
-1023689233b ./gcc/testsuite/g++.old-deja/g++.other/lookup4.C
-2548363938b ./gcc/testsuite/g++.old-deja/g++.other/lookup5.C
-3828630710b ./gcc/testsuite/g++.old-deja/g++.other/lookup6.C
-1518253932b ./gcc/testsuite/g++.old-deja/g++.other/lookup7.C
-2089412856b ./gcc/testsuite/g++.old-deja/g++.other/lookup8.C
-3925524217b ./gcc/testsuite/g++.old-deja/g++.other/lookup9.C
-2763882892b ./gcc/testsuite/g++.old-deja/g++.other/loop1.C
-3525634979b ./gcc/testsuite/g++.old-deja/g++.other/loop2.C
-3124866775b ./gcc/testsuite/g++.old-deja/g++.other/main1.C
-3887765310b ./gcc/testsuite/g++.old-deja/g++.other/main2.C
-1745830473b ./gcc/testsuite/g++.old-deja/g++.other/mangle10.C
-2766673663b ./gcc/testsuite/g++.old-deja/g++.other/mangle2.C
- 199984455b ./gcc/testsuite/g++.old-deja/g++.other/mangle3.C
-1065924618b ./gcc/testsuite/g++.old-deja/g++.other/mutable1.C
- 828612405b ./gcc/testsuite/g++.old-deja/g++.other/nested1.C
-4217851482b ./gcc/testsuite/g++.old-deja/g++.other/nested2.C
-2800890661b ./gcc/testsuite/g++.old-deja/g++.other/nested3.C
-3749047676b ./gcc/testsuite/g++.old-deja/g++.other/nested4.C
-2899415960b ./gcc/testsuite/g++.old-deja/g++.other/new2.C
-1176720819b ./gcc/testsuite/g++.old-deja/g++.other/new3.C
-2825689270b ./gcc/testsuite/g++.old-deja/g++.other/new4.C
- 850194097b ./gcc/testsuite/g++.old-deja/g++.other/new5.C
-2266969204b ./gcc/testsuite/g++.old-deja/g++.other/new6.C
-2661895613b ./gcc/testsuite/g++.old-deja/g++.other/new7.C
-2658114065b ./gcc/testsuite/g++.old-deja/g++.other/new.C
-4142273200b ./gcc/testsuite/g++.old-deja/g++.other/null1.C
-2086727759b ./gcc/testsuite/g++.old-deja/g++.other/null2.C
-2676296478b ./gcc/testsuite/g++.old-deja/g++.other/null3.C
- 952036012b ./gcc/testsuite/g++.old-deja/g++.other/op1.C
-1061118185b ./gcc/testsuite/g++.old-deja/g++.other/op2.C
-1297089819b ./gcc/testsuite/g++.old-deja/g++.other/op3.C
-2885764662b ./gcc/testsuite/g++.old-deja/g++.other/optimize1.C
-2096609897b ./gcc/testsuite/g++.old-deja/g++.other/optimize2.C
- 551298218b ./gcc/testsuite/g++.old-deja/g++.other/optimize3.C
-3940439065b ./gcc/testsuite/g++.old-deja/g++.other/optimize4.C
-3254521143b ./gcc/testsuite/g++.old-deja/g++.other/overcnv1.C
- 96458692b ./gcc/testsuite/g++.old-deja/g++.other/overcnv2.C
-2127838940b ./gcc/testsuite/g++.old-deja/g++.other/overload10.C
-3726065244b ./gcc/testsuite/g++.old-deja/g++.other/overload11.C
- 759039694b ./gcc/testsuite/g++.old-deja/g++.other/overload12.C
-3493214783b ./gcc/testsuite/g++.old-deja/g++.other/overload13.C
-2296515759b ./gcc/testsuite/g++.old-deja/g++.other/overload14.C
-2161968240b ./gcc/testsuite/g++.old-deja/g++.other/overload1.C
-1905644607b ./gcc/testsuite/g++.old-deja/g++.other/overload2.C
-3260262987b ./gcc/testsuite/g++.old-deja/g++.other/overload3.C
-2754535673b ./gcc/testsuite/g++.old-deja/g++.other/overload4.C
-2606215556b ./gcc/testsuite/g++.old-deja/g++.other/overload5.C
-3443457888b ./gcc/testsuite/g++.old-deja/g++.other/overload6.C
-2985034108b ./gcc/testsuite/g++.old-deja/g++.other/overload7.C
- 898570990b ./gcc/testsuite/g++.old-deja/g++.other/overload8.C
-4060052726b ./gcc/testsuite/g++.old-deja/g++.other/overload9.C
-1262277324b ./gcc/testsuite/g++.old-deja/g++.other/override1.C
-1380865006b ./gcc/testsuite/g++.old-deja/g++.other/override2.C
-1890760625b ./gcc/testsuite/g++.old-deja/g++.other/parse1.C
-1658949221b ./gcc/testsuite/g++.old-deja/g++.other/parse2.C
-3458348700b ./gcc/testsuite/g++.old-deja/g++.other/perf1.C
-2952431682b ./gcc/testsuite/g++.old-deja/g++.other/pmf1.C
-1231841331b ./gcc/testsuite/g++.old-deja/g++.other/pmf2.C
- 412065014b ./gcc/testsuite/g++.old-deja/g++.other/pmf3.C
-1714528435b ./gcc/testsuite/g++.old-deja/g++.other/pmf4.C
-3161683432b ./gcc/testsuite/g++.old-deja/g++.other/pmf5.C
-2300982957b ./gcc/testsuite/g++.old-deja/g++.other/pmf6.C
-2326771429b ./gcc/testsuite/g++.old-deja/g++.other/pmf7.C
-1021148727b ./gcc/testsuite/g++.old-deja/g++.other/pod1.C
-3266716729b ./gcc/testsuite/g++.old-deja/g++.other/printf1.C
-1700199637b ./gcc/testsuite/g++.old-deja/g++.other/ptrmem10.C
-2987181013b ./gcc/testsuite/g++.old-deja/g++.other/ptrmem1.C
-1412545442b ./gcc/testsuite/g++.old-deja/g++.other/ptrmem2.C
- 104810161b ./gcc/testsuite/g++.old-deja/g++.other/ptrmem3.C
- 516033591b ./gcc/testsuite/g++.old-deja/g++.other/ptrmem4.C
-3693600549b ./gcc/testsuite/g++.old-deja/g++.other/ptrmem5.C
- 725330086b ./gcc/testsuite/g++.old-deja/g++.other/ptrmem6.C
- 308552023b ./gcc/testsuite/g++.old-deja/g++.other/ptrmem7.C
-3160378056b ./gcc/testsuite/g++.old-deja/g++.other/ptrmem8.C
- 963938985b ./gcc/testsuite/g++.old-deja/g++.other/ptrmem9.C
-3704604722b ./gcc/testsuite/g++.old-deja/g++.other/qual1.C
- 606859601b ./gcc/testsuite/g++.old-deja/g++.other/realloc.C
-2179956418b ./gcc/testsuite/g++.old-deja/g++.other/redecl1.C
- 245777050b ./gcc/testsuite/g++.old-deja/g++.other/redecl2.C
-1472350818b ./gcc/testsuite/g++.old-deja/g++.other/redecl3.C
- 660015452b ./gcc/testsuite/g++.old-deja/g++.other/redecl4.C
-3051484272b ./gcc/testsuite/g++.old-deja/g++.other/ref1.C
-3121199410b ./gcc/testsuite/g++.old-deja/g++.other/ref2.C
- 396683260b ./gcc/testsuite/g++.old-deja/g++.other/ref3.C
-1636029639b ./gcc/testsuite/g++.old-deja/g++.other/ref4.C
-3976024536b ./gcc/testsuite/g++.old-deja/g++.other/refinit1.C
- 690459633b ./gcc/testsuite/g++.old-deja/g++.other/refinit2.C
-1101055782b ./gcc/testsuite/g++.old-deja/g++.other/regstack.C
-1964301536b ./gcc/testsuite/g++.old-deja/g++.other/reload1.C
-1919174692b ./gcc/testsuite/g++.old-deja/g++.other/return1.C
-1404089609b ./gcc/testsuite/g++.old-deja/g++.other/rtti1.C
-1393937598b ./gcc/testsuite/g++.old-deja/g++.other/rtti2.C
- 69462645b ./gcc/testsuite/g++.old-deja/g++.other/rtti3.C
-1416727844b ./gcc/testsuite/g++.old-deja/g++.other/rtti4.C
- 768461128b ./gcc/testsuite/g++.old-deja/g++.other/rtti5.C
-3024046737b ./gcc/testsuite/g++.old-deja/g++.other/rttid2.C
-1185362893b ./gcc/testsuite/g++.old-deja/g++.other/rttid3.C
-3922125482b ./gcc/testsuite/g++.old-deja/g++.other/rttid4.C
-2715466455b ./gcc/testsuite/g++.old-deja/g++.other/sc1.C
-3818908597b ./gcc/testsuite/g++.old-deja/g++.other/scope1.C
-3543848546b ./gcc/testsuite/g++.old-deja/g++.other/shadow1.C
-3144403535b ./gcc/testsuite/g++.old-deja/g++.other/sibcall1.C
-1879839494b ./gcc/testsuite/g++.old-deja/g++.other/sibcall2.C
-2236161814b ./gcc/testsuite/g++.old-deja/g++.other/signed.C
-3978933585b ./gcc/testsuite/g++.old-deja/g++.other/singleton.C
-2035612399b ./gcc/testsuite/g++.old-deja/g++.other/sizeof1.C
-3022356006b ./gcc/testsuite/g++.old-deja/g++.other/sizeof2.C
- 791384214b ./gcc/testsuite/g++.old-deja/g++.other/sizeof3.C
-3011566538b ./gcc/testsuite/g++.old-deja/g++.other/sizeof4.C
-2613402158b ./gcc/testsuite/g++.old-deja/g++.other/sizeof5.C
-3522079581b ./gcc/testsuite/g++.old-deja/g++.other/static10.C
-2480249422b ./gcc/testsuite/g++.old-deja/g++.other/static11.C
-1625548421b ./gcc/testsuite/g++.old-deja/g++.other/static12.C
-1054249965b ./gcc/testsuite/g++.old-deja/g++.other/static13.C
- 938771596b ./gcc/testsuite/g++.old-deja/g++.other/static14.C
-2968457282b ./gcc/testsuite/g++.old-deja/g++.other/static15.C
- 254220227b ./gcc/testsuite/g++.old-deja/g++.other/static16.C
- 730081105b ./gcc/testsuite/g++.old-deja/g++.other/static1.C
- 400806999b ./gcc/testsuite/g++.old-deja/g++.other/static20.C
-1208581965b ./gcc/testsuite/g++.old-deja/g++.other/static2.C
-1822341199b ./gcc/testsuite/g++.old-deja/g++.other/static3.C
-3669301779b ./gcc/testsuite/g++.old-deja/g++.other/static4.C
-4026472462b ./gcc/testsuite/g++.old-deja/g++.other/static5.C
-3148107112b ./gcc/testsuite/g++.old-deja/g++.other/static6.C
- 456365368b ./gcc/testsuite/g++.old-deja/g++.other/static7.C
-1409972884b ./gcc/testsuite/g++.old-deja/g++.other/static9.C
- 910948586b ./gcc/testsuite/g++.old-deja/g++.other/std1.C
- 574242123b ./gcc/testsuite/g++.old-deja/g++.other/stmtexpr1.C
- 198454248b ./gcc/testsuite/g++.old-deja/g++.other/stmtexpr2.C
-2323476072b ./gcc/testsuite/g++.old-deja/g++.other/store-expr1.C
- 106303641b ./gcc/testsuite/g++.old-deja/g++.other/store-expr2.C
-3308418318b ./gcc/testsuite/g++.old-deja/g++.other/string1.C
-3417212046b ./gcc/testsuite/g++.old-deja/g++.other/string2.C
- 262484701b ./gcc/testsuite/g++.old-deja/g++.other/struct1.C
-2810682616b ./gcc/testsuite/g++.old-deja/g++.other/syntax1.C
-1589137019b ./gcc/testsuite/g++.old-deja/g++.other/syntax2.C
-4037168828b ./gcc/testsuite/g++.old-deja/g++.other/syntax3.C
-1690127873b ./gcc/testsuite/g++.old-deja/g++.other/syntax4.C
-2359213061b ./gcc/testsuite/g++.old-deja/g++.other/syshdr1.C
-1230086448b ./gcc/testsuite/g++.old-deja/g++.other/temporary1.C
-2740237343b ./gcc/testsuite/g++.old-deja/g++.other/thunk1.C
-3664816265b ./gcc/testsuite/g++.old-deja/g++.other/type.C
- 216119427b ./gcc/testsuite/g++.old-deja/g++.other/typeck1.C
-1447088868b ./gcc/testsuite/g++.old-deja/g++.other/typedef1.C
-4156864811b ./gcc/testsuite/g++.old-deja/g++.other/typedef2.C
-1676790992b ./gcc/testsuite/g++.old-deja/g++.other/typedef3.C
-4214958782b ./gcc/testsuite/g++.old-deja/g++.other/typedef4.C
-1476338577b ./gcc/testsuite/g++.old-deja/g++.other/typedef5.C
- 453040140b ./gcc/testsuite/g++.old-deja/g++.other/typedef6.C
-3021107827b ./gcc/testsuite/g++.old-deja/g++.other/typedef7.C
- 330448653b ./gcc/testsuite/g++.old-deja/g++.other/typedef8.C
-2163665334b ./gcc/testsuite/g++.old-deja/g++.other/typeid1.C
-3380807260b ./gcc/testsuite/g++.old-deja/g++.other/typeinfo1.C
-2873064218b ./gcc/testsuite/g++.old-deja/g++.other/typename1.C
-2681453665b ./gcc/testsuite/g++.old-deja/g++.other/typename2.C
-2945224541b ./gcc/testsuite/g++.old-deja/g++.other/unchanging1.C
-2207249090b ./gcc/testsuite/g++.old-deja/g++.other/union1.C
-1220663165b ./gcc/testsuite/g++.old-deja/g++.other/union2.C
- 100032111b ./gcc/testsuite/g++.old-deja/g++.other/union3.C
-1663425333b ./gcc/testsuite/g++.old-deja/g++.other/union4.C
-2304228302b ./gcc/testsuite/g++.old-deja/g++.other/using1.C
-3235316199b ./gcc/testsuite/g++.old-deja/g++.other/using2.C
-2385066250b ./gcc/testsuite/g++.old-deja/g++.other/using3.C
-1787652459b ./gcc/testsuite/g++.old-deja/g++.other/using4.C
- 129150023b ./gcc/testsuite/g++.old-deja/g++.other/using5.C
-3873577868b ./gcc/testsuite/g++.old-deja/g++.other/using6.C
-1034385045b ./gcc/testsuite/g++.old-deja/g++.other/using7.C
-1471419785b ./gcc/testsuite/g++.old-deja/g++.other/using8.C
- 118467765b ./gcc/testsuite/g++.old-deja/g++.other/using9.C
-1336382176b ./gcc/testsuite/g++.old-deja/g++.other/vaarg1.C
- 942920287b ./gcc/testsuite/g++.old-deja/g++.other/vaarg2.C
-3319728754b ./gcc/testsuite/g++.old-deja/g++.other/vaarg3.C
- 280934185b ./gcc/testsuite/g++.old-deja/g++.other/vaarg4.C
-1098377423b ./gcc/testsuite/g++.old-deja/g++.other/vbase1.C
-3043342729b ./gcc/testsuite/g++.old-deja/g++.other/vbase2.C
-1361331299b ./gcc/testsuite/g++.old-deja/g++.other/vbase3.C
-2014677415b ./gcc/testsuite/g++.old-deja/g++.other/vbase4.C
- 891656248b ./gcc/testsuite/g++.old-deja/g++.other/vbase5.C
-1779651648b ./gcc/testsuite/g++.old-deja/g++.other/virtual10.C
-3755735707b ./gcc/testsuite/g++.old-deja/g++.other/virtual11.C
-1164439917b ./gcc/testsuite/g++.old-deja/g++.other/virtual1.C
-1816448166b ./gcc/testsuite/g++.old-deja/g++.other/virtual2.C
-3809279113b ./gcc/testsuite/g++.old-deja/g++.other/virtual3.C
-2374162758b ./gcc/testsuite/g++.old-deja/g++.other/virtual4.C
-1265814562b ./gcc/testsuite/g++.old-deja/g++.other/virtual5.C
-3686177712b ./gcc/testsuite/g++.old-deja/g++.other/virtual6.C
- 781437038b ./gcc/testsuite/g++.old-deja/g++.other/virtual7.C
-3679318968b ./gcc/testsuite/g++.old-deja/g++.other/virtual8.C
-3002440999b ./gcc/testsuite/g++.old-deja/g++.other/virtual9.C
-2176048809b ./gcc/testsuite/g++.old-deja/g++.other/volatile1.C
-1033683047b ./gcc/testsuite/g++.old-deja/g++.other/vtbl1.C
-2778875490b ./gcc/testsuite/g++.old-deja/g++.other/vtbl2.C
-1043998333b ./gcc/testsuite/g++.old-deja/g++.other/warn01.C
-2909972662b ./gcc/testsuite/g++.old-deja/g++.other/warn3.C
-4244338706b ./gcc/testsuite/g++.old-deja/g++.other/warn4.C
-2302390400b ./gcc/testsuite/g++.old-deja/g++.other/warn5.C
-2728478279b ./gcc/testsuite/g++.old-deja/g++.other/warn6.C
-3510625807b ./gcc/testsuite/g++.old-deja/g++.other/warn7.C
-2270221256b ./gcc/testsuite/g++.old-deja/g++.pt/alignof.C
- 584428283b ./gcc/testsuite/g++.old-deja/g++.pt/array1.C
-3156510334b ./gcc/testsuite/g++.old-deja/g++.pt/array2.C
-3295805088b ./gcc/testsuite/g++.old-deja/g++.pt/array3.C
- 999256262b ./gcc/testsuite/g++.old-deja/g++.pt/array4.C
-2973690302b ./gcc/testsuite/g++.old-deja/g++.pt/array5.C
-3458314759b ./gcc/testsuite/g++.old-deja/g++.pt/array6.C
-4134234496b ./gcc/testsuite/g++.old-deja/g++.pt/array7.C
-2426888442b ./gcc/testsuite/g++.old-deja/g++.pt/asm1.C
- 811778129b ./gcc/testsuite/g++.old-deja/g++.pt/asm2.C
-1767746723b ./gcc/testsuite/g++.old-deja/g++.pt/assign1.C
-1101270203b ./gcc/testsuite/g++.old-deja/g++.pt/auto_ptr.C
- 981522879b ./gcc/testsuite/g++.old-deja/g++.pt/bad-type.C
-1894536795b ./gcc/testsuite/g++.old-deja/g++.pt/builtin.C
- 388121289b ./gcc/testsuite/g++.old-deja/g++.pt/call1.C
-4181983549b ./gcc/testsuite/g++.old-deja/g++.pt/call2.C
- 308746068b ./gcc/testsuite/g++.old-deja/g++.pt/cast1.C
-2859433933b ./gcc/testsuite/g++.old-deja/g++.pt/cast2.C
-3941530280b ./gcc/testsuite/g++.old-deja/g++.pt/codegen1.C
- 450876115b ./gcc/testsuite/g++.old-deja/g++.pt/cond2.C
-1459818674b ./gcc/testsuite/g++.old-deja/g++.pt/cond3.C
-1767031896b ./gcc/testsuite/g++.old-deja/g++.pt/const1.C
- 333453858b ./gcc/testsuite/g++.old-deja/g++.pt/const2.C
- 910218975b ./gcc/testsuite/g++.old-deja/g++.pt/conv1.C
- 177622420b ./gcc/testsuite/g++.old-deja/g++.pt/conv2.C
-2497086818b ./gcc/testsuite/g++.old-deja/g++.pt/conv3.C
- 971692590b ./gcc/testsuite/g++.old-deja/g++.pt/copy1.C
-3867481536b ./gcc/testsuite/g++.old-deja/g++.pt/crash10.C
-4238033897b ./gcc/testsuite/g++.old-deja/g++.pt/crash11.C
-1342559330b ./gcc/testsuite/g++.old-deja/g++.pt/crash12.C
-2103079352b ./gcc/testsuite/g++.old-deja/g++.pt/crash13.C
-4259627326b ./gcc/testsuite/g++.old-deja/g++.pt/crash14.C
-1891414246b ./gcc/testsuite/g++.old-deja/g++.pt/crash15.C
-2454938413b ./gcc/testsuite/g++.old-deja/g++.pt/crash16.C
-3806215227b ./gcc/testsuite/g++.old-deja/g++.pt/crash17.C
-2468320011b ./gcc/testsuite/g++.old-deja/g++.pt/crash18.C
-2448971391b ./gcc/testsuite/g++.old-deja/g++.pt/crash19.C
- 552860807b ./gcc/testsuite/g++.old-deja/g++.pt/crash1.C
-3999403848b ./gcc/testsuite/g++.old-deja/g++.pt/crash20.C
-2626609357b ./gcc/testsuite/g++.old-deja/g++.pt/crash21.C
-2675166712b ./gcc/testsuite/g++.old-deja/g++.pt/crash22.C
-1909438119b ./gcc/testsuite/g++.old-deja/g++.pt/crash23.C
- 791202803b ./gcc/testsuite/g++.old-deja/g++.pt/crash24.C
-2555319659b ./gcc/testsuite/g++.old-deja/g++.pt/crash25.C
-1722865703b ./gcc/testsuite/g++.old-deja/g++.pt/crash26.C
-3949680625b ./gcc/testsuite/g++.old-deja/g++.pt/crash27.C
-1024790123b ./gcc/testsuite/g++.old-deja/g++.pt/crash28.C
- 467456086b ./gcc/testsuite/g++.old-deja/g++.pt/crash29.C
-2796245436b ./gcc/testsuite/g++.old-deja/g++.pt/crash2.C
-2162500140b ./gcc/testsuite/g++.old-deja/g++.pt/crash30.C
- 802398069b ./gcc/testsuite/g++.old-deja/g++.pt/crash31.C
-3747058208b ./gcc/testsuite/g++.old-deja/g++.pt/crash32.C
-3806692544b ./gcc/testsuite/g++.old-deja/g++.pt/crash33.C
-3104137488b ./gcc/testsuite/g++.old-deja/g++.pt/crash34.C
-3290437470b ./gcc/testsuite/g++.old-deja/g++.pt/crash35.C
-1106982300b ./gcc/testsuite/g++.old-deja/g++.pt/crash36.C
-3084210338b ./gcc/testsuite/g++.old-deja/g++.pt/crash37.C
- 54189209b ./gcc/testsuite/g++.old-deja/g++.pt/crash38.C
- 322608397b ./gcc/testsuite/g++.old-deja/g++.pt/crash39.C
-2974624163b ./gcc/testsuite/g++.old-deja/g++.pt/crash3.C
-3347789237b ./gcc/testsuite/g++.old-deja/g++.pt/crash40.C
- 447454995b ./gcc/testsuite/g++.old-deja/g++.pt/crash41.C
-4041430549b ./gcc/testsuite/g++.old-deja/g++.pt/crash42.C
- 559732808b ./gcc/testsuite/g++.old-deja/g++.pt/crash43.C
- 301286397b ./gcc/testsuite/g++.old-deja/g++.pt/crash44.C
-2378352861b ./gcc/testsuite/g++.old-deja/g++.pt/crash45.C
-1798056576b ./gcc/testsuite/g++.old-deja/g++.pt/crash46.C
-3755777163b ./gcc/testsuite/g++.old-deja/g++.pt/crash47.C
-3545711527b ./gcc/testsuite/g++.old-deja/g++.pt/crash48.C
- 248168869b ./gcc/testsuite/g++.old-deja/g++.pt/crash49.C
-2620241700b ./gcc/testsuite/g++.old-deja/g++.pt/crash4.C
- 803889593b ./gcc/testsuite/g++.old-deja/g++.pt/crash50.C
-3389049910b ./gcc/testsuite/g++.old-deja/g++.pt/crash51.C
-4194603956b ./gcc/testsuite/g++.old-deja/g++.pt/crash52.C
- 491092947b ./gcc/testsuite/g++.old-deja/g++.pt/crash53.C
-3642813625b ./gcc/testsuite/g++.old-deja/g++.pt/crash54.C
-1749331796b ./gcc/testsuite/g++.old-deja/g++.pt/crash55.C
-1219038376b ./gcc/testsuite/g++.old-deja/g++.pt/crash56.C
-2303343499b ./gcc/testsuite/g++.old-deja/g++.pt/crash57.C
-4236801680b ./gcc/testsuite/g++.old-deja/g++.pt/crash58.C
-2789225927b ./gcc/testsuite/g++.old-deja/g++.pt/crash59.C
-2444045960b ./gcc/testsuite/g++.old-deja/g++.pt/crash5.C
-1374908702b ./gcc/testsuite/g++.old-deja/g++.pt/crash60.C
-3795952345b ./gcc/testsuite/g++.old-deja/g++.pt/crash61.C
-1665773703b ./gcc/testsuite/g++.old-deja/g++.pt/crash62.C
-3223409625b ./gcc/testsuite/g++.old-deja/g++.pt/crash63.C
-3150696822b ./gcc/testsuite/g++.old-deja/g++.pt/crash64.C
-3278220743b ./gcc/testsuite/g++.old-deja/g++.pt/crash65.C
-2950875437b ./gcc/testsuite/g++.old-deja/g++.pt/crash66.C
-1588727602b ./gcc/testsuite/g++.old-deja/g++.pt/crash67.C
-2591611103b ./gcc/testsuite/g++.old-deja/g++.pt/crash68.C
-2304216659b ./gcc/testsuite/g++.old-deja/g++.pt/crash6.C
-3887562144b ./gcc/testsuite/g++.old-deja/g++.pt/crash7.C
- 423406852b ./gcc/testsuite/g++.old-deja/g++.pt/crash8.C
-2256920146b ./gcc/testsuite/g++.old-deja/g++.pt/crash9.C
-1984841620b ./gcc/testsuite/g++.old-deja/g++.pt/ctor1.C
-1009070264b ./gcc/testsuite/g++.old-deja/g++.pt/ctor2.C
- 542513642b ./gcc/testsuite/g++.old-deja/g++.pt/debug1.C
-4104205907b ./gcc/testsuite/g++.old-deja/g++.pt/decl1.C
-3657390003b ./gcc/testsuite/g++.old-deja/g++.pt/decl2.C
-1112077051b ./gcc/testsuite/g++.old-deja/g++.pt/decl3.C
-1579795236b ./gcc/testsuite/g++.old-deja/g++.pt/decl4.C
-3073530878b ./gcc/testsuite/g++.old-deja/g++.pt/deduct1.C
- 536984424b ./gcc/testsuite/g++.old-deja/g++.pt/deduct2.C
-1102733199b ./gcc/testsuite/g++.old-deja/g++.pt/deduct3.C
-1268727238b ./gcc/testsuite/g++.old-deja/g++.pt/deduct4.C
-2614275894b ./gcc/testsuite/g++.old-deja/g++.pt/deduct5.C
- 606334760b ./gcc/testsuite/g++.old-deja/g++.pt/deduct6.C
- 340374206b ./gcc/testsuite/g++.old-deja/g++.pt/deduct7.C
- 940625563b ./gcc/testsuite/g++.old-deja/g++.pt/defarg10.C
-3439579652b ./gcc/testsuite/g++.old-deja/g++.pt/defarg11.C
-3231347060b ./gcc/testsuite/g++.old-deja/g++.pt/defarg12.C
-3348379576b ./gcc/testsuite/g++.old-deja/g++.pt/defarg13.C
-1334739447b ./gcc/testsuite/g++.old-deja/g++.pt/defarg14.C
- 975389866b ./gcc/testsuite/g++.old-deja/g++.pt/defarg2.C
-1340096939b ./gcc/testsuite/g++.old-deja/g++.pt/defarg3.C
-1845545956b ./gcc/testsuite/g++.old-deja/g++.pt/defarg4.C
-1388872661b ./gcc/testsuite/g++.old-deja/g++.pt/defarg5.C
-3143369839b ./gcc/testsuite/g++.old-deja/g++.pt/defarg6.C
-3989235169b ./gcc/testsuite/g++.old-deja/g++.pt/defarg7.C
-1989729882b ./gcc/testsuite/g++.old-deja/g++.pt/defarg8.C
-3350438012b ./gcc/testsuite/g++.old-deja/g++.pt/defarg9.C
-2858847781b ./gcc/testsuite/g++.old-deja/g++.pt/defarg.C
-1222848640b ./gcc/testsuite/g++.old-deja/g++.pt/derived1.C
-4047438471b ./gcc/testsuite/g++.old-deja/g++.pt/derived2.C
-1684757501b ./gcc/testsuite/g++.old-deja/g++.pt/derived3.C
-3987198593b ./gcc/testsuite/g++.old-deja/g++.pt/dynarray.C
-2287973117b ./gcc/testsuite/g++.old-deja/g++.pt/ehspec1.C
-2070134968b ./gcc/testsuite/g++.old-deja/g++.pt/eichin01a.C
-3522936035b ./gcc/testsuite/g++.old-deja/g++.pt/eichin01b.C
- 104775079b ./gcc/testsuite/g++.old-deja/g++.pt/eichin01.C
-3830592816b ./gcc/testsuite/g++.old-deja/g++.pt/enum10.C
-3760628339b ./gcc/testsuite/g++.old-deja/g++.pt/enum11.C
- 822927832b ./gcc/testsuite/g++.old-deja/g++.pt/enum12.C
-2126276433b ./gcc/testsuite/g++.old-deja/g++.pt/enum13.C
-2694702519b ./gcc/testsuite/g++.old-deja/g++.pt/enum14.C
-1703000742b ./gcc/testsuite/g++.old-deja/g++.pt/enum2.C
-1069794596b ./gcc/testsuite/g++.old-deja/g++.pt/enum3.C
-3714179200b ./gcc/testsuite/g++.old-deja/g++.pt/enum4.C
- 559765682b ./gcc/testsuite/g++.old-deja/g++.pt/enum5.C
-3886420157b ./gcc/testsuite/g++.old-deja/g++.pt/enum6.C
-1918437107b ./gcc/testsuite/g++.old-deja/g++.pt/enum7.C
-1945876041b ./gcc/testsuite/g++.old-deja/g++.pt/enum8.C
-3328823063b ./gcc/testsuite/g++.old-deja/g++.pt/enum9.C
-1760960609b ./gcc/testsuite/g++.old-deja/g++.pt/enum.C
- 861304912b ./gcc/testsuite/g++.old-deja/g++.pt/error1.C
-2760448470b ./gcc/testsuite/g++.old-deja/g++.pt/error2.C
-1691206603b ./gcc/testsuite/g++.old-deja/g++.pt/error3.C
- 273875566b ./gcc/testsuite/g++.old-deja/g++.pt/explarg1.C
-3406944984b ./gcc/testsuite/g++.old-deja/g++.pt/explicit10.C
-1528071887b ./gcc/testsuite/g++.old-deja/g++.pt/explicit11.C
-3195577006b ./gcc/testsuite/g++.old-deja/g++.pt/explicit12.C
-1609026860b ./gcc/testsuite/g++.old-deja/g++.pt/explicit13.C
-1478766534b ./gcc/testsuite/g++.old-deja/g++.pt/explicit14.C
- 634945390b ./gcc/testsuite/g++.old-deja/g++.pt/explicit15.C
-2415831941b ./gcc/testsuite/g++.old-deja/g++.pt/explicit16.C
-3929356898b ./gcc/testsuite/g++.old-deja/g++.pt/explicit17.C
-2998496732b ./gcc/testsuite/g++.old-deja/g++.pt/explicit18.C
- 114780192b ./gcc/testsuite/g++.old-deja/g++.pt/explicit19.C
-2454708693b ./gcc/testsuite/g++.old-deja/g++.pt/explicit1.C
- 238030727b ./gcc/testsuite/g++.old-deja/g++.pt/explicit20.C
-2757073081b ./gcc/testsuite/g++.old-deja/g++.pt/explicit21.C
-1964200215b ./gcc/testsuite/g++.old-deja/g++.pt/explicit22.C
-2616456294b ./gcc/testsuite/g++.old-deja/g++.pt/explicit23.C
-4221103889b ./gcc/testsuite/g++.old-deja/g++.pt/explicit24.C
-2544081870b ./gcc/testsuite/g++.old-deja/g++.pt/explicit25.C
- 867916531b ./gcc/testsuite/g++.old-deja/g++.pt/explicit26.C
- 460921353b ./gcc/testsuite/g++.old-deja/g++.pt/explicit27.C
- 854667679b ./gcc/testsuite/g++.old-deja/g++.pt/explicit28.C
-4066092212b ./gcc/testsuite/g++.old-deja/g++.pt/explicit29.C
-3142420592b ./gcc/testsuite/g++.old-deja/g++.pt/explicit2.C
- 470577039b ./gcc/testsuite/g++.old-deja/g++.pt/explicit30.C
-1628118551b ./gcc/testsuite/g++.old-deja/g++.pt/explicit31.C
-2552821833b ./gcc/testsuite/g++.old-deja/g++.pt/explicit32.C
-3115682920b ./gcc/testsuite/g++.old-deja/g++.pt/explicit33.C
-2475621970b ./gcc/testsuite/g++.old-deja/g++.pt/explicit34.C
-3600466241b ./gcc/testsuite/g++.old-deja/g++.pt/explicit35.C
-1709333173b ./gcc/testsuite/g++.old-deja/g++.pt/explicit36.C
-4009959133b ./gcc/testsuite/g++.old-deja/g++.pt/explicit37.C
-3750063865b ./gcc/testsuite/g++.old-deja/g++.pt/explicit38.C
- 921580635b ./gcc/testsuite/g++.old-deja/g++.pt/explicit39.C
-4211740392b ./gcc/testsuite/g++.old-deja/g++.pt/explicit3.C
- 492617767b ./gcc/testsuite/g++.old-deja/g++.pt/explicit40.C
-3845938453b ./gcc/testsuite/g++.old-deja/g++.pt/explicit41.C
-1186034051b ./gcc/testsuite/g++.old-deja/g++.pt/explicit42.C
-3636286206b ./gcc/testsuite/g++.old-deja/g++.pt/explicit43.C
-4095060524b ./gcc/testsuite/g++.old-deja/g++.pt/explicit4.C
- 598873974b ./gcc/testsuite/g++.old-deja/g++.pt/explicit50.C
- 442258121b ./gcc/testsuite/g++.old-deja/g++.pt/explicit51.C
-2381854829b ./gcc/testsuite/g++.old-deja/g++.pt/explicit52.C
- 354479270b ./gcc/testsuite/g++.old-deja/g++.pt/explicit53.C
-4090145222b ./gcc/testsuite/g++.old-deja/g++.pt/explicit54.C
-2150096294b ./gcc/testsuite/g++.old-deja/g++.pt/explicit55.C
- 754785630b ./gcc/testsuite/g++.old-deja/g++.pt/explicit56.C
-2105743169b ./gcc/testsuite/g++.old-deja/g++.pt/explicit57.C
- 138392149b ./gcc/testsuite/g++.old-deja/g++.pt/explicit58.C
-3072912940b ./gcc/testsuite/g++.old-deja/g++.pt/explicit59.C
-2944430939b ./gcc/testsuite/g++.old-deja/g++.pt/explicit5.C
-1115714633b ./gcc/testsuite/g++.old-deja/g++.pt/explicit60.C
-3490613258b ./gcc/testsuite/g++.old-deja/g++.pt/explicit61.C
-2630908446b ./gcc/testsuite/g++.old-deja/g++.pt/explicit62.C
-2423833745b ./gcc/testsuite/g++.old-deja/g++.pt/explicit63.C
- 96263826b ./gcc/testsuite/g++.old-deja/g++.pt/explicit64.C
-4264028437b ./gcc/testsuite/g++.old-deja/g++.pt/explicit65.C
-3986519624b ./gcc/testsuite/g++.old-deja/g++.pt/explicit66.C
-2017968194b ./gcc/testsuite/g++.old-deja/g++.pt/explicit67.C
-2468743553b ./gcc/testsuite/g++.old-deja/g++.pt/explicit68.C
- 232590105b ./gcc/testsuite/g++.old-deja/g++.pt/explicit69.C
-1140210865b ./gcc/testsuite/g++.old-deja/g++.pt/explicit6.C
- 598155740b ./gcc/testsuite/g++.old-deja/g++.pt/explicit70.C
- 734055097b ./gcc/testsuite/g++.old-deja/g++.pt/explicit71.C
-3681260211b ./gcc/testsuite/g++.old-deja/g++.pt/explicit72.C
-2315525758b ./gcc/testsuite/g++.old-deja/g++.pt/explicit73.C
-2355766697b ./gcc/testsuite/g++.old-deja/g++.pt/explicit74.C
-3523359053b ./gcc/testsuite/g++.old-deja/g++.pt/explicit75.C
-1571173014b ./gcc/testsuite/g++.old-deja/g++.pt/explicit76.C
- 2721209b ./gcc/testsuite/g++.old-deja/g++.pt/explicit77.C
-2546202913b ./gcc/testsuite/g++.old-deja/g++.pt/explicit78.C
-2960594790b ./gcc/testsuite/g++.old-deja/g++.pt/explicit79.C
-3985776178b ./gcc/testsuite/g++.old-deja/g++.pt/explicit80.C
-1821121835b ./gcc/testsuite/g++.old-deja/g++.pt/explicit81.C
-3301548077b ./gcc/testsuite/g++.old-deja/g++.pt/explicit82.C
-1885670533b ./gcc/testsuite/g++.old-deja/g++.pt/explicit83.C
-1495453328b ./gcc/testsuite/g++.old-deja/g++.pt/explicit8.C
-3419948260b ./gcc/testsuite/g++.old-deja/g++.pt/explicit9.C
- 662598850b ./gcc/testsuite/g++.old-deja/g++.pt/export1.C
-1515995682b ./gcc/testsuite/g++.old-deja/g++.pt/expr1.C
- 706426504b ./gcc/testsuite/g++.old-deja/g++.pt/expr2.C
- 36056637b ./gcc/testsuite/g++.old-deja/g++.pt/expr3.C
-3844712713b ./gcc/testsuite/g++.old-deja/g++.pt/expr5.C
-1457222697b ./gcc/testsuite/g++.old-deja/g++.pt/expr6.C
-1425159165b ./gcc/testsuite/g++.old-deja/g++.pt/expr7.C
- 161410515b ./gcc/testsuite/g++.old-deja/g++.pt/expr8.C
-1422905843b ./gcc/testsuite/g++.old-deja/g++.pt/extern1.C
-1069100821b ./gcc/testsuite/g++.old-deja/g++.pt/fntry1.C
-1287620498b ./gcc/testsuite/g++.old-deja/g++.pt/friend10.C
-1165640191b ./gcc/testsuite/g++.old-deja/g++.pt/friend11.C
-3100262252b ./gcc/testsuite/g++.old-deja/g++.pt/friend12.C
- 882221231b ./gcc/testsuite/g++.old-deja/g++.pt/friend13.C
-3966448375b ./gcc/testsuite/g++.old-deja/g++.pt/friend14.C
-1962167149b ./gcc/testsuite/g++.old-deja/g++.pt/friend15.C
- 869822534b ./gcc/testsuite/g++.old-deja/g++.pt/friend16.C
-4066339061b ./gcc/testsuite/g++.old-deja/g++.pt/friend17.C
-3286295955b ./gcc/testsuite/g++.old-deja/g++.pt/friend18.C
-4017972632b ./gcc/testsuite/g++.old-deja/g++.pt/friend1.C
-2120784153b ./gcc/testsuite/g++.old-deja/g++.pt/friend20.C
- 717575958b ./gcc/testsuite/g++.old-deja/g++.pt/friend21.C
- 416829101b ./gcc/testsuite/g++.old-deja/g++.pt/friend22.C
-4030871100b ./gcc/testsuite/g++.old-deja/g++.pt/friend23.C
-1465973595b ./gcc/testsuite/g++.old-deja/g++.pt/friend24.C
- 150282741b ./gcc/testsuite/g++.old-deja/g++.pt/friend25.C
- 680173221b ./gcc/testsuite/g++.old-deja/g++.pt/friend26.C
-3274309194b ./gcc/testsuite/g++.old-deja/g++.pt/friend27.C
-1284470831b ./gcc/testsuite/g++.old-deja/g++.pt/friend28.C
-3161078590b ./gcc/testsuite/g++.old-deja/g++.pt/friend29.C
-3765298518b ./gcc/testsuite/g++.old-deja/g++.pt/friend30.C
-2264286486b ./gcc/testsuite/g++.old-deja/g++.pt/friend31.C
-2346260162b ./gcc/testsuite/g++.old-deja/g++.pt/friend32.C
-3241993055b ./gcc/testsuite/g++.old-deja/g++.pt/friend33.C
- 981288052b ./gcc/testsuite/g++.old-deja/g++.pt/friend34.C
- 187381459b ./gcc/testsuite/g++.old-deja/g++.pt/friend35.C
-2755639815b ./gcc/testsuite/g++.old-deja/g++.pt/friend36.C
-3754374175b ./gcc/testsuite/g++.old-deja/g++.pt/friend37.C
-3281471741b ./gcc/testsuite/g++.old-deja/g++.pt/friend38.C
- 317013285b ./gcc/testsuite/g++.old-deja/g++.pt/friend39.C
-2144037049b ./gcc/testsuite/g++.old-deja/g++.pt/friend3.C
- 182204021b ./gcc/testsuite/g++.old-deja/g++.pt/friend40.C
- 345702925b ./gcc/testsuite/g++.old-deja/g++.pt/friend41.C
-2157387021b ./gcc/testsuite/g++.old-deja/g++.pt/friend42.C
-3945320523b ./gcc/testsuite/g++.old-deja/g++.pt/friend43.C
- 498165617b ./gcc/testsuite/g++.old-deja/g++.pt/friend44.C
-3282109340b ./gcc/testsuite/g++.old-deja/g++.pt/friend45.C
-1046954842b ./gcc/testsuite/g++.old-deja/g++.pt/friend46.C
-4284536748b ./gcc/testsuite/g++.old-deja/g++.pt/friend47.C
-1943593208b ./gcc/testsuite/g++.old-deja/g++.pt/friend48.C
-2460768791b ./gcc/testsuite/g++.old-deja/g++.pt/friend49.C
-1839433882b ./gcc/testsuite/g++.old-deja/g++.pt/friend4.C
- 704986118b ./gcc/testsuite/g++.old-deja/g++.pt/friend5.C
-1522663160b ./gcc/testsuite/g++.old-deja/g++.pt/friend6.C
-1156856345b ./gcc/testsuite/g++.old-deja/g++.pt/friend7.C
- 20638590b ./gcc/testsuite/g++.old-deja/g++.pt/friend8.C
-3274600020b ./gcc/testsuite/g++.old-deja/g++.pt/friend9.C
-2373771284b ./gcc/testsuite/g++.old-deja/g++.pt/goto2.C
-3949127698b ./gcc/testsuite/g++.old-deja/g++.pt/goto.C
-1470520127b ./gcc/testsuite/g++.old-deja/g++.pt/incomplete1.C
-2675563938b ./gcc/testsuite/g++.old-deja/g++.pt/infinite1.C
-2141463905b ./gcc/testsuite/g++.old-deja/g++.pt/inherit1.C
-3554938548b ./gcc/testsuite/g++.old-deja/g++.pt/inherit2.C
- 393856408b ./gcc/testsuite/g++.old-deja/g++.pt/inject1.C
-1666451974b ./gcc/testsuite/g++.old-deja/g++.pt/inject2.C
- 775587620b ./gcc/testsuite/g++.old-deja/g++.pt/inline1.C
-4143100873b ./gcc/testsuite/g++.old-deja/g++.pt/inline2.C
- 567219073b ./gcc/testsuite/g++.old-deja/g++.pt/instantiate10.C
- 658392970b ./gcc/testsuite/g++.old-deja/g++.pt/instantiate11.C
- 934055119b ./gcc/testsuite/g++.old-deja/g++.pt/instantiate12.C
-3666215677b ./gcc/testsuite/g++.old-deja/g++.pt/instantiate13.C
-2167918209b ./gcc/testsuite/g++.old-deja/g++.pt/instantiate1.C
-2568581654b ./gcc/testsuite/g++.old-deja/g++.pt/instantiate2.C
-3989382998b ./gcc/testsuite/g++.old-deja/g++.pt/instantiate3.C
-3598960158b ./gcc/testsuite/g++.old-deja/g++.pt/instantiate4.C
-1010945845b ./gcc/testsuite/g++.old-deja/g++.pt/instantiate5.C
-2967623396b ./gcc/testsuite/g++.old-deja/g++.pt/instantiate5.cc
-1230172281b ./gcc/testsuite/g++.old-deja/g++.pt/instantiate5-main.cc
-4042450939b ./gcc/testsuite/g++.old-deja/g++.pt/instantiate6.C
-2137469555b ./gcc/testsuite/g++.old-deja/g++.pt/instantiate7.C
-2823240025b ./gcc/testsuite/g++.old-deja/g++.pt/instantiate8.C
- 117766506b ./gcc/testsuite/g++.old-deja/g++.pt/instantiate9.C
- 5436695b ./gcc/testsuite/g++.old-deja/g++.pt/koenig1.C
-1578795652b ./gcc/testsuite/g++.old-deja/g++.pt/label1.C
-1296029425b ./gcc/testsuite/g++.old-deja/g++.pt/link1.C
-1686018921b ./gcc/testsuite/g++.old-deja/g++.pt/local1.C
-2821591107b ./gcc/testsuite/g++.old-deja/g++.pt/local2.C
-1599230460b ./gcc/testsuite/g++.old-deja/g++.pt/local3.C
-1561776108b ./gcc/testsuite/g++.old-deja/g++.pt/local4.C
-2354833145b ./gcc/testsuite/g++.old-deja/g++.pt/local5.C
-3330482290b ./gcc/testsuite/g++.old-deja/g++.pt/local6.C
-3591262298b ./gcc/testsuite/g++.old-deja/g++.pt/local7.C
-1618400382b ./gcc/testsuite/g++.old-deja/g++.pt/lookup10.C
-2198910890b ./gcc/testsuite/g++.old-deja/g++.pt/lookup1.C
-2928431480b ./gcc/testsuite/g++.old-deja/g++.pt/lookup2.C
-2326742548b ./gcc/testsuite/g++.old-deja/g++.pt/lookup3.C
- 58581562b ./gcc/testsuite/g++.old-deja/g++.pt/lookup4.C
- 387721159b ./gcc/testsuite/g++.old-deja/g++.pt/lookup5.C
- 563271996b ./gcc/testsuite/g++.old-deja/g++.pt/lookup6.C
- 592865389b ./gcc/testsuite/g++.old-deja/g++.pt/lookup7.C
-1893966844b ./gcc/testsuite/g++.old-deja/g++.pt/lookup8.C
- 615227368b ./gcc/testsuite/g++.old-deja/g++.pt/lookup9.C
-1535122111b ./gcc/testsuite/g++.old-deja/g++.pt/m1.C
-2943051241b ./gcc/testsuite/g++.old-deja/g++.pt/m2.C
-1702473953b ./gcc/testsuite/g++.old-deja/g++.pt/m3.C
-3549235723b ./gcc/testsuite/g++.old-deja/g++.pt/m4.C
-2705233403b ./gcc/testsuite/g++.old-deja/g++.pt/m5.C
-2792466666b ./gcc/testsuite/g++.old-deja/g++.pt/m6.C
-2010181237b ./gcc/testsuite/g++.old-deja/g++.pt/m7.C
- 181270594b ./gcc/testsuite/g++.old-deja/g++.pt/m8.C
- 454140677b ./gcc/testsuite/g++.old-deja/g++.pt/m9a.C
- 860513545b ./gcc/testsuite/g++.old-deja/g++.pt/m9.C
-4199939364b ./gcc/testsuite/g++.old-deja/g++.pt/mangle1.C
- 735244068b ./gcc/testsuite/g++.old-deja/g++.pt/mangle2.C
-3280522955b ./gcc/testsuite/g++.old-deja/g++.pt/memclass10.C
-3429032104b ./gcc/testsuite/g++.old-deja/g++.pt/memclass11.C
-2793864882b ./gcc/testsuite/g++.old-deja/g++.pt/memclass12.C
-3266247624b ./gcc/testsuite/g++.old-deja/g++.pt/memclass13.C
-2006537494b ./gcc/testsuite/g++.old-deja/g++.pt/memclass14.C
-1920450770b ./gcc/testsuite/g++.old-deja/g++.pt/memclass15.C
-2290855130b ./gcc/testsuite/g++.old-deja/g++.pt/memclass16.C
-1861858814b ./gcc/testsuite/g++.old-deja/g++.pt/memclass17.C
-2612688561b ./gcc/testsuite/g++.old-deja/g++.pt/memclass18.C
-2502022996b ./gcc/testsuite/g++.old-deja/g++.pt/memclass19.C
-2993433239b ./gcc/testsuite/g++.old-deja/g++.pt/memclass1.C
- 93385345b ./gcc/testsuite/g++.old-deja/g++.pt/memclass20.C
-3252022289b ./gcc/testsuite/g++.old-deja/g++.pt/memclass21.C
-2537802637b ./gcc/testsuite/g++.old-deja/g++.pt/memclass2.C
-1014036937b ./gcc/testsuite/g++.old-deja/g++.pt/memclass3.C
-1431379137b ./gcc/testsuite/g++.old-deja/g++.pt/memclass4.C
-1075497415b ./gcc/testsuite/g++.old-deja/g++.pt/memclass5.C
- 780898681b ./gcc/testsuite/g++.old-deja/g++.pt/memclass6.C
-2127284390b ./gcc/testsuite/g++.old-deja/g++.pt/memclass7.C
-1195266757b ./gcc/testsuite/g++.old-deja/g++.pt/memclass8.C
-1810826153b ./gcc/testsuite/g++.old-deja/g++.pt/memclass9.C
-4058618179b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C
-2904180820b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp10.C
-2282254491b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp11.C
-1976328805b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp12.C
-1239088058b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp13.C
-2818816059b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp14.C
-1824536999b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp15.C
-3076640023b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp16.C
-1544280209b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp17.C
-2050660023b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp18.C
-2678511608b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp19.C
-1224975036b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp1.C
-1334964388b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp20.C
- 459239676b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp23.C
-2533288060b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp24.C
-2238876159b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp25.C
-2468624091b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp26.C
-2533288060b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp27.C
-1005751857b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp28.C
- 199305334b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp29.C
-1871764459b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp2.C
-1670170059b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp30.C
-2289485955b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp31.C
- 27098458b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp32.C
-1498388116b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp33.C
-3522955638b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp34.C
-1393717263b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp35.C
-2010910590b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp36.C
- 458681200b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp37.C
- 20442451b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp39.C
-1631129726b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp3.C
-3100522038b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp40.C
- 938647569b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp41.C
-1217004521b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp42.C
-4167810576b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp43.C
-2506084508b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp44.C
-3506472111b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp45.C
- 86095672b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp46.C
- 87150136b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp47.C
-2797911396b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp48.C
-3001846639b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp49.C
-1762838619b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp4.C
- 899239607b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp52.C
-1512186785b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp53.C
- 734020637b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp55.C
-1075898943b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp56.C
-1044391503b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp58.C
-2900869252b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp59.C
-1033026004b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp5.C
-1257470032b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp60.C
- 761783865b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp61.C
-1690671324b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp62.C
-3766969739b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp63.C
-3356487504b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp64.C
-2737484332b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp65.C
- 733179226b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp66.C
-1942260890b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp67.C
-3915762673b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp68.C
-3344118567b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp69.C
-3026038856b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp6.C
-2509660495b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp70.C
- 104374337b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp71.C
-1613408023b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp72.C
-2074863692b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp73.C
-1429396687b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp74.C
-4003812396b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp75.C
-3689181845b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp76.C
-1218672257b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp77.C
-3371462880b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp78.C
-4186537912b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp79.C
-1316217894b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp7.C
-4184361784b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp80.C
-2741487455b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp81.C
- 669240911b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp82.C
-1536069827b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp83.C
-2073825342b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp84.C
-2859456911b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp85.C
- 159076361b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp86.C
- 782720859b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp87.C
-3073633390b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp88.C
-3067920578b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp89.C
-2098916421b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp8.C
- 329208420b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp90.C
- 357390701b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp91.C
- 440251046b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp92.C
-1071465145b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp93.C
- 81542039b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp94.C
-3580334873b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp95.C
-4071744070b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp96.C
- 876225447b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp97.C
-3251366836b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp98.C
- 588126708b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp99.C
-1544636937b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp9.C
-4151922476b ./gcc/testsuite/g++.old-deja/g++.pt/mi1.C
-3159596706b ./gcc/testsuite/g++.old-deja/g++.pt/nested1.C
- 752451121b ./gcc/testsuite/g++.old-deja/g++.pt/nested2.C
-3261242986b ./gcc/testsuite/g++.old-deja/g++.pt/niklas01a.C
-3338878252b ./gcc/testsuite/g++.old-deja/g++.pt/niklas01b.C
- 206427704b ./gcc/testsuite/g++.old-deja/g++.pt/niklas01.C
-3121397720b ./gcc/testsuite/g++.old-deja/g++.pt/niklas02.C
- 18744569b ./gcc/testsuite/g++.old-deja/g++.pt/niklas03.C
-4224711202b ./gcc/testsuite/g++.old-deja/g++.pt/nontype1.C
-2346801762b ./gcc/testsuite/g++.old-deja/g++.pt/nontype2.C
-2564631917b ./gcc/testsuite/g++.old-deja/g++.pt/nontype3.C
-4032766447b ./gcc/testsuite/g++.old-deja/g++.pt/nontype4.C
-1767300701b ./gcc/testsuite/g++.old-deja/g++.pt/nontype5.C
-2791152240b ./gcc/testsuite/g++.old-deja/g++.pt/nttp1.C
- 247002708b ./gcc/testsuite/g++.old-deja/g++.pt/nttp2.C
-1278541513b ./gcc/testsuite/g++.old-deja/g++.pt/operator1.C
- 700666863b ./gcc/testsuite/g++.old-deja/g++.pt/overload10.C
- 106266692b ./gcc/testsuite/g++.old-deja/g++.pt/overload11.C
-2233076058b ./gcc/testsuite/g++.old-deja/g++.pt/overload12.C
- 567369625b ./gcc/testsuite/g++.old-deja/g++.pt/overload13.C
- 43242814b ./gcc/testsuite/g++.old-deja/g++.pt/overload14.C
- 775259676b ./gcc/testsuite/g++.old-deja/g++.pt/overload15.C
-2435336654b ./gcc/testsuite/g++.old-deja/g++.pt/overload1.C
-1331381682b ./gcc/testsuite/g++.old-deja/g++.pt/overload2.C
-2609432689b ./gcc/testsuite/g++.old-deja/g++.pt/overload3.C
- 685890975b ./gcc/testsuite/g++.old-deja/g++.pt/overload4.C
-3432676392b ./gcc/testsuite/g++.old-deja/g++.pt/overload5.C
- 484989603b ./gcc/testsuite/g++.old-deja/g++.pt/overload6.C
- 68571783b ./gcc/testsuite/g++.old-deja/g++.pt/overload7.C
- 394549939b ./gcc/testsuite/g++.old-deja/g++.pt/overload8.C
-3983313304b ./gcc/testsuite/g++.old-deja/g++.pt/overload9.C
-4178337882b ./gcc/testsuite/g++.old-deja/g++.pt/parms1.C
-2241839525b ./gcc/testsuite/g++.old-deja/g++.pt/parms2.C
-3349553882b ./gcc/testsuite/g++.old-deja/g++.pt/parms3.C
-4079323944b ./gcc/testsuite/g++.old-deja/g++.pt/parse2.C
-4264977580b ./gcc/testsuite/g++.old-deja/g++.pt/partial1.C
- 177073069b ./gcc/testsuite/g++.old-deja/g++.pt/partial2.C
- 97690336b ./gcc/testsuite/g++.old-deja/g++.pt/partial3.C
-1029425030b ./gcc/testsuite/g++.old-deja/g++.pt/partial4.C
-4209924429b ./gcc/testsuite/g++.old-deja/g++.pt/partial5.C
-4183203582b ./gcc/testsuite/g++.old-deja/g++.pt/poi1.C
-1609222984b ./gcc/testsuite/g++.old-deja/g++.pt/pointer1.C
-2621744921b ./gcc/testsuite/g++.old-deja/g++.pt/ptrmem10.C
- 667276243b ./gcc/testsuite/g++.old-deja/g++.pt/ptrmem1.C
-1628163413b ./gcc/testsuite/g++.old-deja/g++.pt/ptrmem2.C
-3615617559b ./gcc/testsuite/g++.old-deja/g++.pt/ptrmem3.C
- 886281225b ./gcc/testsuite/g++.old-deja/g++.pt/ptrmem4.C
- 716987062b ./gcc/testsuite/g++.old-deja/g++.pt/ptrmem5.C
- 929278172b ./gcc/testsuite/g++.old-deja/g++.pt/ptrmem6.C
-3758586102b ./gcc/testsuite/g++.old-deja/g++.pt/ptrmem7.C
-2054039204b ./gcc/testsuite/g++.old-deja/g++.pt/ptrmem8.C
-3543585318b ./gcc/testsuite/g++.old-deja/g++.pt/ptrmem9.C
-2282560315b ./gcc/testsuite/g++.old-deja/g++.pt/recursion2.C
-1176769163b ./gcc/testsuite/g++.old-deja/g++.pt/recursion.C
-2783268127b ./gcc/testsuite/g++.old-deja/g++.pt/redecl1.C
- 273604436b ./gcc/testsuite/g++.old-deja/g++.pt/redecl2.C
- 594557972b ./gcc/testsuite/g++.old-deja/g++.pt/ref1.C
-1583044362b ./gcc/testsuite/g++.old-deja/g++.pt/ref2.C
- 483138928b ./gcc/testsuite/g++.old-deja/g++.pt/ref3.C
-2911957174b ./gcc/testsuite/g++.old-deja/g++.pt/ref4.C
-2200057845b ./gcc/testsuite/g++.old-deja/g++.pt/repo1.C
-3164700330b ./gcc/testsuite/g++.old-deja/g++.pt/repo2.C
-2290650834b ./gcc/testsuite/g++.old-deja/g++.pt/repo3.C
-1650768861b ./gcc/testsuite/g++.old-deja/g++.pt/repo4.C
- 842128020b ./gcc/testsuite/g++.old-deja/g++.pt/scope1.C
- 696905520b ./gcc/testsuite/g++.old-deja/g++.pt/shadow1.C
-3988722815b ./gcc/testsuite/g++.old-deja/g++.pt/shadow2.C
-3116942821b ./gcc/testsuite/g++.old-deja/g++.pt/sizeof2.C
-2876524265b ./gcc/testsuite/g++.old-deja/g++.pt/sizeof3.C
-4082900584b ./gcc/testsuite/g++.old-deja/g++.pt/sizeof.C
- 93654703b ./gcc/testsuite/g++.old-deja/g++.pt/spec10.C
-3527506444b ./gcc/testsuite/g++.old-deja/g++.pt/spec11.C
-3538641668b ./gcc/testsuite/g++.old-deja/g++.pt/spec12.C
-2966126822b ./gcc/testsuite/g++.old-deja/g++.pt/spec13.C
- 362548758b ./gcc/testsuite/g++.old-deja/g++.pt/spec14.C
- 395453400b ./gcc/testsuite/g++.old-deja/g++.pt/spec15.C
- 299326321b ./gcc/testsuite/g++.old-deja/g++.pt/spec16.C
- 411261988b ./gcc/testsuite/g++.old-deja/g++.pt/spec17.C
-4048825100b ./gcc/testsuite/g++.old-deja/g++.pt/spec18.C
-3497658316b ./gcc/testsuite/g++.old-deja/g++.pt/spec19.C
- 991382684b ./gcc/testsuite/g++.old-deja/g++.pt/spec1.C
-2791297069b ./gcc/testsuite/g++.old-deja/g++.pt/spec20.C
-3113620134b ./gcc/testsuite/g++.old-deja/g++.pt/spec21.C
-2983405950b ./gcc/testsuite/g++.old-deja/g++.pt/spec22.C
-1730105837b ./gcc/testsuite/g++.old-deja/g++.pt/spec23.C
-2952337617b ./gcc/testsuite/g++.old-deja/g++.pt/spec24.C
- 843333207b ./gcc/testsuite/g++.old-deja/g++.pt/spec25.C
-2342185227b ./gcc/testsuite/g++.old-deja/g++.pt/spec26.C
- 163389509b ./gcc/testsuite/g++.old-deja/g++.pt/spec27.C
-1709855616b ./gcc/testsuite/g++.old-deja/g++.pt/spec28.C
- 288771490b ./gcc/testsuite/g++.old-deja/g++.pt/spec29.C
-3880560938b ./gcc/testsuite/g++.old-deja/g++.pt/spec2.C
-3450541938b ./gcc/testsuite/g++.old-deja/g++.pt/spec30.C
-3771549807b ./gcc/testsuite/g++.old-deja/g++.pt/spec31.C
- 811045881b ./gcc/testsuite/g++.old-deja/g++.pt/spec32.C
- 754213781b ./gcc/testsuite/g++.old-deja/g++.pt/spec33.C
-3893454953b ./gcc/testsuite/g++.old-deja/g++.pt/spec34.C
- 157308695b ./gcc/testsuite/g++.old-deja/g++.pt/spec35.C
- 7630099b ./gcc/testsuite/g++.old-deja/g++.pt/spec36.C
-2893602715b ./gcc/testsuite/g++.old-deja/g++.pt/spec37.C
-1089795364b ./gcc/testsuite/g++.old-deja/g++.pt/spec38.C
-3573286877b ./gcc/testsuite/g++.old-deja/g++.pt/spec39.C
-2986435997b ./gcc/testsuite/g++.old-deja/g++.pt/spec3.C
- 263033306b ./gcc/testsuite/g++.old-deja/g++.pt/spec40.C
-4257539281b ./gcc/testsuite/g++.old-deja/g++.pt/spec41.C
-1203682774b ./gcc/testsuite/g++.old-deja/g++.pt/spec4.C
- 472020156b ./gcc/testsuite/g++.old-deja/g++.pt/spec5.C
-2997305150b ./gcc/testsuite/g++.old-deja/g++.pt/spec6.C
-4161522669b ./gcc/testsuite/g++.old-deja/g++.pt/spec7.C
-2956825769b ./gcc/testsuite/g++.old-deja/g++.pt/spec8.C
- 689217773b ./gcc/testsuite/g++.old-deja/g++.pt/spec9.C
-3499532117b ./gcc/testsuite/g++.old-deja/g++.pt/static10.C
-3672678643b ./gcc/testsuite/g++.old-deja/g++.pt/static11.C
-2178379561b ./gcc/testsuite/g++.old-deja/g++.pt/static1.C
-3095826275b ./gcc/testsuite/g++.old-deja/g++.pt/static2.C
-3043759182b ./gcc/testsuite/g++.old-deja/g++.pt/static3.C
-4121342217b ./gcc/testsuite/g++.old-deja/g++.pt/static4.C
- 637809399b ./gcc/testsuite/g++.old-deja/g++.pt/static5.C
-3443961587b ./gcc/testsuite/g++.old-deja/g++.pt/static6.C
-1808791646b ./gcc/testsuite/g++.old-deja/g++.pt/static7.C
-3987560353b ./gcc/testsuite/g++.old-deja/g++.pt/static8.C
-1860907942b ./gcc/testsuite/g++.old-deja/g++.pt/static9.C
-1680154606b ./gcc/testsuite/g++.old-deja/g++.pt/static_cast.C
-3432829463b ./gcc/testsuite/g++.old-deja/g++.pt/stmtexpr2.C
-2053761696b ./gcc/testsuite/g++.old-deja/g++.pt/stmtexpr.C
-2038345660b ./gcc/testsuite/g++.old-deja/g++.pt/switch1.C
-1321551276b ./gcc/testsuite/g++.old-deja/g++.pt/syntax1.C
- 769950811b ./gcc/testsuite/g++.old-deja/g++.pt/syntax2.C
- 388665305b ./gcc/testsuite/g++.old-deja/g++.pt/t00.C
-3036776145b ./gcc/testsuite/g++.old-deja/g++.pt/t01.C
-3769756941b ./gcc/testsuite/g++.old-deja/g++.pt/t03.C
- 68198193b ./gcc/testsuite/g++.old-deja/g++.pt/t04.C
-1347039071b ./gcc/testsuite/g++.old-deja/g++.pt/t05.C
-1025268501b ./gcc/testsuite/g++.old-deja/g++.pt/t06.C
-3864403887b ./gcc/testsuite/g++.old-deja/g++.pt/t07.C
-1220980648b ./gcc/testsuite/g++.old-deja/g++.pt/t08.C
- 54752251b ./gcc/testsuite/g++.old-deja/g++.pt/t09.C
-3939433080b ./gcc/testsuite/g++.old-deja/g++.pt/t10.C
-1989751964b ./gcc/testsuite/g++.old-deja/g++.pt/t11a.C
-3632072790b ./gcc/testsuite/g++.old-deja/g++.pt/t11.C
-2049763895b ./gcc/testsuite/g++.old-deja/g++.pt/t12a.C
-2249141950b ./gcc/testsuite/g++.old-deja/g++.pt/t12.C
-1228232084b ./gcc/testsuite/g++.old-deja/g++.pt/t13.C
-2705379238b ./gcc/testsuite/g++.old-deja/g++.pt/t14a.C
-2100897741b ./gcc/testsuite/g++.old-deja/g++.pt/t14.C
-1989199194b ./gcc/testsuite/g++.old-deja/g++.pt/t16.C
-3606509706b ./gcc/testsuite/g++.old-deja/g++.pt/t18.C
- 141625773b ./gcc/testsuite/g++.old-deja/g++.pt/t20.C
- 72255906b ./gcc/testsuite/g++.old-deja/g++.pt/t21.C
- 645040509b ./gcc/testsuite/g++.old-deja/g++.pt/t22.C
- 703955297b ./gcc/testsuite/g++.old-deja/g++.pt/t23.C
-3664873650b ./gcc/testsuite/g++.old-deja/g++.pt/t24.C
-3167743377b ./gcc/testsuite/g++.old-deja/g++.pt/t25.C
-2171757696b ./gcc/testsuite/g++.old-deja/g++.pt/t26.C
-1551035452b ./gcc/testsuite/g++.old-deja/g++.pt/t27.C
-4184306234b ./gcc/testsuite/g++.old-deja/g++.pt/t28.C
-1147556452b ./gcc/testsuite/g++.old-deja/g++.pt/t29.C
-3402602239b ./gcc/testsuite/g++.old-deja/g++.pt/t30.C
-1087482084b ./gcc/testsuite/g++.old-deja/g++.pt/t31.C
-1551618603b ./gcc/testsuite/g++.old-deja/g++.pt/t32a.C
-2623408289b ./gcc/testsuite/g++.old-deja/g++.pt/t32.C
- 163082280b ./gcc/testsuite/g++.old-deja/g++.pt/t34a.C
-4017416236b ./gcc/testsuite/g++.old-deja/g++.pt/t34.C
-3947322975b ./gcc/testsuite/g++.old-deja/g++.pt/t35a.C
-2585097382b ./gcc/testsuite/g++.old-deja/g++.pt/t35.C
-1516584548b ./gcc/testsuite/g++.old-deja/g++.pt/t36.C
- 420324441b ./gcc/testsuite/g++.old-deja/g++.pt/t37a.C
-1426987064b ./gcc/testsuite/g++.old-deja/g++.pt/t37.C
-2340198171b ./gcc/testsuite/g++.old-deja/g++.pt/t38.C
-3309470860b ./gcc/testsuite/g++.old-deja/g++.pt/t39.C
-1718444525b ./gcc/testsuite/g++.old-deja/g++.pt/t40.C
-3342686909b ./gcc/testsuite/g++.old-deja/g++.pt/t41.C
-3446795170b ./gcc/testsuite/g++.old-deja/g++.pt/t42.C
-2113862178b ./gcc/testsuite/g++.old-deja/g++.pt/test4.C
-2123290709b ./gcc/testsuite/g++.old-deja/g++.pt/test5.C
-1121503772b ./gcc/testsuite/g++.old-deja/g++.pt/tiemann1r.C
- 129425925b ./gcc/testsuite/g++.old-deja/g++.pt/tiemann2.C
-1767149933b ./gcc/testsuite/g++.old-deja/g++.pt/to2.C
- 611975575b ./gcc/testsuite/g++.old-deja/g++.pt/tt2.C
-1910189955b ./gcc/testsuite/g++.old-deja/g++.pt/tt.C
-2900382617b ./gcc/testsuite/g++.old-deja/g++.pt/ttp10.C
- 526371793b ./gcc/testsuite/g++.old-deja/g++.pt/ttp11.C
- 862146403b ./gcc/testsuite/g++.old-deja/g++.pt/ttp12.C
-1329933982b ./gcc/testsuite/g++.old-deja/g++.pt/ttp13.C
-3988780551b ./gcc/testsuite/g++.old-deja/g++.pt/ttp14.C
-3077999991b ./gcc/testsuite/g++.old-deja/g++.pt/ttp15.C
-2942251159b ./gcc/testsuite/g++.old-deja/g++.pt/ttp16.C
-2374108737b ./gcc/testsuite/g++.old-deja/g++.pt/ttp17.C
-2213336936b ./gcc/testsuite/g++.old-deja/g++.pt/ttp18.C
-1575203598b ./gcc/testsuite/g++.old-deja/g++.pt/ttp19.C
-2278374754b ./gcc/testsuite/g++.old-deja/g++.pt/ttp1.C
-1859285874b ./gcc/testsuite/g++.old-deja/g++.pt/ttp20.C
-1147993431b ./gcc/testsuite/g++.old-deja/g++.pt/ttp21.C
-1298886248b ./gcc/testsuite/g++.old-deja/g++.pt/ttp22.C
-2010705114b ./gcc/testsuite/g++.old-deja/g++.pt/ttp23.C
-3231810310b ./gcc/testsuite/g++.old-deja/g++.pt/ttp24.C
-2793275371b ./gcc/testsuite/g++.old-deja/g++.pt/ttp25.C
- 890756385b ./gcc/testsuite/g++.old-deja/g++.pt/ttp26.C
-4244916136b ./gcc/testsuite/g++.old-deja/g++.pt/ttp27.C
-3429685547b ./gcc/testsuite/g++.old-deja/g++.pt/ttp28.C
-3829242227b ./gcc/testsuite/g++.old-deja/g++.pt/ttp29.C
- 3553743b ./gcc/testsuite/g++.old-deja/g++.pt/ttp2.C
-2855054105b ./gcc/testsuite/g++.old-deja/g++.pt/ttp30.C
-4010195516b ./gcc/testsuite/g++.old-deja/g++.pt/ttp31.C
-3654116178b ./gcc/testsuite/g++.old-deja/g++.pt/ttp32.C
-2881195148b ./gcc/testsuite/g++.old-deja/g++.pt/ttp33.C
-3462726862b ./gcc/testsuite/g++.old-deja/g++.pt/ttp34.C
-3694220305b ./gcc/testsuite/g++.old-deja/g++.pt/ttp35.C
-1152799669b ./gcc/testsuite/g++.old-deja/g++.pt/ttp36.C
- 361840570b ./gcc/testsuite/g++.old-deja/g++.pt/ttp37.C
- 570115104b ./gcc/testsuite/g++.old-deja/g++.pt/ttp38.C
-2884076986b ./gcc/testsuite/g++.old-deja/g++.pt/ttp39.C
-2339659475b ./gcc/testsuite/g++.old-deja/g++.pt/ttp3.C
-3777404240b ./gcc/testsuite/g++.old-deja/g++.pt/ttp40.C
-1654832327b ./gcc/testsuite/g++.old-deja/g++.pt/ttp41.C
-1252557260b ./gcc/testsuite/g++.old-deja/g++.pt/ttp42.C
-2312035147b ./gcc/testsuite/g++.old-deja/g++.pt/ttp43.C
-2038494248b ./gcc/testsuite/g++.old-deja/g++.pt/ttp44.C
-4254070189b ./gcc/testsuite/g++.old-deja/g++.pt/ttp45.C
-4048264509b ./gcc/testsuite/g++.old-deja/g++.pt/ttp46.C
-1411925217b ./gcc/testsuite/g++.old-deja/g++.pt/ttp47.C
-3294346857b ./gcc/testsuite/g++.old-deja/g++.pt/ttp48.C
- 246280481b ./gcc/testsuite/g++.old-deja/g++.pt/ttp49.C
- 883851040b ./gcc/testsuite/g++.old-deja/g++.pt/ttp4.C
- 148311367b ./gcc/testsuite/g++.old-deja/g++.pt/ttp50.C
-1355737114b ./gcc/testsuite/g++.old-deja/g++.pt/ttp51.C
- 742860133b ./gcc/testsuite/g++.old-deja/g++.pt/ttp52.C
-4014956592b ./gcc/testsuite/g++.old-deja/g++.pt/ttp53.C
- 950933665b ./gcc/testsuite/g++.old-deja/g++.pt/ttp54.C
- 969371039b ./gcc/testsuite/g++.old-deja/g++.pt/ttp55.C
-1933937224b ./gcc/testsuite/g++.old-deja/g++.pt/ttp56.C
- 781548580b ./gcc/testsuite/g++.old-deja/g++.pt/ttp57.C
-3542091704b ./gcc/testsuite/g++.old-deja/g++.pt/ttp58.C
-1970694533b ./gcc/testsuite/g++.old-deja/g++.pt/ttp59.C
- 744920614b ./gcc/testsuite/g++.old-deja/g++.pt/ttp5.C
-1001403023b ./gcc/testsuite/g++.old-deja/g++.pt/ttp60.C
-3275558727b ./gcc/testsuite/g++.old-deja/g++.pt/ttp61.C
-1915032158b ./gcc/testsuite/g++.old-deja/g++.pt/ttp62.C
-3261657532b ./gcc/testsuite/g++.old-deja/g++.pt/ttp63.C
-1109524802b ./gcc/testsuite/g++.old-deja/g++.pt/ttp64.C
- 334468093b ./gcc/testsuite/g++.old-deja/g++.pt/ttp65.C
-1041079584b ./gcc/testsuite/g++.old-deja/g++.pt/ttp6.C
-2962993334b ./gcc/testsuite/g++.old-deja/g++.pt/ttp7.C
-1961268006b ./gcc/testsuite/g++.old-deja/g++.pt/ttp8.C
-3708749815b ./gcc/testsuite/g++.old-deja/g++.pt/ttp9.C
- 752890984b ./gcc/testsuite/g++.old-deja/g++.pt/typedef1.C
-2645715863b ./gcc/testsuite/g++.old-deja/g++.pt/typedef2.C
-1128115184b ./gcc/testsuite/g++.old-deja/g++.pt/typedef3.C
- 687887055b ./gcc/testsuite/g++.old-deja/g++.pt/typedef4.C
-3197185389b ./gcc/testsuite/g++.old-deja/g++.pt/typename10.C
- 11764674b ./gcc/testsuite/g++.old-deja/g++.pt/typename11.C
- 275086081b ./gcc/testsuite/g++.old-deja/g++.pt/typename12.C
-2524443126b ./gcc/testsuite/g++.old-deja/g++.pt/typename13.C
-1552645689b ./gcc/testsuite/g++.old-deja/g++.pt/typename14.C
-1039841774b ./gcc/testsuite/g++.old-deja/g++.pt/typename15.C
-2603845994b ./gcc/testsuite/g++.old-deja/g++.pt/typename16.C
-4165656026b ./gcc/testsuite/g++.old-deja/g++.pt/typename17.C
-2199791863b ./gcc/testsuite/g++.old-deja/g++.pt/typename18.C
-1657062514b ./gcc/testsuite/g++.old-deja/g++.pt/typename19.C
- 155924010b ./gcc/testsuite/g++.old-deja/g++.pt/typename1.C
-3251695233b ./gcc/testsuite/g++.old-deja/g++.pt/typename20.C
-4031896858b ./gcc/testsuite/g++.old-deja/g++.pt/typename21.C
-3346623174b ./gcc/testsuite/g++.old-deja/g++.pt/typename22.C
-1320658391b ./gcc/testsuite/g++.old-deja/g++.pt/typename23.C
-3911736485b ./gcc/testsuite/g++.old-deja/g++.pt/typename24.C
-2304897216b ./gcc/testsuite/g++.old-deja/g++.pt/typename25.C
-2707583962b ./gcc/testsuite/g++.old-deja/g++.pt/typename26.C
-1423713632b ./gcc/testsuite/g++.old-deja/g++.pt/typename27.C
-1479397024b ./gcc/testsuite/g++.old-deja/g++.pt/typename28.C
-1202424634b ./gcc/testsuite/g++.old-deja/g++.pt/typename2.C
- 671867998b ./gcc/testsuite/g++.old-deja/g++.pt/typename3.C
- 516047961b ./gcc/testsuite/g++.old-deja/g++.pt/typename4.C
-3990219214b ./gcc/testsuite/g++.old-deja/g++.pt/typename5.C
-1190749888b ./gcc/testsuite/g++.old-deja/g++.pt/typename6.C
-1106680146b ./gcc/testsuite/g++.old-deja/g++.pt/typename7.C
- 539346100b ./gcc/testsuite/g++.old-deja/g++.pt/typename8.C
-1531696057b ./gcc/testsuite/g++.old-deja/g++.pt/typename9.C
-2013928518b ./gcc/testsuite/g++.old-deja/g++.pt/unify1.C
- 291895099b ./gcc/testsuite/g++.old-deja/g++.pt/unify2.C
-4168274893b ./gcc/testsuite/g++.old-deja/g++.pt/unify3.C
- 616339966b ./gcc/testsuite/g++.old-deja/g++.pt/unify4.C
-1593711084b ./gcc/testsuite/g++.old-deja/g++.pt/unify6.C
-2805975955b ./gcc/testsuite/g++.old-deja/g++.pt/unify7.C
- 572096107b ./gcc/testsuite/g++.old-deja/g++.pt/unify8.C
-1740949226b ./gcc/testsuite/g++.old-deja/g++.pt/union1.C
-3325944931b ./gcc/testsuite/g++.old-deja/g++.pt/union2.C
-3304362700b ./gcc/testsuite/g++.old-deja/g++.pt/using1.C
-3289243465b ./gcc/testsuite/g++.old-deja/g++.pt/using2.C
-3460641357b ./gcc/testsuite/g++.old-deja/g++.pt/vaarg2.C
- 358497795b ./gcc/testsuite/g++.old-deja/g++.pt/vaarg3.C
- 886046502b ./gcc/testsuite/g++.old-deja/g++.pt/vaarg.C
- 663619266b ./gcc/testsuite/g++.old-deja/g++.pt/var1.C
-1421755768b ./gcc/testsuite/g++.old-deja/g++.pt/vbase1.C
-3353980626b ./gcc/testsuite/g++.old-deja/g++.pt/virtual1.C
-2579767623b ./gcc/testsuite/g++.old-deja/g++.pt/virtual2.C
-3153841756b ./gcc/testsuite/g++.old-deja/g++.pt/virtual3.C
-3045422609b ./gcc/testsuite/g++.old-deja/g++.pt/virtual4.C
-1462240574b ./gcc/testsuite/g++.old-deja/g++.pt/warn1.C
-1277079184b ./gcc/testsuite/g++.old-deja/g++.pt/warn2.C
-1415873556b ./gcc/testsuite/g++.old-deja/g++.rfg/00321_01-.C
-1112275657b ./gcc/testsuite/g++.old-deja/g++.rfg/00324_02-.C
-4001281008b ./gcc/testsuite/g++.old-deja/g++.robertl/980310-1.C
-3472844044b ./gcc/testsuite/g++.old-deja/g++.robertl/eb102.C
-2443648446b ./gcc/testsuite/g++.old-deja/g++.robertl/eb103.C
-2507881262b ./gcc/testsuite/g++.old-deja/g++.robertl/eb104.C
- 562781296b ./gcc/testsuite/g++.old-deja/g++.robertl/eb105.C
-2425940184b ./gcc/testsuite/g++.old-deja/g++.robertl/eb106.C
- 816702909b ./gcc/testsuite/g++.old-deja/g++.robertl/eb107.C
-1370397701b ./gcc/testsuite/g++.old-deja/g++.robertl/eb108.C
-2829681364b ./gcc/testsuite/g++.old-deja/g++.robertl/eb109.C
-3648377352b ./gcc/testsuite/g++.old-deja/g++.robertl/eb10.C
-1181050923b ./gcc/testsuite/g++.old-deja/g++.robertl/eb110.C
-3893933499b ./gcc/testsuite/g++.old-deja/g++.robertl/eb111.C
-1958243707b ./gcc/testsuite/g++.old-deja/g++.robertl/eb112.C
-1947798881b ./gcc/testsuite/g++.old-deja/g++.robertl/eb113.C
-3605730706b ./gcc/testsuite/g++.old-deja/g++.robertl/eb114.C
-1577168820b ./gcc/testsuite/g++.old-deja/g++.robertl/eb115.C
- 882322806b ./gcc/testsuite/g++.old-deja/g++.robertl/eb116.C
-3652784132b ./gcc/testsuite/g++.old-deja/g++.robertl/eb118.C
-1321940613b ./gcc/testsuite/g++.old-deja/g++.robertl/eb119.C
-1227838581b ./gcc/testsuite/g++.old-deja/g++.robertl/eb11.C
- 784221952b ./gcc/testsuite/g++.old-deja/g++.robertl/eb120.C
-1281713077b ./gcc/testsuite/g++.old-deja/g++.robertl/eb121.C
-2148357158b ./gcc/testsuite/g++.old-deja/g++.robertl/eb122.C
- 340399175b ./gcc/testsuite/g++.old-deja/g++.robertl/eb123.C
-2311366193b ./gcc/testsuite/g++.old-deja/g++.robertl/eb124.C
-3467340374b ./gcc/testsuite/g++.old-deja/g++.robertl/eb125.C
-1327581862b ./gcc/testsuite/g++.old-deja/g++.robertl/eb126.C
-3379073614b ./gcc/testsuite/g++.old-deja/g++.robertl/eb127.C
-1650763244b ./gcc/testsuite/g++.old-deja/g++.robertl/eb128.C
-2811911547b ./gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C
- 551639476b ./gcc/testsuite/g++.old-deja/g++.robertl/eb129.C
- 158711949b ./gcc/testsuite/g++.old-deja/g++.robertl/eb12.C
-3610132478b ./gcc/testsuite/g++.old-deja/g++.robertl/eb130.C
-2576744469b ./gcc/testsuite/g++.old-deja/g++.robertl/eb131.C
- 191646019b ./gcc/testsuite/g++.old-deja/g++.robertl/eb132.C
-2212505012b ./gcc/testsuite/g++.old-deja/g++.robertl/eb133a.C
- 960695829b ./gcc/testsuite/g++.old-deja/g++.robertl/eb133b.C
- 960695829b ./gcc/testsuite/g++.old-deja/g++.robertl/eb133.C
- 630981722b ./gcc/testsuite/g++.old-deja/g++.robertl/eb13.C
-3851013524b ./gcc/testsuite/g++.old-deja/g++.robertl/eb14.C
- 8426984b ./gcc/testsuite/g++.old-deja/g++.robertl/eb15.C
-2805277324b ./gcc/testsuite/g++.old-deja/g++.robertl/eb16.C
-1023058352b ./gcc/testsuite/g++.old-deja/g++.robertl/eb17.C
-2664767884b ./gcc/testsuite/g++.old-deja/g++.robertl/eb18.C
- 526517709b ./gcc/testsuite/g++.old-deja/g++.robertl/eb19.C
- 461969397b ./gcc/testsuite/g++.old-deja/g++.robertl/eb20.C
-2675256374b ./gcc/testsuite/g++.old-deja/g++.robertl/eb21.C
- 917318256b ./gcc/testsuite/g++.old-deja/g++.robertl/eb22.C
- 430086508b ./gcc/testsuite/g++.old-deja/g++.robertl/eb23.C
-1945933799b ./gcc/testsuite/g++.old-deja/g++.robertl/eb24.C
- 309172009b ./gcc/testsuite/g++.old-deja/g++.robertl/eb26.C
- 292107192b ./gcc/testsuite/g++.old-deja/g++.robertl/eb27.C
-1890436003b ./gcc/testsuite/g++.old-deja/g++.robertl/eb28.C
-3453020821b ./gcc/testsuite/g++.old-deja/g++.robertl/eb29.C
-3780933159b ./gcc/testsuite/g++.old-deja/g++.robertl/eb2.C
- 563892057b ./gcc/testsuite/g++.old-deja/g++.robertl/eb30.C
-3084203745b ./gcc/testsuite/g++.old-deja/g++.robertl/eb31.C
-4187617186b ./gcc/testsuite/g++.old-deja/g++.robertl/eb32.C
- 220886230b ./gcc/testsuite/g++.old-deja/g++.robertl/eb33.C
-2115586068b ./gcc/testsuite/g++.old-deja/g++.robertl/eb34.C
- 563300325b ./gcc/testsuite/g++.old-deja/g++.robertl/eb35.C
-3434413457b ./gcc/testsuite/g++.old-deja/g++.robertl/eb36.C
-2564432607b ./gcc/testsuite/g++.old-deja/g++.robertl/eb37.C
-2426566316b ./gcc/testsuite/g++.old-deja/g++.robertl/eb38.C
- 528193552b ./gcc/testsuite/g++.old-deja/g++.robertl/eb39.C
-2212669672b ./gcc/testsuite/g++.old-deja/g++.robertl/eb3.C
- 507123073b ./gcc/testsuite/g++.old-deja/g++.robertl/eb41.C
-3295582703b ./gcc/testsuite/g++.old-deja/g++.robertl/eb43.C
-3397322273b ./gcc/testsuite/g++.old-deja/g++.robertl/eb44.C
- 687602470b ./gcc/testsuite/g++.old-deja/g++.robertl/eb45.C
- 804543247b ./gcc/testsuite/g++.old-deja/g++.robertl/eb46.C
- 753241876b ./gcc/testsuite/g++.old-deja/g++.robertl/eb48.C
-3504050873b ./gcc/testsuite/g++.old-deja/g++.robertl/eb49.C
- 291255111b ./gcc/testsuite/g++.old-deja/g++.robertl/eb4.C
-4113309347b ./gcc/testsuite/g++.old-deja/g++.robertl/eb50.C
-1918037503b ./gcc/testsuite/g++.old-deja/g++.robertl/eb51.C
-3209054875b ./gcc/testsuite/g++.old-deja/g++.robertl/eb52.C
- 710220281b ./gcc/testsuite/g++.old-deja/g++.robertl/eb54.C
-2958452317b ./gcc/testsuite/g++.old-deja/g++.robertl/eb55.C
- 925139048b ./gcc/testsuite/g++.old-deja/g++.robertl/eb56.C
-1356497150b ./gcc/testsuite/g++.old-deja/g++.robertl/eb57.C
-3407397105b ./gcc/testsuite/g++.old-deja/g++.robertl/eb58.C
- 794738043b ./gcc/testsuite/g++.old-deja/g++.robertl/eb59.C
-3128226785b ./gcc/testsuite/g++.old-deja/g++.robertl/eb5.C
-2498272255b ./gcc/testsuite/g++.old-deja/g++.robertl/eb60.C
-1266761033b ./gcc/testsuite/g++.old-deja/g++.robertl/eb61.C
-2004022719b ./gcc/testsuite/g++.old-deja/g++.robertl/eb62.C
-4040217083b ./gcc/testsuite/g++.old-deja/g++.robertl/eb63.C
-1956073784b ./gcc/testsuite/g++.old-deja/g++.robertl/eb64.C
-4008623056b ./gcc/testsuite/g++.old-deja/g++.robertl/eb65.C
- 980372542b ./gcc/testsuite/g++.old-deja/g++.robertl/eb66.C
-3389307963b ./gcc/testsuite/g++.old-deja/g++.robertl/eb67.C
-4223737421b ./gcc/testsuite/g++.old-deja/g++.robertl/eb69.C
-1997456294b ./gcc/testsuite/g++.old-deja/g++.robertl/eb6.C
-2182473885b ./gcc/testsuite/g++.old-deja/g++.robertl/eb70.C
-3826058150b ./gcc/testsuite/g++.old-deja/g++.robertl/eb71.C
-3782517804b ./gcc/testsuite/g++.old-deja/g++.robertl/eb73.C
-2471271135b ./gcc/testsuite/g++.old-deja/g++.robertl/eb74.C
- 355273621b ./gcc/testsuite/g++.old-deja/g++.robertl/eb75.C
-2546436998b ./gcc/testsuite/g++.old-deja/g++.robertl/eb76.C
-2308966043b ./gcc/testsuite/g++.old-deja/g++.robertl/eb77.C
-3644883412b ./gcc/testsuite/g++.old-deja/g++.robertl/eb79.C
- 718049317b ./gcc/testsuite/g++.old-deja/g++.robertl/eb7.C
-1974141968b ./gcc/testsuite/g++.old-deja/g++.robertl/eb80.C
-3623034003b ./gcc/testsuite/g++.old-deja/g++.robertl/eb81.C
- 303859604b ./gcc/testsuite/g++.old-deja/g++.robertl/eb82.C
-1398794376b ./gcc/testsuite/g++.old-deja/g++.robertl/eb83.C
-1911496354b ./gcc/testsuite/g++.old-deja/g++.robertl/eb84.C
- 83084630b ./gcc/testsuite/g++.old-deja/g++.robertl/eb86.C
- 637629215b ./gcc/testsuite/g++.old-deja/g++.robertl/eb87.C
- 15844958b ./gcc/testsuite/g++.old-deja/g++.robertl/eb88.C
-3708449542b ./gcc/testsuite/g++.old-deja/g++.robertl/eb8.C
-1724324673b ./gcc/testsuite/g++.old-deja/g++.robertl/eb90.C
-2024296388b ./gcc/testsuite/g++.old-deja/g++.robertl/eb91.C
-2107259564b ./gcc/testsuite/g++.old-deja/g++.robertl/eb92.C
-2200177849b ./gcc/testsuite/g++.old-deja/g++.robertl/eb93.C
-2786021364b ./gcc/testsuite/g++.old-deja/g++.robertl/eb94.C
-3847299793b ./gcc/testsuite/g++.old-deja/g++.robertl/eb95.C
-2908163544b ./gcc/testsuite/g++.old-deja/g++.robertl/eb97.C
- 131102227b ./gcc/testsuite/g++.old-deja/g++.robertl/eb98.C
-2054173722b ./gcc/testsuite/g++.old-deja/g++.robertl/eb99.C
-3273280926b ./gcc/testsuite/g++.old-deja/g++.robertl/eb9.C
-3496760893b ./gcc/testsuite/g++.old-deja/g++.robertl/ebnull.C
-1294688249b ./gcc/testsuite/g++.old-deja/g++.robertl/ebnull-cast.C
-2390910991b ./gcc/testsuite/g++.old-deja/g++.robertl/ebnull-oldcast.C
-3321525464b ./gcc/testsuite/g++.old-deja/g++.robertl/eh990323-1.C
- 349170821b ./gcc/testsuite/g++.old-deja/g++.robertl/eh990323-2.C
-2742680950b ./gcc/testsuite/g++.old-deja/g++.robertl/eh990323-3.C
-1643595357b ./gcc/testsuite/g++.old-deja/g++.robertl/eh990323-4.C
- 756189085b ./gcc/testsuite/g++.old-deja/g++.robertl/eh990323-5.C
- 710689512b ./gcc/testsuite/g++.old-deja/g++.robertl/ice990323-1.C
-3704302140b ./gcc/testsuite/g++.old-deja/g++.robertl/ice990323-2.C
- 424851899b ./gcc/testsuite/g++.old-deja/g++.robertl/ice990323-3.C
-1966976843b ./gcc/testsuite/g++.old-deja/g++.robertl/ice990323-4.C
-2792305431b ./gcc/testsuite/g++.old-deja/g++.robertl/ice990323-5.C
-3593716546b ./gcc/testsuite/g++.old-deja/g++.robertl/README
-2167858031b ./gcc/testsuite/g++.old-deja/g++.warn/cast-align1.C
-2257841595b ./gcc/testsuite/g++.old-deja/g++.warn/compare1.C
- 478428580b ./gcc/testsuite/g++.old-deja/g++.warn/flow1.C
-1434994100b ./gcc/testsuite/g++.old-deja/g++.warn/impint2.C
- 228848226b ./gcc/testsuite/g++.old-deja/g++.warn/impint.C
- 308484502b ./gcc/testsuite/g++.old-deja/g++.warn/inline.C
-3053994732b ./gcc/testsuite/g++.old-deja/g++.warn/iomanip.C
-3603456747b ./gcc/testsuite/g++.old-deja/g++.warn/virt1.C
-1241992731b ./gcc/testsuite/g++.old-deja/old-deja.exp
-1387283607b ./gcc/testsuite/lib/c-torture.exp
- 827216288b ./gcc/testsuite/lib/file-format.exp
- 246962046b ./gcc/testsuite/lib/f-torture.exp
-2197210451b ./gcc/testsuite/lib/g77-dg.exp
-4020741824b ./gcc/testsuite/lib/g77.exp
-3365202398b ./gcc/testsuite/lib/gcc-defs.exp
-3402161270b ./gcc/testsuite/lib/gcc-dg.exp
-3313214307b ./gcc/testsuite/lib/gcc.exp
-1748156049b ./gcc/testsuite/lib/gcov.exp
-1025717576b ./gcc/testsuite/lib/g++-dg.exp
- 590309199b ./gcc/testsuite/lib/g++.exp
-1785660070b ./gcc/testsuite/lib/mike-g77.exp
-3188273403b ./gcc/testsuite/lib/mike-gcc.exp
-2511438650b ./gcc/testsuite/lib/mike-g++.exp
- 576875699b ./gcc/testsuite/lib/objc-dg.exp
-2555356069b ./gcc/testsuite/lib/objc.exp
-3849564329b ./gcc/testsuite/lib/objc-torture.exp
-1673351574b ./gcc/testsuite/lib/old-dejagnu.exp
- 766192419b ./gcc/testsuite/lib/profopt.exp
-1029251629b ./gcc/testsuite/lib/prune.exp
-2428636490b ./gcc/testsuite/lib/scanasm.exp
-3463101165b ./gcc/testsuite/lib/target-supports.exp
-3665869615b ./gcc/testsuite/objc/compile/20011211-1.m
-1806367206b ./gcc/testsuite/objc/compile/compile.exp
-1369080733b ./gcc/testsuite/objc.dg/alias.m
-3316559321b ./gcc/testsuite/objc.dg/class-1.m
-3678679752b ./gcc/testsuite/objc.dg/class-2.m
-1411503086b ./gcc/testsuite/objc.dg/const-str-1.m
-3977573176b ./gcc/testsuite/objc.dg/const-str-2.m
-1541394849b ./gcc/testsuite/objc.dg/dg.exp
-1505392257b ./gcc/testsuite/objc.dg/fwd-proto-1.m
-2449513844b ./gcc/testsuite/objc.dg/id-1.m
-2495249432b ./gcc/testsuite/objc.dg/local-decl-1.m
-1667427564b ./gcc/testsuite/objc.dg/method-1.m
-2835356210b ./gcc/testsuite/objc.dg/method-2.m
-1830729571b ./gcc/testsuite/objc.dg/naming-1.m
- 250748297b ./gcc/testsuite/objc.dg/naming-2.m
-2785734223b ./gcc/testsuite/objc.dg/proto-hier-1.m
- 888349193b ./gcc/testsuite/objc.dg/special/special.exp
-3208621557b ./gcc/testsuite/objc.dg/special/unclaimed-category-1a.m
-3078900770b ./gcc/testsuite/objc.dg/special/unclaimed-category-1.h
-1931469026b ./gcc/testsuite/objc.dg/special/unclaimed-category-1.m
- 967308749b ./gcc/testsuite/objc.dg/super-class-1.m
-3837394038b ./gcc/testsuite/objc/execute/accessing_ivars.m
-2710215022b ./gcc/testsuite/objc/execute/bf-10.m
-2657298938b ./gcc/testsuite/objc/execute/bf-11.m
-2456637155b ./gcc/testsuite/objc/execute/bf-12.m
-2109396861b ./gcc/testsuite/objc/execute/bf-13.m
-2180168093b ./gcc/testsuite/objc/execute/bf-14.m
-2032295263b ./gcc/testsuite/objc/execute/bf-15.m
-3201695449b ./gcc/testsuite/objc/execute/bf-16.m
-4134365460b ./gcc/testsuite/objc/execute/bf-17.m
- 355990402b ./gcc/testsuite/objc/execute/bf-18.m
-3674443693b ./gcc/testsuite/objc/execute/bf-19.m
-1927175126b ./gcc/testsuite/objc/execute/bf-1.m
-2184610020b ./gcc/testsuite/objc/execute/bf-20.m
-2019969445b ./gcc/testsuite/objc/execute/bf-21.m
-3212450864b ./gcc/testsuite/objc/execute/bf-2.m
- 80833366b ./gcc/testsuite/objc/execute/bf-3.m
-1154895973b ./gcc/testsuite/objc/execute/bf-4.m
-2150643868b ./gcc/testsuite/objc/execute/bf-5.m
-2449368591b ./gcc/testsuite/objc/execute/bf-6.m
-2461635599b ./gcc/testsuite/objc/execute/bf-7.m
-2205665948b ./gcc/testsuite/objc/execute/bf-8.m
-1881717138b ./gcc/testsuite/objc/execute/bf-9.m
-3485125753b ./gcc/testsuite/objc/execute/bf-common.h
- 490840694b ./gcc/testsuite/objc/execute/bycopy-1.m
- 494931174b ./gcc/testsuite/objc/execute/bycopy-2.m
-1730034329b ./gcc/testsuite/objc/execute/bycopy-3.m
-3022811812b ./gcc/testsuite/objc/execute/class-10.m
-1808680681b ./gcc/testsuite/objc/execute/class-11.m
-3170467444b ./gcc/testsuite/objc/execute/class-12.m
-1450032037b ./gcc/testsuite/objc/execute/class-13.m
- 962298201b ./gcc/testsuite/objc/execute/class-14.m
- 15537293b ./gcc/testsuite/objc/execute/class-1.m
- 184341932b ./gcc/testsuite/objc/execute/class-2.m
-1192708745b ./gcc/testsuite/objc/execute/class-3.m
-1197020462b ./gcc/testsuite/objc/execute/class-4.m
-1142894955b ./gcc/testsuite/objc/execute/class-5.m
-1726324093b ./gcc/testsuite/objc/execute/class-6.m
-3834458842b ./gcc/testsuite/objc/execute/class-7.m
-3671287888b ./gcc/testsuite/objc/execute/class-8.m
-3384901465b ./gcc/testsuite/objc/execute/class-9.m
-4110777484b ./gcc/testsuite/objc/execute/class_self-1.m
-1951268392b ./gcc/testsuite/objc/execute/class_self-2.m
- 68195390b ./gcc/testsuite/objc/execute/class-tests-1.h
-1742460237b ./gcc/testsuite/objc/execute/class-tests-2.h
-1707819077b ./gcc/testsuite/objc/execute/_cmd.m
-2668180928b ./gcc/testsuite/objc/execute/compatibility_alias.m
-2525550462b ./gcc/testsuite/objc/execute/encode-1.m
-2615444748b ./gcc/testsuite/objc/execute/enumeration-1.m
- 594446998b ./gcc/testsuite/objc/execute/enumeration-2.m
-1013968222b ./gcc/testsuite/objc/execute/execute.exp
-2364697004b ./gcc/testsuite/objc/execute/fdecl.m
-2041731208b ./gcc/testsuite/objc/execute/formal_protocol-1.m
-1183019794b ./gcc/testsuite/objc/execute/formal_protocol-2.m
- 964580640b ./gcc/testsuite/objc/execute/formal_protocol-3.m
- 382692504b ./gcc/testsuite/objc/execute/formal_protocol-4.m
-3973735702b ./gcc/testsuite/objc/execute/formal_protocol-5.m
-2144981305b ./gcc/testsuite/objc/execute/formal_protocol-6.m
-3644699221b ./gcc/testsuite/objc/execute/formal_protocol-6.x
- 99644718b ./gcc/testsuite/objc/execute/formal_protocol-7.m
-2696823090b ./gcc/testsuite/objc/execute/IMP.m
-1013228926b ./gcc/testsuite/objc/execute/informal_protocol.m
-2858039597b ./gcc/testsuite/objc/execute/initialize.m
-4264400256b ./gcc/testsuite/objc/execute/load-2.m
-2230402406b ./gcc/testsuite/objc/execute/load-3.m
-2172522617b ./gcc/testsuite/objc/execute/load.m
-1396880793b ./gcc/testsuite/objc/execute/many_args_method.m
- 160833808b ./gcc/testsuite/objc/execute/nested-1.m
-3121484936b ./gcc/testsuite/objc/execute/nested-2.m
-1950177275b ./gcc/testsuite/objc/execute/nested-3.m
-3845787514b ./gcc/testsuite/objc/execute/no_clash.m
-3091877589b ./gcc/testsuite/objc/execute/np-1.m
- 837055144b ./gcc/testsuite/objc/execute/np-2.m
- 936059862b ./gcc/testsuite/objc/execute/object_is_class.m
-1811140144b ./gcc/testsuite/objc/execute/object_is_meta_class.m
-3444127895b ./gcc/testsuite/objc/execute/private.m
-1487670997b ./gcc/testsuite/objc/execute/protocol.m
-3592928955b ./gcc/testsuite/objc/execute/redefining_self.m
-1524125855b ./gcc/testsuite/objc/execute/root_methods.m
-1619707236b ./gcc/testsuite/objc/execute/selector-1.m
-2594938245b ./gcc/testsuite/objc/execute/static-1.m
- 639280843b ./gcc/testsuite/objc/execute/static-2.m
-1410428796b ./gcc/testsuite/objc/execute/string1.m
-2225521120b ./gcc/testsuite/objc/execute/string2.m
-2934965640b ./gcc/testsuite/objc/execute/string3.m
- 416130789b ./gcc/testsuite/objc/execute/string4.m
- 34483048b ./gcc/testsuite/objc/execute/va_method.m
- 986418331b ./gcc/testsuite/README
-4258789052b ./gcc/testsuite/README.g++
- 174183124b ./gcc/testsuite/README.gcc
- 214354681b ./gcc/timevar.c
-2559007517b ./gcc/timevar.def
-2115869626b ./gcc/timevar.h
-2335446483b ./gcc/tlink.c
- 163649448b ./gcc/toplev.c
-1100253771b ./gcc/toplev.h
-2851581967b ./gcc/tradcif.c
- 840149782b ./gcc/tradcif.y
- 585812029b ./gcc/tradcpp.c
- 133942480b ./gcc/tradcpp.h
-4051453607b ./gcc/tree.c
-1914541060b ./gcc/tree.def
-1565760610b ./gcc/tree-dump.c
- 177026127b ./gcc/tree-dump.h
-3581573816b ./gcc/tree.h
-1491742054b ./gcc/tree-inline.c
-2000795530b ./gcc/tree-inline.h
-2106315745b ./gcc/tsystem.h
-4139263293b ./gcc/typeclass.h
-2642343552b ./gcc/unroll.c
-3994883910b ./gcc/unwind-dw2.c
- 939184029b ./gcc/unwind-dw2-fde.c
-2451297709b ./gcc/unwind-dw2-fde-glibc.c
-2681777274b ./gcc/unwind-dw2-fde.h
-4110084340b ./gcc/unwind.h
-1788741054b ./gcc/unwind.inc
-1733200042b ./gcc/unwind-pe.h
-3015631845b ./gcc/unwind-sjlj.c
-1202449654b ./gcc/varasm.c
-1377429075b ./gcc/varray.c
- 251576980b ./gcc/varray.h
-3093622349b ./gcc/version.c
- 835289284b ./gcc/version.h
-1602668013b ./gcc/vmsdbg.h
-4159431942b ./gcc/vmsdbgout.c
-3414725237b ./gcc/xcoffout.c
- 241048359b ./gcc/xcoffout.h
- 259673838b ./GNATS
-3427622163b ./gnats.html
- 218913669b ./include/ansidecl.h
-3767303661b ./include/ChangeLog
-2171125041b ./include/COPYING
-3472518673b ./include/demangle.h
- 524172850b ./include/dyn-string.h
-3966992879b ./include/fibheap.h
-3882244111b ./include/floatformat.h
-1934715875b ./include/fnmatch.h
-1069433913b ./include/getopt.h
-3613614297b ./include/hashtab.h
-1889274764b ./include/libiberty.h
-2315750201b ./include/md5.h
-1017179691b ./include/objalloc.h
-2663239037b ./include/obstack.h
-1121284874b ./include/partition.h
- 618378141b ./include/safe-ctype.h
-1944369318b ./include/sort.h
-2658328396b ./include/splay-tree.h
-1653599470b ./include/symcat.h
-1386762946b ./include/ternary.h
-1261882580b ./include/xregex2.h
-1151436348b ./include/xregex.h
-1176932515b ./INSTALL/binaries.html
-1486978407b ./INSTALL/build.html
-1718198324b ./INSTALL/configure.html
-3350091909b ./INSTALL/download.html
-3420202342b ./INSTALL/finalinstall.html
-2848899000b ./INSTALL/gfdl.html
- 374079968b ./INSTALL/index.html
-3936331425b ./INSTALL/old.html
-2229468985b ./INSTALL/README
- 656627656b ./install-sh
-2979632843b ./INSTALL/specific.html
-2275412368b ./INSTALL/test.html
-1714952917b ./libf2c/aclocal.m4
-4143385168b ./libf2c/ChangeLog
-1973941211b ./libf2c/changes.netlib
-3975721411b ./libf2c/configure
-1477197116b ./libf2c/configure.in
-2487502900b ./libf2c/disclaimer.netlib
- 332556269b ./libf2c/f2cext.c
- 259100451b ./libf2c/f2c.h
-3266643335b ./libf2c/g2c.hin
-1304659322b ./libf2c/libF77/abort_.c
-2143735092b ./libf2c/libF77/c_abs.c
-3290078007b ./libf2c/libF77/cabs.c
-4102372920b ./libf2c/libF77/c_cos.c
-1754542093b ./libf2c/libF77/c_div.c
-3847115202b ./libf2c/libF77/c_exp.c
-2878052462b ./libf2c/libF77/c_log.c
- 871413835b ./libf2c/libF77/configure
- 937702981b ./libf2c/libF77/configure.in
-3389634672b ./libf2c/libF77/c_sin.c
-1183895118b ./libf2c/libF77/c_sqrt.c
-3030188690b ./libf2c/libF77/d_abs.c
-1507325734b ./libf2c/libF77/d_acos.c
-4159233847b ./libf2c/libF77/d_asin.c
-2427060621b ./libf2c/libF77/d_atan.c
-1296492558b ./libf2c/libF77/d_atn2.c
-3575888780b ./libf2c/libF77/d_cnjg.c
-4073305831b ./libf2c/libF77/d_cos.c
-3091338483b ./libf2c/libF77/d_cosh.c
- 810995689b ./libf2c/libF77/d_dim.c
-3392851220b ./libf2c/libF77/derf_.c
-1250156454b ./libf2c/libF77/derfc_.c
- 858325700b ./libf2c/libF77/d_exp.c
-2046018081b ./libf2c/libF77/d_imag.c
-3730554656b ./libf2c/libF77/d_int.c
-2573277355b ./libf2c/libF77/d_lg10.c
-2735602877b ./libf2c/libF77/d_log.c
-2463902440b ./libf2c/libF77/d_mod.c
-1315838709b ./libf2c/libF77/d_nint.c
- 865009317b ./libf2c/libF77/d_prod.c
- 93986231b ./libf2c/libF77/d_sign.c
-3550952375b ./libf2c/libF77/d_sin.c
-3529247529b ./libf2c/libF77/d_sinh.c
- 198362081b ./libf2c/libF77/d_sqrt.c
- 836556354b ./libf2c/libF77/d_tan.c
-4186903397b ./libf2c/libF77/d_tanh.c
-1412482988b ./libf2c/libF77/dtime_.c
-3387281619b ./libf2c/libF77/ef1asc_.c
- 49504728b ./libf2c/libF77/ef1cmc_.c
-2553568528b ./libf2c/libF77/erf_.c
-1439324285b ./libf2c/libF77/erfc_.c
-2682848958b ./libf2c/libF77/etime_.c
-2926211158b ./libf2c/libF77/exit_.c
-3294101487b ./libf2c/libF77/f2ch.add
- 317136894b ./libf2c/libF77/F77_aloc.c
- 262909947b ./libf2c/libF77/getarg_.c
-1053635766b ./libf2c/libF77/getenv_.c
-1464793891b ./libf2c/libF77/h_abs.c
-4172389826b ./libf2c/libF77/h_dim.c
-4004178848b ./libf2c/libF77/h_dnnt.c
-4111775146b ./libf2c/libF77/h_indx.c
-3370033031b ./libf2c/libF77/h_len.c
- 577774165b ./libf2c/libF77/hl_ge.c
-1370298730b ./libf2c/libF77/hl_gt.c
-1915814870b ./libf2c/libF77/hl_le.c
- 368944666b ./libf2c/libF77/hl_lt.c
-2764887666b ./libf2c/libF77/h_mod.c
-3401291699b ./libf2c/libF77/h_nint.c
-1347560191b ./libf2c/libF77/h_sign.c
-2473169636b ./libf2c/libF77/i_abs.c
-1210543358b ./libf2c/libF77/iargc_.c
-4060206463b ./libf2c/libF77/i_dim.c
-2964212421b ./libf2c/libF77/i_dnnt.c
-2958321828b ./libf2c/libF77/i_indx.c
-1478370784b ./libf2c/libF77/i_len.c
-1964370981b ./libf2c/libF77/i_mod.c
- 956761106b ./libf2c/libF77/i_nint.c
-3590616869b ./libf2c/libF77/i_sign.c
- 443393905b ./libf2c/libF77/lbitbits.c
-3575626916b ./libf2c/libF77/lbitshft.c
-4105379815b ./libf2c/libF77/l_ge.c
-4110886289b ./libf2c/libF77/l_gt.c
-1122360099b ./libf2c/libF77/l_le.c
-3320765614b ./libf2c/libF77/l_lt.c
-1531755714b ./libf2c/libF77/main.c
-2048561220b ./libf2c/libF77/Makefile.in
-1177519321b ./libf2c/libF77/makefile.netlib
-1384146782b ./libf2c/libF77/Notice
-3561723582b ./libf2c/libF77/pow_ci.c
- 80946260b ./libf2c/libF77/pow_dd.c
-1800535765b ./libf2c/libF77/pow_di.c
-3408442423b ./libf2c/libF77/pow_hh.c
-4238680779b ./libf2c/libF77/pow_ii.c
- 483795003b ./libf2c/libF77/pow_qq.c
-2828214001b ./libf2c/libF77/pow_ri.c
-1113537371b ./libf2c/libF77/pow_zi.c
-1192551031b ./libf2c/libF77/pow_zz.c
-1528868299b ./libf2c/libF77/qbitbits.c
-2508152427b ./libf2c/libF77/qbitshft.c
-3223994220b ./libf2c/libF77/r_abs.c
-3352864098b ./libf2c/libF77/r_acos.c
-3384723664b ./libf2c/libF77/r_asin.c
-1988008783b ./libf2c/libF77/r_atan.c
- 713014287b ./libf2c/libF77/r_atn2.c
- 823683848b ./libf2c/libF77/r_cnjg.c
- 186941398b ./libf2c/libF77/r_cos.c
-3322305540b ./libf2c/libF77/r_cosh.c
-3466251772b ./libf2c/libF77/r_dim.c
-3594711912b ./libf2c/libF77/README.netlib
-3655480343b ./libf2c/libF77/r_exp.c
- 457367872b ./libf2c/libF77/r_imag.c
-1964745019b ./libf2c/libF77/r_int.c
- 361396536b ./libf2c/libF77/r_lg10.c
-2577838016b ./libf2c/libF77/r_log.c
-3015829361b ./libf2c/libF77/r_mod.c
-1801353496b ./libf2c/libF77/r_nint.c
- 617376052b ./libf2c/libF77/r_sign.c
-1330225769b ./libf2c/libF77/r_sin.c
-3815237833b ./libf2c/libF77/r_sinh.c
-3405603649b ./libf2c/libF77/r_sqrt.c
- 948857700b ./libf2c/libF77/r_tan.c
-2204673615b ./libf2c/libF77/r_tanh.c
-2846091421b ./libf2c/libF77/s_cat.c
-1366254496b ./libf2c/libF77/s_cmp.c
-3500695330b ./libf2c/libF77/s_copy.c
-3467937994b ./libf2c/libF77/setarg.c
- 273280446b ./libf2c/libF77/setsig.c
- 199330663b ./libf2c/libF77/sig_die.c
-1302607324b ./libf2c/libF77/signal1.h
-3496496096b ./libf2c/libF77/signal1.h0
-4121880197b ./libf2c/libF77/signal_.c
-2017948720b ./libf2c/libF77/s_paus.c
-2593705873b ./libf2c/libF77/s_rnge.c
-3862265148b ./libf2c/libF77/s_stop.c
- 113341864b ./libf2c/libF77/system_.c
-2089507993b ./libf2c/libF77/Version.c
-1937893648b ./libf2c/libF77/z_abs.c
-2431309812b ./libf2c/libF77/z_cos.c
-4069203393b ./libf2c/libF77/z_div.c
- 654537628b ./libf2c/libF77/z_exp.c
- 391907002b ./libf2c/libF77/z_log.c
-2332417514b ./libf2c/libF77/z_sin.c
-4013824581b ./libf2c/libF77/z_sqrt.c
-1606913831b ./libf2c/libI77/backspace.c
-2398093876b ./libf2c/libI77/close.c
-3442307107b ./libf2c/libI77/config.h.in
-3559715528b ./libf2c/libI77/configure
- 511797131b ./libf2c/libI77/configure.in
-1434317732b ./libf2c/libI77/dfe.c
-1498544240b ./libf2c/libI77/dolio.c
-4138072081b ./libf2c/libI77/due.c
-2736903293b ./libf2c/libI77/endfile.c
- 690850192b ./libf2c/libI77/err.c
-3294101487b ./libf2c/libI77/f2ch.add
-1356134703b ./libf2c/libI77/fio.h
- 772866895b ./libf2c/libI77/fmt.c
-4101507712b ./libf2c/libI77/fmt.h
-3009804035b ./libf2c/libI77/fmtlib.c
-1409031309b ./libf2c/libI77/fp.h
-1512800910b ./libf2c/libI77/ftell_.c
-1917699485b ./libf2c/libI77/iio.c
-1458869538b ./libf2c/libI77/ilnw.c
-1005821588b ./libf2c/libI77/inquire.c
- 771509778b ./libf2c/libI77/lio.h
- 339145586b ./libf2c/libI77/lread.c
-2727021368b ./libf2c/libI77/lwrite.c
- 81211418b ./libf2c/libI77/Makefile.in
-2636902289b ./libf2c/libI77/makefile.netlib
-1384146782b ./libf2c/libI77/Notice
-1954564498b ./libf2c/libI77/open.c
-2450120238b ./libf2c/libI77/rdfmt.c
-3744878144b ./libf2c/libI77/README.netlib
-2149393700b ./libf2c/libI77/rewind.c
-3082421543b ./libf2c/libI77/rsfe.c
- 27319661b ./libf2c/libI77/rsli.c
- 673652988b ./libf2c/libI77/rsne.c
-2680457877b ./libf2c/libI77/sfe.c
- 216805921b ./libf2c/libI77/stamp-h.in
-4119833693b ./libf2c/libI77/sue.c
-4028809578b ./libf2c/libI77/typesize.c
-2487538082b ./libf2c/libI77/uio.c
-1670879675b ./libf2c/libI77/util.c
-3091360080b ./libf2c/libI77/Version.c
-3746777128b ./libf2c/libI77/wref.c
-1966568786b ./libf2c/libI77/wrtfmt.c
-3540661106b ./libf2c/libI77/wsfe.c
- 869896149b ./libf2c/libI77/wsle.c
-3647229305b ./libf2c/libI77/wsne.c
-2958634571b ./libf2c/libI77/xwsne.c
-1842933802b ./libf2c/libU77/access_.c
-4214861580b ./libf2c/libU77/acconfig.h
-2301261828b ./libf2c/libU77/aclocal.m4
-3260157535b ./libf2c/libU77/alarm_.c
- 481185218b ./libf2c/libU77/bes.c
-3531718858b ./libf2c/libU77/chdir_.c
-3571215248b ./libf2c/libU77/chmod_.c
-1954724291b ./libf2c/libU77/config.hin
-2271415334b ./libf2c/libU77/configure
-4081950488b ./libf2c/libU77/configure.in
- 508743035b ./libf2c/libU77/COPYING.LIB
-3577720310b ./libf2c/libU77/ctime_.c
-2890960351b ./libf2c/libU77/date_.c
-2503989765b ./libf2c/libU77/datetime_.c
-1344682531b ./libf2c/libU77/dbes.c
- 969611891b ./libf2c/libU77/dtime_.c
-2796364082b ./libf2c/libU77/etime_.c
-3739002369b ./libf2c/libU77/fdate_.c
-2936845924b ./libf2c/libU77/fgetc_.c
-1262136923b ./libf2c/libU77/flush1_.c
- 55475392b ./libf2c/libU77/fnum_.c
-1786809239b ./libf2c/libU77/fputc_.c
-3903452909b ./libf2c/libU77/fstat_.c
-3782463129b ./libf2c/libU77/gerror_.c
-1443084591b ./libf2c/libU77/getcwd_.c
-2258536089b ./libf2c/libU77/getgid_.c
-2010909588b ./libf2c/libU77/getlog_.c
-3431059629b ./libf2c/libU77/getpid_.c
- 72289587b ./libf2c/libU77/getuid_.c
- 827784876b ./libf2c/libU77/gmtime_.c
-2490508241b ./libf2c/libU77/hostnm_.c
-1547236336b ./libf2c/libU77/idate_.c
-1177948837b ./libf2c/libU77/ierrno_.c
-2294075352b ./libf2c/libU77/irand_.c
-1142470864b ./libf2c/libU77/isatty_.c
-2802178091b ./libf2c/libU77/itime_.c
-3704802748b ./libf2c/libU77/kill_.c
- 910885406b ./libf2c/libU77/link_.c
-1995276793b ./libf2c/libU77/lnblnk_.c
-3149128167b ./libf2c/libU77/lstat_.c
-1763071373b ./libf2c/libU77/ltime_.c
-2717291481b ./libf2c/libU77/Makefile.in
-2455391013b ./libf2c/libU77/mclock_.c
-4183902576b ./libf2c/libU77/perror_.c
- 572996563b ./libf2c/libU77/PROJECTS
-3798879256b ./libf2c/libU77/rand_.c
-2980229902b ./libf2c/libU77/README
-2297401196b ./libf2c/libU77/rename_.c
- 91467825b ./libf2c/libU77/secnds_.c
-3426498280b ./libf2c/libU77/second_.c
-1721102323b ./libf2c/libU77/sleep_.c
- 366913838b ./libf2c/libU77/srand_.c
- 216805921b ./libf2c/libU77/stamp-h.in
-1858264400b ./libf2c/libU77/stat_.c
- 398713372b ./libf2c/libU77/symlnk_.c
-1023580093b ./libf2c/libU77/sys_clock_.c
-4060599200b ./libf2c/libU77/time_.c
-4222211870b ./libf2c/libU77/ttynam_.c
- 791266987b ./libf2c/libU77/u77-test.f
- 387772730b ./libf2c/libU77/umask_.c
-1230596654b ./libf2c/libU77/unlink_.c
-4065977549b ./libf2c/libU77/Version.c
-2702299573b ./libf2c/libU77/vxtidate_.c
-3987376609b ./libf2c/libU77/vxttime_.c
-3277779159b ./libf2c/Makefile.in
-1384146782b ./libf2c/permission.netlib
-3111321221b ./libf2c/README
-3513813969b ./libf2c/readme.netlib
- 308226469b ./libf2c/TODO
-1812706554b ./libffi/acconfig.h
-2067133813b ./libffi/acinclude.m4
- 724319761b ./libffi/aclocal.m4
-1801242156b ./libffi/ChangeLog
-2412263940b ./libffi/ChangeLog.libgcj
-1481682558b ./libffi/ChangeLog.v1
-3495452477b ./libffi/configure
-2032651767b ./libffi/configure.in
-1158949320b ./libffi/fficonfig.h.in
-3309556484b ./libffi/include/ffi_common.h
-2313143056b ./libffi/include/ffi.h.in
-2321044801b ./libffi/include/ffi_mips.h
-1175058075b ./libffi/include/Makefile.am
-3624063070b ./libffi/include/Makefile.in
-2593181117b ./libffi/LICENSE
-1657741728b ./libffi/Makefile.am
-3338553004b ./libffi/Makefile.in
-3508322383b ./libffi/README
-3852747706b ./libffi/src/alpha/ffi.c
-2032396460b ./libffi/src/alpha/osf.S
-4293371769b ./libffi/src/arm/ffi.c
- 591152992b ./libffi/src/arm/sysv.S
-2669027491b ./libffi/src/debug.c
- 269618381b ./libffi/src/ffitest.c
-2435449601b ./libffi/src/ia64/ffi.c
-1956966073b ./libffi/src/ia64/ia64_flags.h
-2886414800b ./libffi/src/ia64/unix.S
-2946352717b ./libffi/src/java_raw_api.c
-4236219331b ./libffi/src/m68k/ffi.c
-1684090594b ./libffi/src/m68k/sysv.S
-1785558758b ./libffi/src/mips/ffi.c
- 176940890b ./libffi/src/mips/n32.S
-3634355650b ./libffi/src/mips/o32.S
-2356375417b ./libffi/src/powerpc/aix_closure.S
-1342850260b ./libffi/src/powerpc/aix.S
- 257105690b ./libffi/src/powerpc/asm.h
-1992059182b ./libffi/src/powerpc/darwin_closure.S
- 91989017b ./libffi/src/powerpc/darwin.S
-1107349205b ./libffi/src/powerpc/ffi.c
- 342545621b ./libffi/src/powerpc/ffi_darwin.c
-2353704113b ./libffi/src/powerpc/ppc_closure.S
-1185461672b ./libffi/src/powerpc/sysv.S
-1962807490b ./libffi/src/prep_cif.c
-2419197691b ./libffi/src/raw_api.c
-1719114531b ./libffi/src/sparc/ffi.c
-1526185028b ./libffi/src/sparc/v8.S
-2310583994b ./libffi/src/sparc/v9.S
- 518804215b ./libffi/src/types.c
- 788399349b ./libffi/src/x86/ffi.c
- 760488121b ./libffi/src/x86/sysv.S
- 478025840b ./libffi/src/x86/win32.S
- 216805921b ./libffi/stamp-h.in
- 640604299b ./libiberty/aclocal.m4
-4169173798b ./libiberty/alloca.c
- 122203256b ./libiberty/argv.c
- 751194285b ./libiberty/asprintf.c
-3613577770b ./libiberty/atexit.c
- 412337659b ./libiberty/basename.c
-2877771686b ./libiberty/bcmp.c
-3653876397b ./libiberty/bcopy.c
-1033916047b ./libiberty/bsearch.c
-2389959529b ./libiberty/bzero.c
-1591293922b ./libiberty/calloc.c
-1121801877b ./libiberty/ChangeLog
-2264262326b ./libiberty/choose-temp.c
-2557767520b ./libiberty/clock.c
-3170582338b ./libiberty/concat.c
-1987387424b ./libiberty/config.h-vms
-2319815417b ./libiberty/config.in
-3500529335b ./libiberty/config/mh-aix
-3476234501b ./libiberty/config/mh-cxux7
-1235651640b ./libiberty/config/mh-fbsd21
-2904567379b ./libiberty/config/mh-openedition
-2131807358b ./libiberty/config/mh-windows
-4294237366b ./libiberty/config.table
-4091270154b ./libiberty/configure
-1024440091b ./libiberty/configure.in
- 508743035b ./libiberty/COPYING.LIB
-2478885430b ./libiberty/copying-lib.texi
-3329761531b ./libiberty/copysign.c
-2979121734b ./libiberty/cp-demangle.c
-2109007668b ./libiberty/cplus-dem.c
- 602306638b ./libiberty/_doprnt.c
-3785501494b ./libiberty/dyn-string.c
-1492855576b ./libiberty/fdmatch.c
-3977780801b ./libiberty/ffs.c
-2257696761b ./libiberty/fibheap.c
-2495949053b ./libiberty/floatformat.c
-1510070689b ./libiberty/fnmatch.c
-1078076716b ./libiberty/fnmatch.txh
- 85493406b ./libiberty/functions.texi
-3789905598b ./libiberty/gather-docs
-2046253791b ./libiberty/getcwd.c
-2320609345b ./libiberty/getopt1.c
-3944018229b ./libiberty/getopt.c
-3996466380b ./libiberty/getpagesize.c
-2690816019b ./libiberty/getpwd.c
-3425858883b ./libiberty/getruntime.c
-1214210640b ./libiberty/hashtab.c
-1870214410b ./libiberty/hex.c
-3335497459b ./libiberty/index.c
-3255705408b ./libiberty/insque.c
-1676968368b ./libiberty/lbasename.c
-1958824006b ./libiberty/libiberty.texi
-3183084918b ./libiberty/maint-tool
- 661006252b ./libiberty/Makefile.in
-3226217883b ./libiberty/makefile.vms
-2495473509b ./libiberty/make-temp-file.c
-3176875729b ./libiberty/md5.c
-1640952211b ./libiberty/memchr.c
-2120544197b ./libiberty/memcmp.c
- 998344495b ./libiberty/memcpy.c
-1685999989b ./libiberty/memmove.c
- 781584880b ./libiberty/memset.c
-1326635668b ./libiberty/mkstemps.c
-3930704547b ./libiberty/mpw.c
-2010995764b ./libiberty/mpw-config.in
-1580171809b ./libiberty/mpw-make.sed
-2503648631b ./libiberty/msdos.c
- 196373918b ./libiberty/objalloc.c
- 317557207b ./libiberty/obstack.c
-3821010694b ./libiberty/obstacks.texi
-1735078044b ./libiberty/partition.c
-2798791758b ./libiberty/pexecute.c
-3819346820b ./libiberty/putenv.c
-4197438328b ./libiberty/random.c
-4016047250b ./libiberty/README
-4045358849b ./libiberty/regex.c
-1175910896b ./libiberty/rename.c
-2903758838b ./libiberty/rindex.c
-2149284318b ./libiberty/safe-ctype.c
- 779495612b ./libiberty/setenv.c
-1334646884b ./libiberty/sigsetmask.c
- 532242404b ./libiberty/sort.c
-4103476962b ./libiberty/spaces.c
- 656918725b ./libiberty/splay-tree.c
-2341714522b ./libiberty/strcasecmp.c
-4233130047b ./libiberty/strchr.c
- 18952980b ./libiberty/strdup.c
-2389170415b ./libiberty/strerror.c
- 169676915b ./libiberty/strncasecmp.c
-1464675486b ./libiberty/strncmp.c
-1805839887b ./libiberty/strrchr.c
-3254160712b ./libiberty/strsignal.c
-2303974130b ./libiberty/strstr.c
-2399125104b ./libiberty/strtod.c
-2287814393b ./libiberty/strtol.c
-1828706574b ./libiberty/strtoul.c
-3268886825b ./libiberty/ternary.c
-3508543088b ./libiberty/testsuite/demangle-expected
-2389145348b ./libiberty/testsuite/Makefile.in
-2944174175b ./libiberty/testsuite/regress-demangle
-3862028978b ./libiberty/tmpnam.c
-3018358591b ./libiberty/vasprintf.c
-3875192457b ./libiberty/vfork.c
-3556593952b ./libiberty/vfprintf.c
-2773716443b ./libiberty/vmsbuild.com
-3899232273b ./libiberty/vprintf.c
-3719865817b ./libiberty/vsprintf.c
- 192504561b ./libiberty/waitpid.c
-3482083725b ./libiberty/xatexit.c
- 805686844b ./libiberty/xexit.c
-3313408860b ./libiberty/xmalloc.c
-1302531664b ./libiberty/xmemdup.c
- 991611298b ./libiberty/xstrdup.c
- 387398324b ./libiberty/xstrerror.c
- 426063533b ./libjava/acconfig.h
-3221815868b ./libjava/acinclude.m4
-3506621156b ./libjava/aclocal.m4
-3784840223b ./libjava/addr2name.awk
-2317653915b ./libjava/boehm.cc
- 38702888b ./libjava/ChangeLog
-3473562392b ./libjava/ChangeLog-1999
-2385951174b ./libjava/ChangeLog-2001
-2118024035b ./libjava/configure
-2328290871b ./libjava/configure.host
-3463448501b ./libjava/configure.in
-2171125041b ./libjava/COPYING
-3097747965b ./libjava/defineclass.cc
- 535801509b ./libjava/doc/cni.sgml
-1183730379b ./libjava/exception.cc
-3591403769b ./libjava/gcj/array.h
-1281724033b ./libjava/gcj/cni.h
- 227606957b ./libjava/gcj/field.h
-1774648773b ./libjava/gcj/javaprims.h
-1775313853b ./libjava/gcj/libgcj-config.h.in
-1011701793b ./libjava/gcj/Makefile.am
-3428145469b ./libjava/gcj/Makefile.in
-1073488355b ./libjava/gcj/method.h
-1055027936b ./libjava/gij.cc
-1596689297b ./libjava/gnu/awt/gtk/GtkButtonPeer.java
- 922026864b ./libjava/gnu/awt/gtk/gtkcommon.cc
-3699017559b ./libjava/gnu/awt/gtk/gtkcommon.h
-3410609778b ./libjava/gnu/awt/gtk/GtkComponentPeer.java
-2912275709b ./libjava/gnu/awt/gtk/GtkContainerPeer.java
-1877686985b ./libjava/gnu/awt/gtk/GtkFramePeer.java
- 34229675b ./libjava/gnu/awt/gtk/GtkLabelPeer.java
-3368349978b ./libjava/gnu/awt/gtk/GtkMainThread.java
-2212086115b ./libjava/gnu/awt/gtk/GtkToolkit.java
- 466557738b ./libjava/gnu/awt/gtk/GtkWindowPeer.java
-3416961245b ./libjava/gnu/awt/gtk/natGtkButtonPeer.cc
-2501282912b ./libjava/gnu/awt/gtk/natGtkComponentPeer.cc
- 861082488b ./libjava/gnu/awt/gtk/natGtkContainerPeer.cc
- 244230297b ./libjava/gnu/awt/gtk/natGtkFramePeer.cc
-3238461975b ./libjava/gnu/awt/gtk/natGtkLabelPeer.cc
-2820009429b ./libjava/gnu/awt/gtk/natGtkMainThread.cc
- 968113131b ./libjava/gnu/awt/gtk/natGtkToolkit.cc
-2864147854b ./libjava/gnu/awt/gtk/natGtkWindowPeer.cc
-2742774547b ./libjava/gnu/awt/j2d/AbstractGraphicsState.java
- 298830684b ./libjava/gnu/awt/j2d/DirectRasterGraphics.java
-1783524857b ./libjava/gnu/awt/j2d/Graphics2DImpl.java
-2946615030b ./libjava/gnu/awt/j2d/IntegerGraphicsState.java
- 823126662b ./libjava/gnu/awt/j2d/MappedRaster.java
-2535888045b ./libjava/gnu/awt/LightweightRedirector.java
-4203439929b ./libjava/gnu/awt/xlib/XCanvasPeer.java
-3055110597b ./libjava/gnu/awt/xlib/XEventLoop.java
-2886723915b ./libjava/gnu/awt/xlib/XEventQueue.java
-1386185884b ./libjava/gnu/awt/xlib/XFontMetrics.java
-1240842045b ./libjava/gnu/awt/xlib/XFramePeer.java
-1292730399b ./libjava/gnu/awt/xlib/XGraphicsConfiguration.java
-1394253720b ./libjava/gnu/awt/xlib/XGraphics.java
-4211424512b ./libjava/gnu/awt/xlib/XPanelPeer.java
-2089387515b ./libjava/gnu/awt/xlib/XToolkit.java
-3357000131b ./libjava/gnu/classpath/Configuration.java.in
-2926627917b ./libjava/gnu/gcj/convert/Blocks-3.txt
- 958965717b ./libjava/gnu/gcj/convert/BytesToUnicode.java
-3687721297b ./libjava/gnu/gcj/convert/Convert.java
-2990675168b ./libjava/gnu/gcj/convert/gen-from-JIS.c
- 624954174b ./libjava/gnu/gcj/convert/Input_8859_1.java
-1230020474b ./libjava/gnu/gcj/convert/Input_ASCII.java
- 271098151b ./libjava/gnu/gcj/convert/Input_EUCJIS.java
-1595200171b ./libjava/gnu/gcj/convert/Input_iconv.java
-2185755288b ./libjava/gnu/gcj/convert/Input_JavaSrc.java
-2110225778b ./libjava/gnu/gcj/convert/Input_SJIS.java
-1513325785b ./libjava/gnu/gcj/convert/Input_UTF8.java
-1955248518b ./libjava/gnu/gcj/convert/IOConverter.java
-3459137842b ./libjava/gnu/gcj/convert/JIS0201.h
-2049723314b ./libjava/gnu/gcj/convert/JIS0208.h
-4153637973b ./libjava/gnu/gcj/convert/JIS0208_to_Unicode.cc
-1075531862b ./libjava/gnu/gcj/convert/JIS0212.h
-2320550799b ./libjava/gnu/gcj/convert/JIS0212_to_Unicode.cc
-3112494990b ./libjava/gnu/gcj/convert/make-trie.c
-2305784698b ./libjava/gnu/gcj/convert/natIconv.cc
-3409212961b ./libjava/gnu/gcj/convert/natInput_EUCJIS.cc
-2514359574b ./libjava/gnu/gcj/convert/natInput_SJIS.cc
- 784829283b ./libjava/gnu/gcj/convert/natOutput_EUCJIS.cc
-4119160238b ./libjava/gnu/gcj/convert/natOutput_SJIS.cc
-2034070368b ./libjava/gnu/gcj/convert/Output_8859_1.java
-4217873292b ./libjava/gnu/gcj/convert/Output_ASCII.java
- 842766967b ./libjava/gnu/gcj/convert/Output_EUCJIS.java
- 58644124b ./libjava/gnu/gcj/convert/Output_iconv.java
-3127943909b ./libjava/gnu/gcj/convert/Output_JavaSrc.java
-3336489456b ./libjava/gnu/gcj/convert/Output_SJIS.java
-1644529420b ./libjava/gnu/gcj/convert/Output_UTF8.java
-2459634193b ./libjava/gnu/gcj/convert/UnicodeCharacterDatabase-3.0.0.html
-2507096442b ./libjava/gnu/gcj/convert/UnicodeData-3.0.0.txt
-4262149961b ./libjava/gnu/gcj/convert/UnicodeToBytes.java
-2676798711b ./libjava/gnu/gcj/convert/Unicode_to_JIS.cc
-2882288660b ./libjava/gnu/gcj/Core.java
-3580885543b ./libjava/gnu/gcj/io/DefaultMimeTypes.java
-1393439370b ./libjava/gnu/gcj/io/MimeTypes.java
-1645841998b ./libjava/gnu/gcj/io/natSimpleSHSStream.cc
- 88411881b ./libjava/gnu/gcj/io/shs.cc
-3951902308b ./libjava/gnu/gcj/io/shs.h
- 595453629b ./libjava/gnu/gcj/io/SimpleSHSStream.java
- 19196032b ./libjava/gnu/gcj/natCore.cc
-3713902803b ./libjava/gnu/gcj/protocol/core/Connection.java
-1924151198b ./libjava/gnu/gcj/protocol/core/CoreInputStream.java
-2886826729b ./libjava/gnu/gcj/protocol/core/Handler.java
-3112605791b ./libjava/gnu/gcj/protocol/core/natCoreInputStream.cc
- 640992483b ./libjava/gnu/gcj/protocol/file/Connection.java
-3103931425b ./libjava/gnu/gcj/protocol/file/Handler.java
- 635772836b ./libjava/gnu/gcj/protocol/http/Connection.java
- 132815256b ./libjava/gnu/gcj/protocol/http/Handler.java
-2878492435b ./libjava/gnu/gcj/protocol/jar/Connection.java
-1743208466b ./libjava/gnu/gcj/protocol/jar/Handler.java
-2282503099b ./libjava/gnu/gcj/RawData.java
- 501773112b ./libjava/gnu/gcj/runtime/FileDeleter.java
-1535802220b ./libjava/gnu/gcj/runtime/FinalizerThread.java
-1105934296b ./libjava/gnu/gcj/runtime/FirstThread.java
-4204305482b ./libjava/gnu/gcj/runtime/JNIWeakRef.java
-1025799273b ./libjava/gnu/gcj/runtime/natFinalizerThread.cc
-1558736281b ./libjava/gnu/gcj/runtime/natFirstThread.cc
-2521984623b ./libjava/gnu/gcj/runtime/natSharedLibLoader.cc
-2150610459b ./libjava/gnu/gcj/runtime/natStringBuffer.cc
-2135835481b ./libjava/gnu/gcj/runtime/SharedLibLoader.java
-3369847265b ./libjava/gnu/gcj/runtime/StringBuffer.java
-3662016298b ./libjava/gnu/gcj/runtime/VMClassLoader.java
- 66527498b ./libjava/gnu/gcj/xlib/Clip.java
-2501208995b ./libjava/gnu/gcj/xlib/Colormap.java
-4007691160b ./libjava/gnu/gcj/xlib/Display.java
- 334010163b ./libjava/gnu/gcj/xlib/Drawable.java
-3794271918b ./libjava/gnu/gcj/xlib/Font.java
-2207398681b ./libjava/gnu/gcj/xlib/GC.java
-2721622585b ./libjava/gnu/gcj/xlib/natClip.cc
- 313845725b ./libjava/gnu/gcj/xlib/natColormap.cc
-4037646551b ./libjava/gnu/gcj/xlib/natDisplay.cc
- 639031309b ./libjava/gnu/gcj/xlib/natDrawable.cc
-1648177432b ./libjava/gnu/gcj/xlib/natFont.cc
- 61045074b ./libjava/gnu/gcj/xlib/natGC.cc
-2441230090b ./libjava/gnu/gcj/xlib/natPixmap.cc
-1112468906b ./libjava/gnu/gcj/xlib/natScreen.cc
-3505240565b ./libjava/gnu/gcj/xlib/natVisual.cc
- 49610297b ./libjava/gnu/gcj/xlib/natWindowAttributes.cc
-3715533436b ./libjava/gnu/gcj/xlib/natWindow.cc
-2728656554b ./libjava/gnu/gcj/xlib/natWMSizeHints.cc
-2928451851b ./libjava/gnu/gcj/xlib/natXAnyEvent.cc
-1448210768b ./libjava/gnu/gcj/xlib/natXButtonEvent.cc
-1690231537b ./libjava/gnu/gcj/xlib/natXColor.cc
-2465747567b ./libjava/gnu/gcj/xlib/natXConfigureEvent.cc
-1372643816b ./libjava/gnu/gcj/xlib/natXException.cc
-1109730421b ./libjava/gnu/gcj/xlib/natXExposeEvent.cc
-2724939209b ./libjava/gnu/gcj/xlib/natXImage.cc
-2947736072b ./libjava/gnu/gcj/xlib/natXUnmapEvent.cc
-3285825579b ./libjava/gnu/gcj/xlib/Pixmap.java
-3350074944b ./libjava/gnu/gcj/xlib/Screen.java
- 442092378b ./libjava/gnu/gcj/xlib/Visual.java
-2703412405b ./libjava/gnu/gcj/xlib/WindowAttributes.java
-2300472805b ./libjava/gnu/gcj/xlib/Window.java
- 540355668b ./libjava/gnu/gcj/xlib/WMSizeHints.java
- 735616079b ./libjava/gnu/gcj/xlib/XAnyEvent.java
-2053093871b ./libjava/gnu/gcj/xlib/XButtonEvent.java
-1193490335b ./libjava/gnu/gcj/xlib/XColor.java
-3412915905b ./libjava/gnu/gcj/xlib/XConfigureEvent.java
-3680444774b ./libjava/gnu/gcj/xlib/XConnectException.java
-3758585380b ./libjava/gnu/gcj/xlib/XEvent.java
-2109559056b ./libjava/gnu/gcj/xlib/XException.java
-3813405109b ./libjava/gnu/gcj/xlib/XExposeEvent.java
-1394364288b ./libjava/gnu/gcj/xlib/XID.java
-2651203935b ./libjava/gnu/gcj/xlib/XImage.java
- 623452528b ./libjava/gnu/gcj/xlib/XUnmapEvent.java
- 251988486b ./libjava/gnu/java/awt/BitMaskExtent.java
-2959084409b ./libjava/gnu/java/awt/Buffers.java
-3864124155b ./libjava/gnu/java/awt/ComponentDataBlitOp.java
- 76001054b ./libjava/gnu/java/awt/GLightweightPeer.java
-4175984299b ./libjava/gnu/java/beans/BeanInfoEmbryo.java
-1186439895b ./libjava/gnu/java/beans/editors/ColorEditor.java
-1824068032b ./libjava/gnu/java/beans/editors/FontEditor.java
-1141912550b ./libjava/gnu/java/beans/editors/NativeBooleanEditor.java
-3464614661b ./libjava/gnu/java/beans/editors/NativeByteEditor.java
-2154821458b ./libjava/gnu/java/beans/editors/NativeDoubleEditor.java
- 956044404b ./libjava/gnu/java/beans/editors/NativeFloatEditor.java
-1106992351b ./libjava/gnu/java/beans/editors/NativeIntEditor.java
-3649786395b ./libjava/gnu/java/beans/editors/NativeLongEditor.java
-2388248931b ./libjava/gnu/java/beans/editors/NativeShortEditor.java
- 84373625b ./libjava/gnu/java/beans/editors/StringEditor.java
-1050980841b ./libjava/gnu/java/beans/EmptyBeanInfo.java
-4274204668b ./libjava/gnu/java/beans/ExplicitBeanInfo.java
-3309737548b ./libjava/gnu/java/beans/info/ComponentBeanInfo.java
-2859546207b ./libjava/gnu/java/beans/IntrospectionIncubator.java
-1517826185b ./libjava/gnu/java/io/ClassLoaderObjectInputStream.java
- 185400995b ./libjava/gnu/java/io/NullOutputStream.java
- 337775204b ./libjava/gnu/java/io/ObjectIdentityWrapper.java
- 412146955b ./libjava/gnu/java/lang/ArrayHelper.java
-1957385229b ./libjava/gnu/java/lang/CharData.java
-1294839044b ./libjava/gnu/java/lang/ClassHelper.java
- 375881807b ./libjava/gnu/java/lang/reflect/TypeSignature.java
-3366025795b ./libjava/gnu/java/locale/Calendar_de.java
-3838960820b ./libjava/gnu/java/locale/Calendar_en.java
-3367817123b ./libjava/gnu/java/locale/Calendar.java
-2827383186b ./libjava/gnu/java/locale/Calendar_nl.java
- 853990452b ./libjava/gnu/java/locale/LocaleInformation_af_ZA.java
-3574665519b ./libjava/gnu/java/locale/LocaleInformation_ar_AE.java
-1313953526b ./libjava/gnu/java/locale/LocaleInformation_ar_BH.java
-1063099118b ./libjava/gnu/java/locale/LocaleInformation_ar_DZ.java
-2661355701b ./libjava/gnu/java/locale/LocaleInformation_ar_EG.java
- 792384655b ./libjava/gnu/java/locale/LocaleInformation_ar_IN.java
-2984374613b ./libjava/gnu/java/locale/LocaleInformation_ar_IQ.java
- 149108303b ./libjava/gnu/java/locale/LocaleInformation_ar_JO.java
-3524478720b ./libjava/gnu/java/locale/LocaleInformation_ar_KW.java
- 83370893b ./libjava/gnu/java/locale/LocaleInformation_ar_LB.java
-3602937944b ./libjava/gnu/java/locale/LocaleInformation_ar_LY.java
-4151428411b ./libjava/gnu/java/locale/LocaleInformation_ar_MA.java
-4074629453b ./libjava/gnu/java/locale/LocaleInformation_ar_OM.java
-4155901603b ./libjava/gnu/java/locale/LocaleInformation_ar_QA.java
-2390802667b ./libjava/gnu/java/locale/LocaleInformation_ar_SD.java
- 658870558b ./libjava/gnu/java/locale/LocaleInformation_ar_SY.java
- 633628430b ./libjava/gnu/java/locale/LocaleInformation_ar_TN.java
-3417988329b ./libjava/gnu/java/locale/LocaleInformation_ar_YE.java
- 16694947b ./libjava/gnu/java/locale/LocaleInformation_be_BY.java
-2893823739b ./libjava/gnu/java/locale/LocaleInformation_bn_IN.java
-3473497973b ./libjava/gnu/java/locale/LocaleInformation_br_FR.java
-2011654773b ./libjava/gnu/java/locale/LocaleInformation_bs_BA.java
- 703208961b ./libjava/gnu/java/locale/LocaleInformation_ca_ES.java
-3606272911b ./libjava/gnu/java/locale/LocaleInformation_cs_CZ.java
-3029808974b ./libjava/gnu/java/locale/LocaleInformation_cy_GB.java
-3138806717b ./libjava/gnu/java/locale/LocaleInformation_da_DK.java
- 660397810b ./libjava/gnu/java/locale/LocaleInformation_de_AT.java
-2697869622b ./libjava/gnu/java/locale/LocaleInformation_de_BE.java
-1184133602b ./libjava/gnu/java/locale/LocaleInformation_de_CH.java
-2039543804b ./libjava/gnu/java/locale/LocaleInformation_de_DE.java
-1896252461b ./libjava/gnu/java/locale/LocaleInformation_de.java
-1754963126b ./libjava/gnu/java/locale/LocaleInformation_de_LU.java
-1950789713b ./libjava/gnu/java/locale/LocaleInformation_el_GR.java
-3105733407b ./libjava/gnu/java/locale/LocaleInformation_en_AU.java
-1645688637b ./libjava/gnu/java/locale/LocaleInformation_en_BW.java
-1552823020b ./libjava/gnu/java/locale/LocaleInformation_en_CA.java
-1224627615b ./libjava/gnu/java/locale/LocaleInformation_en_DK.java
-1660785124b ./libjava/gnu/java/locale/LocaleInformation_en_GB.java
-3654129156b ./libjava/gnu/java/locale/LocaleInformation_en_HK.java
-1423793734b ./libjava/gnu/java/locale/LocaleInformation_en_IE.java
-3034389835b ./libjava/gnu/java/locale/LocaleInformation_en_IN.java
-1639156831b ./libjava/gnu/java/locale/LocaleInformation_en.java
-4146466217b ./libjava/gnu/java/locale/LocaleInformation_en_NZ.java
-2700111700b ./libjava/gnu/java/locale/LocaleInformation_en_PH.java
-1734741103b ./libjava/gnu/java/locale/LocaleInformation_en_SG.java
-3123474486b ./libjava/gnu/java/locale/LocaleInformation_en_US.java
-1439333667b ./libjava/gnu/java/locale/LocaleInformation_en_ZA.java
- 835156286b ./libjava/gnu/java/locale/LocaleInformation_en_ZW.java
-3007131568b ./libjava/gnu/java/locale/LocaleInformation_es_AR.java
-3464689606b ./libjava/gnu/java/locale/LocaleInformation_es_BO.java
-2989224997b ./libjava/gnu/java/locale/LocaleInformation_es_CL.java
- 308487454b ./libjava/gnu/java/locale/LocaleInformation_es_CO.java
-1200270410b ./libjava/gnu/java/locale/LocaleInformation_es_CR.java
-1068207106b ./libjava/gnu/java/locale/LocaleInformation_es_DO.java
- 14677377b ./libjava/gnu/java/locale/LocaleInformation_es_EC.java
-3508510841b ./libjava/gnu/java/locale/LocaleInformation_es_ES.java
- 649064556b ./libjava/gnu/java/locale/LocaleInformation_es_GT.java
-3444054086b ./libjava/gnu/java/locale/LocaleInformation_es_HN.java
-3555909696b ./libjava/gnu/java/locale/LocaleInformation_es_MX.java
-2833308305b ./libjava/gnu/java/locale/LocaleInformation_es_NI.java
-4174396920b ./libjava/gnu/java/locale/LocaleInformation_es_PA.java
- 838660172b ./libjava/gnu/java/locale/LocaleInformation_es_PE.java
-3589446087b ./libjava/gnu/java/locale/LocaleInformation_es_PR.java
-4075678248b ./libjava/gnu/java/locale/LocaleInformation_es_PY.java
-2329208913b ./libjava/gnu/java/locale/LocaleInformation_es_SV.java
-2413424051b ./libjava/gnu/java/locale/LocaleInformation_es_US.java
-2571158522b ./libjava/gnu/java/locale/LocaleInformation_es_UY.java
-3961724338b ./libjava/gnu/java/locale/LocaleInformation_es_VE.java
-1652877014b ./libjava/gnu/java/locale/LocaleInformation_et_EE.java
-1998932970b ./libjava/gnu/java/locale/LocaleInformation_eu_ES.java
-1225517253b ./libjava/gnu/java/locale/LocaleInformation_fa_IR.java
-4095933109b ./libjava/gnu/java/locale/LocaleInformation_fi_FI.java
-4260527638b ./libjava/gnu/java/locale/LocaleInformation_fo_FO.java
- 313030804b ./libjava/gnu/java/locale/LocaleInformation_fr_BE.java
- 929726634b ./libjava/gnu/java/locale/LocaleInformation_fr_CA.java
-3560295796b ./libjava/gnu/java/locale/LocaleInformation_fr_CH.java
-1651927254b ./libjava/gnu/java/locale/LocaleInformation_fr_FR.java
-1770965918b ./libjava/gnu/java/locale/LocaleInformation_fr_LU.java
-2930632457b ./libjava/gnu/java/locale/LocaleInformation_ga_IE.java
-3764917948b ./libjava/gnu/java/locale/LocaleInformation_gd_GB.java
- 184397736b ./libjava/gnu/java/locale/LocaleInformation_gl_ES.java
-4075108403b ./libjava/gnu/java/locale/LocaleInformation_gv_GB.java
-3671687849b ./libjava/gnu/java/locale/LocaleInformation_he_IL.java
-1551837931b ./libjava/gnu/java/locale/LocaleInformation_hi_IN.java
-2876691276b ./libjava/gnu/java/locale/LocaleInformation_hr_HR.java
-2174207126b ./libjava/gnu/java/locale/LocaleInformation_hu_HU.java
-2936636022b ./libjava/gnu/java/locale/LocaleInformation_id_ID.java
- 679304833b ./libjava/gnu/java/locale/LocaleInformation_it_CH.java
-2288758679b ./libjava/gnu/java/locale/LocaleInformation_it_IT.java
-1670529133b ./libjava/gnu/java/locale/LocaleInformation_iw_IL.java
-4285275820b ./libjava/gnu/java/locale/LocaleInformation_ja_JP.java
- 88782889b ./libjava/gnu/java/locale/LocaleInformation.java
- 305209674b ./libjava/gnu/java/locale/LocaleInformation_ka_GE.java
- 289636212b ./libjava/gnu/java/locale/LocaleInformation_kl_GL.java
-3381743821b ./libjava/gnu/java/locale/LocaleInformation_ko_KR.java
-1243496183b ./libjava/gnu/java/locale/LocaleInformation_kw_GB.java
- 808874315b ./libjava/gnu/java/locale/LocaleInformation_lt_LT.java
-3825187332b ./libjava/gnu/java/locale/LocaleInformation_lv_LV.java
-3084880379b ./libjava/gnu/java/locale/LocaleInformation_mi_NZ.java
-1118828067b ./libjava/gnu/java/locale/LocaleInformation_mk_MK.java
-3470919889b ./libjava/gnu/java/locale/LocaleInformation_mr_IN.java
-3011395902b ./libjava/gnu/java/locale/LocaleInformation_mt_MT.java
-3941557872b ./libjava/gnu/java/locale/LocaleInformation_nl_BE.java
- 803932216b ./libjava/gnu/java/locale/LocaleInformation_nl.java
-2192944115b ./libjava/gnu/java/locale/LocaleInformation_nl_NL.java
- 171051379b ./libjava/gnu/java/locale/LocaleInformation_nn_NO.java
-1581832797b ./libjava/gnu/java/locale/LocaleInformation_no_NO.java
-1219732943b ./libjava/gnu/java/locale/LocaleInformation_oc_FR.java
-2114116519b ./libjava/gnu/java/locale/LocaleInformation_pl_PL.java
-1296721389b ./libjava/gnu/java/locale/LocaleInformation_pt_BR.java
- 532295687b ./libjava/gnu/java/locale/LocaleInformation_pt_PT.java
-3905012288b ./libjava/gnu/java/locale/LocaleInformation_ro_RO.java
-2891469302b ./libjava/gnu/java/locale/LocaleInformation_ru_RU.java
-2211921262b ./libjava/gnu/java/locale/LocaleInformation_ru_UA.java
-2154597673b ./libjava/gnu/java/locale/LocaleInformation_se_NO.java
-1657728755b ./libjava/gnu/java/locale/LocaleInformation_sk_SK.java
-4026231879b ./libjava/gnu/java/locale/LocaleInformation_sl_SI.java
-2922727788b ./libjava/gnu/java/locale/LocaleInformation_sq_AL.java
-3806137820b ./libjava/gnu/java/locale/LocaleInformation_sr_YU.java
-1835499757b ./libjava/gnu/java/locale/LocaleInformation_sv_FI.java
-1350098382b ./libjava/gnu/java/locale/LocaleInformation_sv_SE.java
- 189094633b ./libjava/gnu/java/locale/LocaleInformation_ta_IN.java
-2178333634b ./libjava/gnu/java/locale/LocaleInformation_te_IN.java
-2564074117b ./libjava/gnu/java/locale/LocaleInformation_tg_TJ.java
-1155895744b ./libjava/gnu/java/locale/LocaleInformation_tl_PH.java
-2362053980b ./libjava/gnu/java/locale/LocaleInformation_tr_TR.java
-1718823447b ./libjava/gnu/java/locale/LocaleInformation_uk_UA.java
-3861809213b ./libjava/gnu/java/locale/LocaleInformation_ur_PK.java
- 3380107b ./libjava/gnu/java/locale/LocaleInformation_uz_UZ.java
-1701278586b ./libjava/gnu/java/locale/LocaleInformation_vi_VN.java
-1606209787b ./libjava/gnu/java/locale/LocaleInformation_yi_US.java
-2421213319b ./libjava/gnu/java/locale/LocaleInformation_zh_CN.java
- 183615398b ./libjava/gnu/java/locale/LocaleInformation_zh_HK.java
-1075516168b ./libjava/gnu/java/locale/LocaleInformation_zh_SG.java
-3357709537b ./libjava/gnu/java/locale/LocaleInformation_zh_TW.java
-3391912438b ./libjava/gnu/java/math/MPN.java
-4169108228b ./libjava/gnu/java/rmi/dgc/DGCImpl.java
-4171280577b ./libjava/gnu/java/rmi/dgc/DGCImpl_Skel.java
-1424132902b ./libjava/gnu/java/rmi/dgc/DGCImpl_Stub.java
-1371885502b ./libjava/gnu/java/rmi/registry/RegistryImpl.java
- 583279947b ./libjava/gnu/java/rmi/registry/RegistryImpl_Skel.java
- 44985979b ./libjava/gnu/java/rmi/registry/RegistryImpl_Stub.java
-3466229248b ./libjava/gnu/java/rmi/rmic/Compile_gcj.java
-2495154954b ./libjava/gnu/java/rmi/rmic/Compiler.java
-2850269889b ./libjava/gnu/java/rmi/rmic/CompilerProcess.java
-4019537723b ./libjava/gnu/java/rmi/rmic/RMIC.java
- 634294081b ./libjava/gnu/java/rmi/rmic/TabbedWriter.java
-2494884681b ./libjava/gnu/java/rmi/server/ProtocolConstants.java
-1676680003b ./libjava/gnu/java/rmi/server/RMIDefaultSocketFactory.java
-2333110819b ./libjava/gnu/java/rmi/server/RMIHashes.java
- 742398258b ./libjava/gnu/java/rmi/server/RMIObjectInputStream.java
-1754833006b ./libjava/gnu/java/rmi/server/RMIObjectOutputStream.java
-3598051261b ./libjava/gnu/java/rmi/server/UnicastConnection.java
-2756896208b ./libjava/gnu/java/rmi/server/UnicastConnectionManager.java
-1237410073b ./libjava/gnu/java/rmi/server/UnicastRef.java
- 764069575b ./libjava/gnu/java/rmi/server/UnicastRemoteCall.java
-2008823240b ./libjava/gnu/java/rmi/server/UnicastRemoteStub.java
-2722838441b ./libjava/gnu/java/rmi/server/UnicastServer.java
-3552747973b ./libjava/gnu/java/rmi/server/UnicastServerRef.java
- 841643156b ./libjava/gnu/java/security/provider/DefaultPolicy.java
- 663745795b ./libjava/gnu/java/security/provider/Gnu.java
-1021717986b ./libjava/gnu/java/security/provider/SHA1PRNG.java
-2413849314b ./libjava/gnu/java/security/provider/SHA.java
-1289725769b ./libjava/gnu/java/text/BaseBreakIterator.java
-3390709828b ./libjava/gnu/java/text/CharacterBreakIterator.java
-1407853328b ./libjava/gnu/java/text/LineBreakIterator.java
-2384000550b ./libjava/gnu/java/text/SentenceBreakIterator.java
-1103805396b ./libjava/gnu/java/text/WordBreakIterator.java
-3820369931b ./libjava/gnu/java/util/DoubleEnumeration.java
-1487334009b ./libjava/HACKING
- 264180982b ./libjava/include/boehm-gc.h
-2986199884b ./libjava/include/config.h.in
-1108817619b ./libjava/include/default-signal.h
- 833024369b ./libjava/include/dwarf2-signal.h
-1283777735b ./libjava/include/i386-signal.h
- 590982531b ./libjava/include/java-assert.h
- 890969256b ./libjava/include/java-chardecomp.h
-3721703006b ./libjava/include/java-chartables.h
- 11772111b ./libjava/include/java-cpool.h
-2197729359b ./libjava/include/java-insns.h
-1956488254b ./libjava/include/java-interp.h
- 770850052b ./libjava/include/java-props.h
-4043128117b ./libjava/include/jni.h
-1917986290b ./libjava/include/jvm.h
-1398877611b ./libjava/include/jvmpi.h
-2049405362b ./libjava/include/Makefile.am
-2861273894b ./libjava/include/Makefile.in
-1055189824b ./libjava/include/name-finder.h
- 528567171b ./libjava/include/no-gc.h
-2243083888b ./libjava/include/no-threads.h
-1563983297b ./libjava/include/posix.h
-2807487107b ./libjava/include/posix-threads.h
-1012702888b ./libjava/include/sparc-signal.h
- 216805921b ./libjava/include/stamp-h.in
- 976467848b ./libjava/include/win32.h
-2649356437b ./libjava/include/win32-signal.h
-2413743549b ./libjava/include/win32-threads.h
-3593727190b ./libjava/interpret.cc
-1953201146b ./libjava/java/applet/AppletContext.java
-2958027378b ./libjava/java/applet/Applet.java
-2731140101b ./libjava/java/applet/AppletStub.java
-3593095746b ./libjava/java/applet/AudioClip.java
- 160993819b ./libjava/java/awt/ActiveEvent.java
-3526070699b ./libjava/java/awt/Adjustable.java
-1157609128b ./libjava/java/awt/AWTError.java
- 111816746b ./libjava/java/awt/AWTEvent.java
-4165999385b ./libjava/java/awt/AWTEventMulticaster.java
- 825557229b ./libjava/java/awt/AWTException.java
- 285605791b ./libjava/java/awt/AWTPermission.java
-3534694635b ./libjava/java/awt/BorderLayout.java
-1398395335b ./libjava/java/awt/Button.java
-3153758342b ./libjava/java/awt/Canvas.java
-2092554577b ./libjava/java/awt/CardLayout.java
-2084690368b ./libjava/java/awt/CheckboxGroup.java
-2248202942b ./libjava/java/awt/Checkbox.java
-1349721036b ./libjava/java/awt/CheckboxMenuItem.java
-1888831652b ./libjava/java/awt/Choice.java
-1282085816b ./libjava/java/awt/color/ColorSpace.java
-2276155610b ./libjava/java/awt/color/ICC_ColorSpace.java
-4017444258b ./libjava/java/awt/color/ICC_Profile.java
-1705431914b ./libjava/java/awt/Color.java
-1148661590b ./libjava/java/awt/Component.java
- 361324264b ./libjava/java/awt/ComponentOrientation.java
-2162499700b ./libjava/java/awt/Container.java
-4143803538b ./libjava/java/awt/Cursor.java
- 275075726b ./libjava/java/awt/datatransfer/Clipboard.java
-4070519256b ./libjava/java/awt/datatransfer/ClipboardOwner.java
- 61459584b ./libjava/java/awt/datatransfer/DataFlavor.java
- 783509723b ./libjava/java/awt/datatransfer/FlavorMap.java
- 579142958b ./libjava/java/awt/datatransfer/MimeTypeParseException.java
- 253155729b ./libjava/java/awt/datatransfer/StringSelection.java
- 219256387b ./libjava/java/awt/datatransfer/SystemFlavorMap.java
-1647430043b ./libjava/java/awt/datatransfer/Transferable.java
-1851200747b ./libjava/java/awt/datatransfer/UnsupportedFlavorException.java
-3031261269b ./libjava/java/awt/Dialog.java
-2683530461b ./libjava/java/awt/Dimension.java
- 722690297b ./libjava/java/awt/event/ActionEvent.java
-1915593531b ./libjava/java/awt/event/ActionListener.java
-3892890048b ./libjava/java/awt/event/AdjustmentEvent.java
- 463745915b ./libjava/java/awt/event/AdjustmentListener.java
-3809396958b ./libjava/java/awt/event/AWTEventListener.java
-2557579579b ./libjava/java/awt/event/ComponentAdapter.java
-3039204703b ./libjava/java/awt/event/ComponentEvent.java
- 360564300b ./libjava/java/awt/event/ComponentListener.java
- 810761210b ./libjava/java/awt/event/ContainerAdapter.java
-2468937091b ./libjava/java/awt/event/ContainerEvent.java
- 95255207b ./libjava/java/awt/event/ContainerListener.java
- 483492170b ./libjava/java/awt/EventDispatchThread.java
-1865939252b ./libjava/java/awt/event/FocusAdapter.java
- 934630871b ./libjava/java/awt/event/FocusEvent.java
-4001635571b ./libjava/java/awt/event/FocusListener.java
-4282322346b ./libjava/java/awt/event/HierarchyBoundsAdapter.java
-2758355953b ./libjava/java/awt/event/HierarchyBoundsListener.java
-2116272606b ./libjava/java/awt/event/HierarchyEvent.java
-2771680955b ./libjava/java/awt/event/HierarchyListener.java
- 702145522b ./libjava/java/awt/event/InputEvent.java
- 726380493b ./libjava/java/awt/event/InputMethodEvent.java
-4033049562b ./libjava/java/awt/event/InputMethodListener.java
-1843469307b ./libjava/java/awt/event/InvocationEvent.java
-3611652050b ./libjava/java/awt/event/ItemEvent.java
-3300913656b ./libjava/java/awt/event/ItemListener.java
-1493568122b ./libjava/java/awt/Event.java
-1564566587b ./libjava/java/awt/event/KeyAdapter.java
-3711723317b ./libjava/java/awt/event/KeyEvent.java
-1381805491b ./libjava/java/awt/event/KeyListener.java
-2313273360b ./libjava/java/awt/event/MouseAdapter.java
-2126050085b ./libjava/java/awt/event/MouseEvent.java
-1649544172b ./libjava/java/awt/event/MouseListener.java
-1060229023b ./libjava/java/awt/event/MouseMotionAdapter.java
-1773953094b ./libjava/java/awt/event/MouseMotionListener.java
- 560349420b ./libjava/java/awt/event/PaintEvent.java
- 651462567b ./libjava/java/awt/EventQueue.java
-3023928876b ./libjava/java/awt/event/TextEvent.java
-2239555241b ./libjava/java/awt/event/TextListener.java
-2939336909b ./libjava/java/awt/event/WindowAdapter.java
-3033208050b ./libjava/java/awt/event/WindowEvent.java
-1930937502b ./libjava/java/awt/event/WindowListener.java
-1194915480b ./libjava/java/awt/FileDialog.java
-3367824178b ./libjava/java/awt/FlowLayout.java
-1157240010b ./libjava/java/awt/Font.java
- 484873117b ./libjava/java/awt/FontMetrics.java
-1144124992b ./libjava/java/awt/Frame.java
-2545826257b ./libjava/java/awt/geom/AffineTransform.java
-4013428113b ./libjava/java/awt/geom/Dimension2D.java
-4073501358b ./libjava/java/awt/geom/Ellipse2D.java
-2790798005b ./libjava/java/awt/geom/IllegalPathStateException.java
- 400349421b ./libjava/java/awt/geom/Line2D.java
-1253586302b ./libjava/java/awt/geom/NoninvertibleTransformException.java
-1513833568b ./libjava/java/awt/geom/PathIterator.java
-3208068889b ./libjava/java/awt/geom/Point2D.java
-1401543311b ./libjava/java/awt/geom/Rectangle2D.java
-1140671299b ./libjava/java/awt/geom/RectangularShape.java
-3886036733b ./libjava/java/awt/geom/RoundRectangle2D.java
-3811561912b ./libjava/java/awt/Graphics2D.java
- 986514240b ./libjava/java/awt/GraphicsConfiguration.java
-2012998318b ./libjava/java/awt/Graphics.java
-2629743040b ./libjava/java/awt/GridBagConstraints.java
-2079310366b ./libjava/java/awt/GridLayout.java
- 681353006b ./libjava/java/awt/IllegalComponentStateException.java
-2039150620b ./libjava/java/awt/image/AreaAveragingScaleFilter.java
- 47278745b ./libjava/java/awt/image/BufferedImage.java
- 897500197b ./libjava/java/awt/image/ColorModel.java
- 109440071b ./libjava/java/awt/image/ComponentColorModel.java
-1906201349b ./libjava/java/awt/image/ComponentSampleModel.java
-3384911687b ./libjava/java/awt/image/CropImageFilter.java
-3465530846b ./libjava/java/awt/image/DataBufferByte.java
-4075525464b ./libjava/java/awt/image/DataBufferInt.java
- 634855604b ./libjava/java/awt/image/DataBuffer.java
-3095543468b ./libjava/java/awt/image/DataBufferUShort.java
-1806419668b ./libjava/java/awt/image/DirectColorModel.java
-3631042426b ./libjava/java/awt/image/FilteredImageSource.java
-2890896341b ./libjava/java/awt/image/ImageConsumer.java
-1624439520b ./libjava/java/awt/image/ImageFilter.java
-4043851738b ./libjava/java/awt/image/ImageObserver.java
-3411264349b ./libjava/java/awt/image/ImageProducer.java
-2968747135b ./libjava/java/awt/image/IndexColorModel.java
-4141700730b ./libjava/java/awt/Image.java
-1393501117b ./libjava/java/awt/image/MemoryImageSource.java
-1585332925b ./libjava/java/awt/image/PackedColorModel.java
-1331801894b ./libjava/java/awt/image/PixelGrabber.java
-1883441019b ./libjava/java/awt/image/Raster.java
- 869369986b ./libjava/java/awt/image/RasterOp.java
-3510533440b ./libjava/java/awt/image/ReplicateScaleFilter.java
-4052348878b ./libjava/java/awt/image/RGBImageFilter.java
-1652657911b ./libjava/java/awt/image/SampleModel.java
-2512892899b ./libjava/java/awt/image/SinglePixelPackedSampleModel.java
- 4567438b ./libjava/java/awt/image/WritableRaster.java
- 4084426b ./libjava/java/awt/Insets.java
-3129189005b ./libjava/java/awt/ItemSelectable.java
-1439045277b ./libjava/java/awt/Label.java
-3544278012b ./libjava/java/awt/LayoutManager2.java
-2458754937b ./libjava/java/awt/LayoutManager.java
-2578681493b ./libjava/java/awt/List.java
-4032096533b ./libjava/java/awt/MediaTracker.java
-3704860539b ./libjava/java/awt/MenuBar.java
-1793267135b ./libjava/java/awt/MenuComponent.java
-3297700167b ./libjava/java/awt/MenuContainer.java
- 641743542b ./libjava/java/awt/MenuItem.java
-2620146298b ./libjava/java/awt/Menu.java
-2408918380b ./libjava/java/awt/MenuShortcut.java
-3861110754b ./libjava/java/awt/PaintContext.java
-2127085069b ./libjava/java/awt/Paint.java
-3663039317b ./libjava/java/awt/Panel.java
-1611158274b ./libjava/java/awt/peer/ButtonPeer.java
-1171238008b ./libjava/java/awt/peer/CanvasPeer.java
- 483129233b ./libjava/java/awt/peer/CheckboxMenuItemPeer.java
-1055872542b ./libjava/java/awt/peer/CheckboxPeer.java
-2176941064b ./libjava/java/awt/peer/ChoicePeer.java
-1485974642b ./libjava/java/awt/peer/ComponentPeer.java
- 385477645b ./libjava/java/awt/peer/ContainerPeer.java
-1630111979b ./libjava/java/awt/peer/DialogPeer.java
-3476723069b ./libjava/java/awt/peer/FileDialogPeer.java
-1821313126b ./libjava/java/awt/peer/FontPeer.java
-2885509310b ./libjava/java/awt/peer/FramePeer.java
-1219267739b ./libjava/java/awt/peer/LabelPeer.java
- 542666273b ./libjava/java/awt/peer/LightweightPeer.java
-2680629684b ./libjava/java/awt/peer/ListPeer.java
- 721644029b ./libjava/java/awt/peer/MenuBarPeer.java
-1694400788b ./libjava/java/awt/peer/MenuComponentPeer.java
-2412205583b ./libjava/java/awt/peer/MenuItemPeer.java
-2144114987b ./libjava/java/awt/peer/MenuPeer.java
-3010921620b ./libjava/java/awt/peer/PanelPeer.java
-3378714445b ./libjava/java/awt/peer/PopupMenuPeer.java
-2932476036b ./libjava/java/awt/peer/ScrollbarPeer.java
- 921008058b ./libjava/java/awt/peer/ScrollPanePeer.java
-4184845888b ./libjava/java/awt/peer/TextAreaPeer.java
-1984969162b ./libjava/java/awt/peer/TextComponentPeer.java
-3129312744b ./libjava/java/awt/peer/TextFieldPeer.java
-2230435871b ./libjava/java/awt/peer/WindowPeer.java
-2267781966b ./libjava/java/awt/Point.java
-2495677833b ./libjava/java/awt/Polygon.java
- 931171809b ./libjava/java/awt/PopupMenu.java
-2031272343b ./libjava/java/awt/PrintGraphics.java
-2842009822b ./libjava/java/awt/PrintJob.java
-1514649029b ./libjava/java/awt/Rectangle.java
-3814610113b ./libjava/java/awt/RenderingHints.java
-1642159056b ./libjava/java/awt/Scrollbar.java
-3117778311b ./libjava/java/awt/ScrollPane.java
-2074345175b ./libjava/java/awt/Shape.java
-1158345737b ./libjava/java/awt/SystemColor.java
-3469060179b ./libjava/java/awt/TextArea.java
- 725438430b ./libjava/java/awt/TextComponent.java
-4163002735b ./libjava/java/awt/TextField.java
-1661689740b ./libjava/java/awt/Toolkit.java
-3337245196b ./libjava/java/awt/Transparency.java
-2530618234b ./libjava/java/awt/Window.java
-1515366999b ./libjava/java/beans/AppletInitializer.java
-2669908550b ./libjava/java/beans/beancontext/BeanContextChildComponentProxy.java
-1680972619b ./libjava/java/beans/beancontext/BeanContextChild.java
-1680093002b ./libjava/java/beans/beancontext/BeanContextChildSupport.java
-1094587434b ./libjava/java/beans/beancontext/BeanContextContainerProxy.java
-1135449293b ./libjava/java/beans/beancontext/BeanContextEvent.java
-2767542609b ./libjava/java/beans/beancontext/BeanContext.java
- 242862210b ./libjava/java/beans/beancontext/BeanContextMembershipEvent.java
-2481552408b ./libjava/java/beans/beancontext/BeanContextMembershipListener.java
-2023778890b ./libjava/java/beans/beancontext/BeanContextProxy.java
-3567375214b ./libjava/java/beans/beancontext/BeanContextServiceAvailableEvent.java
-1524483334b ./libjava/java/beans/beancontext/BeanContextServiceProviderBeanInfo.java
-2290646255b ./libjava/java/beans/beancontext/BeanContextServiceProvider.java
-3486010592b ./libjava/java/beans/beancontext/BeanContextServiceRevokedEvent.java
-1792611913b ./libjava/java/beans/beancontext/BeanContextServiceRevokedListener.java
- 172300183b ./libjava/java/beans/beancontext/BeanContextServices.java
- 649450665b ./libjava/java/beans/beancontext/BeanContextServicesListener.java
-1833441000b ./libjava/java/beans/BeanDescriptor.java
-1195953294b ./libjava/java/beans/BeanInfo.java
- 744629114b ./libjava/java/beans/Beans.java
-2117723836b ./libjava/java/beans/Customizer.java
-1994194050b ./libjava/java/beans/DesignMode.java
-3820662012b ./libjava/java/beans/EventSetDescriptor.java
-4125494981b ./libjava/java/beans/FeatureDescriptor.java
-1047826036b ./libjava/java/beans/IndexedPropertyDescriptor.java
-2875985243b ./libjava/java/beans/IntrospectionException.java
-1848432301b ./libjava/java/beans/Introspector.java
- 649392727b ./libjava/java/beans/MethodDescriptor.java
-3829002128b ./libjava/java/beans/ParameterDescriptor.java
-1516690242b ./libjava/java/beans/PropertyChangeEvent.java
- 469117173b ./libjava/java/beans/PropertyChangeListener.java
- 703973953b ./libjava/java/beans/PropertyChangeSupport.java
-2757753208b ./libjava/java/beans/PropertyDescriptor.java
- 199700315b ./libjava/java/beans/PropertyEditor.java
-1782408506b ./libjava/java/beans/PropertyEditorManager.java
-1820268780b ./libjava/java/beans/PropertyEditorSupport.java
-4007301740b ./libjava/java/beans/PropertyVetoException.java
-2552578115b ./libjava/java/beans/SimpleBeanInfo.java
-1050530153b ./libjava/java/beans/VetoableChangeListener.java
- 292324922b ./libjava/java/beans/VetoableChangeSupport.java
-1473289197b ./libjava/java/beans/Visibility.java
- 200470800b ./libjava/java/io/BufferedInputStream.java
- 369879890b ./libjava/java/io/BufferedOutputStream.java
-2577191356b ./libjava/java/io/BufferedReader.java
-1491845880b ./libjava/java/io/BufferedWriter.java
-3804278996b ./libjava/java/io/ByteArrayInputStream.java
- 200503157b ./libjava/java/io/ByteArrayOutputStream.java
-1595495810b ./libjava/java/io/CharArrayReader.java
- 926602239b ./libjava/java/io/CharArrayWriter.java
-2789582151b ./libjava/java/io/CharConversionException.java
- 833277233b ./libjava/java/io/DataInput.java
- 634383556b ./libjava/java/io/DataInputStream.java
-2779752650b ./libjava/java/io/DataOutput.java
-2879044799b ./libjava/java/io/DataOutputStream.java
-3063714856b ./libjava/java/io/EOFException.java
-1517492329b ./libjava/java/io/Externalizable.java
-3546628049b ./libjava/java/io/FileDescriptor.java
-3092690903b ./libjava/java/io/FileFilter.java
-3304954915b ./libjava/java/io/FileInputStream.java
-3923475116b ./libjava/java/io/File.java
- 57206385b ./libjava/java/io/FilenameFilter.java
-1122350410b ./libjava/java/io/FileNotFoundException.java
- 493183800b ./libjava/java/io/FileOutputStream.java
-4203170751b ./libjava/java/io/FilePermission.java
- 480136026b ./libjava/java/io/FileReader.java
-3272147344b ./libjava/java/io/FileWriter.java
- 491642459b ./libjava/java/io/FilterInputStream.java
-3572067476b ./libjava/java/io/FilterOutputStream.java
- 834480594b ./libjava/java/io/FilterReader.java
- 805331833b ./libjava/java/io/FilterWriter.java
-1021426083b ./libjava/java/io/InputStream.java
- 529146689b ./libjava/java/io/InputStreamReader.java
-2158134143b ./libjava/java/io/InterruptedIOException.java
-2959384144b ./libjava/java/io/InvalidClassException.java
-2711688958b ./libjava/java/io/InvalidObjectException.java
-1797218177b ./libjava/java/io/IOException.java
-2297659773b ./libjava/java/io/LineNumberInputStream.java
-1977393201b ./libjava/java/io/LineNumberReader.java
-1763600901b ./libjava/java/io/natFileDescriptorEcos.cc
- 50298342b ./libjava/java/io/natFileDescriptorPosix.cc
- 645547190b ./libjava/java/io/natFileDescriptorWin32.cc
- 438765382b ./libjava/java/io/natFilePosix.cc
-4215574494b ./libjava/java/io/natFileWin32.cc
-2701462559b ./libjava/java/io/natObjectInputStream.cc
-4239505089b ./libjava/java/io/natObjectOutputStream.cc
- 356981144b ./libjava/java/io/NotActiveException.java
- 296825781b ./libjava/java/io/NotSerializableException.java
-3695857432b ./libjava/java/io/ObjectInput.java
-2999285723b ./libjava/java/io/ObjectInputStream.java
-1835600781b ./libjava/java/io/ObjectInputValidation.java
- 601064657b ./libjava/java/io/ObjectOutput.java
- 839357625b ./libjava/java/io/ObjectOutputStream.java
- 758370469b ./libjava/java/io/ObjectStreamClass.java
-3828010025b ./libjava/java/io/ObjectStreamConstants.java
-1279521507b ./libjava/java/io/ObjectStreamException.java
-3088927270b ./libjava/java/io/ObjectStreamField.java
-2743734189b ./libjava/java/io/OptionalDataException.java
-3053819886b ./libjava/java/io/OutputStream.java
-1432753727b ./libjava/java/io/OutputStreamWriter.java
-3611790327b ./libjava/java/io/PipedInputStream.java
-2982069551b ./libjava/java/io/PipedOutputStream.java
-3065379959b ./libjava/java/io/PipedReader.java
-4173881044b ./libjava/java/io/PipedWriter.java
-1146852699b ./libjava/java/io/PrintStream.java
- 569978908b ./libjava/java/io/PrintWriter.java
-1369338935b ./libjava/java/io/PushbackInputStream.java
-2210002535b ./libjava/java/io/PushbackReader.java
-3411632522b ./libjava/java/io/RandomAccessFile.java
-3147885412b ./libjava/java/io/Reader.java
- 978743808b ./libjava/java/io/SequenceInputStream.java
-1322946837b ./libjava/java/io/Serializable.java
- 745751528b ./libjava/java/io/SerializablePermission.java
- 750070673b ./libjava/java/io/StreamCorruptedException.java
- 949081819b ./libjava/java/io/StreamTokenizer.java
-1180454189b ./libjava/java/io/StringBufferInputStream.java
-3179611106b ./libjava/java/io/StringReader.java
-2031479671b ./libjava/java/io/StringWriter.java
-1480215451b ./libjava/java/io/SyncFailedException.java
- 616805431b ./libjava/java/io/UnsupportedEncodingException.java
-2698018036b ./libjava/java/io/UTFDataFormatException.java
-2719928003b ./libjava/java/io/WriteAbortedException.java
-3470521880b ./libjava/java/io/Writer.java
-4090106463b ./libjava/java/lang/AbstractMethodError.java
-3425188680b ./libjava/java/lang/ArithmeticException.java
-3115671720b ./libjava/java/lang/ArrayIndexOutOfBoundsException.java
-1373410447b ./libjava/java/lang/ArrayStoreException.java
-2983258460b ./libjava/java/lang/Boolean.java
-4251066809b ./libjava/java/lang/Byte.java
-3322445246b ./libjava/java/lang/Character.java
-3632753519b ./libjava/java/lang/CharSequence.java
-3914593902b ./libjava/java/lang/ClassCastException.java
-2018649547b ./libjava/java/lang/ClassCircularityError.java
-1262342693b ./libjava/java/lang/ClassFormatError.java
- 553573251b ./libjava/java/lang/Class.h
-3641057162b ./libjava/java/lang/Class.java
-2745405805b ./libjava/java/lang/ClassLoader.java
- 863405399b ./libjava/java/lang/ClassNotFoundException.java
- 524108559b ./libjava/java/lang/Cloneable.java
-1163791317b ./libjava/java/lang/CloneNotSupportedException.java
-2017623600b ./libjava/java/lang/Comparable.java
-4154726046b ./libjava/java/lang/Compiler.java
-4246954832b ./libjava/java/lang/Double.java
-1435754341b ./libjava/java/lang/dtoa.c
- 994774164b ./libjava/java/lang/e_acos.c
-4273053537b ./libjava/java/lang/e_asin.c
-1280734317b ./libjava/java/lang/e_atan2.c
- 315782992b ./libjava/java/lang/EcosProcess.java
-2698793341b ./libjava/java/lang/e_exp.c
-3934619985b ./libjava/java/lang/e_fmod.c
-3710448655b ./libjava/java/lang/e_log.c
- 876585599b ./libjava/java/lang/e_pow.c
-3495227073b ./libjava/java/lang/e_remainder.c
-3827866584b ./libjava/java/lang/e_rem_pio2.c
- 674629591b ./libjava/java/lang/Error.java
- 351649389b ./libjava/java/lang/e_scalb.c
-4172761909b ./libjava/java/lang/e_sqrt.c
- 479874825b ./libjava/java/lang/ExceptionInInitializerError.java
-2224382764b ./libjava/java/lang/Exception.java
- 773177573b ./libjava/java/lang/fdlibm.h
-1399651516b ./libjava/java/lang/Float.java
- 969459924b ./libjava/java/lang/ieeefp.h
-1546884627b ./libjava/java/lang/IllegalAccessError.java
-2739492776b ./libjava/java/lang/IllegalAccessException.java
-1557093291b ./libjava/java/lang/IllegalArgumentException.java
-4220991068b ./libjava/java/lang/IllegalMonitorStateException.java
- 172855953b ./libjava/java/lang/IllegalStateException.java
-1303108506b ./libjava/java/lang/IllegalThreadStateException.java
- 153906896b ./libjava/java/lang/IncompatibleClassChangeError.java
- 166061792b ./libjava/java/lang/IndexOutOfBoundsException.java
-2772342819b ./libjava/java/lang/InheritableThreadLocal.java
-1458836935b ./libjava/java/lang/InstantiationError.java
- 650328562b ./libjava/java/lang/InstantiationException.java
-4120577335b ./libjava/java/lang/Integer.java
-1716407270b ./libjava/java/lang/InternalError.java
-3005393186b ./libjava/java/lang/InterruptedException.java
-2140439599b ./libjava/java/lang/k_cos.c
-2521991737b ./libjava/java/lang/k_rem_pio2.c
-1794170989b ./libjava/java/lang/k_sin.c
-2812209061b ./libjava/java/lang/k_tan.c
-1031814374b ./libjava/java/lang/LinkageError.java
-1043365864b ./libjava/java/lang/Long.java
-3228990355b ./libjava/java/lang/Math.java
-3525801158b ./libjava/java/lang/mprec.c
- 338852744b ./libjava/java/lang/mprec.h
-2041042935b ./libjava/java/lang/natCharacter.cc
-1760287660b ./libjava/java/lang/natClass.cc
-3980285264b ./libjava/java/lang/natClassLoader.cc
-3519010570b ./libjava/java/lang/natDouble.cc
-2312870767b ./libjava/java/lang/natEcosProcess.cc
- 91234316b ./libjava/java/lang/natFloat.cc
-3510482433b ./libjava/java/lang/natMath.cc
- 76124715b ./libjava/java/lang/natObject.cc
-1982998394b ./libjava/java/lang/natPosixProcess.cc
-3985207471b ./libjava/java/lang/natRuntime.cc
- 209062817b ./libjava/java/lang/natStringBuffer.cc
-4255324328b ./libjava/java/lang/natString.cc
-1182371633b ./libjava/java/lang/natSystem.cc
-1391213516b ./libjava/java/lang/natThread.cc
-1137947649b ./libjava/java/lang/natThrowable.cc
-4294967295b ./libjava/java/lang/natWin32Process.cc
- 480489940b ./libjava/java/lang/NegativeArraySizeException.java
-1147004568b ./libjava/java/lang/NoClassDefFoundError.java
-2828263392b ./libjava/java/lang/NoSuchFieldError.java
-2392659469b ./libjava/java/lang/NoSuchFieldException.java
-1339035495b ./libjava/java/lang/NoSuchMethodError.java
- 615266877b ./libjava/java/lang/NoSuchMethodException.java
-1556435959b ./libjava/java/lang/NullPointerException.java
- 899274464b ./libjava/java/lang/NumberFormatException.java
-1334794302b ./libjava/java/lang/Number.java
-3421547735b ./libjava/java/lang/Object.h
-3641470251b ./libjava/java/lang/Object.java
- 344219618b ./libjava/java/lang/OutOfMemoryError.java
-2281685049b ./libjava/java/lang/Package.java
-2357238508b ./libjava/java/lang/PosixProcess.java
-3622530025b ./libjava/java/lang/Process.java
-1863148120b ./libjava/java/lang/reflect/AccessibleObject.java
-1772289084b ./libjava/java/lang/reflect/Array.java
-1042641503b ./libjava/java/lang/reflect/Constructor.java
-2343995282b ./libjava/java/lang/reflect/Field.java
-4276731407b ./libjava/java/lang/reflect/InvocationTargetException.java
-2195316717b ./libjava/java/lang/reflect/Member.java
-3154056039b ./libjava/java/lang/reflect/Method.java
- 737811330b ./libjava/java/lang/reflect/Modifier.java
- 467850593b ./libjava/java/lang/reflect/natArray.cc
- 848571325b ./libjava/java/lang/reflect/natConstructor.cc
-2897267786b ./libjava/java/lang/reflect/natField.cc
-3433405242b ./libjava/java/lang/reflect/natMethod.cc
-3286982797b ./libjava/java/lang/reflect/ReflectPermission.java
-4262082056b ./libjava/java/lang/ref/natReference.cc
-1460247144b ./libjava/java/lang/ref/PhantomReference.java
- 704062708b ./libjava/java/lang/ref/Reference.java
- 65399149b ./libjava/java/lang/ref/ReferenceQueue.java
-3675082054b ./libjava/java/lang/ref/SoftReference.java
-4137952990b ./libjava/java/lang/ref/WeakReference.java
-3010960818b ./libjava/java/lang/Runnable.java
-1799896457b ./libjava/java/lang/RuntimeException.java
-1498739702b ./libjava/java/lang/Runtime.java
-3735977458b ./libjava/java/lang/RuntimePermission.java
-4211007333b ./libjava/java/lang/s_atan.c
-1992861509b ./libjava/java/lang/s_ceil.c
-2560516823b ./libjava/java/lang/s_copysign.c
- 138245783b ./libjava/java/lang/s_cos.c
-3082173393b ./libjava/java/lang/SecurityException.java
- 788295818b ./libjava/java/lang/SecurityManager.java
-2696927637b ./libjava/java/lang/s_fabs.c
-2861859787b ./libjava/java/lang/sf_fabs.c
-1587392745b ./libjava/java/lang/s_floor.c
-3733918551b ./libjava/java/lang/sf_rint.c
- 987059562b ./libjava/java/lang/Short.java
- 781279555b ./libjava/java/lang/s_rint.c
-1543063550b ./libjava/java/lang/s_scalbn.c
- 683141039b ./libjava/java/lang/s_sin.c
-3968168506b ./libjava/java/lang/StackOverflowError.java
-2604631654b ./libjava/java/lang/s_tan.c
-2934755101b ./libjava/java/lang/StrictMath.java
-2480138781b ./libjava/java/lang/StringBuffer.java
-4119807874b ./libjava/java/lang/StringIndexOutOfBoundsException.java
-1328413402b ./libjava/java/lang/String.java
-2159586687b ./libjava/java/lang/strtod.c
-2990987309b ./libjava/java/lang/System.java
-3910182705b ./libjava/java/lang/ThreadDeath.java
- 176223137b ./libjava/java/lang/ThreadGroup.java
-3073946400b ./libjava/java/lang/Thread.java
-2901552173b ./libjava/java/lang/ThreadLocal.java
-2728582923b ./libjava/java/lang/Throwable.java
- 402341795b ./libjava/java/lang/UnknownError.java
- 964603433b ./libjava/java/lang/UnsatisfiedLinkError.java
-1966641471b ./libjava/java/lang/UnsupportedClassVersionError.java
-3152130847b ./libjava/java/lang/UnsupportedOperationException.java
-4139089776b ./libjava/java/lang/VerifyError.java
-3680335112b ./libjava/java/lang/VirtualMachineError.java
-1734917059b ./libjava/java/lang/VMClassLoader.java
-3002073692b ./libjava/java/lang/VMSecurityManager.java
-3929414917b ./libjava/java/lang/Void.java
-2208706716b ./libjava/java/lang/w_acos.c
-2509257289b ./libjava/java/lang/w_asin.c
- 129756780b ./libjava/java/lang/w_atan2.c
-3101537020b ./libjava/java/lang/w_exp.c
-4251570485b ./libjava/java/lang/w_fmod.c
-3209764157b ./libjava/java/lang/Win32Process.java
-2517288589b ./libjava/java/lang/w_log.c
-2200179114b ./libjava/java/lang/w_pow.c
-3127225850b ./libjava/java/lang/w_remainder.c
-3084712253b ./libjava/java/lang/w_sqrt.c
- 647790385b ./libjava/java/math/BigDecimal.java
-1413640672b ./libjava/java/math/BigInteger.java
-2740663451b ./libjava/java/net/Authenticator.java
-1892964846b ./libjava/java/net/BindException.java
- 465134141b ./libjava/java/net/ConnectException.java
-2451709496b ./libjava/java/net/ContentHandlerFactory.java
-2009481994b ./libjava/java/net/ContentHandler.java
-2799450041b ./libjava/java/net/DatagramPacket.java
-1684404099b ./libjava/java/net/DatagramSocketImpl.java
-2186623986b ./libjava/java/net/DatagramSocket.java
-3221371229b ./libjava/java/net/FileNameMap.java
- 905107405b ./libjava/java/net/HttpURLConnection.java
-2016211119b ./libjava/java/net/InetAddress.java
-3267095408b ./libjava/java/net/JarURLConnection.java
-2855708971b ./libjava/java/net/MalformedURLException.java
-2301622401b ./libjava/java/net/MulticastSocket.java
-4045295019b ./libjava/java/net/natInetAddress.cc
- 743824210b ./libjava/java/net/natPlainDatagramSocketImpl.cc
-2983285886b ./libjava/java/net/natPlainSocketImpl.cc
-1682337997b ./libjava/java/net/NetPermission.java
- 219229722b ./libjava/java/net/NoRouteToHostException.java
- 833606891b ./libjava/java/net/PasswordAuthentication.java
-4105261490b ./libjava/java/net/PlainDatagramSocketImpl.java
-2335349056b ./libjava/java/net/PlainSocketImpl.java
-1942565398b ./libjava/java/net/ProtocolException.java
-3938255056b ./libjava/java/net/ServerSocket.java
-3016170839b ./libjava/java/net/SocketException.java
-2277031455b ./libjava/java/net/SocketImplFactory.java
-1289495366b ./libjava/java/net/SocketImpl.java
-1934542585b ./libjava/java/net/Socket.java
-2567328645b ./libjava/java/net/SocketOptions.java
-1657196367b ./libjava/java/net/SocketPermission.java
-1041327798b ./libjava/java/net/UnknownHostException.java
-2623632799b ./libjava/java/net/UnknownServiceException.java
- 194604118b ./libjava/java/net/URLClassLoader.java
-2961889722b ./libjava/java/net/URLConnection.java
-2772681802b ./libjava/java/net/URLDecoder.java
-4220867118b ./libjava/java/net/URLEncoder.java
-1440065038b ./libjava/java/net/URL.java
-2216267556b ./libjava/java/net/URLStreamHandlerFactory.java
-3036638609b ./libjava/java/net/URLStreamHandler.java
-2345713982b ./libjava/java/rmi/AccessException.java
-1531149925b ./libjava/java/rmi/activation/Activatable.java
- 202413195b ./libjava/java/rmi/activation/ActivateFailedException.java
-3435388540b ./libjava/java/rmi/activation/ActivationDesc.java
-2977173158b ./libjava/java/rmi/activation/ActivationException.java
-3932453163b ./libjava/java/rmi/activation/ActivationGroupDesc.java
-3794676101b ./libjava/java/rmi/activation/ActivationGroupID.java
- 443589476b ./libjava/java/rmi/activation/ActivationGroup.java
-1660066253b ./libjava/java/rmi/activation/ActivationID.java
-3314676255b ./libjava/java/rmi/activation/ActivationInstantiator.java
- 331032778b ./libjava/java/rmi/activation/ActivationMonitor.java
-3527811786b ./libjava/java/rmi/activation/ActivationSystem.java
- 38902488b ./libjava/java/rmi/activation/Activator.java
-3932075613b ./libjava/java/rmi/activation/UnknownGroupException.java
-2859838111b ./libjava/java/rmi/activation/UnknownObjectException.java
- 638523787b ./libjava/java/rmi/AlreadyBoundException.java
-3168686766b ./libjava/java/rmi/ConnectException.java
- 108680455b ./libjava/java/rmi/ConnectIOException.java
- 1240298b ./libjava/java/rmi/dgc/DGC.java
-3040253205b ./libjava/java/rmi/dgc/Lease.java
-4206440135b ./libjava/java/rmi/dgc/VMID.java
-2315456896b ./libjava/java/rmi/MarshalException.java
-1559402097b ./libjava/java/rmi/MarshalledObject.java
-2730841917b ./libjava/java/rmi/Naming.java
-2964967266b ./libjava/java/rmi/NoSuchObjectException.java
-2207159994b ./libjava/java/rmi/NotBoundException.java
-2660899207b ./libjava/java/rmi/registry/LocateRegistry.java
-1399983578b ./libjava/java/rmi/registry/RegistryHandler.java
-3447606163b ./libjava/java/rmi/registry/Registry.java
-2722897537b ./libjava/java/rmi/RemoteException.java
-3977817460b ./libjava/java/rmi/Remote.java
-1880593648b ./libjava/java/rmi/RMISecurityException.java
-1668944357b ./libjava/java/rmi/RMISecurityManager.java
-2063315085b ./libjava/java/rmi/ServerError.java
-3013999798b ./libjava/java/rmi/ServerException.java
-3139440594b ./libjava/java/rmi/server/ExportException.java
-1080320338b ./libjava/java/rmi/server/LoaderHandler.java
-3453671358b ./libjava/java/rmi/server/LogStream.java
-3627631958b ./libjava/java/rmi/server/ObjID.java
-1620681979b ./libjava/java/rmi/server/Operation.java
-3007384076b ./libjava/java/rmi/server/RemoteCall.java
- 646982205b ./libjava/java/rmi/server/RemoteObject.java
-1057967745b ./libjava/java/rmi/server/RemoteRef.java
-3980074697b ./libjava/java/rmi/server/RemoteServer.java
-2379911685b ./libjava/java/rmi/server/RemoteStub.java
- 766223293b ./libjava/java/rmi/server/RMIClassLoader.java
-1381387676b ./libjava/java/rmi/server/RMIClientSocketFactory.java
-1355495784b ./libjava/java/rmi/server/RMIFailureHandler.java
- 637510001b ./libjava/java/rmi/server/RMIServerSocketFactory.java
- 491843230b ./libjava/java/rmi/server/RMISocketFactory.java
- 991417645b ./libjava/java/rmi/ServerRuntimeException.java
-2405566142b ./libjava/java/rmi/server/ServerCloneException.java
- 970903487b ./libjava/java/rmi/server/ServerNotActiveException.java
-3269103800b ./libjava/java/rmi/server/ServerRef.java
-1284557277b ./libjava/java/rmi/server/Skeleton.java
-1298691040b ./libjava/java/rmi/server/SkeletonMismatchException.java
- 301272094b ./libjava/java/rmi/server/SkeletonNotFoundException.java
-2163278585b ./libjava/java/rmi/server/SocketSecurityException.java
- 946423957b ./libjava/java/rmi/server/UID.java
-3436591463b ./libjava/java/rmi/server/UnicastRemoteObject.java
-3786643443b ./libjava/java/rmi/server/Unreferenced.java
- 158040251b ./libjava/java/rmi/StubNotFoundException.java
- 981089142b ./libjava/java/rmi/UnexpectedException.java
-3267495332b ./libjava/java/rmi/UnknownHostException.java
-3831786123b ./libjava/java/rmi/UnmarshalException.java
-3377565930b ./libjava/java/security/AccessControlContext.java
-2503008464b ./libjava/java/security/AccessControlException.java
- 961049396b ./libjava/java/security/AccessController.java
-1107973997b ./libjava/java/security/acl/AclEntry.java
- 208951186b ./libjava/java/security/acl/Acl.java
- 470826478b ./libjava/java/security/acl/AclNotFoundException.java
-1196419206b ./libjava/java/security/acl/Group.java
-2213283367b ./libjava/java/security/acl/LastOwnerException.java
-3397637888b ./libjava/java/security/acl/NotOwnerException.java
- 689449683b ./libjava/java/security/acl/Owner.java
-3427961043b ./libjava/java/security/acl/Permission.java
-2206881746b ./libjava/java/security/AlgorithmParameterGenerator.java
-3955879194b ./libjava/java/security/AlgorithmParameterGeneratorSpi.java
-1605717160b ./libjava/java/security/AlgorithmParameters.java
-2891548705b ./libjava/java/security/AlgorithmParametersSpi.java
- 445477635b ./libjava/java/security/AllPermission.java
-3690509591b ./libjava/java/security/BasicPermission.java
- 962908602b ./libjava/java/security/cert/CertificateEncodingException.java
-3422220568b ./libjava/java/security/cert/CertificateException.java
- 392043989b ./libjava/java/security/cert/CertificateExpiredException.java
-1893973660b ./libjava/java/security/cert/CertificateFactory.java
-1773373825b ./libjava/java/security/cert/CertificateFactorySpi.java
- 233269914b ./libjava/java/security/cert/Certificate.java
-2007231431b ./libjava/java/security/cert/CertificateNotYetValidException.java
- 944611608b ./libjava/java/security/cert/CertificateParsingException.java
- 938503207b ./libjava/java/security/cert/CRLException.java
- 275997395b ./libjava/java/security/cert/CRL.java
-3914599195b ./libjava/java/security/Certificate.java
-3595656724b ./libjava/java/security/cert/X509Certificate.java
- 379566121b ./libjava/java/security/cert/X509CRLEntry.java
- 838800704b ./libjava/java/security/cert/X509CRL.java
-1496043464b ./libjava/java/security/cert/X509Extension.java
-2128346166b ./libjava/java/security/classpath.security
-1245295455b ./libjava/java/security/CodeSource.java
-1011061724b ./libjava/java/security/DigestException.java
-3484233527b ./libjava/java/security/DigestInputStream.java
-1273872520b ./libjava/java/security/DigestOutputStream.java
-3131452143b ./libjava/java/security/DomainCombiner.java
-2064440254b ./libjava/java/security/DummyKeyPairGenerator.java
-1205011236b ./libjava/java/security/DummyMessageDigest.java
-3244660822b ./libjava/java/security/DummySignature.java
-3754360724b ./libjava/java/security/GeneralSecurityException.java
-1546088936b ./libjava/java/security/GuardedObject.java
-1223151028b ./libjava/java/security/Guard.java
-2534219749b ./libjava/java/security/Identity.java
-3669588150b ./libjava/java/security/IdentityScope.java
-1502191052b ./libjava/java/security/interfaces/DSAKey.java
- 931326038b ./libjava/java/security/interfaces/DSAKeyPairGenerator.java
-3412106065b ./libjava/java/security/interfaces/DSAParams.java
-2946643846b ./libjava/java/security/interfaces/DSAPrivateKey.java
- 348049866b ./libjava/java/security/interfaces/DSAPublicKey.java
-3186115353b ./libjava/java/security/interfaces/RSAKey.java
-1654913905b ./libjava/java/security/interfaces/RSAPrivateCrtKey.java
-2692733678b ./libjava/java/security/interfaces/RSAPrivateKey.java
-1233397848b ./libjava/java/security/interfaces/RSAPublicKey.java
-1258878052b ./libjava/java/security/InvalidAlgorithmParameterException.java
- 729426758b ./libjava/java/security/InvalidKeyException.java
-4278354519b ./libjava/java/security/InvalidParameterException.java
- 508303117b ./libjava/java/security/KeyException.java
-3556171286b ./libjava/java/security/KeyFactory.java
-1081989305b ./libjava/java/security/KeyFactorySpi.java
- 323696554b ./libjava/java/security/Key.java
-3220074237b ./libjava/java/security/KeyManagementException.java
-1445793144b ./libjava/java/security/KeyPairGenerator.java
-3630224179b ./libjava/java/security/KeyPairGeneratorSpi.java
-1450975497b ./libjava/java/security/KeyPair.java
-2462887043b ./libjava/java/security/KeyStoreException.java
-2818591760b ./libjava/java/security/KeyStore.java
- 803045781b ./libjava/java/security/KeyStoreSpi.java
- 464741950b ./libjava/java/security/libgcj.security
-4235721395b ./libjava/java/security/MessageDigest.java
-3540748562b ./libjava/java/security/MessageDigestSpi.java
-1866536196b ./libjava/java/security/NoSuchAlgorithmException.java
- 492706813b ./libjava/java/security/NoSuchProviderException.java
-4053507376b ./libjava/java/security/PermissionCollection.java
- 528332829b ./libjava/java/security/Permission.java
-3401846776b ./libjava/java/security/Permissions.java
-1801865567b ./libjava/java/security/Policy.java
-3369614815b ./libjava/java/security/Principal.java
- 985381771b ./libjava/java/security/PrivateKey.java
-2559441309b ./libjava/java/security/PrivilegedActionException.java
-1519374483b ./libjava/java/security/PrivilegedAction.java
-1001728643b ./libjava/java/security/PrivilegedExceptionAction.java
- 368821109b ./libjava/java/security/ProtectionDomain.java
-3835680906b ./libjava/java/security/ProviderException.java
-2340776264b ./libjava/java/security/Provider.java
-1224382933b ./libjava/java/security/PublicKey.java
- 120707443b ./libjava/java/security/SecureClassLoader.java
- 494331022b ./libjava/java/security/SecureRandom.java
-2053869154b ./libjava/java/security/SecureRandomSpi.java
-3229850841b ./libjava/java/security/Security.java
-3637925183b ./libjava/java/security/SecurityPermission.java
- 498383671b ./libjava/java/security/SignatureException.java
-4213110400b ./libjava/java/security/Signature.java
-2850222648b ./libjava/java/security/SignatureSpi.java
- 366295954b ./libjava/java/security/SignedObject.java
-3719230281b ./libjava/java/security/Signer.java
- 822101390b ./libjava/java/security/spec/AlgorithmParameterSpec.java
-3120841125b ./libjava/java/security/spec/DSAParameterSpec.java
-2299637832b ./libjava/java/security/spec/DSAPrivateKeySpec.java
- 681202330b ./libjava/java/security/spec/DSAPublicKeySpec.java
-1352408709b ./libjava/java/security/spec/EncodedKeySpec.java
-4009180494b ./libjava/java/security/spec/InvalidKeySpecException.java
- 965497815b ./libjava/java/security/spec/InvalidParameterSpecException.java
-3101037976b ./libjava/java/security/spec/KeySpec.java
-2816023539b ./libjava/java/security/spec/PKCS8EncodedKeySpec.java
-1120858009b ./libjava/java/security/spec/RSAKeyGenParameterSpec.java
-4250337880b ./libjava/java/security/spec/RSAPrivateCrtKeySpec.java
-2927717266b ./libjava/java/security/spec/RSAPrivateKeySpec.java
- 379229426b ./libjava/java/security/spec/RSAPublicKeySpec.java
-2631607563b ./libjava/java/security/spec/X509EncodedKeySpec.java
-2654502080b ./libjava/java/security/UnrecoverableKeyException.java
-3042679945b ./libjava/java/security/UnresolvedPermission.java
-2530986689b ./libjava/java/sql/Array.java
- 732307642b ./libjava/java/sql/BatchUpdateException.java
- 374178764b ./libjava/java/sql/Blob.java
-1076961675b ./libjava/java/sql/CallableStatement.java
-3989040128b ./libjava/java/sql/Clob.java
-2277896489b ./libjava/java/sql/Connection.java
-3263074261b ./libjava/java/sql/DatabaseMetaData.java
-3465346954b ./libjava/java/sql/DataTruncation.java
-3146941939b ./libjava/java/sql/Date.java
-2513314582b ./libjava/java/sql/Driver.java
-3274581597b ./libjava/java/sql/DriverManager.java
- 824112165b ./libjava/java/sql/DriverPropertyInfo.java
- 650191309b ./libjava/java/sql/PreparedStatement.java
-3735265522b ./libjava/java/sql/Ref.java
-1340870361b ./libjava/java/sql/ResultSet.java
- 303434648b ./libjava/java/sql/ResultSetMetaData.java
-2203730199b ./libjava/java/sql/SQLData.java
-2087528963b ./libjava/java/sql/SQLException.java
-4204919565b ./libjava/java/sql/SQLInput.java
- 497830475b ./libjava/java/sql/SQLOutput.java
-2690669161b ./libjava/java/sql/SQLWarning.java
-2118176561b ./libjava/java/sql/Statement.java
-1941352982b ./libjava/java/sql/Struct.java
-1822095083b ./libjava/java/sql/Time.java
-3582484656b ./libjava/java/sql/Timestamp.java
-2990213411b ./libjava/java/sql/Types.java
-2231202473b ./libjava/java/text/Annotation.java
- 459822626b ./libjava/java/text/AttributedCharacterIterator.java
-1193044303b ./libjava/java/text/AttributedStringIterator.java
-1309664747b ./libjava/java/text/AttributedString.java
-2390211842b ./libjava/java/text/BreakIterator.java
- 558207429b ./libjava/java/text/CharacterIterator.java
-2434956617b ./libjava/java/text/ChoiceFormat.java
-3293929777b ./libjava/java/text/CollationElementIterator.java
- 285476728b ./libjava/java/text/CollationKey.java
- 376903872b ./libjava/java/text/Collator.java
- 178017360b ./libjava/java/text/DateFormat.java
-1553614803b ./libjava/java/text/DateFormatSymbols.java
-3087605867b ./libjava/java/text/DecimalFormat.java
- 934140472b ./libjava/java/text/DecimalFormatSymbols.java
-2519664708b ./libjava/java/text/FieldPosition.java
-1527062930b ./libjava/java/text/Format.java
-3209075256b ./libjava/java/text/MessageFormat.java
-1224532863b ./libjava/java/text/natCollator.cc
-2380468989b ./libjava/java/text/NumberFormat.java
-2701315364b ./libjava/java/text/ParseException.java
- 807650843b ./libjava/java/text/ParsePosition.java
-2113083680b ./libjava/java/text/RuleBasedCollator.java
-1428855839b ./libjava/java/text/SimpleDateFormat.java
- 253040983b ./libjava/java/text/StringCharacterIterator.java
-2532876071b ./libjava/java/util/AbstractCollection.java
-2029909984b ./libjava/java/util/AbstractList.java
- 744897810b ./libjava/java/util/AbstractMap.java
-4033710468b ./libjava/java/util/AbstractSequentialList.java
-2512678519b ./libjava/java/util/AbstractSet.java
-3703107479b ./libjava/java/util/ArrayList.java
-1381887354b ./libjava/java/util/Arrays.java
-3524843230b ./libjava/java/util/BasicMapEntry.java
- 282804152b ./libjava/java/util/BitSet.java
-2660147876b ./libjava/java/util/Calendar.java
-1341887661b ./libjava/java/util/Collection.java
-2871372597b ./libjava/java/util/Collections.java
-3016313098b ./libjava/java/util/Comparator.java
-2908271472b ./libjava/java/util/ConcurrentModificationException.java
- 710778165b ./libjava/java/util/Date.java
- 328149423b ./libjava/java/util/Dictionary.java
- 393960426b ./libjava/java/util/EmptyStackException.java
- 358368463b ./libjava/java/util/Enumeration.java
-2421153851b ./libjava/java/util/EventListener.java
-3090423014b ./libjava/java/util/EventObject.java
-3092311908b ./libjava/java/util/GregorianCalendar.java
-1559136349b ./libjava/java/util/HashMap.java
-3919942898b ./libjava/java/util/HashSet.java
- 804852857b ./libjava/java/util/Hashtable.java
-4293305226b ./libjava/java/util/IdentityHashMap.java
-4026479457b ./libjava/java/util/Iterator.java
-3778884769b ./libjava/java/util/jar/Attributes.java
-3242774103b ./libjava/java/util/jar/JarEntry.java
-1439364136b ./libjava/java/util/jar/JarException.java
-3579491279b ./libjava/java/util/jar/JarFile.java
-3108700190b ./libjava/java/util/jar/JarInputStream.java
-3060414122b ./libjava/java/util/jar/JarOutputStream.java
-1259280694b ./libjava/java/util/jar/Manifest.java
- 832329135b ./libjava/java/util/LinkedHashMap.java
-1624117899b ./libjava/java/util/LinkedHashSet.java
- 627526944b ./libjava/java/util/LinkedList.java
- 751985718b ./libjava/java/util/ListIterator.java
-3068429576b ./libjava/java/util/List.java
-2456450061b ./libjava/java/util/ListResourceBundle.java
- 667725203b ./libjava/java/util/Locale.java
- 484359853b ./libjava/java/util/Map.java
-2250155039b ./libjava/java/util/MissingResourceException.java
-1572696779b ./libjava/java/util/NoSuchElementException.java
-1271533381b ./libjava/java/util/Observable.java
-4174427959b ./libjava/java/util/Observer.java
-2595158547b ./libjava/java/util/Properties.java
-2604596284b ./libjava/java/util/PropertyPermission.java
-1495521984b ./libjava/java/util/PropertyResourceBundle.java
-2707837116b ./libjava/java/util/RandomAccess.java
-1741060266b ./libjava/java/util/Random.java
- 604399175b ./libjava/java/util/ResourceBundle.java
-2326466944b ./libjava/java/util/Set.java
-2701923146b ./libjava/java/util/SimpleTimeZone.java
-1991994937b ./libjava/java/util/SortedMap.java
-2357787438b ./libjava/java/util/SortedSet.java
-1274465736b ./libjava/java/util/Stack.java
-3200298650b ./libjava/java/util/StringTokenizer.java
-3482719698b ./libjava/java/util/Timer.java
-2154207616b ./libjava/java/util/TimerTask.java
-2511347434b ./libjava/java/util/TimeZone.java
-4294130868b ./libjava/java/util/TooManyListenersException.java
-3728869390b ./libjava/java/util/TreeMap.java
-3277604160b ./libjava/java/util/TreeSet.java
-3512853982b ./libjava/java/util/Vector.java
-1610986963b ./libjava/java/util/WeakHashMap.java
-2655847765b ./libjava/java/util/zip/Adler32.java
-4095201247b ./libjava/java/util/zip/CheckedInputStream.java
-1148292706b ./libjava/java/util/zip/CheckedOutputStream.java
-2267421579b ./libjava/java/util/zip/Checksum.java
-2436561403b ./libjava/java/util/zip/CRC32.java
-3657795573b ./libjava/java/util/zip/DataFormatException.java
- 199330457b ./libjava/java/util/zip/Deflater.java
-3336807235b ./libjava/java/util/zip/DeflaterOutputStream.java
-4059428363b ./libjava/java/util/zip/GZIPInputStream.java
- 371303032b ./libjava/java/util/zip/GZIPOutputStream.java
-3396470608b ./libjava/java/util/zip/InflaterInputStream.java
-2396996601b ./libjava/java/util/zip/Inflater.java
-1224162092b ./libjava/java/util/zip/natDeflater.cc
-3063634192b ./libjava/java/util/zip/natInflater.cc
-1145913690b ./libjava/java/util/zip/ZipConstants.java
- 65566596b ./libjava/java/util/zip/ZipEntry.java
- 96030578b ./libjava/java/util/zip/ZipException.java
-2814843272b ./libjava/java/util/zip/ZipFile.java
-2069419618b ./libjava/java/util/zip/ZipInputStream.java
-3710262911b ./libjava/java/util/zip/ZipOutputStream.java
- 145274057b ./libjava/javax/naming/AuthenticationException.java
-1613568553b ./libjava/javax/naming/AuthenticationNotSupportedException.java
-3018524827b ./libjava/javax/naming/BinaryRefAddr.java
-2950522979b ./libjava/javax/naming/Binding.java
- 495208868b ./libjava/javax/naming/CannotProceedException.java
-1696161213b ./libjava/javax/naming/CommunicationException.java
-1020365512b ./libjava/javax/naming/CompositeName.java
-3091243262b ./libjava/javax/naming/CompoundName.java
-2106105768b ./libjava/javax/naming/ConfigurationException.java
-2355024605b ./libjava/javax/naming/Context.java
-3253591271b ./libjava/javax/naming/ContextNotEmptyException.java
-1403862831b ./libjava/javax/naming/directory/AttributeInUseException.java
-3287107224b ./libjava/javax/naming/directory/Attribute.java
-1937491808b ./libjava/javax/naming/directory/AttributeModificationException.java
-2124855085b ./libjava/javax/naming/directory/Attributes.java
-4218631907b ./libjava/javax/naming/directory/BasicAttribute.java
-1340187773b ./libjava/javax/naming/directory/BasicAttributes.java
- 525649657b ./libjava/javax/naming/directory/DirContext.java
-3780905669b ./libjava/javax/naming/directory/InitialDirContext.java
-1070098408b ./libjava/javax/naming/directory/InvalidAttributeIdentifierException.java
-2130227696b ./libjava/javax/naming/directory/InvalidAttributesException.java
-2448051700b ./libjava/javax/naming/directory/InvalidAttributeValueException.java
-3317095745b ./libjava/javax/naming/directory/InvalidSearchControlsException.java
-2677951745b ./libjava/javax/naming/directory/InvalidSearchFilterException.java
- 297375529b ./libjava/javax/naming/directory/ModificationItem.java
-1218016472b ./libjava/javax/naming/directory/NoSuchAttributeException.java
-3800798223b ./libjava/javax/naming/directory/SchemaViolationException.java
-2280737329b ./libjava/javax/naming/directory/SearchControls.java
-2833305555b ./libjava/javax/naming/directory/SearchResult.java
- 632548719b ./libjava/javax/naming/event/EventContext.java
-1104789568b ./libjava/javax/naming/event/EventDirContext.java
-1079821505b ./libjava/javax/naming/event/NamespaceChangeListener.java
-1238809356b ./libjava/javax/naming/event/NamingEvent.java
-3831078506b ./libjava/javax/naming/event/NamingExceptionEvent.java
-1293039497b ./libjava/javax/naming/event/NamingListener.java
-1847110909b ./libjava/javax/naming/event/ObjectChangeListener.java
-1739543939b ./libjava/javax/naming/InitialContext.java
- 38212245b ./libjava/javax/naming/InsufficientResourcesException.java
-2296688963b ./libjava/javax/naming/InterruptedNamingException.java
-4165253207b ./libjava/javax/naming/InvalidNameException.java
-4178007180b ./libjava/javax/naming/ldap/ControlFactory.java
-1181684484b ./libjava/javax/naming/ldap/Control.java
-1350269098b ./libjava/javax/naming/ldap/ExtendedRequest.java
- 738885701b ./libjava/javax/naming/ldap/ExtendedResponse.java
-4143032207b ./libjava/javax/naming/ldap/HasControls.java
- 992304517b ./libjava/javax/naming/ldap/InitialLdapContext.java
-1094699680b ./libjava/javax/naming/ldap/LdapContext.java
-3377633528b ./libjava/javax/naming/ldap/LdapReferralException.java
-2717074673b ./libjava/javax/naming/ldap/UnsolicitedNotificationEvent.java
- 391691341b ./libjava/javax/naming/ldap/UnsolicitedNotification.java
-4115295275b ./libjava/javax/naming/ldap/UnsolicitedNotificationListener.java
-3467011523b ./libjava/javax/naming/LimitExceededException.java
-2945536555b ./libjava/javax/naming/LinkException.java
-3280765719b ./libjava/javax/naming/LinkLoopException.java
-4232859152b ./libjava/javax/naming/LinkRef.java
-1528609025b ./libjava/javax/naming/MalformedLinkException.java
-2798268023b ./libjava/javax/naming/NameAlreadyBoundException.java
-4202297725b ./libjava/javax/naming/NameClassPair.java
-2645610340b ./libjava/javax/naming/Name.java
- 230282723b ./libjava/javax/naming/NameNotFoundException.java
-2454523681b ./libjava/javax/naming/NameParser.java
-3641625296b ./libjava/javax/naming/NamingEnumeration.java
- 949888078b ./libjava/javax/naming/NamingException.java
-1081898018b ./libjava/javax/naming/NamingSecurityException.java
-3355150544b ./libjava/javax/naming/NoInitialContextException.java
-3148663544b ./libjava/javax/naming/NoPermissionException.java
-1051745286b ./libjava/javax/naming/NotContextException.java
-1197235786b ./libjava/javax/naming/OperationNotSupportedException.java
-2758830928b ./libjava/javax/naming/PartialResultException.java
-3291792639b ./libjava/javax/naming/RefAddr.java
-1496952630b ./libjava/javax/naming/Referenceable.java
-3197721219b ./libjava/javax/naming/Reference.java
-2706204834b ./libjava/javax/naming/ReferralException.java
- 740355282b ./libjava/javax/naming/ServiceUnavailableException.java
-2175690233b ./libjava/javax/naming/SizeLimitExceededException.java
- 940282333b ./libjava/javax/naming/spi/DirectoryManager.java
-1671315693b ./libjava/javax/naming/spi/DirObjectFactory.java
-2654197748b ./libjava/javax/naming/spi/DirStateFactory.java
-2067382225b ./libjava/javax/naming/spi/InitialContextFactoryBuilder.java
-1751323528b ./libjava/javax/naming/spi/InitialContextFactory.java
-4282133359b ./libjava/javax/naming/spi/NamingManager.java
-2834439335b ./libjava/javax/naming/spi/ObjectFactoryBuilder.java
- 162979435b ./libjava/javax/naming/spi/ObjectFactory.java
-3604649919b ./libjava/javax/naming/spi/ResolveResult.java
- 324774529b ./libjava/javax/naming/spi/Resolver.java
-2596286413b ./libjava/javax/naming/spi/StateFactory.java
- 255272768b ./libjava/javax/naming/StringRefAddr.java
- 668991294b ./libjava/javax/naming/TimeLimitExceededException.java
-1100799981b ./libjava/javax/transaction/HeuristicCommitException.java
-3468030488b ./libjava/javax/transaction/HeuristicMixedException.java
-3612916446b ./libjava/javax/transaction/HeuristicRollbackException.java
-3063033259b ./libjava/javax/transaction/InvalidTransactionException.java
-3066010541b ./libjava/javax/transaction/NotSupportedException.java
-2654654450b ./libjava/javax/transaction/RollbackException.java
-1778487585b ./libjava/javax/transaction/Status.java
- 314435753b ./libjava/javax/transaction/Synchronization.java
-2247680091b ./libjava/javax/transaction/SystemException.java
-3332683111b ./libjava/javax/transaction/Transaction.java
-1322333630b ./libjava/javax/transaction/TransactionManager.java
-1540883701b ./libjava/javax/transaction/TransactionRequiredException.java
- 149347685b ./libjava/javax/transaction/TransactionRolledbackException.java
-1599652796b ./libjava/javax/transaction/UserTransaction.java
- 91616559b ./libjava/javax/transaction/xa/XAException.java
- 151022467b ./libjava/javax/transaction/xa/XAResource.java
-2545015127b ./libjava/javax/transaction/xa/Xid.java
-2987342447b ./libjava/jni.cc
-1362543266b ./libjava/LIBGCJ_LICENSE
- 799924566b ./libjava/libgcj.spec.in
-3263845190b ./libjava/libgcj-test.spec.in
- 464053222b ./libjava/libltdl/acconfig.h
-1486261890b ./libjava/libltdl/acinclude.m4
-2748542911b ./libjava/libltdl/aclocal.m4
-1982405743b ./libjava/libltdl/ChangeLog
-3229611250b ./libjava/libltdl/config.h.in
-3663840013b ./libjava/libltdl/configure
- 586017012b ./libjava/libltdl/configure.in
-1530919786b ./libjava/libltdl/COPYING.LIB
-3885054737b ./libjava/libltdl/.cvsignore
-1708336280b ./libjava/libltdl/ltdl.c
-3122579166b ./libjava/libltdl/ltdl.h
-3589765398b ./libjava/libltdl/Makefile.am
-2495909158b ./libjava/libltdl/Makefile.in
-1322928877b ./libjava/libltdl/README
- 216805921b ./libjava/libltdl/stamp-h.in
-4225681790b ./libjava/libtool-version
-1949592651b ./libjava/Makefile.am
-3462890813b ./libjava/Makefile.in
-1775785992b ./libjava/mauve-libgcj
-3598737829b ./libjava/name-finder.cc
-4049677327b ./libjava/NEWS
-3395710497b ./libjava/nogc.cc
- 529282886b ./libjava/no-threads.cc
-2042069291b ./libjava/org/w3c/dom/Attr.java
- 722169044b ./libjava/org/w3c/dom/CDATASection.java
-2065721992b ./libjava/org/w3c/dom/CharacterData.java
-2143127567b ./libjava/org/w3c/dom/Comment.java
- 862763522b ./libjava/org/w3c/dom/DocumentFragment.java
-1900680333b ./libjava/org/w3c/dom/Document.java
-2426412549b ./libjava/org/w3c/dom/DocumentType.java
- 488476586b ./libjava/org/w3c/dom/DOMException.java
-4211570251b ./libjava/org/w3c/dom/DOMImplementation.java
-4250415570b ./libjava/org/w3c/dom/Element.java
-4046624265b ./libjava/org/w3c/dom/Entity.java
-2262342958b ./libjava/org/w3c/dom/EntityReference.java
- 855632112b ./libjava/org/w3c/dom/NamedNodeMap.java
-2986347584b ./libjava/org/w3c/dom/Node.java
-1228842303b ./libjava/org/w3c/dom/NodeList.java
-3739671112b ./libjava/org/w3c/dom/Notation.java
- 358325944b ./libjava/org/w3c/dom/ProcessingInstruction.java
-2318984118b ./libjava/org/w3c/dom/ranges/DocumentRange.java
- 575095803b ./libjava/org/w3c/dom/ranges/RangeException.java
-1265227100b ./libjava/org/w3c/dom/ranges/Range.java
-1690022844b ./libjava/org/w3c/dom/Text.java
-4050517071b ./libjava/org/w3c/dom/traversal/DocumentTraversal.java
-2226386849b ./libjava/org/w3c/dom/traversal/NodeFilter.java
-3652245705b ./libjava/org/w3c/dom/traversal/NodeIterator.java
- 819381088b ./libjava/org/w3c/dom/traversal/TreeWalker.java
-1845225689b ./libjava/org/xml/sax/AttributeList.java
- 34783101b ./libjava/org/xml/sax/Attributes.java
-2393098782b ./libjava/org/xml/sax/ContentHandler.java
-2167265032b ./libjava/org/xml/sax/DocumentHandler.java
-2487190850b ./libjava/org/xml/sax/DTDHandler.java
-3192023668b ./libjava/org/xml/sax/EntityResolver.java
-2389406127b ./libjava/org/xml/sax/ErrorHandler.java
-3779605388b ./libjava/org/xml/sax/ext/DeclHandler.java
-3015426944b ./libjava/org/xml/sax/ext/LexicalHandler.java
-3331884369b ./libjava/org/xml/sax/HandlerBase.java
-2006841075b ./libjava/org/xml/sax/helpers/AttributeListImpl.java
-1981118939b ./libjava/org/xml/sax/helpers/AttributesImpl.java
-3683787168b ./libjava/org/xml/sax/helpers/DefaultHandler.java
-3791965905b ./libjava/org/xml/sax/helpers/LocatorImpl.java
-1401784461b ./libjava/org/xml/sax/helpers/NamespaceSupport.java
-3459248108b ./libjava/org/xml/sax/helpers/ParserAdapter.java
-1216147324b ./libjava/org/xml/sax/helpers/ParserFactory.java
- 774083139b ./libjava/org/xml/sax/helpers/XMLFilterImpl.java
-3667288069b ./libjava/org/xml/sax/helpers/XMLReaderAdapter.java
-1058624631b ./libjava/org/xml/sax/helpers/XMLReaderFactory.java
-3525958518b ./libjava/org/xml/sax/InputSource.java
-1358247595b ./libjava/org/xml/sax/Locator.java
- 570431615b ./libjava/org/xml/sax/Parser.java
-1627938146b ./libjava/org/xml/sax/SAXException.java
-4028320752b ./libjava/org/xml/sax/SAXNotRecognizedException.java
- 800153920b ./libjava/org/xml/sax/SAXNotSupportedException.java
- 24590437b ./libjava/org/xml/sax/SAXParseException.java
-2665273964b ./libjava/org/xml/sax/XMLFilter.java
- 557624139b ./libjava/org/xml/sax/XMLReader.java
- 268319164b ./libjava/posix.cc
-4218036894b ./libjava/posix-threads.cc
-1057670606b ./libjava/prims.cc
-3199155412b ./libjava/README
-3315476665b ./libjava/resolve.cc
-2710913388b ./libjava/scripts/classes.pl
-2322272636b ./libjava/scripts/encodings.pl
-2639955246b ./libjava/scripts/MakeCharTables.java
- 211751055b ./libjava/scripts/MakeDefaultMimeTypes.java
- 415147073b ./libjava/scripts/mime.types
-1359447378b ./libjava/scripts/showval.java
-2309086205b ./libjava/scripts/TexinfoDoclet.java
- 2507783b ./libjava/scripts/unicode-blocks.pl
-2554188738b ./libjava/scripts/unicode-decomp.pl
-3460612990b ./libjava/scripts/unicode-muncher.pl
- 810390237b ./libjava/sysdep/alpha/locks.h
-2948369561b ./libjava/sysdep/generic/locks.h
- 255022282b ./libjava/sysdep/i386/locks.h
-4255020929b ./libjava/sysdep/ia64.c
-3969226176b ./libjava/sysdep/ia64-frame.h
-2487590179b ./libjava/sysdep/ia64/locks.h
-3446737173b ./libjava/sysdep/powerpc/locks.h
-2903495760b ./libjava/sysdep/sparc/locks.h
-2428761261b ./libjava/testsuite/ChangeLog
-1230501773b ./libjava/testsuite/config/default.exp
-3718926011b ./libjava/testsuite/libjava.compile/abstr.java
-2888415448b ./libjava/testsuite/libjava.compile/abstr.xfail
-2597392402b ./libjava/testsuite/libjava.compile/ArrayClass.java
-2510342235b ./libjava/testsuite/libjava.compile/assignment_2.java
- 113533645b ./libjava/testsuite/libjava.compile/assignment.java
- 226856759b ./libjava/testsuite/libjava.compile/block.java
-1927457704b ./libjava/testsuite/libjava.compile/block.xfail
-2001362839b ./libjava/testsuite/libjava.compile/Case.java
-1280659122b ./libjava/testsuite/libjava.compile/comment.java
-1877199736b ./libjava/testsuite/libjava.compile/compile.exp
-3242282126b ./libjava/testsuite/libjava.compile/final_assignment_check.java
-1927457704b ./libjava/testsuite/libjava.compile/final_assignment_check.xfail
-2489230363b ./libjava/testsuite/libjava.compile/final_initialization_in_ctor.java
-2700872724b ./libjava/testsuite/libjava.compile/final_local_switch.java
-1402474633b ./libjava/testsuite/libjava.compile/G19990210_1.java
-3600660956b ./libjava/testsuite/libjava.compile/G19990210_2.java
-2466381413b ./libjava/testsuite/libjava.compile/G19990210_3.java
-3421295656b ./libjava/testsuite/libjava.compile/G19990217_01.java
-3096844209b ./libjava/testsuite/libjava.compile/G19990217_02.java
- 290547391b ./libjava/testsuite/libjava.compile/G19990217_02.no-link
-2679863284b ./libjava/testsuite/libjava.compile/G19990225_01.java
-2268267866b ./libjava/testsuite/libjava.compile/iface.java
-3867761903b ./libjava/testsuite/libjava.compile/inner_1.java
- 20838332b ./libjava/testsuite/libjava.compile/inner_1.xfail
-2923236037b ./libjava/testsuite/libjava.compile/inner_data.java
-1142481695b ./libjava/testsuite/libjava.compile/inner_inherit.java
-2576661865b ./libjava/testsuite/libjava.compile/inner_priv.java
-1329801431b ./libjava/testsuite/libjava.compile/inner_pub.java
- 988747335b ./libjava/testsuite/libjava.compile/invokeinterface/A.java
-1237730563b ./libjava/testsuite/libjava.compile/invokeinterface/B.java
- 887835602b ./libjava/testsuite/libjava.compile/invokeinterface/Test.java
-3848284330b ./libjava/testsuite/libjava.compile/MethodFailure4.java
-1927457704b ./libjava/testsuite/libjava.compile/MethodFailure4.xfail
-1373164997b ./libjava/testsuite/libjava.compile/N19990310_01.java
-2764881773b ./libjava/testsuite/libjava.compile/N19990317.java
-1478470590b ./libjava/testsuite/libjava.compile/not_a_redef.java
-2802394982b ./libjava/testsuite/libjava.compile/not_a_redef.xfail
-2730053140b ./libjava/testsuite/libjava.compile/OperatorBenchmark.java
-1193669757b ./libjava/testsuite/libjava.compile/perc.java
-4184523558b ./libjava/testsuite/libjava.compile/plusplus.java
- 285536381b ./libjava/testsuite/libjava.compile/PR124.java
-1927457704b ./libjava/testsuite/libjava.compile/PR124.xfail
-2852406997b ./libjava/testsuite/libjava.compile/PR127.java
-1927457704b ./libjava/testsuite/libjava.compile/PR127.xfail
- 804684683b ./libjava/testsuite/libjava.compile/PR129_B.java
- 290547391b ./libjava/testsuite/libjava.compile/PR129_B.no-link
-3146715453b ./libjava/testsuite/libjava.compile/PR140.java
-1927457704b ./libjava/testsuite/libjava.compile/PR140.xfail
-4285258758b ./libjava/testsuite/libjava.compile/PR163.java
-1927457704b ./libjava/testsuite/libjava.compile/PR163.xfail
-2290833112b ./libjava/testsuite/libjava.compile/PR164.java
-1927457704b ./libjava/testsuite/libjava.compile/PR164.xfail
- 127683262b ./libjava/testsuite/libjava.compile/pr172.java
-3745463245b ./libjava/testsuite/libjava.compile/pr174.java
-2787957046b ./libjava/testsuite/libjava.compile/pr176.java
- 895496907b ./libjava/testsuite/libjava.compile/PR206.java
- 973849712b ./libjava/testsuite/libjava.compile/PR207.java
-2802394982b ./libjava/testsuite/libjava.compile/PR207.xfail
-3360966851b ./libjava/testsuite/libjava.compile/PR208.java
-2802394982b ./libjava/testsuite/libjava.compile/PR208.xfail
-1822717569b ./libjava/testsuite/libjava.compile/PR209.java
- 779507036b ./libjava/testsuite/libjava.compile/PR224.java
-1927457704b ./libjava/testsuite/libjava.compile/PR224.xfail
-2627046019b ./libjava/testsuite/libjava.compile/PR232B.java
-2989158759b ./libjava/testsuite/libjava.compile/PR232.java
-3778326371b ./libjava/testsuite/libjava.compile/PR234.java
- 842896942b ./libjava/testsuite/libjava.compile/PR235.java
-2668948381b ./libjava/testsuite/libjava.compile/PR238.java
-2802394982b ./libjava/testsuite/libjava.compile/PR238.xfail
-1408787751b ./libjava/testsuite/libjava.compile/PR295.java
-1630321289b ./libjava/testsuite/libjava.compile/PR310.java
-1927457704b ./libjava/testsuite/libjava.compile/PR310.xfail
-3891302784b ./libjava/testsuite/libjava.compile/PR3417.java
-1927457704b ./libjava/testsuite/libjava.compile/PR3417.xfail
-1207363773b ./libjava/testsuite/libjava.compile/PR374.java
-1864561249b ./libjava/testsuite/libjava.compile/PR375.java
-2378882884b ./libjava/testsuite/libjava.compile/PR4766.java
- 277297044b ./libjava/testsuite/libjava.compile/PR5641.java
-2888415448b ./libjava/testsuite/libjava.compile/PR5641.xfail
-2775990221b ./libjava/testsuite/libjava.compile/PR5848.java
-2802394982b ./libjava/testsuite/libjava.compile/PR5848.xfail
-3877718833b ./libjava/testsuite/libjava.compile/PR5902.java
-3468040591b ./libjava/testsuite/libjava.compile/PR5913.java
- 588631470b ./libjava/testsuite/libjava.compile/PR5913.xfail
-3689218637b ./libjava/testsuite/libjava.compile/PR6026.java
-1123122376b ./libjava/testsuite/libjava.compile/redef1.java
-1927457704b ./libjava/testsuite/libjava.compile/redef1.xfail
-1933159159b ./libjava/testsuite/libjava.compile/redef2.java
-1927457704b ./libjava/testsuite/libjava.compile/redef2.xfail
-3363725257b ./libjava/testsuite/libjava.compile/redef3.java
-1927457704b ./libjava/testsuite/libjava.compile/redef3.xfail
- 967702590b ./libjava/testsuite/libjava.compile/redef4.java
-1927457704b ./libjava/testsuite/libjava.compile/redef4.xfail
- 91895527b ./libjava/testsuite/libjava.compile/redef5.java
-1927457704b ./libjava/testsuite/libjava.compile/redef5.xfail
- 301913850b ./libjava/testsuite/libjava.compile/redef6.java
-1927457704b ./libjava/testsuite/libjava.compile/redef6.xfail
-1601820268b ./libjava/testsuite/libjava.compile/Semi.java
-1151358467b ./libjava/testsuite/libjava.compile/static_1.java
-1927457704b ./libjava/testsuite/libjava.compile/static_1.xfail
-3508774254b ./libjava/testsuite/libjava.compile/static_2.java
-2802394982b ./libjava/testsuite/libjava.compile/static_2.xfail
-2883944369b ./libjava/testsuite/libjava.compile/static_3.java
-2802394982b ./libjava/testsuite/libjava.compile/static_3.xfail
-1286489290b ./libjava/testsuite/libjava.compile/static_init2.java
-1851980739b ./libjava/testsuite/libjava.compile/static_init.java
-1927457704b ./libjava/testsuite/libjava.compile/static_init.xfail
-2134939631b ./libjava/testsuite/libjava.compile/static_inner.java
-1283240173b ./libjava/testsuite/libjava.compile/Statics.java
-2919174619b ./libjava/testsuite/libjava.compile/SuperConstr.java
-3221090904b ./libjava/testsuite/libjava.compile/support/Case.java
-1796854903b ./libjava/testsuite/libjava.compile/support/PR129_A.java
-4294110747b ./libjava/testsuite/libjava.compile/support/PR206_A.java
-3604033893b ./libjava/testsuite/libjava.compile/support/PR207_A.java
-3847332882b ./libjava/testsuite/libjava.compile/support/Waldo.java
-4243896875b ./libjava/testsuite/libjava.compile/Twice.java
-1618780916b ./libjava/testsuite/libjava.compile/uesc.java
-1927457704b ./libjava/testsuite/libjava.compile/uesc.xfail
- 650583552b ./libjava/testsuite/libjava.compile/weirddecl.java
-2802394982b ./libjava/testsuite/libjava.compile/weirddecl.xfail
- 328754321b ./libjava/testsuite/libjava.compile/Where.java
- 20838332b ./libjava/testsuite/libjava.compile/Where.xfail
-4003272220b ./libjava/testsuite/libjava.compile/XercesBug.java
-2406961399b ./libjava/testsuite/libjava.jni/calls.c
- 570497497b ./libjava/testsuite/libjava.jni/calls.java
-2319994314b ./libjava/testsuite/libjava.jni/calls.out
-3258253370b ./libjava/testsuite/libjava.jni/cxxtest.cc
-3556355428b ./libjava/testsuite/libjava.jni/cxxtest.java
-1591540413b ./libjava/testsuite/libjava.jni/cxxtest.out
-3827106409b ./libjava/testsuite/libjava.jni/field.c
-2827280571b ./libjava/testsuite/libjava.jni/field.java
-1591540413b ./libjava/testsuite/libjava.jni/field.out
-2542861742b ./libjava/testsuite/libjava.jni/final_method.c
- 744642976b ./libjava/testsuite/libjava.jni/final_method.java
-4113024295b ./libjava/testsuite/libjava.jni/final_method.out
-2096366722b ./libjava/testsuite/libjava.jni/findclass.c
-1104414750b ./libjava/testsuite/libjava.jni/findclass.java
-2209130481b ./libjava/testsuite/libjava.jni/findclass.out
-3064158603b ./libjava/testsuite/libjava.jni/invoke.c
- 259614484b ./libjava/testsuite/libjava.jni/invoke.java
-2175620992b ./libjava/testsuite/libjava.jni/invoke.out
-2564626451b ./libjava/testsuite/libjava.jni/jni.exp
-4181163842b ./libjava/testsuite/libjava.jni/martin.c
-1311631215b ./libjava/testsuite/libjava.jni/martin.java
-3887683434b ./libjava/testsuite/libjava.jni/martin.out
-2791696369b ./libjava/testsuite/libjava.jni/noclass.c
- 32928721b ./libjava/testsuite/libjava.jni/noclass.java
- 497334114b ./libjava/testsuite/libjava.jni/noclass.out
-1963806613b ./libjava/testsuite/libjava.jni/overload.c
- 961228127b ./libjava/testsuite/libjava.jni/overload.java
-2399516383b ./libjava/testsuite/libjava.jni/overload.out
-1369103910b ./libjava/testsuite/libjava.jni/register.c
-4203322028b ./libjava/testsuite/libjava.jni/register.java
- 871340861b ./libjava/testsuite/libjava.jni/register.out
-4271669831b ./libjava/testsuite/libjava.jni/simple_int.c
- 555115153b ./libjava/testsuite/libjava.jni/simple_int.java
-1242895306b ./libjava/testsuite/libjava.jni/simple_int.out
-1996443135b ./libjava/testsuite/libjava.jni/throwit.c
-2321406220b ./libjava/testsuite/libjava.jni/throwit.java
-3149777050b ./libjava/testsuite/libjava.jni/throwit.out
-4001436975b ./libjava/testsuite/libjava.jni/virtual.c
-1112271683b ./libjava/testsuite/libjava.jni/virtual.java
-3956933800b ./libjava/testsuite/libjava.jni/virtual.out
- 68731963b ./libjava/testsuite/libjava.lang/anfi.java
-1280347506b ./libjava/testsuite/libjava.lang/anfi.out
-3232612065b ./libjava/testsuite/libjava.lang/anon2.java
- 119345088b ./libjava/testsuite/libjava.lang/anon2.out
-1843983227b ./libjava/testsuite/libjava.lang/anon3.java
-4270138359b ./libjava/testsuite/libjava.lang/anon3.out
- 507421585b ./libjava/testsuite/libjava.lang/anon4.java
-1106138275b ./libjava/testsuite/libjava.lang/anon4.out
-3443545975b ./libjava/testsuite/libjava.lang/anonarray2.java
-2382672912b ./libjava/testsuite/libjava.lang/anonarray2.out
-3491730776b ./libjava/testsuite/libjava.lang/anonarray3.java
-1685542540b ./libjava/testsuite/libjava.lang/anonarray3.out
-1808791407b ./libjava/testsuite/libjava.lang/anonarray.java
-2382672912b ./libjava/testsuite/libjava.lang/anonarray.out
- 112674158b ./libjava/testsuite/libjava.lang/anon_ctor_itf_arg.java
-3114021423b ./libjava/testsuite/libjava.lang/anon_ctor_itf_arg.out
-4123776590b ./libjava/testsuite/libjava.lang/anon.java
-2668540913b ./libjava/testsuite/libjava.lang/anon.out
- 861880957b ./libjava/testsuite/libjava.lang/Array_1.java
- 882278996b ./libjava/testsuite/libjava.lang/Array_1.out
-1251637952b ./libjava/testsuite/libjava.lang/Array_2.java
- 684357305b ./libjava/testsuite/libjava.lang/Array_2.out
- 938556093b ./libjava/testsuite/libjava.lang/Array_3.java
-4294967295b ./libjava/testsuite/libjava.lang/Array_3.out
-4266220724b ./libjava/testsuite/libjava.lang/ArrayStore2.java
-2092431633b ./libjava/testsuite/libjava.lang/ArrayStore2.out
-4156356334b ./libjava/testsuite/libjava.lang/ArrayStore2.xfail
-2027810547b ./libjava/testsuite/libjava.lang/ArrayStore.java
-1436845427b ./libjava/testsuite/libjava.lang/ArrayStore.out
- 300949552b ./libjava/testsuite/libjava.lang/ArrayStore.xfail
-3857779796b ./libjava/testsuite/libjava.lang/Class_1.java
-2350753667b ./libjava/testsuite/libjava.lang/Class_1.out
-2546101232b ./libjava/testsuite/libjava.lang/direct_read.java
-2764570783b ./libjava/testsuite/libjava.lang/direct_read.out
- 941796535b ./libjava/testsuite/libjava.lang/direct_write.java
- 975119945b ./libjava/testsuite/libjava.lang/direct_write.out
- 101283440b ./libjava/testsuite/libjava.lang/Divide_1.java
-1217781165b ./libjava/testsuite/libjava.lang/Divide_1.out
- 215085604b ./libjava/testsuite/libjava.lang/err10.java
-2283836352b ./libjava/testsuite/libjava.lang/err10.out
-1346535668b ./libjava/testsuite/libjava.lang/err11.java
-2283836352b ./libjava/testsuite/libjava.lang/err11.out
- 967139972b ./libjava/testsuite/libjava.lang/err12.java
-2283836352b ./libjava/testsuite/libjava.lang/err12.out
-1986676622b ./libjava/testsuite/libjava.lang/err13.java
-2283836352b ./libjava/testsuite/libjava.lang/err13.out
-4201705759b ./libjava/testsuite/libjava.lang/err1.java
-2283836352b ./libjava/testsuite/libjava.lang/err1.out
- 616366908b ./libjava/testsuite/libjava.lang/err2.java
-2283836352b ./libjava/testsuite/libjava.lang/err2.out
- 826646394b ./libjava/testsuite/libjava.lang/err3.java
- 468159192b ./libjava/testsuite/libjava.lang/err3.out
- 429966672b ./libjava/testsuite/libjava.lang/err4.java
- 818600219b ./libjava/testsuite/libjava.lang/err4.out
- 622843866b ./libjava/testsuite/libjava.lang/err5.java
-2283836352b ./libjava/testsuite/libjava.lang/err5.out
-2716447628b ./libjava/testsuite/libjava.lang/err6.java
-2283836352b ./libjava/testsuite/libjava.lang/err6.out
-1873356782b ./libjava/testsuite/libjava.lang/err7.java
-2283836352b ./libjava/testsuite/libjava.lang/err7.out
-1622039882b ./libjava/testsuite/libjava.lang/err8.java
-2283836352b ./libjava/testsuite/libjava.lang/err8.out
-1031956187b ./libjava/testsuite/libjava.lang/err9.java
-2283836352b ./libjava/testsuite/libjava.lang/err9.out
-3723805515b ./libjava/testsuite/libjava.lang/FileHandleGcTest.java
-4294967295b ./libjava/testsuite/libjava.lang/FileHandleGcTest.out
- 595443392b ./libjava/testsuite/libjava.lang/final_inner.java
- 269314928b ./libjava/testsuite/libjava.lang/final_inner.out
-2193071619b ./libjava/testsuite/libjava.lang/final_int.java
- 238725689b ./libjava/testsuite/libjava.lang/final_int.out
-1007761145b ./libjava/testsuite/libjava.lang/Final.java
-1431193732b ./libjava/testsuite/libjava.lang/Final.out
-3093949935b ./libjava/testsuite/libjava.lang/final_static_and_friend.java
-3219318744b ./libjava/testsuite/libjava.lang/final_static_and_friend.out
-4214563461b ./libjava/testsuite/libjava.lang/Float_1.java
- 151908695b ./libjava/testsuite/libjava.lang/Float_1.out
-4211438566b ./libjava/testsuite/libjava.lang/G19990301_01.java
- 461683115b ./libjava/testsuite/libjava.lang/G19990301_01.out
- 33515568b ./libjava/testsuite/libjava.lang/G19990302_02.java
-4126570333b ./libjava/testsuite/libjava.lang/G19990302_02.out
-1577075294b ./libjava/testsuite/libjava.lang/G19990303_01.java
-3694902336b ./libjava/testsuite/libjava.lang/G19990303_01.out
-3568552442b ./libjava/testsuite/libjava.lang/G19990303_02.java
-3718849348b ./libjava/testsuite/libjava.lang/G19990303_02.out
- 690728310b ./libjava/testsuite/libjava.lang/G19990304_01.java
-2163223985b ./libjava/testsuite/libjava.lang/G19990304_01.out
- 309057909b ./libjava/testsuite/libjava.lang/G19990310_01.java
-3818873941b ./libjava/testsuite/libjava.lang/G19990310_01.out
-3927692588b ./libjava/testsuite/libjava.lang/II.java
- 324202418b ./libjava/testsuite/libjava.lang/II.out
-2525179149b ./libjava/testsuite/libjava.lang/indirect.java
- 904878278b ./libjava/testsuite/libjava.lang/indirect.out
-2201837161b ./libjava/testsuite/libjava.lang/indirect_read.java
-3331949298b ./libjava/testsuite/libjava.lang/indirect_read.out
-3857018296b ./libjava/testsuite/libjava.lang/indirect_write.java
-1875502579b ./libjava/testsuite/libjava.lang/indirect_write.out
-1492610043b ./libjava/testsuite/libjava.lang/inner1.java
-3510182188b ./libjava/testsuite/libjava.lang/inner1.out
- 952566991b ./libjava/testsuite/libjava.lang/inner2.java
-3321962646b ./libjava/testsuite/libjava.lang/inner2.out
-4104675529b ./libjava/testsuite/libjava.lang/inner3.java
- 184321760b ./libjava/testsuite/libjava.lang/inner3.out
-3987559852b ./libjava/testsuite/libjava.lang/inner4.java
-3193066764b ./libjava/testsuite/libjava.lang/inner4.out
- 838539234b ./libjava/testsuite/libjava.lang/inner_array.java
-1272026125b ./libjava/testsuite/libjava.lang/inner_array.out
-1797808062b ./libjava/testsuite/libjava.lang/inner_interface.java
-1716749990b ./libjava/testsuite/libjava.lang/inner_interface.out
-1867695741b ./libjava/testsuite/libjava.lang/instance.java
-1690435817b ./libjava/testsuite/libjava.lang/instance.out
- 260121539b ./libjava/testsuite/libjava.lang/instinit2.java
-2177795989b ./libjava/testsuite/libjava.lang/instinit2.out
-1279201771b ./libjava/testsuite/libjava.lang/instinit.java
-2984417841b ./libjava/testsuite/libjava.lang/instinit.out
-2590078423b ./libjava/testsuite/libjava.lang/InterfaceDispatch.java
-3002596040b ./libjava/testsuite/libjava.lang/InterfaceDispatch.out
-2975542902b ./libjava/testsuite/libjava.lang/Invoke_1.java
- 636088706b ./libjava/testsuite/libjava.lang/Invoke_1.out
- 482546829b ./libjava/testsuite/libjava.lang/Invoke_2.java
-1406708247b ./libjava/testsuite/libjava.lang/Invoke_2.out
-4259046923b ./libjava/testsuite/libjava.lang/invoke_from_inner.java
- 297330900b ./libjava/testsuite/libjava.lang/invoke_from_inner.out
-1233424497b ./libjava/testsuite/libjava.lang/InvokeReturn.java
-1505249822b ./libjava/testsuite/libjava.lang/InvokeReturn.out
-4188659518b ./libjava/testsuite/libjava.lang/invokethrow.java
- 191230813b ./libjava/testsuite/libjava.lang/invokethrow.out
- 897141912b ./libjava/testsuite/libjava.lang/KeepInline.java
-3068566825b ./libjava/testsuite/libjava.lang/KeepInline.out
-1729910187b ./libjava/testsuite/libjava.lang/klass.java
-1591540413b ./libjava/testsuite/libjava.lang/klass.out
-2546673117b ./libjava/testsuite/libjava.lang/lang.exp
-1339868029b ./libjava/testsuite/libjava.lang/Matrix4f.java
-2870485448b ./libjava/testsuite/libjava.lang/Matrix4f.out
-2891997855b ./libjava/testsuite/libjava.lang/multiple_finit.java
-3652598231b ./libjava/testsuite/libjava.lang/multiple_finit.out
-3824357332b ./libjava/testsuite/libjava.lang/N19990310_02.java
-2283836352b ./libjava/testsuite/libjava.lang/N19990310_02.out
- 792408510b ./libjava/testsuite/libjava.lang/N19990310_3.java
-2283836352b ./libjava/testsuite/libjava.lang/N19990310_3.out
-1646449121b ./libjava/testsuite/libjava.lang/N19990310_4.java
-2283836352b ./libjava/testsuite/libjava.lang/N19990310_4.out
-1522131980b ./libjava/testsuite/libjava.lang/N19990310_5.java
-2283836352b ./libjava/testsuite/libjava.lang/N19990310_5.out
-1347891809b ./libjava/testsuite/libjava.lang/negzero.java
-2849607288b ./libjava/testsuite/libjava.lang/negzero.out
-1199013303b ./libjava/testsuite/libjava.lang/nested_with_ctor.java
-4279847335b ./libjava/testsuite/libjava.lang/nested_with_ctor.out
-3956035919b ./libjava/testsuite/libjava.lang/pr100.java
- 706901580b ./libjava/testsuite/libjava.lang/pr100.xpo
- 424134208b ./libjava/testsuite/libjava.lang/pr109.java
-4059478477b ./libjava/testsuite/libjava.lang/pr109.out
-1039260224b ./libjava/testsuite/libjava.lang/pr133.java
-3434991606b ./libjava/testsuite/libjava.lang/pr133.out
-4106708340b ./libjava/testsuite/libjava.lang/PR141.java
- 417890381b ./libjava/testsuite/libjava.lang/PR141.out
- 924969358b ./libjava/testsuite/libjava.lang/PR160.java
- 636088706b ./libjava/testsuite/libjava.lang/PR160.out
- 710573971b ./libjava/testsuite/libjava.lang/PR162.java
-3491850227b ./libjava/testsuite/libjava.lang/PR162.out
-3102718266b ./libjava/testsuite/libjava.lang/pr179.java
-3022277835b ./libjava/testsuite/libjava.lang/pr179.out
-2924279369b ./libjava/testsuite/libjava.lang/pr184.java
-4039517750b ./libjava/testsuite/libjava.lang/pr184.out
-4227723795b ./libjava/testsuite/libjava.lang/PR218.java
-4039517750b ./libjava/testsuite/libjava.lang/PR218.out
-1329261743b ./libjava/testsuite/libjava.lang/PR242.java
-1147234566b ./libjava/testsuite/libjava.lang/PR242.out
- 526707998b ./libjava/testsuite/libjava.lang/PR260.java
-3569591772b ./libjava/testsuite/libjava.lang/PR260.out
- 14665884b ./libjava/testsuite/libjava.lang/PR3096.java
-2259565565b ./libjava/testsuite/libjava.lang/PR3096.out
-2985138501b ./libjava/testsuite/libjava.lang/PR3731.java
-3956933800b ./libjava/testsuite/libjava.lang/PR3731.out
-2570001649b ./libjava/testsuite/libjava.lang/PR5057_2.java
- 742353047b ./libjava/testsuite/libjava.lang/PR5057_2.out
-2537530668b ./libjava/testsuite/libjava.lang/PR5057.java
- 742353047b ./libjava/testsuite/libjava.lang/PR5057.out
-1438756381b ./libjava/testsuite/libjava.lang/PR55.java
-1201518198b ./libjava/testsuite/libjava.lang/PR55.out
-1733338993b ./libjava/testsuite/libjava.lang/PR56.java
-4294967295b ./libjava/testsuite/libjava.lang/PR56.out
- 832973302b ./libjava/testsuite/libjava.lang/pr83.java
- 987139956b ./libjava/testsuite/libjava.lang/pr83.out
-1555339199b ./libjava/testsuite/libjava.lang/private_direct_read.java
-2096756880b ./libjava/testsuite/libjava.lang/private_direct_read.out
- 901884110b ./libjava/testsuite/libjava.lang/private_direct_write.java
-2184429421b ./libjava/testsuite/libjava.lang/private_indirect_read.java
- 523758111b ./libjava/testsuite/libjava.lang/private_indirect_write.java
-1147328248b ./libjava/testsuite/libjava.lang/search_outer.java
-3994336194b ./libjava/testsuite/libjava.lang/search_outer.out
- 230260077b ./libjava/testsuite/libjava.lang/Shazam.java
-2140426616b ./libjava/testsuite/libjava.lang/Shazam.out
-3112946038b ./libjava/testsuite/libjava.lang/StringBuffer_1.java
-2481391305b ./libjava/testsuite/libjava.lang/StringBuffer_1.out
-1823338028b ./libjava/testsuite/libjava.lang/stringconst2.java
-2835043487b ./libjava/testsuite/libjava.lang/stringconst2.out
-1863083995b ./libjava/testsuite/libjava.lang/stringconst.java
-2835043487b ./libjava/testsuite/libjava.lang/stringconst.out
-4156356334b ./libjava/testsuite/libjava.lang/stringconst.xfail
-2261096902b ./libjava/testsuite/libjava.lang/stub.java
-3886998802b ./libjava/testsuite/libjava.lang/stub.out
-3629333030b ./libjava/testsuite/libjava.lang/Synch.java
- 497334114b ./libjava/testsuite/libjava.lang/Synch.out
-2731334240b ./libjava/testsuite/libjava.lang/SyncTest.java
- 636088706b ./libjava/testsuite/libjava.lang/SyncTest.out
-2443605665b ./libjava/testsuite/libjava.lang/SyncTest.xfail
-1655763772b ./libjava/testsuite/libjava.lang/test_long.java
-3533371317b ./libjava/testsuite/libjava.lang/test_long.out
- 523427206b ./libjava/testsuite/libjava.lang/Thread_Alive.java
-3591103454b ./libjava/testsuite/libjava.lang/Thread_Alive.out
-2443605665b ./libjava/testsuite/libjava.lang/Thread_Alive.xfail
-1125974645b ./libjava/testsuite/libjava.lang/Thread_Interrupt.java
-2320601405b ./libjava/testsuite/libjava.lang/Thread_Interrupt.out
-2443605665b ./libjava/testsuite/libjava.lang/Thread_Interrupt.xfail
-2682118636b ./libjava/testsuite/libjava.lang/Thread_Join.java
-2884008640b ./libjava/testsuite/libjava.lang/Thread_Join.out
-2443605665b ./libjava/testsuite/libjava.lang/Thread_Join.xfail
-3992399686b ./libjava/testsuite/libjava.lang/Thread_Monitor.java
- 636088706b ./libjava/testsuite/libjava.lang/Thread_Monitor.out
-2443605665b ./libjava/testsuite/libjava.lang/Thread_Monitor.xfail
-3015472066b ./libjava/testsuite/libjava.lang/Thread_Sleep.java
-1299320686b ./libjava/testsuite/libjava.lang/Thread_Sleep.out
-2443605665b ./libjava/testsuite/libjava.lang/Thread_Sleep.xfail
-2785867945b ./libjava/testsuite/libjava.lang/Thread_Wait_2.java
-3278714705b ./libjava/testsuite/libjava.lang/Thread_Wait_2.out
-2443605665b ./libjava/testsuite/libjava.lang/Thread_Wait_2.xfail
-3412514508b ./libjava/testsuite/libjava.lang/Thread_Wait_Interrupt.java
-3606244218b ./libjava/testsuite/libjava.lang/Thread_Wait_Interrupt.out
-2443605665b ./libjava/testsuite/libjava.lang/Thread_Wait_Interrupt.xfail
-3820325918b ./libjava/testsuite/libjava.lang/Thread_Wait.java
-3866441409b ./libjava/testsuite/libjava.lang/Thread_Wait.out
-2443605665b ./libjava/testsuite/libjava.lang/Thread_Wait.xfail
-1046451808b ./libjava/testsuite/libjava.lang/Throw_1.java
-4294967295b ./libjava/testsuite/libjava.lang/Throw_1.out
-1749384831b ./libjava/testsuite/libjava.lang/Throw_2.java
-4294967295b ./libjava/testsuite/libjava.lang/Throw_2.out
-1571608298b ./libjava/testsuite/libjava.lang/TLtest.java
-2677880801b ./libjava/testsuite/libjava.lang/TLtest.out
-2443605665b ./libjava/testsuite/libjava.lang/TLtest.xfail
-1531499305b ./libjava/testsuite/libjava.lang/tmi.java
-1798035647b ./libjava/testsuite/libjava.lang/tmi.out
-4123810669b ./libjava/testsuite/libjava.lang/tp.java
-1040445301b ./libjava/testsuite/libjava.lang/tp.out
-3674020949b ./libjava/testsuite/libjava.lang/update_outer.java
-1947112134b ./libjava/testsuite/libjava.lang/update_outer.out
-4013205125b ./libjava/testsuite/libjava.mauve/DejaGNUTestHarness.java
-1740456441b ./libjava/testsuite/libjava.mauve/mauve.exp
-2293687712b ./libjava/testsuite/libjava.mauve/xfails
-2598210176b ./libjava/testsuite/lib/libjava.exp
-3806425466b ./libjava/testsuite/Makefile.am
-1096421437b ./libjava/testsuite/Makefile.in
-3410290178b ./libjava/THANKS
-3417667916b ./libjava/verify.cc
- 916359044b ./libjava/win32.cc
-3459150705b ./libjava/win32-threads.cc
- 202134358b ./libobjc/aclocal.m4
- 605856870b ./libobjc/archive.c
-3939154891b ./libobjc/ChangeLog
-3477231866b ./libobjc/class.c
-1748737547b ./libobjc/config.h.in
-3049756062b ./libobjc/configure
-3168606688b ./libobjc/configure.in
- 506544385b ./libobjc/encoding.c
- 726164266b ./libobjc/gc.c
-1761713542b ./libobjc/hash.c
-1287123563b ./libobjc/init.c
- 489398123b ./libobjc/libobjc.def
-4072125181b ./libobjc/libobjc_entry.c
-4260228535b ./libobjc/linking.m
-2398517524b ./libobjc/makefile.dos
-3980241111b ./libobjc/Makefile.in
- 687879051b ./libobjc/misc.c
-1752870170b ./libobjc/nil_method.c
- 638422313b ./libobjc/NXConstStr.m
-1692177559b ./libobjc/objc/encoding.h
- 597415090b ./libobjc/objc/hash.h
-1937854528b ./libobjc/objc/NXConstStr.h
-1908906592b ./libobjc/objc/objc-api.h
-2946018502b ./libobjc/objc/objc.h
-1569406371b ./libobjc/objc/objc-list.h
-1680445531b ./libobjc/objc/Object.h
- 226797930b ./libobjc/objc/Protocol.h
-1775267864b ./libobjc/objc/runtime.h
-1609667340b ./libobjc/objc/sarray.h
-2440049860b ./libobjc/objc/thr.h
-2746948162b ./libobjc/objc/typedstream.h
-3285287551b ./libobjc/Object.m
-2760949240b ./libobjc/objects.c
-3962273975b ./libobjc/Protocol.m
-3823063152b ./libobjc/README
- 749035591b ./libobjc/README.threads
-1415022174b ./libobjc/sarray.c
- 791617547b ./libobjc/selector.c
-3257296953b ./libobjc/sendmsg.c
-3239202263b ./libobjc/thr.c
-3414327023b ./libobjc/thr-dce.c
-2193934747b ./libobjc/thr-decosf1.c
- 519687216b ./libobjc/THREADS
-4055902911b ./libobjc/THREADS.MACH
- 570456722b ./libobjc/thr-irix.c
-1715842563b ./libobjc/thr-mach.c
-1626852001b ./libobjc/thr-objc.c
-2841374444b ./libobjc/thr-os2.c
-1966484436b ./libobjc/thr-posix.c
- 938980526b ./libobjc/thr-pthreads.c
- 718257247b ./libobjc/thr-rtems.c
-2005277748b ./libobjc/thr-single.c
- 60531382b ./libobjc/thr-solaris.c
-2005277748b ./libobjc/thr-vxworks.c
-2963027857b ./libobjc/thr-win32.c
-3752097356b ./libstdc++-v3/acconfig.h
-4198718896b ./libstdc++-v3/acinclude.m4
-1909196152b ./libstdc++-v3/aclocal.m4
-3127052377b ./libstdc++-v3/ChangeLog
-1996982572b ./libstdc++-v3/ChangeLog-2000
-3665233589b ./libstdc++-v3/ChangeLog-2001
-4214408479b ./libstdc++-v3/config/abi/alphaev67-unknown-linux-gnu/baseline_symbols.txt
-1077465800b ./libstdc++-v3/config/abi/extract_symvers
-1049799838b ./libstdc++-v3/config/abi/i686-pc-linux-gnu/baseline_symbols.txt
-3479696688b ./libstdc++-v3/config/abi/ia64-unknown-linux-gnu/baseline_symbols.txt
-3799164404b ./libstdc++-v3/config/cpu/alpha/bits/atomicity.h
-2657854614b ./libstdc++-v3/config/cpu/alpha/bits/cpu_limits.h
-2453414067b ./libstdc++-v3/config/cpu/arm/bits/atomicity.h
-1636456412b ./libstdc++-v3/config/cpu/cris/bits/atomicity.h
-2029688870b ./libstdc++-v3/config/cpu/cris/bits/cpu_limits.h
-3812954815b ./libstdc++-v3/config/cpu/generic/bits/atomicity.h
-1315378737b ./libstdc++-v3/config/cpu/generic/bits/cpu_limits.h
-1670735336b ./libstdc++-v3/config/cpu/generic/bits/limits.h
-2485610863b ./libstdc++-v3/config/cpu/i386/bits/atomicity.h
- 593957722b ./libstdc++-v3/config/cpu/i386/bits/cpu_limits.h
- 623210587b ./libstdc++-v3/config/cpu/i486/bits/atomicity.h
- 193432505b ./libstdc++-v3/config/cpu/ia64/bits/atomicity.h
-1770651251b ./libstdc++-v3/config/cpu/ia64/bits/cpu_limits.h
-1265572143b ./libstdc++-v3/config/cpu/m68k/bits/atomicity.h
-3967527574b ./libstdc++-v3/config/cpu/m68k/bits/cpu_limits.h
-1806424498b ./libstdc++-v3/config/cpu/mips/bits/atomicity.h
- 736712600b ./libstdc++-v3/config/cpu/mmix/bits/cpu_limits.h
-1062517327b ./libstdc++-v3/config/cpu/powerpc/bits/atomicity.h
-1958944292b ./libstdc++-v3/config/cpu/powerpc/bits/cpu_limits.h
-3930061484b ./libstdc++-v3/config/cpu/s390/bits/atomicity.h
-2029688870b ./libstdc++-v3/config/cpu/s390/bits/cpu_limits.h
-1984909614b ./libstdc++-v3/config/cpu/sparc/bits/atomicity.h
- 785222978b ./libstdc++-v3/config/cpu/x86-64/bits/atomicity.h
-4180289496b ./libstdc++-v3/config/cpu/x86-64/bits/cpu_limits.h
- 618996063b ./libstdc++-v3/config.h.in
-1453199454b ./libstdc++-v3/config/io/basic_file_libio.cc
-3157152478b ./libstdc++-v3/config/io/basic_file_libio.h
-3725479456b ./libstdc++-v3/config/io/basic_file_stdio.cc
-2615133940b ./libstdc++-v3/config/io/basic_file_stdio.h
- 714808428b ./libstdc++-v3/config/io/c_io_libio_codecvt.c
-1754405198b ./libstdc++-v3/config/io/c_io_libio.h
-3948747720b ./libstdc++-v3/config/io/c_io_stdio.h
-1615839786b ./libstdc++-v3/config/linker-map.dummy
-2896868371b ./libstdc++-v3/config/linker-map.gnu
-1866975602b ./libstdc++-v3/config/locale/generic/c_locale.cc
-1871355918b ./libstdc++-v3/config/locale/generic/c_locale.h
-3981697735b ./libstdc++-v3/config/locale/generic/c++locale_internal.h
-3717051883b ./libstdc++-v3/config/locale/generic/codecvt_members.cc
-2005861251b ./libstdc++-v3/config/locale/generic/codecvt_specializations.h
-4228611347b ./libstdc++-v3/config/locale/generic/collate_members.cc
-1221593163b ./libstdc++-v3/config/locale/generic/ctype_members.cc
- 474184383b ./libstdc++-v3/config/locale/generic/messages_members.cc
-2682213266b ./libstdc++-v3/config/locale/generic/messages_members.h
- 45184175b ./libstdc++-v3/config/locale/generic/monetary_members.cc
- 650933917b ./libstdc++-v3/config/locale/generic/numeric_members.cc
-3011916115b ./libstdc++-v3/config/locale/generic/time_members.cc
-1345884901b ./libstdc++-v3/config/locale/gnu/c_locale.cc
- 543017678b ./libstdc++-v3/config/locale/gnu/c_locale.h
- 490906006b ./libstdc++-v3/config/locale/gnu/c++locale_internal.h
-2228791650b ./libstdc++-v3/config/locale/gnu/codecvt_members.cc
-3958263092b ./libstdc++-v3/config/locale/gnu/collate_members.cc
-1102464431b ./libstdc++-v3/config/locale/gnu/ctype_members.cc
-4087381875b ./libstdc++-v3/config/locale/gnu/messages_members.cc
-4050802736b ./libstdc++-v3/config/locale/gnu/messages_members.h
-3100021465b ./libstdc++-v3/config/locale/gnu/monetary_members.cc
- 630744503b ./libstdc++-v3/config/locale/gnu/numeric_members.cc
-2183208255b ./libstdc++-v3/config/locale/gnu/time_members.cc
-3232379868b ./libstdc++-v3/config/locale/ieee_1003.1-2001/c_locale.cc
-3136594064b ./libstdc++-v3/config/locale/ieee_1003.1-2001/c_locale.h
-3256263647b ./libstdc++-v3/config/locale/ieee_1003.1-2001/codecvt_specializations.h
-3823275112b ./libstdc++-v3/config/locale/ieee_1003.1-2001/messages_members.cc
- 488667815b ./libstdc++-v3/config/locale/ieee_1003.1-2001/messages_members.h
-4256387970b ./libstdc++-v3/config/os/aix/bits/atomicity.h
-2669974896b ./libstdc++-v3/config/os/aix/bits/ctype_base.h
-3165823414b ./libstdc++-v3/config/os/aix/bits/ctype_inline.h
-3499623117b ./libstdc++-v3/config/os/aix/bits/ctype_noninline.h
-1501649315b ./libstdc++-v3/config/os/aix/bits/os_defines.h
- 537966674b ./libstdc++-v3/config/os/bsd/freebsd/bits/ctype_base.h
-2331573625b ./libstdc++-v3/config/os/bsd/freebsd/bits/ctype_inline.h
-1778189959b ./libstdc++-v3/config/os/bsd/freebsd/bits/ctype_noninline.h
-4188452209b ./libstdc++-v3/config/os/bsd/freebsd/bits/os_defines.h
-1041874990b ./libstdc++-v3/config/os/bsd/netbsd/bits/ctype_base.h
- 361863904b ./libstdc++-v3/config/os/bsd/netbsd/bits/ctype_inline.h
-3997726502b ./libstdc++-v3/config/os/bsd/netbsd/bits/ctype_noninline.h
-1602795831b ./libstdc++-v3/config/os/bsd/netbsd/bits/os_defines.h
-3950885908b ./libstdc++-v3/config/os/djgpp/bits/ctype_base.h
-4050668400b ./libstdc++-v3/config/os/djgpp/bits/ctype_inline.h
-2200168434b ./libstdc++-v3/config/os/djgpp/bits/ctype_noninline.h
-1128798661b ./libstdc++-v3/config/os/djgpp/bits/os_defines.h
-1770894154b ./libstdc++-v3/config/os/generic/bits/ctype_base.h
- 913781161b ./libstdc++-v3/config/os/generic/bits/ctype_inline.h
-2814302307b ./libstdc++-v3/config/os/generic/bits/ctype_noninline.h
-2662031339b ./libstdc++-v3/config/os/generic/bits/os_defines.h
- 585502053b ./libstdc++-v3/config/os/gnu-linux/bits/ctype_base.h
- 577770049b ./libstdc++-v3/config/os/gnu-linux/bits/ctype_inline.h
- 382466980b ./libstdc++-v3/config/os/gnu-linux/bits/ctype_noninline.h
-1115301117b ./libstdc++-v3/config/os/gnu-linux/bits/os_defines.h
-1503897878b ./libstdc++-v3/config/os/hpux/bits/cpu_limits.h
-2727448261b ./libstdc++-v3/config/os/hpux/bits/ctype_base.h
- 521899911b ./libstdc++-v3/config/os/hpux/bits/ctype_inline.h
-1287488501b ./libstdc++-v3/config/os/hpux/bits/ctype_noninline.h
-4256303940b ./libstdc++-v3/config/os/hpux/bits/os_defines.h
- 805235121b ./libstdc++-v3/config/os/irix/irix5.2/bits/atomicity.h
- 734403019b ./libstdc++-v3/config/os/irix/irix5.2/bits/ctype_base.h
-2703839638b ./libstdc++-v3/config/os/irix/irix5.2/bits/ctype_inline.h
-3142167642b ./libstdc++-v3/config/os/irix/irix5.2/bits/ctype_noninline.h
-3024037761b ./libstdc++-v3/config/os/irix/irix5.2/bits/os_defines.h
-1437354439b ./libstdc++-v3/config/os/irix/irix6.5/bits/atomicity.h
-1682275129b ./libstdc++-v3/config/os/irix/irix6.5/bits/ctype_base.h
-4093669771b ./libstdc++-v3/config/os/irix/irix6.5/bits/ctype_inline.h
-1925322031b ./libstdc++-v3/config/os/irix/irix6.5/bits/ctype_noninline.h
-4040974915b ./libstdc++-v3/config/os/irix/irix6.5/bits/os_defines.h
-2513027003b ./libstdc++-v3/config/os/mingw32/bits/ctype_base.h
-2249364639b ./libstdc++-v3/config/os/mingw32/bits/ctype_inline.h
-4236896349b ./libstdc++-v3/config/os/mingw32/bits/ctype_noninline.h
-3217385665b ./libstdc++-v3/config/os/mingw32/bits/os_defines.h
-1435551091b ./libstdc++-v3/config/os/newlib/bits/ctype_base.h
-4265751979b ./libstdc++-v3/config/os/newlib/bits/ctype_inline.h
-3780859290b ./libstdc++-v3/config/os/newlib/bits/ctype_noninline.h
-1247228618b ./libstdc++-v3/config/os/newlib/bits/os_defines.h
- 269230749b ./libstdc++-v3/config/os/osf/osf5.0/bits/cpu_limits.h
-1980991936b ./libstdc++-v3/config/os/qnx/qnx6.1/bits/ctype_base.h
- 418495046b ./libstdc++-v3/config/os/qnx/qnx6.1/bits/ctype_inline.h
- 545913221b ./libstdc++-v3/config/os/qnx/qnx6.1/bits/ctype_noninline.h
- 263975258b ./libstdc++-v3/config/os/qnx/qnx6.1/bits/os_defines.h
-4257366577b ./libstdc++-v3/config/os/solaris/solaris2.5/bits/ctype_base.h
- 967249986b ./libstdc++-v3/config/os/solaris/solaris2.5/bits/ctype_inline.h
-2955367373b ./libstdc++-v3/config/os/solaris/solaris2.5/bits/ctype_noninline.h
- 167493702b ./libstdc++-v3/config/os/solaris/solaris2.5/bits/os_defines.h
-1305011444b ./libstdc++-v3/config/os/solaris/solaris2.6/bits/ctype_base.h
- 404061893b ./libstdc++-v3/config/os/solaris/solaris2.6/bits/ctype_inline.h
-3814698223b ./libstdc++-v3/config/os/solaris/solaris2.6/bits/ctype_noninline.h
-1062247100b ./libstdc++-v3/config/os/solaris/solaris2.6/bits/os_defines.h
-2023078243b ./libstdc++-v3/config/os/solaris/solaris2.7/bits/ctype_base.h
- 577770049b ./libstdc++-v3/config/os/solaris/solaris2.7/bits/ctype_inline.h
- 399834321b ./libstdc++-v3/config/os/solaris/solaris2.7/bits/ctype_noninline.h
- 157883947b ./libstdc++-v3/config/os/solaris/solaris2.7/bits/os_defines.h
-3959422938b ./libstdc++-v3/configure
-3116040814b ./libstdc++-v3/configure.host
- 247346621b ./libstdc++-v3/configure.in
- 282761406b ./libstdc++-v3/configure.target
-1779001880b ./libstdc++-v3/docs/doxygen/doxygroups.cc
-1637481960b ./libstdc++-v3/docs/doxygen/Intro.3
- 748681152b ./libstdc++-v3/docs/doxygen/mainpage.html
- 712715143b ./libstdc++-v3/docs/doxygen/run_doxygen
- 668865588b ./libstdc++-v3/docs/doxygen/stdheader.cc
-2931788874b ./libstdc++-v3/docs/doxygen/style.css
-2943242387b ./libstdc++-v3/docs/doxygen/tables.html
-4021129076b ./libstdc++-v3/docs/doxygen/TODO
-1481189007b ./libstdc++-v3/docs/doxygen/user.cfg.in
-4001239912b ./libstdc++-v3/docs/html/17_intro/BADNAMES
- 985890621b ./libstdc++-v3/docs/html/17_intro/BUGS
-2881598729b ./libstdc++-v3/docs/html/17_intro/CHECKLIST
-3997884874b ./libstdc++-v3/docs/html/17_intro/concept_check.diff
-2558571248b ./libstdc++-v3/docs/html/17_intro/contribute.html
-2171125041b ./libstdc++-v3/docs/html/17_intro/COPYING
-3922222294b ./libstdc++-v3/docs/html/17_intro/COPYING.DOC
-3201164177b ./libstdc++-v3/docs/html/17_intro/C++STYLE
-3222542515b ./libstdc++-v3/docs/html/17_intro/DESIGN
-1363011462b ./libstdc++-v3/docs/html/17_intro/HEADER_POLICY
-3461116413b ./libstdc++-v3/docs/html/17_intro/headers_cc.txt
-2481329262b ./libstdc++-v3/docs/html/17_intro/howto.html
-3565645043b ./libstdc++-v3/docs/html/17_intro/libstdc++-assign.txt
- 666334248b ./libstdc++-v3/docs/html/17_intro/license.html
- 982764901b ./libstdc++-v3/docs/html/17_intro/organization
-1322295551b ./libstdc++-v3/docs/html/17_intro/porting-howto.html
- 405521978b ./libstdc++-v3/docs/html/17_intro/porting-howto.xml
-2381176791b ./libstdc++-v3/docs/html/17_intro/porting.html
-2408767440b ./libstdc++-v3/docs/html/17_intro/porting.texi
- 12001592b ./libstdc++-v3/docs/html/17_intro/PROBLEMS
-2519365120b ./libstdc++-v3/docs/html/17_intro/RELEASE-NOTES
-1434629529b ./libstdc++-v3/docs/html/17_intro/TODO
-2819713781b ./libstdc++-v3/docs/html/18_support/howto.html
-2508850192b ./libstdc++-v3/docs/html/19_diagnostics/howto.html
-2830656893b ./libstdc++-v3/docs/html/20_util/howto.html
-2326263830b ./libstdc++-v3/docs/html/21_strings/gotw29a.txt
- 547290487b ./libstdc++-v3/docs/html/21_strings/howto.html
-3590781787b ./libstdc++-v3/docs/html/21_strings/stringtok_h.txt
-3437467499b ./libstdc++-v3/docs/html/21_strings/stringtok_std_h.txt
-1023569015b ./libstdc++-v3/docs/html/22_locale/codecvt.html
-1194040038b ./libstdc++-v3/docs/html/22_locale/ctype.html
-2274046295b ./libstdc++-v3/docs/html/22_locale/howto.html
- 908518604b ./libstdc++-v3/docs/html/22_locale/locale.html
-2156680698b ./libstdc++-v3/docs/html/22_locale/messages.html
-3162616357b ./libstdc++-v3/docs/html/23_containers/howto.html
-3458392326b ./libstdc++-v3/docs/html/23_containers/wrappers_h.txt
- 453248579b ./libstdc++-v3/docs/html/24_iterators/howto.html
-2290789124b ./libstdc++-v3/docs/html/25_algorithms/howto.html
-3773351147b ./libstdc++-v3/docs/html/26_numerics/howto.html
-2452165260b ./libstdc++-v3/docs/html/27_io/binary_iostreams_kanze.txt
-3249620502b ./libstdc++-v3/docs/html/27_io/binary_iostreams_kuehl.txt
-1136841501b ./libstdc++-v3/docs/html/27_io/howto.html
-3224577239b ./libstdc++-v3/docs/html/abi.txt
- 552573454b ./libstdc++-v3/docs/html/configopts.html
- 714859455b ./libstdc++-v3/docs/html/documentation.html
-1281947731b ./libstdc++-v3/docs/html/explanations.html
-2578738010b ./libstdc++-v3/docs/html/ext/howto.html
-1604238359b ./libstdc++-v3/docs/html/ext/lwg-active.html
- 323640830b ./libstdc++-v3/docs/html/ext/lwg-defects.html
-2613919530b ./libstdc++-v3/docs/html/ext/sgiexts.html
-3573437034b ./libstdc++-v3/docs/html/faq/index.html
-1977830783b ./libstdc++-v3/docs/html/faq/index.txt
-1032487062b ./libstdc++-v3/docs/html/install.html
-2049389478b ./libstdc++-v3/docs/html/lib3styles.css
-1757651676b ./libstdc++-v3/docs/html/makedoc.awk
-3528340567b ./libstdc++-v3/docs/html/Makefile
-2473605692b ./libstdc++-v3/include/backward/algobase.h
-2730818532b ./libstdc++-v3/include/backward/algo.h
-1509057550b ./libstdc++-v3/include/backward/alloc.h
-2505680659b ./libstdc++-v3/include/backward/backward_warning.h
-1252063761b ./libstdc++-v3/include/backward/bvector.h
-3485743051b ./libstdc++-v3/include/backward/complex.h
- 397779689b ./libstdc++-v3/include/backward/defalloc.h
-3218873508b ./libstdc++-v3/include/backward/deque.h
-3713719075b ./libstdc++-v3/include/backward/fstream.h
-3758866193b ./libstdc++-v3/include/backward/function.h
-3633365455b ./libstdc++-v3/include/backward/hash_map.h
-2468519049b ./libstdc++-v3/include/backward/hash_set.h
-3191638109b ./libstdc++-v3/include/backward/hashtable.h
-3255441651b ./libstdc++-v3/include/backward/heap.h
-3979460244b ./libstdc++-v3/include/backward/iomanip.h
-1508058162b ./libstdc++-v3/include/backward/iostream.h
-1766778751b ./libstdc++-v3/include/backward/istream.h
-3559514326b ./libstdc++-v3/include/backward/iterator.h
- 477791767b ./libstdc++-v3/include/backward/list.h
-2194603711b ./libstdc++-v3/include/backward/map.h
-3046068041b ./libstdc++-v3/include/backward/multimap.h
-3924474284b ./libstdc++-v3/include/backward/multiset.h
-1959434229b ./libstdc++-v3/include/backward/new.h
-3127480935b ./libstdc++-v3/include/backward/ostream.h
-1702071145b ./libstdc++-v3/include/backward/pair.h
-1947043927b ./libstdc++-v3/include/backward/queue.h
-3061027826b ./libstdc++-v3/include/backward/rope.h
-2568486625b ./libstdc++-v3/include/backward/set.h
-2372197114b ./libstdc++-v3/include/backward/slist.h
- 374939843b ./libstdc++-v3/include/backward/stack.h
-3825989730b ./libstdc++-v3/include/backward/streambuf.h
-2367779603b ./libstdc++-v3/include/backward/stream.h
-4047744617b ./libstdc++-v3/include/backward/strstream
-3139222786b ./libstdc++-v3/include/backward/strstream.h
-2999216474b ./libstdc++-v3/include/backward/tempbuf.h
-1420771511b ./libstdc++-v3/include/backward/tree.h
-3803139445b ./libstdc++-v3/include/backward/vector.h
-4104762506b ./libstdc++-v3/include/bits/basic_ios.h
- 613772707b ./libstdc++-v3/include/bits/basic_ios.tcc
-1196444434b ./libstdc++-v3/include/bits/basic_string.h
-3004074520b ./libstdc++-v3/include/bits/basic_string.tcc
- 179433314b ./libstdc++-v3/include/bits/boost_concept_check.h
-2084732240b ./libstdc++-v3/include/bits/c++config
-3498736544b ./libstdc++-v3/include/bits/char_traits.h
-3672868066b ./libstdc++-v3/include/bits/codecvt.h
-2442194789b ./libstdc++-v3/include/bits/concept_check.h
- 329719722b ./libstdc++-v3/include/bits/cpp_type_traits.h
-1176672394b ./libstdc++-v3/include/bits/fpos.h
- 986176051b ./libstdc++-v3/include/bits/fstream.tcc
-3886600201b ./libstdc++-v3/include/bits/functexcept.h
-3055891139b ./libstdc++-v3/include/bits/generic_shadow.h
-3512731163b ./libstdc++-v3/include/bits/gslice_array.h
-1117238130b ./libstdc++-v3/include/bits/gslice.h
-3450716320b ./libstdc++-v3/include/bits/indirect_array.h
-4268468129b ./libstdc++-v3/include/bits/ios_base.h
- 43945125b ./libstdc++-v3/include/bits/istream.tcc
-1947395633b ./libstdc++-v3/include/bits/locale_facets.h
-1104096949b ./libstdc++-v3/include/bits/locale_facets.tcc
-3189614545b ./libstdc++-v3/include/bits/localefwd.h
-1519677165b ./libstdc++-v3/include/bits/mask_array.h
-2822101373b ./libstdc++-v3/include/bits/ostream.tcc
-3592433582b ./libstdc++-v3/include/bits/pthread_allocimpl.h
-2670647629b ./libstdc++-v3/include/bits/slice_array.h
-3194205835b ./libstdc++-v3/include/bits/slice.h
-3555571522b ./libstdc++-v3/include/bits/sstream.tcc
-3316800061b ./libstdc++-v3/include/bits/stl_algobase.h
-1569010907b ./libstdc++-v3/include/bits/stl_algo.h
-2270226903b ./libstdc++-v3/include/bits/stl_alloc.h
-2801261805b ./libstdc++-v3/include/bits/stl_bvector.h
-3302543196b ./libstdc++-v3/include/bits/stl_construct.h
-1156806073b ./libstdc++-v3/include/bits/stl_deque.h
- 297399515b ./libstdc++-v3/include/bits/stl_function.h
-2464389940b ./libstdc++-v3/include/bits/stl_heap.h
-2116609667b ./libstdc++-v3/include/bits/stl_iterator_base_funcs.h
-2132265867b ./libstdc++-v3/include/bits/stl_iterator_base_types.h
-2136979193b ./libstdc++-v3/include/bits/stl_iterator.h
- 684063649b ./libstdc++-v3/include/bits/stl_list.h
- 883579033b ./libstdc++-v3/include/bits/stl_map.h
- 567466793b ./libstdc++-v3/include/bits/stl_multimap.h
-2343171452b ./libstdc++-v3/include/bits/stl_multiset.h
-1738941440b ./libstdc++-v3/include/bits/stl_numeric.h
-4071317909b ./libstdc++-v3/include/bits/stl_pair.h
- 369962606b ./libstdc++-v3/include/bits/stl_pthread_alloc.h
-2900628572b ./libstdc++-v3/include/bits/stl_queue.h
-2150554874b ./libstdc++-v3/include/bits/stl_raw_storage_iter.h
-2630067228b ./libstdc++-v3/include/bits/stl_relops.h
- 114789971b ./libstdc++-v3/include/bits/stl_set.h
- 256518146b ./libstdc++-v3/include/bits/stl_stack.h
- 745396233b ./libstdc++-v3/include/bits/stl_tempbuf.h
-3393061403b ./libstdc++-v3/include/bits/stl_threads.h
-1753867163b ./libstdc++-v3/include/bits/stl_tree.h
-1954571679b ./libstdc++-v3/include/bits/stl_uninitialized.h
-1635426571b ./libstdc++-v3/include/bits/stl_vector.h
- 466836896b ./libstdc++-v3/include/bits/streambuf_iterator.h
-4072322448b ./libstdc++-v3/include/bits/streambuf.tcc
- 99981565b ./libstdc++-v3/include/bits/stream_iterator.h
-1373192946b ./libstdc++-v3/include/bits/stringfwd.h
-1571290449b ./libstdc++-v3/include/bits/type_traits.h
-3358963606b ./libstdc++-v3/include/bits/valarray_array.h
- 780098702b ./libstdc++-v3/include/bits/valarray_array.tcc
- 63020838b ./libstdc++-v3/include/bits/valarray_meta.h
- 174717104b ./libstdc++-v3/include/c_compatibility/assert.h
- 157601073b ./libstdc++-v3/include/c_compatibility/ctype.h
-1205462529b ./libstdc++-v3/include/c_compatibility/errno.h
-3028482587b ./libstdc++-v3/include/c_compatibility/float.h
- 15792131b ./libstdc++-v3/include/c_compatibility/iso646.h
-3045744301b ./libstdc++-v3/include/c_compatibility/limits.h
- 649450224b ./libstdc++-v3/include/c_compatibility/locale.h
-3825039242b ./libstdc++-v3/include/c_compatibility/math.h
- 864531648b ./libstdc++-v3/include/c_compatibility/setjmp.h
- 149073637b ./libstdc++-v3/include/c_compatibility/signal.h
- 394111825b ./libstdc++-v3/include/c_compatibility/stdarg.h
- 784117356b ./libstdc++-v3/include/c_compatibility/stddef.h
- 236080617b ./libstdc++-v3/include/c_compatibility/stdio.h
-4053629341b ./libstdc++-v3/include/c_compatibility/stdlib.h
- 603589083b ./libstdc++-v3/include/c_compatibility/string.h
-1640882917b ./libstdc++-v3/include/c_compatibility/time.h
- 242317554b ./libstdc++-v3/include/c_compatibility/wchar.h
- 264438164b ./libstdc++-v3/include/c_compatibility/wctype.h
- 54766345b ./libstdc++-v3/include/c_shadow/assert.h
- 408320858b ./libstdc++-v3/include/c_shadow/bits/std_cassert.h
- 560228963b ./libstdc++-v3/include/c_shadow/bits/std_cctype.h
-4211213130b ./libstdc++-v3/include/c_shadow/bits/std_cerrno.h
-2068961496b ./libstdc++-v3/include/c_shadow/bits/std_cfloat.h
-1221980595b ./libstdc++-v3/include/c_shadow/bits/std_climits.h
-2373554238b ./libstdc++-v3/include/c_shadow/bits/std_clocale.h
-2922108560b ./libstdc++-v3/include/c_shadow/bits/std_cmath.h
-3399111523b ./libstdc++-v3/include/c_shadow/bits/std_csetjmp.h
-2811346449b ./libstdc++-v3/include/c_shadow/bits/std_csignal.h
-1849023164b ./libstdc++-v3/include/c_shadow/bits/std_cstdarg.h
-1416432536b ./libstdc++-v3/include/c_shadow/bits/std_cstddef.h
- 603206410b ./libstdc++-v3/include/c_shadow/bits/std_cstdio.h
- 362076186b ./libstdc++-v3/include/c_shadow/bits/std_cstdlib.h
-3229568541b ./libstdc++-v3/include/c_shadow/bits/std_cstring.h
-3422048856b ./libstdc++-v3/include/c_shadow/bits/std_ctime.h
- 536419890b ./libstdc++-v3/include/c_shadow/bits/std_cwchar.h
-1653117625b ./libstdc++-v3/include/c_shadow/bits/std_cwctype.h
- 329322306b ./libstdc++-v3/include/c_shadow/bits/wrap_fcntl.h
- 627501306b ./libstdc++-v3/include/c_shadow/bits/wrap_features.h
-2049971348b ./libstdc++-v3/include/c_shadow/bits/wrap_iconv.h
-3382563118b ./libstdc++-v3/include/c_shadow/bits/wrap_iolibio.h
-2864679755b ./libstdc++-v3/include/c_shadow/bits/wrap_langinfo.h
-2532894743b ./libstdc++-v3/include/c_shadow/bits/wrap_libio.h
-2741006858b ./libstdc++-v3/include/c_shadow/bits/wrap_libioP.h
-3095110387b ./libstdc++-v3/include/c_shadow/bits/wrap_pthread.h
-3334462167b ./libstdc++-v3/include/c_shadow/bits/wrap_unistd.h
- 150067418b ./libstdc++-v3/include/c_shadow/ctype.h
-3907725087b ./libstdc++-v3/include/c_shadow/errno.h
-3350312907b ./libstdc++-v3/include/c_shadow/fcntl.h
-2000598911b ./libstdc++-v3/include/c_shadow/features.h
-3613357385b ./libstdc++-v3/include/c_shadow/float.h
-2229010711b ./libstdc++-v3/include/c_shadow/iconv.h
- 587788318b ./libstdc++-v3/include/c_shadow/iolibio.h
-1158236952b ./libstdc++-v3/include/c_shadow/langinfo.h
-2010863678b ./libstdc++-v3/include/c_shadow/libio.h
- 34314066b ./libstdc++-v3/include/c_shadow/libioP.h
-3248894685b ./libstdc++-v3/include/c_shadow/limits.h
-2383653384b ./libstdc++-v3/include/c_shadow/locale.h
-1611791486b ./libstdc++-v3/include/c_shadow/math.h
-2578093016b ./libstdc++-v3/include/c_shadow/pthread.h
-3850164351b ./libstdc++-v3/include/c_shadow/setjmp.h
-4096900936b ./libstdc++-v3/include/c_shadow/signal.h
-3742613068b ./libstdc++-v3/include/c_shadow/stdarg.h
-1746566969b ./libstdc++-v3/include/c_shadow/stddef.h
-3938753534b ./libstdc++-v3/include/c_shadow/stdio.h
-4232198514b ./libstdc++-v3/include/c_shadow/stdlib.h
- 105073828b ./libstdc++-v3/include/c_shadow/string.h
-2629001503b ./libstdc++-v3/include/c_shadow/sys/cdefs.h
-3221974189b ./libstdc++-v3/include/c_shadow/time.h
-3696004291b ./libstdc++-v3/include/c_shadow/unistd.h
-3189910958b ./libstdc++-v3/include/c_shadow/wchar.h
- 887325795b ./libstdc++-v3/include/c_shadow/wctype.h
-4098574322b ./libstdc++-v3/include/c/std_cassert.h
-1243273805b ./libstdc++-v3/include/c/std_cctype.h
-4253759613b ./libstdc++-v3/include/c/std_cerrno.h
-4090686127b ./libstdc++-v3/include/c/std_cfloat.h
-1108468159b ./libstdc++-v3/include/c/std_ciso646.h
-1957729161b ./libstdc++-v3/include/c/std_climits.h
-2616677270b ./libstdc++-v3/include/c/std_clocale.h
-3373490872b ./libstdc++-v3/include/c/std_cmath.h
-4087026299b ./libstdc++-v3/include/c_std/cmath.tcc
-2198093326b ./libstdc++-v3/include/c/std_csetjmp.h
-3312976087b ./libstdc++-v3/include/c/std_csignal.h
-1491351151b ./libstdc++-v3/include/c/std_cstdarg.h
- 969673189b ./libstdc++-v3/include/c/std_cstddef.h
-3498882442b ./libstdc++-v3/include/c/std_cstdio.h
-2143638095b ./libstdc++-v3/include/c/std_cstdlib.h
- 948151623b ./libstdc++-v3/include/c/std_cstring.h
- 641399722b ./libstdc++-v3/include/c/std_ctime.h
-1161763336b ./libstdc++-v3/include/c/std_cwchar.h
- 446614233b ./libstdc++-v3/include/c/std_cwctype.h
-1055988818b ./libstdc++-v3/include/c_std/std_cassert.h
- 513093939b ./libstdc++-v3/include/c_std/std_cctype.h
-2752122999b ./libstdc++-v3/include/c_std/std_cerrno.h
-3553306451b ./libstdc++-v3/include/c_std/std_cfloat.h
-1108468159b ./libstdc++-v3/include/c_std/std_ciso646.h
-3552340376b ./libstdc++-v3/include/c_std/std_climits.h
-3610469005b ./libstdc++-v3/include/c_std/std_clocale.h
- 298849884b ./libstdc++-v3/include/c_std/std_cmath.h
- 664446368b ./libstdc++-v3/include/c_std/std_csetjmp.h
-1548436805b ./libstdc++-v3/include/c_std/std_csignal.h
-2409940084b ./libstdc++-v3/include/c_std/std_cstdarg.h
-2943077263b ./libstdc++-v3/include/c_std/std_cstddef.h
-2516759904b ./libstdc++-v3/include/c_std/std_cstdio.h
-1778106626b ./libstdc++-v3/include/c_std/std_cstdlib.h
-3597700667b ./libstdc++-v3/include/c_std/std_cstring.h
-1833374328b ./libstdc++-v3/include/c_std/std_ctime.h
- 855540198b ./libstdc++-v3/include/c_std/std_cwchar.h
-3941323151b ./libstdc++-v3/include/c_std/std_cwctype.h
-3317328074b ./libstdc++-v3/include/ext/algorithm
-1641495854b ./libstdc++-v3/include/ext/enc_filebuf.h
-3444585981b ./libstdc++-v3/include/ext/functional
-1263241564b ./libstdc++-v3/include/ext/hash_map
-1556994010b ./libstdc++-v3/include/ext/hash_set
-1006064723b ./libstdc++-v3/include/ext/iterator
-1166159156b ./libstdc++-v3/include/ext/memory
-2161063846b ./libstdc++-v3/include/ext/numeric
-2970646087b ./libstdc++-v3/include/ext/rb_tree
- 177834210b ./libstdc++-v3/include/ext/rope
- 836293130b ./libstdc++-v3/include/ext/ropeimpl.h
-4160164241b ./libstdc++-v3/include/ext/slist
- 580180377b ./libstdc++-v3/include/ext/stdio_filebuf.h
-2805137138b ./libstdc++-v3/include/ext/stl_hash_fun.h
-1833363198b ./libstdc++-v3/include/ext/stl_hashtable.h
- 984888269b ./libstdc++-v3/include/ext/stl_rope.h
-3797873942b ./libstdc++-v3/include/Makefile.am
-2227334710b ./libstdc++-v3/include/Makefile.in
-4064711400b ./libstdc++-v3/include/std/std_algorithm.h
-1636885247b ./libstdc++-v3/include/std/std_bitset.h
-3412647990b ./libstdc++-v3/include/std/std_complex.h
-1730455182b ./libstdc++-v3/include/std/std_deque.h
-3370784176b ./libstdc++-v3/include/std/std_fstream.h
-3174050204b ./libstdc++-v3/include/std/std_functional.h
-2010625027b ./libstdc++-v3/include/std/std_iomanip.h
-1134808427b ./libstdc++-v3/include/std/std_iosfwd.h
-2056599714b ./libstdc++-v3/include/std/std_ios.h
-2007291560b ./libstdc++-v3/include/std/std_iostream.h
- 270752150b ./libstdc++-v3/include/std/std_istream.h
-3826418885b ./libstdc++-v3/include/std/std_iterator.h
-2456685888b ./libstdc++-v3/include/std/std_limits.h
-1509281666b ./libstdc++-v3/include/std/std_list.h
- 918488326b ./libstdc++-v3/include/std/std_locale.h
-2375471353b ./libstdc++-v3/include/std/std_map.h
- 458060559b ./libstdc++-v3/include/std/std_memory.h
-2200880623b ./libstdc++-v3/include/std/std_numeric.h
-3467401292b ./libstdc++-v3/include/std/std_ostream.h
-1570707417b ./libstdc++-v3/include/std/std_queue.h
-2180214858b ./libstdc++-v3/include/std/std_set.h
-2149174599b ./libstdc++-v3/include/std/std_sstream.h
-1037640383b ./libstdc++-v3/include/std/std_stack.h
-3429471837b ./libstdc++-v3/include/std/std_stdexcept.h
- 136978800b ./libstdc++-v3/include/std/std_streambuf.h
-1365091273b ./libstdc++-v3/include/std/std_string.h
-4158492065b ./libstdc++-v3/include/std/std_utility.h
- 362016596b ./libstdc++-v3/include/std/std_valarray.h
- 125145631b ./libstdc++-v3/include/std/std_vector.h
- 357326461b ./libstdc++-v3/libio/ChangeLog
-2122576197b ./libstdc++-v3/libio/filedoalloc.c
-3590060213b ./libstdc++-v3/libio/fileops.c
- 314955067b ./libstdc++-v3/libio/_G_config.h
-1488981607b ./libstdc++-v3/libio/genops.c
-1308598865b ./libstdc++-v3/libio/iofclose.c
- 932932445b ./libstdc++-v3/libio/iofopen.c
-2284824626b ./libstdc++-v3/libio/iofwide.c
-3964237465b ./libstdc++-v3/libio/iolibio.h
-4269898080b ./libstdc++-v3/libio/libio.h
- 276542374b ./libstdc++-v3/libio/libioP.h
- 226381804b ./libstdc++-v3/libio/Makefile.am
-2999083951b ./libstdc++-v3/libio/Makefile.in
- 13280908b ./libstdc++-v3/libio/stdfiles.c
-2344987226b ./libstdc++-v3/libio/stdio.c
- 688559115b ./libstdc++-v3/libio/wfiledoalloc.c
- 871695306b ./libstdc++-v3/libio/wfileops.c
-2568419733b ./libstdc++-v3/libio/wgenops.c
-4088285812b ./libstdc++-v3/libmath/copysignf.c
-3368788614b ./libstdc++-v3/libmath/Makefile.am
-3495106153b ./libstdc++-v3/libmath/Makefile.in
- 346371220b ./libstdc++-v3/libmath/mathconf.h
-1759197966b ./libstdc++-v3/libmath/nan.c
-1774241233b ./libstdc++-v3/libmath/signbit.c
-3226432156b ./libstdc++-v3/libmath/signbitf.c
- 706230946b ./libstdc++-v3/libmath/signbitl.c
- 940829383b ./libstdc++-v3/libmath/stubs.c
-2871090365b ./libstdc++-v3/libsupc++/cxxabi.h
-3887473586b ./libstdc++-v3/libsupc++/del_op.cc
-2108254126b ./libstdc++-v3/libsupc++/del_opnt.cc
- 998297127b ./libstdc++-v3/libsupc++/del_opv.cc
- 958055369b ./libstdc++-v3/libsupc++/del_opvnt.cc
- 256210637b ./libstdc++-v3/libsupc++/eh_alloc.cc
-1594858350b ./libstdc++-v3/libsupc++/eh_aux_runtime.cc
- 152242761b ./libstdc++-v3/libsupc++/eh_catch.cc
-4215496070b ./libstdc++-v3/libsupc++/eh_exception.cc
-1852005316b ./libstdc++-v3/libsupc++/eh_globals.cc
-1601550960b ./libstdc++-v3/libsupc++/eh_personality.cc
- 192927225b ./libstdc++-v3/libsupc++/eh_terminate.cc
-3767983751b ./libstdc++-v3/libsupc++/eh_throw.cc
-3381460574b ./libstdc++-v3/libsupc++/eh_type.cc
-1338501219b ./libstdc++-v3/libsupc++/exception
-3453419455b ./libstdc++-v3/libsupc++/exception_defines.h
-2343038402b ./libstdc++-v3/libsupc++/Makefile.am
-4070714309b ./libstdc++-v3/libsupc++/Makefile.in
-4225132204b ./libstdc++-v3/libsupc++/new
-2545598190b ./libstdc++-v3/libsupc++/new_handler.cc
-2558289852b ./libstdc++-v3/libsupc++/new_op.cc
-1924050083b ./libstdc++-v3/libsupc++/new_opnt.cc
-4286163592b ./libstdc++-v3/libsupc++/new_opv.cc
-1153125428b ./libstdc++-v3/libsupc++/new_opvnt.cc
-2851101423b ./libstdc++-v3/libsupc++/pure.cc
-4266179473b ./libstdc++-v3/libsupc++/tinfo2.cc
-1062337084b ./libstdc++-v3/libsupc++/tinfo.cc
-1192700122b ./libstdc++-v3/libsupc++/tinfo.h
-2283435214b ./libstdc++-v3/libsupc++/typeinfo
- 875479559b ./libstdc++-v3/libsupc++/unwind-cxx.h
- 712738859b ./libstdc++-v3/libsupc++/vec.cc
- 726823839b ./libstdc++-v3/Makefile.am
-2114270009b ./libstdc++-v3/Makefile.in
-2396933860b ./libstdc++-v3/mkcheck.in
-3790569303b ./libstdc++-v3/mkcshadow
- 805804711b ./libstdc++-v3/mkinclosure
-1252249648b ./libstdc++-v3/po/de.po
-4161545945b ./libstdc++-v3/po/fr.po
- 571561184b ./libstdc++-v3/po/libstdc++.pot
-2710223631b ./libstdc++-v3/po/Makefile.am
- 768491719b ./libstdc++-v3/po/Makefile.in
-2014452913b ./libstdc++-v3/po/POTFILES.in
-1352447199b ./libstdc++-v3/po/string_literals.cc
- 201474883b ./libstdc++-v3/README
-2225403332b ./libstdc++-v3/src/bitset.cc
- 710998349b ./libstdc++-v3/src/codecvt.cc
- 252828227b ./libstdc++-v3/src/complex_io.cc
- 730767358b ./libstdc++-v3/src/concept-inst.cc
-1573161063b ./libstdc++-v3/src/ctype.cc
- 78911046b ./libstdc++-v3/src/ext-inst.cc
-2915333764b ./libstdc++-v3/src/fstream.cc
-3501232323b ./libstdc++-v3/src/fstream-inst.cc
-3677721072b ./libstdc++-v3/src/functexcept.cc
-4248290172b ./libstdc++-v3/src/globals.cc
- 62109486b ./libstdc++-v3/src/io-inst.cc
-2685787750b ./libstdc++-v3/src/ios.cc
-3318878382b ./libstdc++-v3/src/istream-inst.cc
-2798828124b ./libstdc++-v3/src/limits.cc
-3890365762b ./libstdc++-v3/src/locale.cc
-2887946202b ./libstdc++-v3/src/locale-inst.cc
-2847860049b ./libstdc++-v3/src/localename.cc
-2372986634b ./libstdc++-v3/src/Makefile.am
-1241013874b ./libstdc++-v3/src/Makefile.in
- 46061667b ./libstdc++-v3/src/misc-inst.cc
-1456313812b ./libstdc++-v3/src/ostream-inst.cc
-1968902758b ./libstdc++-v3/src/sstream-inst.cc
-3634270088b ./libstdc++-v3/src/stdexcept.cc
-1621643001b ./libstdc++-v3/src/stl-inst.cc
- 294577884b ./libstdc++-v3/src/streambuf-inst.cc
-1002021259b ./libstdc++-v3/src/string-inst.cc
- 102324994b ./libstdc++-v3/src/strstream.cc
-3557593608b ./libstdc++-v3/src/valarray-inst.cc
-2601290630b ./libstdc++-v3/src/vterminate.cc
-1651008667b ./libstdc++-v3/src/wstring-inst.cc
-3407177850b ./libstdc++-v3/testsuite/17_intro/header_cassert.cc
- 718483329b ./libstdc++-v3/testsuite/17_intro/header_cerrno.cc
- 292833921b ./libstdc++-v3/testsuite/17_intro/header_ciso646.cc
-2740614555b ./libstdc++-v3/testsuite/17_intro/header_csetjmp.cc
-4187004662b ./libstdc++-v3/testsuite/17_intro/header_cstdarg.cc
-1187341165b ./libstdc++-v3/testsuite/17_intro/header_cstddef.cc
-3112061327b ./libstdc++-v3/testsuite/17_intro/header_cstdio.cc
- 433436146b ./libstdc++-v3/testsuite/17_intro/header_cstdlib.cc
-4184074218b ./libstdc++-v3/testsuite/17_intro/header_cstring.cc
- 446409895b ./libstdc++-v3/testsuite/17_intro/header_ctime.cc
-2460401861b ./libstdc++-v3/testsuite/17_intro/header_cwchar.cc
- 234720762b ./libstdc++-v3/testsuite/17_intro/header_cwctype.cc
-4050243083b ./libstdc++-v3/testsuite/17_intro/header_fstream.cc
- 31531867b ./libstdc++-v3/testsuite/17_intro/header_iomanip.cc
-1385850299b ./libstdc++-v3/testsuite/17_intro/header_ios.cc
-2774643098b ./libstdc++-v3/testsuite/17_intro/header_iosfwd.cc
-1794666783b ./libstdc++-v3/testsuite/17_intro/header_iostream.cc
-1280776215b ./libstdc++-v3/testsuite/17_intro/header_istream.cc
-3671158117b ./libstdc++-v3/testsuite/17_intro/header_ostream.cc
-3461116413b ./libstdc++-v3/testsuite/17_intro/headers.cc
-3404318748b ./libstdc++-v3/testsuite/17_intro/headers_c.cc
-2076357409b ./libstdc++-v3/testsuite/17_intro/headers_c++.cc
- 161485874b ./libstdc++-v3/testsuite/17_intro/header_sstream.cc
- 553109088b ./libstdc++-v3/testsuite/17_intro/header_streambuf.cc
-2977766596b ./libstdc++-v3/testsuite/18_support/new_delete_placement.cc
-2714224389b ./libstdc++-v3/testsuite/18_support/numeric_limits.cc
-3977893255b ./libstdc++-v3/testsuite/19_diagnostics/stdexceptions.cc
-1972393936b ./libstdc++-v3/testsuite/20_util/allocator_members.cc
-4062528466b ./libstdc++-v3/testsuite/20_util/auto_ptr.cc
-4006660250b ./libstdc++-v3/testsuite/20_util/binders.cc
-1043517205b ./libstdc++-v3/testsuite/20_util/comparisons.cc
-1073181186b ./libstdc++-v3/testsuite/20_util/pairs.cc
-2591691225b ./libstdc++-v3/testsuite/20_util/raw_storage_iterator.cc
-2339280423b ./libstdc++-v3/testsuite/20_util/temporary_buffer.cc
-2620430532b ./libstdc++-v3/testsuite/21_strings/append.cc
-1749237095b ./libstdc++-v3/testsuite/21_strings/assign.cc
-4278196910b ./libstdc++-v3/testsuite/21_strings/capacity.cc
-2635888646b ./libstdc++-v3/testsuite/21_strings/char_traits_requirements.cc
-4052621376b ./libstdc++-v3/testsuite/21_strings/char_traits_typedefs.cc
-2742086522b ./libstdc++-v3/testsuite/21_strings/compare.cc
-1828225934b ./libstdc++-v3/testsuite/21_strings/c_strings.cc
- 747384429b ./libstdc++-v3/testsuite/21_strings/ctor_copy_dtor.cc
-2926478704b ./libstdc++-v3/testsuite/21_strings/element_access.cc
-2204151867b ./libstdc++-v3/testsuite/21_strings/find.cc
-1722926940b ./libstdc++-v3/testsuite/21_strings/insert.cc
-1426636344b ./libstdc++-v3/testsuite/21_strings/inserters_extractors.cc
-2168000074b ./libstdc++-v3/testsuite/21_strings/invariants.cc
- 593155147b ./libstdc++-v3/testsuite/21_strings/nonmember.cc
-1709617082b ./libstdc++-v3/testsuite/21_strings/operations.cc
-3864027067b ./libstdc++-v3/testsuite/21_strings/replace.cc
-2718476092b ./libstdc++-v3/testsuite/21_strings/rfind.cc
-1483165749b ./libstdc++-v3/testsuite/21_strings/substr.cc
- 387593609b ./libstdc++-v3/testsuite/22_locale/codecvt.cc
- 512064027b ./libstdc++-v3/testsuite/22_locale/codecvt_members_char_char.cc
-1168972362b ./libstdc++-v3/testsuite/22_locale/codecvt_members_unicode_char.cc
- 56961166b ./libstdc++-v3/testsuite/22_locale/codecvt_members_unicode_wchar_t.cc
-4100654250b ./libstdc++-v3/testsuite/22_locale/codecvt_members_wchar_t_char.cc
- 378719965b ./libstdc++-v3/testsuite/22_locale/collate_byname.cc
-4219192012b ./libstdc++-v3/testsuite/22_locale/collate.cc
-1671297459b ./libstdc++-v3/testsuite/22_locale/collate_members_char.cc
-2271354246b ./libstdc++-v3/testsuite/22_locale/collate_members_wchar_t.cc
-3591030064b ./libstdc++-v3/testsuite/22_locale/ctor_copy_dtor.cc
-2708515186b ./libstdc++-v3/testsuite/22_locale/ctype.cc
- 249444744b ./libstdc++-v3/testsuite/22_locale/ctype_is_char.cc
- 547279960b ./libstdc++-v3/testsuite/22_locale/ctype_is_wchar_t.cc
-3696162713b ./libstdc++-v3/testsuite/22_locale/ctype_members_char.cc
-3964508813b ./libstdc++-v3/testsuite/22_locale/ctype_members_wchar_t.cc
-2753261538b ./libstdc++-v3/testsuite/22_locale/ctype_narrow_char.cc
-1501677695b ./libstdc++-v3/testsuite/22_locale/ctype_narrow_wchar_t.cc
-3197301377b ./libstdc++-v3/testsuite/22_locale/ctype_scan_char.cc
-4211906035b ./libstdc++-v3/testsuite/22_locale/ctype_scan_wchar_t.cc
-2527015272b ./libstdc++-v3/testsuite/22_locale/ctype_to_char.cc
-4182256884b ./libstdc++-v3/testsuite/22_locale/ctype_to_wchar_t.cc
-3510804403b ./libstdc++-v3/testsuite/22_locale/ctype_widen_char.cc
- 93317595b ./libstdc++-v3/testsuite/22_locale/ctype_widen_wchar_t.cc
-3849986858b ./libstdc++-v3/testsuite/22_locale/facet.cc
-3496730433b ./libstdc++-v3/testsuite/22_locale/global_templates.cc
-1723684426b ./libstdc++-v3/testsuite/22_locale/members.cc
-1401094326b ./libstdc++-v3/testsuite/22_locale/messages_byname.cc
-3196187062b ./libstdc++-v3/testsuite/22_locale/messages.cc
-1970700053b ./libstdc++-v3/testsuite/22_locale/messages_members_char.cc
-2495817416b ./libstdc++-v3/testsuite/22_locale/money_get.cc
-1766255762b ./libstdc++-v3/testsuite/22_locale/money_get_members_char.cc
- 138738715b ./libstdc++-v3/testsuite/22_locale/money_get_members_wchar_t.cc
- 396525641b ./libstdc++-v3/testsuite/22_locale/moneypunct_byname.cc
-1298769732b ./libstdc++-v3/testsuite/22_locale/moneypunct.cc
-1486946696b ./libstdc++-v3/testsuite/22_locale/moneypunct_members_char.cc
-2302401224b ./libstdc++-v3/testsuite/22_locale/moneypunct_members_wchar_t.cc
-2714963439b ./libstdc++-v3/testsuite/22_locale/money_put.cc
- 545615219b ./libstdc++-v3/testsuite/22_locale/money_put_members_char.cc
- 299189870b ./libstdc++-v3/testsuite/22_locale/money_put_members_wchar_t.cc
-3806757668b ./libstdc++-v3/testsuite/22_locale/num_get.cc
- 942400636b ./libstdc++-v3/testsuite/22_locale/num_get_members_char.cc
-3952754596b ./libstdc++-v3/testsuite/22_locale/num_get_members_wchar_t.cc
-3109277057b ./libstdc++-v3/testsuite/22_locale/numpunct_byname.cc
- 481449220b ./libstdc++-v3/testsuite/22_locale/numpunct.cc
-1180876674b ./libstdc++-v3/testsuite/22_locale/numpunct_members_char.cc
-3139380707b ./libstdc++-v3/testsuite/22_locale/numpunct_members_wchar_t.cc
-2013396522b ./libstdc++-v3/testsuite/22_locale/num_put.cc
-2410491259b ./libstdc++-v3/testsuite/22_locale/num_put_members_char.cc
- 547290714b ./libstdc++-v3/testsuite/22_locale/num_put_members_wchar_t.cc
-2592583186b ./libstdc++-v3/testsuite/22_locale/operators.cc
- 786606213b ./libstdc++-v3/testsuite/22_locale/static_members.cc
-3529549306b ./libstdc++-v3/testsuite/22_locale/time_get.cc
-3923101724b ./libstdc++-v3/testsuite/22_locale/time_get_members_char.cc
-2180594183b ./libstdc++-v3/testsuite/22_locale/time_get_members_wchar_t.cc
-4249879313b ./libstdc++-v3/testsuite/22_locale/time_put.cc
-2625268284b ./libstdc++-v3/testsuite/22_locale/time_put_members_char.cc
-1365876592b ./libstdc++-v3/testsuite/22_locale/time_put_members_wchar_t.cc
-1594601537b ./libstdc++-v3/testsuite/23_containers/bitset_ctor.cc
-4248533082b ./libstdc++-v3/testsuite/23_containers/bitset_members.cc
- 897013241b ./libstdc++-v3/testsuite/23_containers/bitset_shift.cc
- 298271417b ./libstdc++-v3/testsuite/23_containers/deque_ctor.cc
-3599034057b ./libstdc++-v3/testsuite/23_containers/deque_operators.cc
- 205784061b ./libstdc++-v3/testsuite/23_containers/list_capacity.cc
- 326983922b ./libstdc++-v3/testsuite/23_containers/list_ctor.cc
- 599293253b ./libstdc++-v3/testsuite/23_containers/list_modifiers.cc
-4244756936b ./libstdc++-v3/testsuite/23_containers/list_operators.cc
- 307316045b ./libstdc++-v3/testsuite/23_containers/map_insert.cc
-1772243688b ./libstdc++-v3/testsuite/23_containers/map_operators.cc
-3789154851b ./libstdc++-v3/testsuite/23_containers/multiset.cc
-4102929314b ./libstdc++-v3/testsuite/23_containers/set_operators.cc
-3617128880b ./libstdc++-v3/testsuite/23_containers/vector_bool.cc
-2845787844b ./libstdc++-v3/testsuite/23_containers/vector_capacity.cc
-2149604858b ./libstdc++-v3/testsuite/23_containers/vector_ctor.cc
-3683155594b ./libstdc++-v3/testsuite/23_containers/vector_element_access.cc
-4203207973b ./libstdc++-v3/testsuite/23_containers/vector_modifiers.cc
-3679802360b ./libstdc++-v3/testsuite/24_iterators/back_insert_iterator.cc
-2736134729b ./libstdc++-v3/testsuite/24_iterators/front_insert_iterator.cc
-1154183743b ./libstdc++-v3/testsuite/24_iterators/insert_iterator.cc
- 714376333b ./libstdc++-v3/testsuite/24_iterators/istreambuf_iterator.cc
-3795589628b ./libstdc++-v3/testsuite/24_iterators/istream_iterator.cc
-2873994073b ./libstdc++-v3/testsuite/24_iterators/iterator.cc
-1144199940b ./libstdc++-v3/testsuite/24_iterators/ostreambuf_iterator.cc
-3195646624b ./libstdc++-v3/testsuite/24_iterators/ostream_iterator.cc
-1944522737b ./libstdc++-v3/testsuite/24_iterators/rel_ops.cc
-2512302022b ./libstdc++-v3/testsuite/24_iterators/reverse_iterator.cc
-1024863451b ./libstdc++-v3/testsuite/25_algorithms/binary_search.cc
-3359092851b ./libstdc++-v3/testsuite/25_algorithms/copy.cc
- 499887025b ./libstdc++-v3/testsuite/25_algorithms/equal.cc
-2307649178b ./libstdc++-v3/testsuite/25_algorithms/heap.cc
-3229510528b ./libstdc++-v3/testsuite/25_algorithms/lower_bound.cc
-4253988362b ./libstdc++-v3/testsuite/25_algorithms/min_max.cc
- 737927184b ./libstdc++-v3/testsuite/25_algorithms/partition.cc
-2077920331b ./libstdc++-v3/testsuite/25_algorithms/rotate.cc
-2843376967b ./libstdc++-v3/testsuite/25_algorithms/sort.cc
-3487714017b ./libstdc++-v3/testsuite/25_algorithms/unique.cc
- 825452073b ./libstdc++-v3/testsuite/26_numerics/binary_closure.cc
-4174117585b ./libstdc++-v3/testsuite/26_numerics/buggy_complex.cc
-3446031285b ./libstdc++-v3/testsuite/26_numerics/c99_classification_macros_c.cc
- 477083436b ./libstdc++-v3/testsuite/26_numerics/c99_classification_macros_c++.cc
- 162388279b ./libstdc++-v3/testsuite/26_numerics/c_math.cc
-3345793307b ./libstdc++-v3/testsuite/26_numerics/complex_inserters_extractors.cc
-4028172023b ./libstdc++-v3/testsuite/26_numerics/complex_value.cc
-1538489744b ./libstdc++-v3/testsuite/26_numerics/fabs_inline.cc
-2007868264b ./libstdc++-v3/testsuite/26_numerics/slice_array_assignment.cc
-2493789332b ./libstdc++-v3/testsuite/26_numerics/sum_diff.cc
-2203801309b ./libstdc++-v3/testsuite/26_numerics/valarray.cc
-2289035929b ./libstdc++-v3/testsuite/26_numerics/valarray_const_bracket.cc
-1162163080b ./libstdc++-v3/testsuite/27_io/filebuf.cc
-4294967295b ./libstdc++-v3/testsuite/27_io/filebuf_members-1.tst
-4294967295b ./libstdc++-v3/testsuite/27_io/filebuf_members-1.txt
-3299934909b ./libstdc++-v3/testsuite/27_io/filebuf_members.cc
-4204648704b ./libstdc++-v3/testsuite/27_io/filebuf_virtuals-1.tst
-4204648704b ./libstdc++-v3/testsuite/27_io/filebuf_virtuals-1.txt
- 655821823b ./libstdc++-v3/testsuite/27_io/filebuf_virtuals-2.tst
-1896106013b ./libstdc++-v3/testsuite/27_io/filebuf_virtuals-3.tst
-3500020998b ./libstdc++-v3/testsuite/27_io/filebuf_virtuals.cc
-1987901042b ./libstdc++-v3/testsuite/27_io/fpos.cc
-2165147103b ./libstdc++-v3/testsuite/27_io/fstream.cc
- 358840366b ./libstdc++-v3/testsuite/27_io/fstream_members.cc
-4052401030b ./libstdc++-v3/testsuite/27_io/ifstream.cc
-4294967295b ./libstdc++-v3/testsuite/27_io/ifstream_members-1.tst
-4294967295b ./libstdc++-v3/testsuite/27_io/ifstream_members-1.txt
-2885752721b ./libstdc++-v3/testsuite/27_io/ifstream_members.cc
-2822576026b ./libstdc++-v3/testsuite/27_io/instantiations.cc
-1158981090b ./libstdc++-v3/testsuite/27_io/ios_base_callbacks.cc
-3079502096b ./libstdc++-v3/testsuite/27_io/ios_base_members_static-1.tst
-2904656871b ./libstdc++-v3/testsuite/27_io/ios_base_members_static.cc
- 446281776b ./libstdc++-v3/testsuite/27_io/ios_base_storage.cc
-1912639991b ./libstdc++-v3/testsuite/27_io/ios_base_type.cc
- 236727293b ./libstdc++-v3/testsuite/27_io/ios.cc
-3028704293b ./libstdc++-v3/testsuite/27_io/ios_ctor.cc
-3931163797b ./libstdc++-v3/testsuite/27_io/ios_init.cc
-1589179378b ./libstdc++-v3/testsuite/27_io/ios_manip_basefield.cc
-2543133138b ./libstdc++-v3/testsuite/27_io/ios_manip_fmtflags.cc
- 402291869b ./libstdc++-v3/testsuite/27_io/ios_members.cc
-3395187832b ./libstdc++-v3/testsuite/27_io/iostream.cc
-2441613414b ./libstdc++-v3/testsuite/27_io/iostream_members.cc
- 403539923b ./libstdc++-v3/testsuite/27_io/istream.cc
-1371858986b ./libstdc++-v3/testsuite/27_io/istream_extractor_arith.cc
- 262004209b ./libstdc++-v3/testsuite/27_io/istream_extractor_char.cc
-1013375821b ./libstdc++-v3/testsuite/27_io/istream_extractor_other-1.tst
-1013375821b ./libstdc++-v3/testsuite/27_io/istream_extractor_other-1.txt
-1013375821b ./libstdc++-v3/testsuite/27_io/istream_extractor_other-2.tst
-4009952868b ./libstdc++-v3/testsuite/27_io/istream_extractor_other.cc
-3525724471b ./libstdc++-v3/testsuite/27_io/istream_manip.cc
-3951789237b ./libstdc++-v3/testsuite/27_io/istream_seeks-1.tst
-3951789237b ./libstdc++-v3/testsuite/27_io/istream_seeks-1.txt
-4294967295b ./libstdc++-v3/testsuite/27_io/istream_seeks-2.tst
-2129191219b ./libstdc++-v3/testsuite/27_io/istream_seeks-3.tst
-1422426115b ./libstdc++-v3/testsuite/27_io/istream_seeks.cc
- 466639813b ./libstdc++-v3/testsuite/27_io/istream_sentry.cc
- 38986799b ./libstdc++-v3/testsuite/27_io/istream_unformatted-1.tst
- 38986799b ./libstdc++-v3/testsuite/27_io/istream_unformatted-1.txt
-3117431722b ./libstdc++-v3/testsuite/27_io/istream_unformatted.cc
- 351004607b ./libstdc++-v3/testsuite/27_io/istringstream.cc
-2607021483b ./libstdc++-v3/testsuite/27_io/istringstream_members.cc
-3768461150b ./libstdc++-v3/testsuite/27_io/narrow_stream_objects.cc
- 190325385b ./libstdc++-v3/testsuite/27_io/ofstream.cc
-4294967295b ./libstdc++-v3/testsuite/27_io/ofstream_members-1.tst
-2333857258b ./libstdc++-v3/testsuite/27_io/ofstream_members.cc
-3562911149b ./libstdc++-v3/testsuite/27_io/ostream.cc
-4258844886b ./libstdc++-v3/testsuite/27_io/ostream_inserter_arith.cc
-1556078817b ./libstdc++-v3/testsuite/27_io/ostream_inserter_char-1.tst
-1556078817b ./libstdc++-v3/testsuite/27_io/ostream_inserter_char-1.txt
-4127328437b ./libstdc++-v3/testsuite/27_io/ostream_inserter_char.cc
-4204648704b ./libstdc++-v3/testsuite/27_io/ostream_inserter_other-1.tst
-4204648704b ./libstdc++-v3/testsuite/27_io/ostream_inserter_other-2.tst
-1839784195b ./libstdc++-v3/testsuite/27_io/ostream_inserter_other.cc
-1438625590b ./libstdc++-v3/testsuite/27_io/ostream_manip.cc
-4294967295b ./libstdc++-v3/testsuite/27_io/ostream_seeks-1.tst
- 169443827b ./libstdc++-v3/testsuite/27_io/ostream_seeks.cc
-4124709644b ./libstdc++-v3/testsuite/27_io/ostream_unformatted.cc
-4123639841b ./libstdc++-v3/testsuite/27_io/ostringstream.cc
-1267238271b ./libstdc++-v3/testsuite/27_io/ostringstream_members.cc
- 989576790b ./libstdc++-v3/testsuite/27_io/standard_manipulators.cc
- 252515735b ./libstdc++-v3/testsuite/27_io/streambuf.cc
-2336603373b ./libstdc++-v3/testsuite/27_io/streambuf_members.cc
- 939421885b ./libstdc++-v3/testsuite/27_io/stringbuf.cc
-1939814633b ./libstdc++-v3/testsuite/27_io/stringbuf_members.cc
- 826108650b ./libstdc++-v3/testsuite/27_io/stringbuf_virtuals.cc
-4012426009b ./libstdc++-v3/testsuite/27_io/stringstream.cc
-2617118873b ./libstdc++-v3/testsuite/27_io/stringstream_members.cc
- 365205754b ./libstdc++-v3/testsuite/27_io/wide_stream_objects.cc
-1480987785b ./libstdc++-v3/testsuite/abi_check.cc
-3762370376b ./libstdc++-v3/testsuite/backward/header_deque_h.cc
- 651880874b ./libstdc++-v3/testsuite/backward/header_hash_map_h.cc
-2293472298b ./libstdc++-v3/testsuite/backward/header_hash_set_h.cc
-1063503519b ./libstdc++-v3/testsuite/backward/header_hashtable_h.cc
-1384531088b ./libstdc++-v3/testsuite/backward/header_iterator_h.cc
-1470125519b ./libstdc++-v3/testsuite/backward/header_rope_h.cc
-4158324753b ./libstdc++-v3/testsuite/backward/header_slist_h.cc
-4284948430b ./libstdc++-v3/testsuite/backward/header_tempbuf_h.cc
-2753031700b ./libstdc++-v3/testsuite/backward/strstream_members.cc
- 872857903b ./libstdc++-v3/testsuite/config/default.exp
-3323103327b ./libstdc++-v3/testsuite/ext/allocators.cc
-1828531587b ./libstdc++-v3/testsuite/ext/concept_checks.cc
-1683071968b ./libstdc++-v3/testsuite/ext/hash_map.cc
-2382325141b ./libstdc++-v3/testsuite/ext/hash_set.cc
-2849413443b ./libstdc++-v3/testsuite/ext/headers.cc
-2661012354b ./libstdc++-v3/testsuite/ext/rope.cc
-1165386526b ./libstdc++-v3/testsuite_flags.in
-2466180569b ./libstdc++-v3/testsuite/lib/libstdc++-v3-dg.exp
-3712176129b ./libstdc++-v3/testsuite/lib/prune.exp
-2361428628b ./libstdc++-v3/testsuite/libstdc++-v3.dg/dg.exp
- 530685480b ./libstdc++-v3/testsuite/Makefile.am
-1266369902b ./libstdc++-v3/testsuite/Makefile.in
-1352817621b ./libstdc++-v3/testsuite/printnow.c
- 443433597b ./libstdc++-v3/testsuite/README
-3725824881b ./libstdc++-v3/testsuite/testsuite_hooks.h
- 156463796b ./libstdc++-v3/testsuite/thread/pthread1.cc
-1550931445b ./libstdc++-v3/testsuite/thread/pthread2.cc
-1829037829b ./libstdc++-v3/testsuite/thread/pthread3.cc
-3999709480b ./libstdc++-v3/testsuite/thread/pthread4.cc
-3966130685b ./libstdc++-v3/testsuite/thread/pthread5.cc
-2701150431b ./libstdc++-v3/testsuite/thread/pthread6.cc
-4084702431b ./libtool.m4
-2081401147b ./ltcf-c.sh
- 534669854b ./ltcf-cxx.sh
-3594421631b ./ltcf-gcj.sh
- 30175378b ./ltconfig
-2369122487b ./ltmain.sh
-4287295648b ./MAINTAINERS
-1302059430b ./maintainer-scripts/ChangeLog
-1905552954b ./maintainer-scripts/crontab
-4171969357b ./maintainer-scripts/doc_exclude
-3945756456b ./maintainer-scripts/gcc_release
-3126840705b ./maintainer-scripts/README
-4169093075b ./maintainer-scripts/snapshot-index.html
-1797615493b ./maintainer-scripts/snapshot-README
-3359505648b ./maintainer-scripts/update_version
- 612565256b ./maintainer-scripts/update_web_docs
-2568232642b ./maintainer-scripts/update_web_docs_libstdcxx
-1719002991b ./maintainer-scripts/update_web_docs_old
-2643081116b ./Makefile.in
- 990942143b ./missing
-2656466409b ./mkdep
-4236112450b ./mkinstalldirs
- 902556840b ./move-if-change
-3697693037b ./README
-1077958069b ./symlink-tree
-1370970362b ./ylwrap
-1221785251b ./zlib/acinclude.m4
- 63064805b ./zlib/aclocal.m4
-1297198925b ./zlib/adler32.c
-2360440520b ./zlib/algorithm.txt
-1537725969b ./zlib/amiga/Makefile.pup
-3919607569b ./zlib/amiga/Makefile.sas
-1002100577b ./zlib/ChangeLog
-3062272324b ./zlib/ChangeLog.gcj
- 720988996b ./zlib/compress.c
-1404772722b ./zlib/configure
-1923259853b ./zlib/configure.in
- 215845136b ./zlib/contrib/asm386/gvmat32.asm
-4143184108b ./zlib/contrib/asm386/gvmat32c.c
-2920733537b ./zlib/contrib/asm386/mkgvmt32.bat
-3675080833b ./zlib/contrib/asm386/zlibvc.def
-2499069487b ./zlib/contrib/asm386/zlibvc.dsp
- 993885909b ./zlib/contrib/asm386/zlibvc.dsw
- 793867511b ./zlib/contrib/asm586/match.S
-1760950630b ./zlib/contrib/asm586/README.586
-3445355807b ./zlib/contrib/asm686/match.S
-3564267527b ./zlib/contrib/asm686/README.686
-3962801576b ./zlib/contrib/delphi2/d_zlib.bpr
-3205278976b ./zlib/contrib/delphi2/d_zlib.cpp
-3618554340b ./zlib/contrib/delphi2/readme.txt
- 812510417b ./zlib/contrib/delphi2/zlib32.bpr
-2671802940b ./zlib/contrib/delphi2/zlib32.cpp
-1448048189b ./zlib/contrib/delphi2/zlib.bpg
-1970984078b ./zlib/contrib/delphi2/zlib.bpr
-2460992656b ./zlib/contrib/delphi2/zlib.cpp
-2183495051b ./zlib/contrib/delphi2/zlib.pas
- 26085236b ./zlib/contrib/delphi/zlibdef.pas
-1981000180b ./zlib/contrib/delphi/zlib.mak
-2533136546b ./zlib/contrib/iostream2/zstream.h
-3297987584b ./zlib/contrib/iostream2/zstream_test.cpp
- 339148404b ./zlib/contrib/iostream/test.cpp
-1960805227b ./zlib/contrib/iostream/zfstream.cpp
- 933409408b ./zlib/contrib/iostream/zfstream.h
-2533758279b ./zlib/contrib/minizip/ChangeLogUnzip
-2310837728b ./zlib/contrib/minizip/Makefile
-4259570427b ./zlib/contrib/minizip/miniunz.c
-3026675082b ./zlib/contrib/minizip/minizip.c
-3515615353b ./zlib/contrib/minizip/readme.txt
- 179160536b ./zlib/contrib/minizip/unzip.c
- 167508053b ./zlib/contrib/minizip/unzip.def
-3849720148b ./zlib/contrib/minizip/unzip.h
-1806581538b ./zlib/contrib/minizip/zip.c
-2300422090b ./zlib/contrib/minizip/zip.def
-3071990388b ./zlib/contrib/minizip/zip.h
-3675080833b ./zlib/contrib/minizip/zlibvc.def
-2499069487b ./zlib/contrib/minizip/zlibvc.dsp
- 993885909b ./zlib/contrib/minizip/zlibvc.dsw
-3769239525b ./zlib/contrib/README.contrib
-4061615005b ./zlib/contrib/untgz/Makefile
-1408736380b ./zlib/contrib/untgz/makefile.w32
-1384858048b ./zlib/contrib/untgz/untgz.c
-2352798505b ./zlib/contrib/visual-basic.txt
-4189021895b ./zlib/crc32.c
-1822942177b ./zlib/deflate.c
-1789868741b ./zlib/deflate.h
-1690938184b ./zlib/descrip.mms
-2345539147b ./zlib/example.c
-1790959550b ./zlib/FAQ
- 703718503b ./zlib/gzio.c
- 467711448b ./zlib/INDEX
-3009787290b ./zlib/infblock.c
- 34847356b ./zlib/infblock.h
- 763710488b ./zlib/infcodes.c
-3334929562b ./zlib/infcodes.h
-1206037810b ./zlib/inffast.c
-3339512059b ./zlib/inffast.h
- 490193883b ./zlib/inffixed.h
-2412593958b ./zlib/inflate.c
-3025160042b ./zlib/inftrees.c
-2634414216b ./zlib/inftrees.h
- 788977750b ./zlib/infutil.c
-2297950969b ./zlib/infutil.h
-3729200713b ./zlib/Makefile.am
-1429364934b ./zlib/Makefile.in
-3707467235b ./zlib/Makefile.riscos
- 196153738b ./zlib/maketree.c
-3901505907b ./zlib/Make_vms.com
- 229496420b ./zlib/minigzip.c
- 955312409b ./zlib/msdos/Makefile.b32
-3122518693b ./zlib/msdos/Makefile.bor
- 73399342b ./zlib/msdos/Makefile.dj2
- 269847616b ./zlib/msdos/Makefile.emx
-2865241702b ./zlib/msdos/Makefile.msc
- 88126218b ./zlib/msdos/Makefile.tc
-1109774061b ./zlib/msdos/Makefile.w32
- 458881763b ./zlib/msdos/Makefile.wat
- 705831339b ./zlib/msdos/zlib.def
- 3235401b ./zlib/msdos/zlib.rc
-3559516957b ./zlib/nt/Makefile.emx
-1068633629b ./zlib/nt/Makefile.gcc
-3209851797b ./zlib/nt/Makefile.nt
-3298347746b ./zlib/nt/zlib.dnt
-2605576410b ./zlib/os2/Makefile.os2
- 99579017b ./zlib/os2/zlib.def
-2343974137b ./zlib/README
-2789763235b ./zlib/trees.c
- 10665304b ./zlib/trees.h
-1566688640b ./zlib/uncompr.c
-2035162903b ./zlib/zconf.h
-3626005175b ./zlib/zlib.3
-3609968891b ./zlib/zlib.h
- 191319815b ./zlib/zlib.html
- 957671919b ./zlib/zutil.c
-4163685086b ./zlib/zutil.h
diff --git a/contrib/gcc/.cvsignore b/contrib/gcc/.cvsignore
deleted file mode 100644
index 2852f92..0000000
--- a/contrib/gcc/.cvsignore
+++ /dev/null
@@ -1,32 +0,0 @@
-*-all
-*-co
-*-dirs
-*-done
-*-install-info
-*-src
-*-stamp-*
-*-tagged
-blockit
-cfg-paper.info
-config.status
-configure.aux
-configure.cp
-configure.cps
-configure.dvi
-configure.fn
-configure.fns
-configure.ky
-configure.kys
-configure.log
-configure.pg
-configure.pgs
-configure.toc
-configure.tp
-configure.tps
-configure.vr
-configure.vrs
-Makefile
-dir.info
-lost+found
-update.out
-LAST_UPDATED
diff --git a/contrib/gcc/BUGS b/contrib/gcc/BUGS
deleted file mode 100644
index d58a229..0000000
--- a/contrib/gcc/BUGS
+++ /dev/null
@@ -1,594 +0,0 @@
-
- GCC Bugs
-
- The latest version of this document is always available at
- [1]http://www.gnu.org/software/gcc/bugs.html.
- _________________________________________________________________
-
-Table of Contents
-
- * [2]Reporting Bugs
- + [3]What we need
- + [4]What we DON'T want
- + [5]Where to post it
- + [6]Detailed bug reporting instructions
- + [7]Detailed bug reporting instructions for GNAT
- * [8]Managing Bugs (GNATS and the test-suite)
- * [9]Frequently Reported Bugs in GCC
- + [10]General
- + [11]Fortran
- + [12]C
- + [13]C++
- o [14]Common problems updating from G++ 2.95 to G++ 3.0
- o [15]Non-bugs
- o [16]Missing features
- o [17]Parse errors for "simple" code
- o [18]Optimization at -O3 takes a very long time
- _________________________________________________________________
-
- Reporting Bugs
-
- Our preferred way of receiving bugs is via the [19]GCC GNATS bug
- reporting system.
-
- Before you report a bug, please check the [20]list of well-known bugs
- and, if possible in any way, try a current development snapshot. If
- you want to report a bug with versions of GCC before 3.1 we strongly
- recommend upgrading to the current release first.
-
- Before reporting that GCC compiles your code incorrectly, please
- compile it with gcc -Wall and see whether this shows anything wrong
- with your code that could be the cause instead of a bug in GCC.
-
-Summarized bug reporting instructions
-
- After this summary, you'll find detailed bug reporting instructions,
- that explain how to obtain some of the information requested in this
- summary.
-
- What we need
-
- Please include in your bug report all of the following items, the
- first three of which can be obtained from the output of gcc -v:
- * the exact version of GCC;
- * the system type;
- * the options given when GCC was configured/built;
- * the complete command line that triggers the bug;
- * the compiler output (error messages, warnings, etc.); and
- * the preprocessed file (*.i*) that triggers the bug, generated by
- adding -save-temps to the complete compilation command, or, in the
- case of a bug report for the GNAT front end, a complete set of
- source files (see below).
-
- What we do not want
-
- * A source file that #includes header files that are left out of the
- bug report (see above)
- * That source file and a collection of header files.
- * An attached archive (tar, zip, shar, whatever) containing all (or
- some :-) of the above.
- * A code snippet that won't cause the compiler to produce the exact
- output mentioned in the bug report (e.g., a snippet with just a
- few lines around the one that apparently triggers the bug, with
- some pieces replaced with ellipses or comments for extra
- obfuscation :-)
- * The location (URL) of the package that failed to build (we won't
- download it, anyway, since you've already given us what we need to
- duplicate the bug, haven't you? :-)
- * An error that occurs only some of the times a certain file is
- compiled, such that retrying a sufficient number of times results
- in a successful compilation; this is a symptom of a hardware
- problem, not of a compiler bug (sorry)
- * E-mail messages that complement previous, incomplete bug reports.
- Post a new, self-contained, full bug report instead, if possible
- as a follow-up to the original bug report
- * Assembly files (*.s) produced by the compiler, or any binary
- files, such as object files, executables or core files
- * Duplicate bug reports, or reports of bugs already fixed in the
- development tree, especially those that have already been reported
- as fixed last week :-)
- * Bugs in the assembler, the linker or the C library. These are
- separate projects, with separate mailing lists and different bug
- reporting procedures
- * Bugs in releases or snapshots of GCC not issued by the GNU
- Project. Report them to whoever provided you with the release
- * Questions about the correctness or the expected behavior of
- certain constructs that are not GCC extensions. Ask them in forums
- dedicated to the discussion of the programming language
-
- Where to post it
-
- Please submit your bug report directly to the [21]GCC GNATS bug
- database. Only if this is not possible, mail all information to
- [22]bug-gcc@gnu.org or [23]gcc-bugs@gcc.gnu.org.
-
- The GCC lists have message size limits (200 kbytes) and bug reports
- over those limits will currently be bounced. If your bug is larger
- than that, please post it using the [24]GCC GNATS bug database.
-
-Detailed bug reporting instructions
-
- Please refer to the [25]next section when reporting bugs in GNAT, the
- Ada compiler.
-
- In general, all the information we need can be obtained by collecting
- the command line below, as well as its output and the preprocessed
- file it generates.
-
- gcc -v -save-temps all-your-options source-file
-
- Typically the preprocessed file (extension .i for C or .ii for C++)
- will be large, so please compress the resulting file with one of the
- popular compression programs such as bzip2, gzip, zip or compress (in
- decreasing order of preference). Use maximum compression (-9) if
- available. Please include the compressed preprocessor output in your
- bug report, even if the source code is freely available elsewhere; it
- makes the job of our volunteer testers much easier.
-
- The only excuses to not send us the preprocessed sources are (i) if
- you've found a bug in the preprocessor, or (ii) if you've reduced the
- testcase to a small file that doesn't include any other file. If you
- can't post the preprocessed sources because they're proprietary code,
- then try to create a small file that triggers the same problem.
-
- Since we're supposed to be able to re-create the assembly output
- (extension .s), you usually should not include it in the bug report,
- although you may want to post parts of it to point out assembly code
- you consider to be wrong.
-
- Whether to use MIME attachments or uuencode is up to you. In any case,
- make sure the compiler command line, version and error output are in
- plain text, so that we don't have to decode the bug report in order to
- tell who should take care of it. A meaningful subject indicating
- language and platform also helps.
-
- Please avoid posting an archive (.tar, .shar or .zip); we generally
- need just a single file to reproduce the bug (the .i/.ii preprocessed
- file), and, by storing it in an archive, you're just making our
- volunteers' jobs harder. Only when your bug report requires multiple
- source files to be reproduced should you use an archive. In any case,
- make sure the compiler version, error message, etc, are included in
- the body of your bug report as plain text, even if needlessly
- duplicated as part of an archive.
-
- If you fail to supply enough information for a bug report to be
- reproduced, someone will probably ask you to post additional
- information (or just ignore your bug report, if they're in a bad day,
- so try to get it right on the first posting :-). In this case, please
- post the additional information to the bug reporting mailing list, not
- just to the person who requested it, unless explicitly told so. If
- possible, please include in this follow-up all the information you had
- supplied in the incomplete bug report (including the preprocessor
- output), so that the new bug report is self-contained.
-
-Detailed bug reporting instructions for GNAT
-
- See the [26]previous section for bug reporting instructions for GCC
- language implementations other than Ada.
-
- Bug reports have to contain at least the following information in
- order to be useful:
- * the exact version of GCC, as shown by "gcc -v";
- * the system type;
- * the options when GCC was configured/built;
- * the exact command line passed to the gcc program triggering the
- bug (not just the flags passed to gnatmake, but gnatmake prints
- the parameters it passed to gcc)
- * a collection of source files for reproducing the bug, preferably a
- minimal set (see below);
- * a description of the expected behavior;
- * a description of actual behavior.
-
- If your code depends on additional source files (usually package
- specifications), submit the source code for these compilation units in
- a single file that is acceptable input to gnatchop, i.e. contains no
- non-Ada text. If the compilation terminated normally, you can usually
- obtain a list of dependencies using the "gnatls -d main_unit" command,
- where main_unit is the file name of the main compilation unit (which
- is also passed to gcc).
-
- If you report a bug which causes the compiler to print a bug box,
- include that bug box in your report, and do not forget to send all the
- source files listed after the bug box along with your report.
-
- If you use gnatprep, be sure to send in preprocessed sources (unless
- you have to report a bug in gnatprep).
-
- When you have checked that your report meets these criteria, please
- submit it accoding to our [27]generic instructions. (If you use a
- mailing list for reporting, please include an "[Ada]" tag in the
- subject.)
-
- Managing Bugs (GNATS and the test-suite)
-
- This section contains information mostly intended for GCC
- contributors.
-
- If you find a bug, but you are not fixing it (yet):
- 1. Create a (minimal) test-case.
- 2. Add the test-case to our test-suite, marking it as XFAIL unless
- the bug is a regression.
- 3. Add a bug report referencing the test-case to GNATS.
-
- If you fix a bug for which there is already a GNATS entry:
- 1. Remove the XFAIL on the test-case.
- 2. Close the bug report in GNATS.
-
- If you find a bug, and you are fixing it right then:
- 1. Create a (minimal) test-case.
- 2. Add the test-case to our test-suite, marking it as PASS.
- 3. Check in your fixes.
- _________________________________________________________________
-
- Frequently Reported Bugs in GCC
-
-Fortran
-
- Fortran bugs are documented in the G77 manual rather than explicitly
- listed here. Please see [28]Known Causes of Trouble with GNU Fortran
- in the G77 manual.
- _________________________________________________________________
-
-C
-
- The following are not bugs in the C compiler, but are reported often
- enough to warrant a mention here.
-
- Cannot initialize a static variable with stdin.
- This has nothing to do with GCC, but people ask us about it a
- lot. Code like this:
-
-#include <stdio.h>
-
-FILE *yyin = stdin;
-
- will not compile with GNU libc (GNU/Linux libc6), because stdin
- is not a constant. This was done deliberately, to make it
- easier to maintain binary compatibility when the type FILE
- needs to be changed. It is surprising for people used to
- traditional Unix C libraries, but it is permitted by the C
- standard.
-
- This construct commonly occurs in code generated by old
- versions of lex or yacc. We suggest you try regenerating the
- parser with a current version of flex or bison, respectively.
- In your own code, the appropriate fix is to move the
- initialization to the beginning of main.
-
- There is a common misconception that the GCC developers are
- responsible for GNU libc. These are in fact two entirely
- separate projects; please check the [29]GNU libc web pages for
- details.
-
- Cannot use preprocessor directive in macro arguments.
- Let me guess... you wrote code that looks something like this:
-
- memcpy(dest, src,
-#ifdef PLATFORM1
- 12
-#else
- 24
-#endif
- );
-
- and you got a whole pile of error messages:
-
- test.c:11: warning: preprocessing directive not recognized within
- macro arg
- test.c:11: warning: preprocessing directive not recognized within
- macro arg
- test.c:11: warning: preprocessing directive not recognized within
- macro arg
- test.c: In function `foo':
- test.c:6: undefined or invalid # directive
- test.c:8: undefined or invalid # directive
- test.c:9: parse error before `24'
- test.c:10: undefined or invalid # directive
- test.c:11: parse error before `#'
-
- Update: As of GCC 3.2 this kind of construct is always accepted
- and CPP will probably do what you expect, but see the manual
- for detailed semantics.
-
- However, versions of GCC prior to 3.2 did not allow you to put
- #ifdef (or any other directive) inside the arguments of a
- macro. Your C library's <string.h> happens to define memcpy as
- a macro - this is perfectly legitimate. The code therefore
- would not compile.
-
- This kind of code is not portable. It is "undefined behavior"
- according to the C standard; that means different compilers
- will do different things with it. It is always possible to
- rewrite code which uses conditionals inside macros so that it
- doesn't. You could write the above example
-
-#ifdef PLATFORM1
- memcpy(dest, src, 12);
-#else
- memcpy(dest, src, 24);
-#endif
-
- This is a bit more typing, but I personally think it's better
- style in addition to being more portable.
-
- In recent versions of glibc, printf is among the functions
- which are implemented as macros.
- _________________________________________________________________
-
-C++
-
- This is the list of bugs (and non-bugs) in g++ (aka GNU C++) that are
- reported very often, but not yet fixed. While it is certainly better
- to fix bugs instead of documenting them, this document might save
- people the effort of writing a bug report when the bug is already
- well-known. [30]How to report bugs tells you how to report a bug.
-
- There are many reasons why reported bugs don't get fixed. It might be
- difficult to fix, or fixing it might break compatibility. Often,
- reports get a low priority when there is a simple work-around. In
- particular, bugs caused by invalid C++ code have a simple work-around,
- fix the code. Now that there is an agreed ISO/ANSI standard for C++,
- the compiler has a definitive document to adhere to. Earlier versions
- might have accepted source code that is no longer C++. This means that
- code which might have `worked' in a previous version, is now rejected.
- You should update your code to be C++.
-
- You should try to use the latest stable release of the GNU C++
- compiler.
-
- Common problems updating from G++ 2.95 to G++ 3.0
-
- G++ 3.0 conforms much closer to the ISO C++ standard (available at
- [31]http://www.ncits.org/cplusplus.htm).
-
- We have also implemented some of the core and library defect reports
- (available at
- [32]http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/cwg_defects.html &
- [33]http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html
- respectively).
- * The ABI has changed. This means that both class layout and name
- mangling is different. You must recompile all c++ libraries (if
- you don't you will get link errors).
- * The standard library is much more conformant, and uses the std::
- namespace.
- * std:: is now a real namespace, not an alias for ::.
- * The standard header files for the c library don't end with .h, but
- begin with c (i.e. <cstdlib> rather than <stdlib.h>). The .h names
- are still available, but are deprecated.
- * <strstream> is deprecated, use <sstream> instead.
- * streambuf::seekoff & streambuf::seekpos are private, instead use
- streambuf::pubseekoff & streambuf::pubseekpos respectively.
- * If std::operator << (std::ostream &, long long) doesn't exist, you
- need to recompile libstdc++ with --enable-long-long.
-
- This means you may get lots of errors about things like strcmp not
- being found. You've most likely forgotton to tell the compiler to look
- in the std:: namespace. There are several ways to do this,
- * Say, std::strcmp at the call. This is the most explicit way of
- saying what you mean.
- * Say, using std::strcmp; somewhere before the call. You will need
- to do this for each function or type you wish to use from the
- standard library.
- * Say, using namespace std; somewhere before the call. This is the
- quick-but-dirty fix. This brings the whole of the std:: namespace
- into scope. Never do this in a header file, as you will be forcing
- users of your header file to do the same.
-
- ABI bugs
-
- 3.0 had a new ABI, which affected class layout, function mangling and
- calling conventions. We had intended it to be complete, unfortunately
- some issues came to light, too late to fix in the 3.0 series. The ABI
- should not change in dot releases, so we addressed most issues in GCC
- 3.1.
-
- Covariant return types
- We do not implement non-trivial covariant returns. We also
- generate incorrect virtual function tables for trivial
- covariance. Although trivial covariance will work, it is
- incompatible with the ABI. GNATS PR 3706 tracks this problem.
-
- Non-bugs
-
- Here are some features that have been reported as bugs, but are not.
-
- Nested classes can access private types of the containing class.
- G++ now implements type access control on member types. Defect
- report 45 clarifies that nested classes are members of the
- class they are nested in, and so are granted access to private
- members of that class.
-
- Classes in exception specifiers must be complete types.
- [15.4]/1 tells you that you cannot have an incomplete type, or
- pointer to incomplete (other than cv void *) in an exception
- specification.
-
- G++ emits two copies of constructors and destructors.
- In general there are three types of constructors (and
- destructors).
-
- 1. The complete object constructor/destructor.
- 2. The base object constructor/destructor.
- 3. The allocating destructor/deallocating destructor.
-
- The first two are different, when virtual base classes are
- involved. In some cases we can do better, and this is logged in
- GNATS.
-
- Exceptions don't work in multithreaded applications.
- You need to rebuild g++ and libstdc++ with --enable-threads.
- Remember, c++ exceptions are not like hardware interrupts. You
- cannot throw an exception in one thread and catch it in
- another. You cannot throw an exception from a signal handler,
- and catch it in the main thread.
-
- Global destructors are not run in the correct order.
- Global destructors should be run in the reverse order of their
- constructors completing. In most cases this is the same as the
- reverse order of constructors starting, but sometimes it is
- different, and that is important. You need to compile and link
- your programs with --use-cxa-atexit. We have not turned this
- switch on by default, as it requires a cxa aware runtime
- library (libc, glibc, or equivalent).
-
- Problems with floating point computations.
- In a number of cases, GCC appears to perform floating point
- computations incorrectly. For example, the program
-
- #include <iostream>
- int main() {
- double min = 0.0;
- double max = 0.5;
- double width = 0.01;
- std::cout << (int)(((max - min) / width) - 1) << std::endl;
- }
-
- might print 50 on some systems and optimization levels, and 51
- on others.
-
- The is the result of rounding: The computer cannot represent
- all real numbers exactly, so it has to use approximations. When
- computing with approximation, the computer needs to round to
- the nearest representable number.
-
- This is not a bug in the compiler, but an inherent limitation
- of the float and double types. Please study [34]this paper for
- more information.
-
- Templates, scoping, and digraphs.
- If you have a class in global namespace, say named X, and want
- to give it as a template argument to some other class, say
- std::vector, then this here fails with a parser error:
- std::vector<::X>.
-
- The reason is that the standard mandates that the sequence <:
- is treated as if it were the token [, and the parser then
- reports a parse error before the character : (by which it means
- the second colon). There are several such combinations of
- characters, and they are called digraphs.
-
- The simplest way to avoid this is to write std::vector< ::X>,
- i.e. place a space between the opening angle bracket and the
- scope operator.
-
- Missing features
-
- We know some things are missing from G++.
-
- The export keyword is not implemented.
- Most C++ compilers (G++ included) do not yet implement export,
- which is necessary for separate compilation of template
- declarations and definitions. Without export, a template
- definition must be in scope to be used. The obvious workaround
- is simply to place all definitions in the header itself.
- Alternatively, the compilation unit containing template
- definitions may be included from the header.
-
- Two stage lookup in templates is not implemented.
- [14.6] specifies how names are looked up inside a template. G++
- does not do this correctly, but for most templates this will
- not be noticeable.
-
- Parse errors for "simple" code
-
- Up to and including GCC 3.0, the compiler will give "parse error" for
- seemingly simple code, such as
-struct A{
- A();
- A(int);
- void func();
-};
-
-struct B{
- B(A);
- B(A,A);
- void func();
-};
-
-void foo(){
- B b(A(),A(1)); //Variable b, initialized with two temporaries
- B(A(2)).func(); //B temporary, initialized with A temporary
-}
-
- The problem is that GCC starts to parse the declaration of b as a
- function b returning B, taking a function returning A as an argument.
- When it sees the 1, it is too late. The work-around in these cases is
- to add additional parentheses around the expressions that are mistaken
- as declarations:
- (B(A(2))).func();
-
- Sometimes, even that is not enough; to show the compiler that this
- should be really an expression, a comma operator with a dummy argument
- can be used:
- B b((0,A()),A(1));
-
- Another example is the parse error for the return statement in
-struct A{};
-
-struct B{
- A a;
- A f1(bool);
-};
-
-A B::f1(bool b)
-{
- if (b)
- return (A());
- return a;
-}
-
- The problem is that the compiler interprets A() as a function (taking
- no arguments, returning A), and (A()) as a cast - with a missing
- expression, hence the parse error. The work-around is to omit the
- parentheses:
- if (b)
- return A();
-
- This problem occurs in a number of variants; in throw statements,
- people also frequently put the object in parentheses. The exact error
- also somewhat varies with the compiler version. The work-arounds
- proposed do not change the semantics of the program at all; they make
- them perhaps less readable.
-
- Optimization at -O3 takes a very long time
-
- At -O3, all functions are candidates for inlining. The heuristic used
- has some deficiencies which show up when allowed such freedom. This is
- g++ specific, as it has an earlier inliner than gcc.
-
-References
-
- 1. http://www.gnu.org/software/gcc/bugs.html
- 2. http://gcc.gnu.org/bugs.html#report
- 3. http://gcc.gnu.org/bugs.html#need
- 4. http://gcc.gnu.org/bugs.html#dontwant
- 5. http://gcc.gnu.org/bugs.html#where
- 6. http://gcc.gnu.org/bugs.html#detailed
- 7. http://gcc.gnu.org/bugs.html#gnat
- 8. http://gcc.gnu.org/bugs.html#manage
- 9. http://gcc.gnu.org/bugs.html#known
- 10. http://gcc.gnu.org/bugs.html#general
- 11. http://gcc.gnu.org/bugs.html#fortran
- 12. http://gcc.gnu.org/bugs.html#c
- 13. http://gcc.gnu.org/bugs.html#cplusplus
- 14. http://gcc.gnu.org/bugs.html#updating
- 15. http://gcc.gnu.org/bugs.html#nonbugs
- 16. http://gcc.gnu.org/bugs.html#missing
- 17. http://gcc.gnu.org/bugs.html#parsing
- 18. http://gcc.gnu.org/bugs.html#-O3
- 19. http://gcc.gnu.org/gnats.html
- 20. http://gcc.gnu.org/bugs.html#known
- 21. http://gcc.gnu.org/gnats.html
- 22. mailto:bug-gcc@gnu.org
- 23. mailto:gcc-bugs@gcc.gnu.org
- 24. http://gcc.gnu.org/gnats.html
- 25. http://gcc.gnu.org/bugs.html#gnat
- 26. http://gcc.gnu.org/bugs.html#detailed
- 27. http://gcc.gnu.org/bugs.html#where
- 28. http://gcc.gnu.org/onlinedocs/g77/Trouble.html
- 29. http://www.gnu.org/software/glibc/
- 30. http://gcc.gnu.org/bugs.html#report
- 31. http://www.ncits.org/cplusplus.htm
- 32. http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/cwg_defects.html
- 33. http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html
- 34. http://www.validlab.com/goldberg/paper.ps
diff --git a/contrib/gcc/FREEBSD-Xlist b/contrib/gcc/FREEBSD-Xlist
new file mode 100644
index 0000000..45d283e
--- /dev/null
+++ b/contrib/gcc/FREEBSD-Xlist
@@ -0,0 +1,91 @@
+*.brik
+*FAQ
+*contrib
+*etc
+*faq.*
+*/include
+*/install*
+*libchill
+*libf2c
+*libiberty
+*libio
+*libobjc
+*libstdc++
+*lt*
+*missing
+*mkinstalldirs
+*move-if-change
+*symlink-tree
+*texinfo
+*ylwrap
+*gcc/.cvsignore
+*gcc/ABOUT*NLS
+*gcc/*ChangeLog.*
+*gcc/README.ACORN
+*gcc/README.ALTOS
+*gcc/README.APOLLO
+*gcc/README.C4X
+*gcc/README.FRESCO
+*gcc/README.NS32K
+*gcc/README.RS6000
+*gcc/README.X11
+*gcc/README.gnat
+*gcc/*.bat
+*gcc/*.com
+*gcc/*.info*
+*gcc/bi-parser.[ch]
+*gcc/c-gperf.h
+*gcc/c-parse.[chy]
+*gcc/cexp.c
+*gcc/cpp.aux
+*gcc/cpp.cps
+*gcc/cpp.fns
+*gcc/gcc.aux
+*gcc/gcc.cps
+*gcc/gcc.hlp
+*gcc/texinfo.tex
+*gcc/.gdbinit
+*gcc/install1.texi
+*gcc/intl
+*gcc/ch
+*gcc/cp/hash.h
+*gcc/cp/parse.[ch]
+*gcc/config/1750a
+*gcc/config/a29k
+*gcc/config/arc
+*gcc/config/arm
+*gcc/config/c4x
+*gcc/config/clipper
+*gcc/config/convex
+*gcc/config/dsp16xx
+*gcc/config/elxsi
+*gcc/config/fx80
+*gcc/config/gmicro
+*gcc/config/h8300
+*gcc/config/i370
+*gcc/config/i860
+*gcc/config/i960
+*gcc/config/m32r
+*gcc/config/m68k
+*gcc/config/m88k
+*gcc/config/mn10200
+*gcc/config/mn10300
+*gcc/config/msdos
+*gcc/config/ns32k
+*gcc/config/pa
+*gcc/config/pdp11
+*gcc/config/pyr
+*gcc/config/romp
+*gcc/config/rs6000
+*gcc/config/sh
+*gcc/config/spur
+*gcc/config/tahoe
+*gcc/config/v850
+*gcc/config/vax
+*gcc/config/we32k
+*gcc/config/winnt
+*gcc/fixinc
+*gcc/java
+*gcc/objc/objc-parse.[cy]
+*gcc/po
+*gcc/testsuite
diff --git a/contrib/gcc/FREEBSD-deletelist b/contrib/gcc/FREEBSD-deletelist
new file mode 100644
index 0000000..87584ca
--- /dev/null
+++ b/contrib/gcc/FREEBSD-deletelist
@@ -0,0 +1,86 @@
+$FreeBSD$
+CVS
+.cvsignore
+ABOUT*NLS
+ChangeLog.lib
+FSFChangeLog.*
+README.ACORN
+README.ALTOS
+README.APOLLO
+README.AVR
+README.C4X
+README.FRESCO
+README.NS32K
+README.RS6000
+README.X11
+README.gnat
+*.bat
+*.com
+*.info*
+bi-parser.[ch]
+c-gperf.h
+c-parse.[chy]
+cexp.c
+cpp.aux
+cpp.cps
+cpp.fns
+gcc.aux
+gcc.cps
+gcc.hlp
+texinfo.tex
+.gdbinit
+install1.texi
+intl
+ch
+cp/cfns.[chy]
+cp/hash.h
+cp/parse.[ch]
+config/1750a
+config/a29k
+config/arc
+config/arm
+config/avr
+config/c4x
+config/clipper
+config/convex
+config/d30v
+config/dsp16xx
+config/elxsi
+config/fr30
+config/fx80
+config/gmicro
+config/h8300
+config/i370
+config/i860
+config/i960
+config/m32r
+config/m68k
+config/m88k
+config/mcore
+config/mips
+config/mn10200
+config/mn10300
+config/msdos
+config/ns32k
+config/pa
+config/pdp11
+config/pj
+config/pyr
+config/romp
+config/rs6000
+config/sh
+config/spur
+config/tahoe
+config/v850
+config/vax
+config/we32k
+config/winnt
+fixinc
+gccbug*
+java
+mkinstalldirs
+objc/objc-parse.[cy]
+gthr-win32*
+po
+testsuite
+tradcif.c
diff --git a/contrib/gcc/FREEBSD-libiberty b/contrib/gcc/FREEBSD-libiberty
new file mode 100644
index 0000000..1b8c249
--- /dev/null
+++ b/contrib/gcc/FREEBSD-libiberty
@@ -0,0 +1,37 @@
+#! /bin/sh
+
+# $FreeBSD$
+
+for F in \
+ choose-temp.c \
+ cp-demangle.c \
+ cplus-dem.c \
+ dyn-string.c \
+ getopt.c \
+ getopt1.c \
+ getpwd.c \
+ hashtab.c \
+ lbasename.c \
+ md5.c \
+ obstack.c \
+ partition.c \
+ pexecute.c \
+ splay-tree.c
+do
+ cp -ip ../libiberty/$F .
+done
+
+for F in \
+ ansidecl.h \
+ demangle.h \
+ dyn-string.h \
+ getopt.h \
+ hashtab.h \
+ libiberty.h \
+ obstack.h \
+ partition.h \
+ splay-tree.h \
+ symcat.h
+do
+ cp -ip ../include/$F .
+done
diff --git a/contrib/gcc/FREEBSD-upgrade b/contrib/gcc/FREEBSD-upgrade
new file mode 100644
index 0000000..922f8eb
--- /dev/null
+++ b/contrib/gcc/FREEBSD-upgrade
@@ -0,0 +1,13 @@
+$FreeBSD$
+
+tar -xvjf gcc-3.0.2.tar.bz2 -X FREEBSD-Xlist
+
+cd gcc-3.0.2/gcc
+sh FREEBSD-libiberty
+
+cvs import src/contrib/gcc FSF gcc_3_0_2
+
+If you decide to bring in more of the files, import them -- don't
+use ``cvs add''. And please remember to adjust the contents of
+"FREEBSD-Xlist" so that it reflects what is really imported from
+the vendor.
diff --git a/contrib/gcc/Makefile.in b/contrib/gcc/Makefile.in
index 75e4d03..e7c29b9e 100644
--- a/contrib/gcc/Makefile.in
+++ b/contrib/gcc/Makefile.in
@@ -69,13 +69,6 @@ CFLAGS = -g
STAGE1_CFLAGS = -g @stage1_cflags@
BOOT_CFLAGS = -g -O2
-# Flags to determine code coverage. When coverage is disabled, this will
-# contain the optimization flags, as you normally want code coverage
-# without optimization. The -dumpbase $@ makes sure that the auxilary
-# files end up near the object files.
-COVERAGE_FLAGS = @coverage_flags@
-coverageexts = .{da,bb,bbg}
-
# The warning flags are separate from BOOT_CFLAGS because people tend to
# override optimization flags and we'd like them to still have warnings
# turned on. These flags are also used to pass other stage dependent
@@ -92,17 +85,9 @@ LOOSE_WARN = -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes
STRICT_WARN = -Wtraditional @strict1_warn@
STRICT2_WARN = -Wtraditional -pedantic -Wno-long-long
-# This is set by --enable-checking. The idea is to catch forgotten
-# "extern" tags in header files.
-NOCOMMON_FLAG = @nocommon_flag@
-
-# These are set by --enable-checking=valgrind.
-RUN_GEN = @valgrind_command@
-VALGRIND_DRIVER_DEFINES = @valgrind_path_defines@
-
# This is how we control whether or not the additional warnings are applied.
.-warn = $(STRICT_WARN)
-GCC_WARN_CFLAGS = $(LOOSE_WARN) $($(@D)-warn) $(NOCOMMON_FLAG)
+GCC_WARN_CFLAGS = $(LOOSE_WARN) $($(@D)-warn)
# All warnings have to be shut off in stage1 if the compiler used then
# isn't gcc; configure determines that. WARN_CFLAGS will be either
@@ -116,7 +101,6 @@ T_CFLAGS =
X_CPPFLAGS =
T_CPPFLAGS =
-ADAC = @ADAC@
AWK = @AWK@
CC = @CC@
BISON = @BISON@
@@ -127,14 +111,7 @@ AR = ar
AR_FLAGS = rc
DLLTOOL = dlltool
RANLIB = @RANLIB@
-SHELL = @SHELL@
-# pwd command to use. Allow user to override default by setting PWDCMD in
-# the environment to account for automounters. The make variable must not
-# be called PWDCMD, otherwise the value set here is passed to make
-# subprocesses and overrides the setting from the user's environment.
-# Don't use PWD since it is a common shell environment variable and we
-# don't want to corrupt it.
-PWD_COMMAND = $${PWDCMD-pwd}
+SHELL = /bin/sh
# on sysV, define this as cp.
INSTALL = @INSTALL@
# Some systems may be missing symbolic links, regular links, or both.
@@ -177,19 +154,15 @@ INSTALL_HEADERS_DIR = @build_install_headers_dir@
# Header files that are made available under the same name
# to programs compiled with GCC.
-USER_H = $(srcdir)/ginclude/float.h \
- $(srcdir)/ginclude/iso646.h \
- $(srcdir)/ginclude/stdarg.h \
- $(srcdir)/ginclude/stdbool.h \
- $(srcdir)/ginclude/stddef.h \
- $(srcdir)/ginclude/varargs.h \
- $(srcdir)/unwind.h \
- $(EXTRA_HEADERS)
-
-# The GCC to use for compiling libgcc.a and crt*.o.
+USER_H = $(srcdir)/ginclude/stdarg.h $(srcdir)/ginclude/stddef.h \
+ $(srcdir)/ginclude/varargs.h \
+ $(srcdir)/ginclude/stdbool.h $(srcdir)/ginclude/iso646.h \
+ $(EXTRA_HEADERS)
+
+# The GCC to use for compiling libgcc.a, enquire, and crt*.o.
# Usually the one we just built.
# Don't use this as a dependency--use $(GCC_PASSES) or $(GCC_PARTS).
-GCC_FOR_TARGET = $(STAGE_CC_WRAPPER) ./xgcc -B./ -B$(build_tooldir)/bin/ -isystem $(build_tooldir)/include -isystem $(build_tooldir)/sys-include
+GCC_FOR_TARGET = ./xgcc -B./ -B$(build_tooldir)/bin/ -isystem $(build_tooldir)/include -isystem $(build_tooldir)/sys-include
# This is used instead of ALL_CFLAGS when compiling with GCC_FOR_TARGET.
# It omits XCFLAGS, and specifies -B./.
@@ -257,7 +230,6 @@ HASHTAB_H = $(srcdir)/../include/hashtab.h
OBSTACK_H = $(srcdir)/../include/obstack.h
SPLAY_TREE_H= $(srcdir)/../include/splay-tree.h
FIBHEAP_H = $(srcdir)/../include/fibheap.h
-PARTITION_H = $(srcdir)/../include/partition.h
# Default native SYSTEM_HEADER_DIR, to be overridden by targets.
NATIVE_SYSTEM_HEADER_DIR = /usr/include
@@ -281,7 +253,6 @@ tmake_file=@dep_tmake_file@
out_file=$(srcdir)/config/@out_file@
out_object_file=@out_object_file@
md_file=$(srcdir)/config/@md_file@
-tm_defines=@tm_defines@
tm_p_file_list=@tm_p_file_list@
tm_p_file=@tm_p_file@
build_xm_file_list=@build_xm_file_list@
@@ -398,12 +369,11 @@ TARGET_LIBGCC2_CFLAGS =
# Options to use when compiling crtbegin/end.
CRTSTUFF_CFLAGS = -O2 $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -g0 \
- -finhibit-size-directive -fno-inline-functions -fno-exceptions \
- -fno-zero-initialized-in-bss
+ -finhibit-size-directive -fno-inline-functions -fno-exceptions
# Additional sources to handle exceptions; overridden on ia64.
LIB2ADDEH = $(srcdir)/unwind-dw2.c $(srcdir)/unwind-dw2-fde.c \
- $(srcdir)/unwind-sjlj.c $(srcdir)/unwind-c.c
+ $(srcdir)/unwind-sjlj.c
LIB2ADDEHDEP = unwind.inc unwind-dw2-fde.h
# nm flags to list global symbols in libgcc object files.
@@ -445,11 +415,19 @@ LIB2FUNCS_EXTRA =
# Assembler files should have names ending in `.asm'.
LIB2FUNCS_STATIC_EXTRA =
+# Handle cpp installation.
+INSTALL_CPP=
+UNINSTALL_CPP=
+
+# We do not try to build float.h anymore. Let configure select the
+# appropriate pre-built float.h file for the target.
+FLOAT_H=@float_h_file@
+
# Program to convert libraries.
LIBCONVERT =
# Control whether header files are installed.
-INSTALL_HEADERS=install-headers install-mkheaders
+INSTALL_HEADERS=install-headers
# Control whether Info documentation is built and installed.
BUILD_INFO = @BUILD_INFO@
@@ -471,7 +449,7 @@ COMPILERS = cc1$(exeext) @all_compilers@
# List of things which should already be built whenever we try to use xgcc
# to compile anything (without linking).
-GCC_PASSES=xgcc$(exeext) cc1$(exeext) specs $(EXTRA_PASSES)
+GCC_PASSES=xgcc$(exeext) cc1$(exeext) cpp0$(exeext) specs $(EXTRA_PASSES)
# List of things which should already be built whenever we try to use xgcc
# to link anything.
@@ -483,12 +461,12 @@ DIR = ../gcc
# Flags to use when cross-building GCC.
# Prefix to apply to names of object files when using them
# to run on the machine we are compiling on.
-BUILD_PREFIX = @BUILD_PREFIX@
+HOST_PREFIX = @HOST_PREFIX@
# Prefix to apply to names of object files when compiling them
# to run on the machine we are compiling on.
# The default for this variable is chosen to keep these rules
# out of the way of the other rules for compiling the same source files.
-BUILD_PREFIX_1 = @BUILD_PREFIX_1@
+HOST_PREFIX_1 = @HOST_PREFIX_1@
# Native compiler for the build machine and its switches.
HOST_CC = @HOST_CC@
HOST_CFLAGS= @HOST_CFLAGS@ -DGENERATOR_FILE
@@ -555,7 +533,7 @@ all: all.indirect
.NOEXPORT:
# GCONFIG_H lists the config files that the generator files depend on, while
-# CONFIG_H lists the ones ordinary gcc files depend on, which includes
+# CONFIG_H lists the the ones ordinary gcc files depend on, which includes
# several files generated by those generators.
GCONFIG_H = config.h $(host_xm_file_list)
HCONFIG_H = hconfig.h $(build_xm_file_list)
@@ -563,18 +541,16 @@ CONFIG_H = $(GCONFIG_H) insn-constants.h insn-flags.h
TCONFIG_H = tconfig.h $(xm_file_list)
TARGET_H = target.h
HOOKS_H = hooks.h
-LANGHOOKS_DEF_H = langhooks-def.h $(HOOKS_H)
+LANGHOOKS_DEF_H = langhooks.h $(HOOKS_H)
TARGET_DEF_H = target-def.h $(HOOKS_H)
TM_P_H = tm_p.h $(tm_p_file_list) tm-preds.h
-MACHMODE_H = machmode.h machmode.def @extra_modes_file@
+MACHMODE_H = machmode.h machmode.def
RTL_BASE_H = rtl.h rtl.def $(MACHMODE_H)
RTL_H = $(RTL_BASE_H) genrtl.h
PARAMS_H = params.h params.def
-TREE_H = tree.h tree.def $(MACHMODE_H) tree-check.h version.h builtins.def \
- location.h
-BASIC_BLOCK_H = basic-block.h bitmap.h sbitmap.h varray.h $(PARTITION_H) \
- hard-reg-set.h
+TREE_H = tree.h real.h tree.def $(MACHMODE_H) tree-check.h version.h builtins.def
+BASIC_BLOCK_H = basic-block.h bitmap.h sbitmap.h varray.h
DEMANGLE_H = $(srcdir)/../include/demangle.h
RECOG_H = recog.h
EXPR_H = expr.h
@@ -583,10 +559,10 @@ REGS_H = regs.h varray.h $(MACHMODE_H)
INTEGRATE_H = integrate.h varray.h
LOOP_H = loop.h varray.h bitmap.h
GCC_H = gcc.h version.h
-GGC_H = ggc.h varray.h gtype-desc.h
+GGC_H = ggc.h varray.h
TIMEVAR_H = timevar.h timevar.def
INSN_ATTR_H = insn-attr.h $(srcdir)/insn-addr.h $(srcdir)/varray.h
-C_COMMON_H = c-common.h $(SPLAY_TREE_H) $(CPPLIB_H)
+C_COMMON_H = c-common.h $(SPLAY_TREE_H)
C_TREE_H = c-tree.h $(C_COMMON_H)
SYSTEM_H = system.h hwint.h $(srcdir)/../include/libiberty.h
PREDICT_H = predict.h predict.def
@@ -611,8 +587,8 @@ INTERNAL_CFLAGS = -DIN_GCC @CROSS@
# This is the variable actually used when we compile.
# If you change this line, you probably also need to change the definition
# of HOST_CFLAGS in build-make to match.
-ALL_CFLAGS = $(X_CFLAGS) $(T_CFLAGS) \
- $(CFLAGS) $(INTERNAL_CFLAGS) $(COVERAGE_FLAGS) $(WARN_CFLAGS) $(XCFLAGS) @DEFS@
+ALL_CFLAGS = $(INTERNAL_CFLAGS) $(X_CFLAGS) $(T_CFLAGS) \
+ $(CFLAGS) $(WARN_CFLAGS) $(XCFLAGS) @DEFS@
# Likewise.
ALL_CPPFLAGS = $(CPPFLAGS) $(X_CPPFLAGS) $(T_CPPFLAGS)
@@ -633,24 +609,15 @@ HOST_LIBDEPS= $(BUILD_LIBIBERTY)
# and the system's installed libraries.
LIBS = $(INTLLIBS) @LIBS@ $(LIBIBERTY)
-# Any system libraries needed just for GNAT.
-SYSLIBS = @GNAT_LIBEXC@
-
-# Libs needed (at present) just for jcf-dump.
-LDEXP_LIB = @LDEXP_LIB@
-
# Likewise, for use in the tools that must run on this machine
# even if we are cross-building GCC.
HOST_LIBS = $(BUILD_LIBIBERTY)
-HOST_RTL = $(BUILD_PREFIX)rtl.o read-rtl.o $(BUILD_PREFIX)bitmap.o \
- $(BUILD_PREFIX)ggc-none.o
-HOST_SUPPORT = gensupport.o insn-conditions.o
-HOST_EARLY_SUPPORT = gensupport.o dummy-conditions.o
+HOST_RTL = $(HOST_PREFIX)rtl.o read-rtl.o $(HOST_PREFIX)bitmap.o \
+ $(HOST_PREFIX)ggc-none.o gensupport.o
-HOST_PRINT = print-rtl1.o
-HOST_ERRORS = $(BUILD_PREFIX)errors.o
-HOST_VARRAY = $(BUILD_PREFIX)varray.o
+HOST_PRINT = $(HOST_PREFIX)print-rtl.o
+HOST_ERRORS = $(HOST_PREFIX)errors.o
# Specify the directories to be searched for header files.
# Both . and srcdir are used, in that order,
@@ -737,55 +704,60 @@ CXX_TARGET_OBJS=@cxx_target_objs@
# Language-specific object files for C and Objective C.
C_AND_OBJC_OBJS = attribs.o c-errors.o c-lex.o c-pragma.o c-decl.o c-typeck.o \
- c-convert.o c-aux-info.o c-common.o c-opts.o c-format.o c-semantics.o \
- c-objc-common.o c-dump.o libcpp.a $(C_TARGET_OBJS)
+ c-convert.o c-aux-info.o c-common.o c-format.o c-semantics.o \
+ c-objc-common.o libcpp.a $(C_TARGET_OBJS)
# Language-specific object files for C.
-C_OBJS = c-parse.o c-lang.o c-pretty-print.o $(C_AND_OBJC_OBJS)
+C_OBJS = c-parse.o c-lang.o $(C_AND_OBJC_OBJS)
# Language-independent object files.
-OBJS = alias.o bb-reorder.o bitmap.o builtins.o caller-save.o calls.o \
- cfg.o cfganal.o cfgbuild.o cfgcleanup.o cfglayout.o cfgloop.o \
- cfgrtl.o combine.o conflict.o convert.o cse.o cselib.o dbxout.o \
- debug.o df.o diagnostic.o doloop.o dominance.o \
- dwarf2asm.o dwarf2out.o dwarfout.o emit-rtl.o except.o explow.o \
- expmed.o expr.o final.o flow.o fold-const.o function.o gcse.o \
- genrtl.o ggc-common.o global.o graph.o gtype-desc.o \
- haifa-sched.o hashtable.o hooks.o ifcvt.o insn-attrtab.o insn-emit.o \
- insn-extract.o insn-opinit.o insn-output.o insn-peep.o insn-recog.o \
- integrate.o intl.o jump.o langhooks.o lcm.o lists.o local-alloc.o \
- loop.o mbchar.o optabs.o params.o predict.o print-rtl.o print-tree.o \
- profile.o ra.o ra-build.o ra-colorize.o ra-debug.o ra-rewrite.o \
- real.o recog.o reg-stack.o regclass.o regmove.o regrename.o \
- reload.o reload1.o reorg.o resource.o rtl.o rtlanal.o rtl-error.o \
- sbitmap.o sched-deps.o sched-ebb.o sched-rgn.o sched-vis.o sdbout.o \
- sibcall.o simplify-rtx.o ssa.o ssa-ccp.o ssa-dce.o stmt.o \
- stor-layout.o stringpool.o timevar.o toplev.o tracer.o tree.o tree-dump.o \
+OBJS = alias.o bb-reorder.o bitmap.o builtins.o caller-save.o calls.o \
+ cfg.o cfganal.o cfgbuild.o cfgcleanup.o cfglayout.o cfgloop.o cfgrtl.o \
+ combine.o conflict.o convert.o cse.o cselib.o dbxout.o debug.o dependence.o \
+ df.o diagnostic.o doloop.o dominance.o dwarf2asm.o dwarf2out.o dwarfout.o \
+ emit-rtl.o except.o explow.o expmed.o expr.o final.o flow.o \
+ fold-const.o function.o gcse.o genrtl.o ggc-common.o global.o graph.o \
+ haifa-sched.o hash.o hashtable.o hooks.o ifcvt.o insn-attrtab.o insn-emit.o \
+ insn-extract.o insn-opinit.o insn-output.o insn-peep.o insn-recog.o \
+ integrate.o intl.o jump.o langhooks.o lcm.o lists.o local-alloc.o \
+ loop.o mbchar.o optabs.o params.o predict.o print-rtl.o print-tree.o \
+ profile.o real.o recog.o reg-stack.o regclass.o regmove.o regrename.o \
+ reload.o reload1.o reorg.o resource.o rtl.o rtlanal.o rtl-error.o \
+ sbitmap.o sched-deps.o sched-ebb.o sched-rgn.o sched-vis.o sdbout.o \
+ sibcall.o simplify-rtx.o ssa.o ssa-ccp.o ssa-dce.o stmt.o \
+ stor-layout.o stringpool.o timevar.o toplev.o tree.o tree-dump.o \
tree-inline.o unroll.o varasm.o varray.o version.o vmsdbgout.o xcoffout.o \
- et-forest.o $(GGC) $(out_object_file) $(EXTRA_OBJS)
+ $(GGC) $(out_object_file) $(EXTRA_OBJS)
BACKEND = main.o libbackend.a
+# GEN files are listed separately, so they can be built before doing parallel
+# makes for cc1 or cc1plus. Otherwise sequent parallel make attempts to load
+# them before rtl.o is compiled.
+GEN= genemit$(build_exeext) genoutput$(build_exeext) genrecog$(build_exeext) \
+ genextract$(build_exeext) genflags$(build_exeext) gencodes$(build_exeext) \
+ genconfig$(build_exeext) genpeep$(build_exeext) gengenrtl$(build_exeext) \
+ gencheck$(build_exeext) genpreds$(build_exeext) genconstants$(build_exeext)
+
# Files to be copied away after each stage in building.
STAGESTUFF = *$(objext) insn-flags.h insn-config.h insn-codes.h \
insn-output.c insn-recog.c insn-emit.c insn-extract.c insn-peep.c \
insn-attr.h insn-attrtab.c insn-opinit.c insn-constants.h tm-preds.h \
- tree-check.h insn-conditions.c \
- s-flags s-config s-codes s-mlib s-genrtl s-gtype gtyp-gen.h \
- s-output s-recog s-emit s-extract s-peep s-check s-conditions \
+ tree-check.h \
+ s-flags s-config s-codes s-mlib s-under s-genrtl \
+ s-output s-recog s-emit s-extract s-peep s-check \
s-attr s-attrtab s-opinit s-preds s-constants s-crt0 \
genemit$(build_exeext) genoutput$(build_exeext) genrecog$(build_exeext) \
genextract$(build_exeext) genflags$(build_exeext) gencodes$(build_exeext) \
genconfig$(build_exeext) genpeep$(build_exeext) genattrtab$(build_exeext) \
genattr$(build_exeext) genopinit$(build_exeext) gengenrtl$(build_exeext) \
gencheck$(build_exeext) genpreds$(build_exeext) genconstants$(build_exeext) \
- gengtype$(build_exeext) genconditions$(build_exeext) \
- genrtl.c genrtl.h gt-*.h gtype-*.h gtype-desc.c \
- xgcc$(exeext) cpp$(exeext) cc1$(exeext) $(EXTRA_PASSES) \
+ genrtl.c genrtl.h \
+ xgcc$(exeext) cpp$(exeext) cc1$(exeext) cpp0$(exeext) $(EXTRA_PASSES) \
$(EXTRA_PARTS) $(EXTRA_PROGRAMS) gcc-cross$(exeext) cc1obj$(exeext) \
- protoize$(exeext) unprotoize$(exeext) \
- specs collect2$(exeext) $(USE_COLLECT2) \
+ enquire$(exeext) protoize$(exeext) unprotoize$(exeext) \
+ specs collect2$(exeext) $(USE_COLLECT2) underscore.c tradcpp0$(exeext) \
gcov$(exeext) *.[0-9][0-9].* *.[si] libcpp.a libbackend.a libgcc.mk \
$(LANG_STAGESTUFF)
@@ -805,30 +777,17 @@ LIB2FUNCS_ST = _eprintf _bb __gcc_bcmp
FPBIT_FUNCS = _pack_sf _unpack_sf _addsub_sf _mul_sf _div_sf \
_fpcmp_parts_sf _compare_sf _eq_sf _ne_sf _gt_sf _ge_sf \
_lt_sf _le_sf _unord_sf _si_to_sf _sf_to_si _negate_sf _make_sf \
- _sf_to_df _sf_to_tf _thenan_sf _sf_to_usi _usi_to_sf
+ _sf_to_df _thenan_sf _sf_to_usi _usi_to_sf
DPBIT_FUNCS = _pack_df _unpack_df _addsub_df _mul_df _div_df \
_fpcmp_parts_df _compare_df _eq_df _ne_df _gt_df _ge_df \
_lt_df _le_df _unord_df _si_to_df _df_to_si _negate_df _make_df \
- _df_to_sf _df_to_tf _thenan_df _df_to_usi _usi_to_df
-
-TPBIT_FUNCS = _pack_tf _unpack_tf _addsub_tf _mul_tf _div_tf \
- _fpcmp_parts_tf _compare_tf _eq_tf _ne_tf _gt_tf _ge_tf \
- _lt_tf _le_tf _unord_tf _si_to_tf _tf_to_si _negate_tf _make_tf \
- _tf_to_df _tf_to_sf _thenan_tf _tf_to_usi _usi_to_tf
+ _df_to_sf _thenan_df _df_to_usi _usi_to_df
# These might cause a divide overflow trap and so are compiled with
# unwinder info.
LIB2_DIVMOD_FUNCS = _divdi3 _moddi3 _udivdi3 _umoddi3 _udiv_w_sdiv _udivmoddi4
-# The only suffixes we want for implicit rules are .c and .o, so clear
-# the list and add them. This speeds up GNU Make, and allows -r to work.
-# For i18n support, we also need .gmo, .po, .pox.
-# This must come before the language makefile fragments to allow them to
-# add suffixes and rules of their own.
-.SUFFIXES:
-.SUFFIXES: .c .o .po .pox .gmo
-
#
# Language makefile fragments.
@@ -854,6 +813,11 @@ LIB2_DIVMOD_FUNCS = _divdi3 _moddi3 _udivdi3 _umoddi3 _udiv_w_sdiv _udivmoddi4
# End of language makefile fragments.
#
+# The only suffixes we want for implicit rules are .c and .o, so clear
+# the list and add them. This speeds up GNU Make, and allows -r to work.
+# For i18n support, we also need .gmo, .po, .pox.
+.SUFFIXES:
+.SUFFIXES: .c .o .po .pox .gmo
Makefile: $(srcdir)/Makefile.in config.status $(srcdir)/version.c \
$(xmake_file) $(tmake_file) $(LANG_MAKEFILES)
@@ -869,26 +833,22 @@ tconfig.h: cs-tconfig.h ; @true
tm_p.h: cs-tm_p.h ; @true
cs-config.h: Makefile
- TM_DEFINES="$(tm_defines)" \
- HEADERS="$(host_xm_file)" XM_DEFINES="$(host_xm_defines)" \
+ HEADERS="$(host_xm_file)" DEFINES="$(host_xm_defines)" \
TARGET_CPU_DEFAULT="$(target_cpu_default)" \
$(SHELL) $(srcdir)/mkconfig.sh config.h
cs-hconfig.h: Makefile
- TM_DEFINES="$(tm_defines)" \
- HEADERS="$(build_xm_file)" XM_DEFINES="$(build_xm_defines)" \
+ HEADERS="$(build_xm_file)" DEFINES="$(build_xm_defines)" \
TARGET_CPU_DEFAULT="$(target_cpu_default)" \
$(SHELL) $(srcdir)/mkconfig.sh hconfig.h
cs-tconfig.h: Makefile
- TM_DEFINES="$(tm_defines)" \
- HEADERS="$(xm_file)" XM_DEFINES="$(xm_defines)" \
+ HEADERS="$(xm_file)" DEFINES="$(xm_defines)" \
TARGET_CPU_DEFAULT="" \
$(SHELL) $(srcdir)/mkconfig.sh tconfig.h
cs-tm_p.h: Makefile
- TM_DEFINES="" \
- HEADERS="$(tm_p_file)" XM_DEFINES="" TARGET_CPU_DEFAULT="" \
+ HEADERS="$(tm_p_file)" DEFINES="" TARGET_CPU_DEFAULT="" \
$(SHELL) $(srcdir)/mkconfig.sh tm_p.h
# Don't automatically run autoconf, since configure.in might be accidentally
@@ -905,9 +865,6 @@ gccbug: $(srcdir)/gccbug.in
mklibgcc: $(srcdir)/mklibgcc.in
CONFIG_FILES=mklibgcc CONFIG_HEADERS= ./config.status
-mkheaders: $(srcdir)/mkheaders.in
- CONFIG_FILES=mkheaders CONFIG_HEADERS= ./config.status
-
# cstamp-h.in controls rebuilding of config.in.
# It is named cstamp-h.in and not stamp-h.in so the mostlyclean rule doesn't
# delete it. A stamp file is needed as autoheader won't update the file if
@@ -942,6 +899,8 @@ config.status: $(srcdir)/configure $(srcdir)/config.gcc version.c
all.internal: start.encap rest.encap doc
# This is what to compile if making a cross-compiler.
+# Note that we can compile enquire using the cross-compiler just built,
+# although we can't run it on this machine.
all.cross: native gcc-cross cpp$(exeext) specs \
$(LIBGCC) $(EXTRA_PARTS) lang.all.cross doc
# This is what must be made before installing GCC and converting libraries.
@@ -955,7 +914,7 @@ native: config.status auto-host.h intl.all build-@POSUB@ $(LANGUAGES) \
$(EXTRA_PASSES) $(EXTRA_PROGRAMS) $(USE_COLLECT2)
# Define the names for selecting languages in LANGUAGES.
-C c: cc1$(exeext)
+C c: cc1$(exeext) tradcpp0$(exeext)
PROTO: proto
# Tell GNU make these are phony targets.
@@ -1020,7 +979,7 @@ xlimits.h: glimits.h limitx.h limity.h
LIB2ADD = $(LIB2FUNCS_EXTRA)
LIB2ADD_ST = $(LIB2FUNCS_STATIC_EXTRA)
-libgcc.mk: config.status Makefile mklibgcc $(LIB2ADD) $(LIB2ADD_ST) xgcc$(exeext) specs
+libgcc.mk: config.status Makefile mklibgcc $(LIB2ADD) $(LIB2ADD_ST) xgcc$(exeext)
objext='$(objext)' \
LIB1ASMFUNCS='$(LIB1ASMFUNCS)' \
LIB2FUNCS_1='$(LIB2FUNCS_1)' \
@@ -1035,8 +994,6 @@ libgcc.mk: config.status Makefile mklibgcc $(LIB2ADD) $(LIB2ADD_ST) xgcc$(exeext
LIB2_DIVMOD_FUNCS='$(LIB2_DIVMOD_FUNCS)' \
DPBIT='$(DPBIT)' \
DPBIT_FUNCS='$(DPBIT_FUNCS)' \
- TPBIT='$(TPBIT)' \
- TPBIT_FUNCS='$(TPBIT_FUNCS)' \
MULTILIBS=`$(GCC_FOR_TARGET) --print-multi-lib` \
EXTRA_MULTILIB_PARTS='$(EXTRA_MULTILIB_PARTS)' \
SHLIB_LINK='$(SHLIB_LINK)' \
@@ -1056,13 +1013,12 @@ libgcc.mk: config.status Makefile mklibgcc $(LIB2ADD) $(LIB2ADD_ST) xgcc$(exeext
LIBGCC_DEPS = $(GCC_PASSES) $(LANGUAGES) stmp-int-hdrs $(STMP_FIXPROTO) \
libgcc.mk $(srcdir)/libgcc2.c $(TCONFIG_H) \
$(MACHMODE_H) longlong.h gbl-ctors.h config.status stmp-int-hdrs \
- tsystem.h $(FPBIT) $(DPBIT) $(TPBIT) $(LIB2ADD) \
- $(LIB2ADD_ST) $(LIB2ADDEH) $(LIB2ADDEHDEP) $(EXTRA_PARTS) \
- $(srcdir)/config/$(LIB1ASMSRC)
+ tsystem.h $(FPBIT) $(DPBIT) $(LIB2ADD) $(LIB2ADD_ST) $(LIB2ADDEH) \
+ $(LIB2ADDEHDEP) $(EXTRA_PARTS) $(srcdir)/config/$(LIB1ASMSRC)
libgcc.a: $(LIBGCC_DEPS)
$(MAKE) GCC_FOR_TARGET="$(GCC_FOR_TARGET)" \
- BUILD_PREFIX="$(BUILD_PREFIX)" BUILD_PREFIX_1="$(BUILD_PREFIX_1)" \
+ HOST_PREFIX="$(HOST_PREFIX)" HOST_PREFIX_1="$(HOST_PREFIX_1)" \
AR_FOR_TARGET="$(AR_FOR_TARGET)" \
AR_CREATE_FOR_TARGET="$(AR_CREATE_FOR_TARGET)" \
AR_FLAGS_FOR_TARGET="$(AR_FLAGS_FOR_TARGET)" \
@@ -1104,7 +1060,7 @@ s-mlib: $(srcdir)/genmultilib Makefile
# Build multiple copies of libgcc.a, one for each target switch.
stmp-multilib: $(LIBGCC_DEPS)
$(MAKE) GCC_FOR_TARGET="$(GCC_FOR_TARGET)" \
- BUILD_PREFIX="$(BUILD_PREFIX)" BUILD_PREFIX_1="$(BUILD_PREFIX_1)" \
+ HOST_PREFIX="$(HOST_PREFIX)" HOST_PREFIX_1="$(HOST_PREFIX_1)" \
AR_FOR_TARGET="$(AR_FOR_TARGET)" \
AR_CREATE_FOR_TARGET="$(AR_CREATE_FOR_TARGET)" \
AR_FLAGS_FOR_TARGET="$(AR_FLAGS_FOR_TARGET)" \
@@ -1176,9 +1132,8 @@ s-crt0: $(CRT0_S) $(MCRT0_S) $(GCC_PASSES) $(CONFIG_H)
c-errors.o: c-errors.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(C_TREE_H) flags.h \
diagnostic.h $(TM_P_H)
-c-parse.o : $(srcdir)/c-parse.c $(CONFIG_H) $(TREE_H) $(GGC_H) intl.h \
- $(C_TREE_H) input.h flags.h $(SYSTEM_H) toplev.h output.h $(CPPLIB_H) \
- gt-c-parse.h
+c-parse.o : $(srcdir)/c-parse.c $(CONFIG_H) $(TREE_H) c-lex.h $(GGC_H) intl.h \
+ $(C_TREE_H) input.h flags.h $(SYSTEM_H) toplev.h output.h $(CPPLIB_H)
$(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
-c $(srcdir)/c-parse.c $(OUTPUT_OPTION)
@@ -1200,34 +1155,32 @@ $(srcdir)/c-parse.y: c-parse.in
$(SHELL) $(srcdir)/move-if-change tmp-c-parse.y $(srcdir)/c-parse.y
c-decl.o : c-decl.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) $(C_TREE_H) \
- $(GGC_H) $(TARGET_H) flags.h function.h output.h $(EXPR_H) \
- debug.h toplev.h intl.h $(TM_P_H) tree-inline.h $(TIMEVAR_H) c-pragma.h \
- gt-c-decl.h libfuncs.h except.h
+ $(GGC_H) $(TARGET_H) c-lex.h flags.h function.h output.h $(EXPR_H) \
+ debug.h toplev.h intl.h $(TM_P_H) tree-inline.h $(TIMEVAR_H) c-pragma.h
c-typeck.o : c-typeck.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(C_TREE_H) \
$(TARGET_H) flags.h intl.h output.h $(EXPR_H) $(RTL_H) toplev.h $(TM_P_H)
c-lang.o : c-lang.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(C_TREE_H) \
- $(GGC_H) langhooks.h $(LANGHOOKS_DEF_H) c-common.h gtype-c.h
-c-lex.o : c-lex.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) \
- debug.h $(C_TREE_H) c-common.h real.h \
+ langhooks.h langhooks-def.h
+c-lex.o : c-lex.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) c-lex.h \
+ debug.h $(C_TREE_H) \
c-pragma.h input.h intl.h flags.h toplev.h output.h \
mbchar.h $(CPPLIB_H) $(EXPR_H) $(TM_P_H)
c-objc-common.o : c-objc-common.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) \
$(C_TREE_H) $(RTL_H) insn-config.h integrate.h $(EXPR_H) $(C_TREE_H) \
flags.h toplev.h tree-inline.h diagnostic.h integrate.h $(VARRAY_H) \
- langhooks.h $(GGC_H) gt-c-objc-common.h $(TARGET_H)
+ $(GGC_H)
c-aux-info.o : c-aux-info.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(C_TREE_H) \
flags.h toplev.h
-c-convert.o : c-convert.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) flags.h toplev.h \
- $(C_COMMON_H)
+c-convert.o : c-convert.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) flags.h toplev.h
c-pragma.o: c-pragma.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) function.h \
- c-pragma.h toplev.h output.h $(GGC_H) $(TM_P_H) $(C_COMMON_H) gt-c-pragma.h
+ c-pragma.h toplev.h output.h $(GGC_H) $(TM_P_H) $(C_COMMON_H)
mbchar.o: mbchar.c $(CONFIG_H) $(SYSTEM_H) mbchar.h
graph.o: graph.c $(CONFIG_H) $(SYSTEM_H) toplev.h flags.h output.h $(RTL_H) \
function.h hard-reg-set.h $(BASIC_BLOCK_H) graph.h
sbitmap.o: sbitmap.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) flags.h hard-reg-set.h \
$(BASIC_BLOCK_H)
-COLLECT2_OBJS = collect2.o tlink.o intl.o version.o
+COLLECT2_OBJS = collect2.o tlink.o hash.o intl.o underscore.o version.o
COLLECT2_LIBS = @COLLECT2_LIBS@
collect2$(exeext): $(COLLECT2_OBJS) $(LIBDEPS)
# Don't try modifying collect2 (aka ld) in place--it might be linking this.
@@ -1241,36 +1194,44 @@ collect2.o : collect2.c $(CONFIG_H) $(SYSTEM_H) gstab.h intl.h \
-DTARGET_MACHINE=\"$(target_alias)\" \
-c $(srcdir)/collect2.c $(OUTPUT_OPTION)
-tlink.o: tlink.c $(DEMANGLE_H) $(HASHTAB_H) $(CONFIG_H) $(SYSTEM_H) \
- $(OBSTACK_H) collect2.h intl.h
+tlink.o: tlink.c $(DEMANGLE_H) hash.h $(CONFIG_H) $(SYSTEM_H) collect2.h intl.h
+hash.o: hash.c hash.h $(SYSTEM_H) toplev.h $(GCONFIG_H)
+ $(CC) -c $(ALL_CFLAGS) -DGENERATOR_FILE $(ALL_CPPFLAGS) $(INCLUDES) $< $(OUTPUT_OPTION)
+
+underscore.c: s-under ; @true
+
+s-under: $(GCC_PASSES)
+ echo "int xxy_us_dummy;" >tmp-dum.c
+ $(GCC_FOR_TARGET) -S tmp-dum.c
+ echo '/*WARNING: This file is automatically generated!*/' >tmp-under.c
+ if grep _xxy_us_dummy tmp-dum.s > /dev/null ; then \
+ echo "int prepends_underscore = 1;" >>tmp-under.c; \
+ else \
+ echo "int prepends_underscore = 0;" >>tmp-under.c; \
+ fi
+ $(SHELL) $(srcdir)/move-if-change tmp-under.c underscore.c
+ -rm -f tmp-dum.c tmp-dum.s
+ $(STAMP) s-under
# A file used by all variants of C.
c-common.o : c-common.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(OBSTACK_H) \
$(C_COMMON_H) flags.h toplev.h output.h c-pragma.h $(RTL_H) $(GGC_H) \
$(EXPR_H) $(TM_P_H) builtin-types.def builtin-attrs.def $(TARGET_H) \
- diagnostic.h except.h gt-c-common.h real.h langhooks.h c-tree.h
-c-pretty-print.o : c-pretty-print.c c-pretty-print.h pretty-print.h \
- $(C_COMMON_H) $(CONFIG_H) $(SYSTEM_H) real.h
-
-c-opts.o : c-opts.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(C_COMMON_H) \
- c-pragma.h flags.h toplev.h langhooks.h tree-inline.h diagnostic.h \
- intl.h
+ diagnostic.h tree-inline.h $(LANGHOOKS_DEF_H)
# A file used by all variants of C and some other languages.
-attribs.o : attribs.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) flags.h \
+attribs.o : attribs.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(OBSTACK_H) flags.h \
toplev.h output.h c-pragma.h $(RTL_H) $(GGC_H) $(EXPR_H) $(TM_P_H) \
- builtin-types.def $(TARGET_H) langhooks.h
+ builtin-types.def $(TARGET_H)
-c-format.o : c-format.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) langhooks.h \
+c-format.o : c-format.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) \
$(C_COMMON_H) flags.h toplev.h intl.h diagnostic.h
c-semantics.o : c-semantics.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(C_TREE_H) \
- flags.h toplev.h output.h c-pragma.h $(RTL_H) $(GGC_H) \
- $(EXPR_H) $(PREDICT_H)
-
-c-dump.o : c-dump.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(C_TREE_H) tree-dump.h
+ c-lex.h flags.h toplev.h output.h c-pragma.h $(RTL_H) $(GGC_H) \
+ $(EXPR_H)
# Language-independent files.
@@ -1281,7 +1242,6 @@ DRIVER_DEFINES = \
-DDEFAULT_TARGET_MACHINE=\"$(target_alias)\" \
-DSTANDARD_BINDIR_PREFIX=\"$(bindir)/\" \
-DTOOLDIR_BASE_PREFIX=\"$(unlibsubdir)/../\" \
- $(VALGRIND_DRIVER_DEFINES) \
`test "X$${SHLIB_LINK}" = "X" || test "@enable_shared@" != "yes" || echo "-DENABLE_SHARED_LIBGCC"` \
`test "X$${SHLIB_MULTILIB}" = "X" || echo "-DNO_SHARED_LIBGCC_MULTILIB"`
@@ -1304,7 +1264,7 @@ cppspec.o: cppspec.c $(CONFIG_H) $(SYSTEM_H) $(GCC_H)
tree-check.h: s-check ; @true
s-check : gencheck$(build_exeext) $(srcdir)/move-if-change
- $(RUN_GEN) ./gencheck$(build_exeext) > tmp-check.h
+ ./gencheck$(build_exeext) > tmp-check.h
$(SHELL) $(srcdir)/move-if-change tmp-check.h tree-check.h
$(STAMP) s-check
@@ -1345,23 +1305,17 @@ dumpvers: dumpvers.c
version.o: version.c version.h
-gtype-desc.o: gtype-desc.c $(CONFIG_H) $(SYSTEM_H) varray.h $(HASHTAB_H) \
- $(TREE_H) $(RTL_H) function.h insn-config.h $(EXPR_H) $(OPTABS_H) \
- libfuncs.h debug.h $(GGC_H) bitmap.h $(BASIC_BLOCK_H) hard-reg-set.h \
- ssa.h cselib.h insn-addr.h
-
ggc-common.o: ggc-common.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) \
- flags.h $(GGC_H) varray.h $(HASHTAB_H) $(TM_P_H) langhooks.h \
- $(PARAMS_H)
+ flags.h $(GGC_H) varray.h hash.h $(HASHTAB_H) $(TM_P_H)
ggc-simple.o: ggc-simple.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h \
- $(GGC_H) varray.h $(TIMEVAR_H) $(TM_P_H) $(PARAMS_H)
+ $(GGC_H) varray.h $(TIMEVAR_H) $(TM_P_H)
ggc-page.o: ggc-page.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h \
- toplev.h $(GGC_H) $(TIMEVAR_H) $(TM_P_H)
+ toplev.h $(GGC_H) varray.h $(TIMEVAR_H) $(TM_P_H)
stringpool.o: stringpool.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(OBSTACK_H) \
- flags.h toplev.h $(GGC_H)
+ flags.h toplev.h
hashtable.o: hashtable.c hashtable.h $(CONFIG_H) $(SYSTEM_H) $(OBSTACK_H)
@@ -1375,15 +1329,13 @@ prefix.o: prefix.c $(CONFIG_H) $(SYSTEM_H) Makefile prefix.h
-DPREFIX=\"$(prefix)\" \
-c $(srcdir)/prefix.c $(OUTPUT_OPTION)
-convert.o: convert.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) flags.h convert.h \
- toplev.h langhooks.h
+convert.o: convert.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) flags.h convert.h toplev.h
langhooks.o : langhooks.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) toplev.h \
tree-inline.h $(RTL_H) insn-config.h integrate.h langhooks.h \
$(LANGHOOKS_DEF_H) flags.h
tree.o : tree.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) flags.h function.h toplev.h \
- $(GGC_H) $(HASHTAB_H) $(TARGET_H) output.h $(TM_P_H) langhooks.h \
- real.h gt-tree.h
+ $(GGC_H) $(HASHTAB_H) $(TARGET_H) output.h $(TM_P_H) langhooks.h
tree-dump.o: tree-dump.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(C_TREE_H) \
flags.h langhooks.h toplev.h output.h c-pragma.h $(RTL_H) $(GGC_H) \
$(EXPR_H) $(SPLAY_TREE_H) tree-dump.h
@@ -1392,22 +1344,21 @@ tree-inline.o : tree-inline.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) \
$(VARRAY_H) $(HASHTAB_H) $(SPLAY_TREE_H) toplev.h langhooks.h \
$(C_COMMON_H) tree-inline.h
print-tree.o : print-tree.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(GGC_H) \
- langhooks.h real.h
-stor-layout.o : stor-layout.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) flags.h \
- function.h $(EXPR_H) $(RTL_H) toplev.h $(GGC_H) $(TM_P_H) $(TARGET_H) \
langhooks.h
-fold-const.o : fold-const.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) flags.h real.h \
- toplev.h $(HASHTAB_H) $(EXPR_H) $(RTL_H) $(GGC_H) $(TM_P_H) langhooks.h
+stor-layout.o : stor-layout.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) flags.h \
+ function.h $(EXPR_H) $(RTL_H) toplev.h $(GGC_H) $(TM_P_H) $(TARGET_H)
+fold-const.o : fold-const.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) flags.h \
+ toplev.h $(HASHTAB_H) $(EXPR_H) $(RTL_H) $(GGC_H) $(TM_P_H)
diagnostic.o : diagnostic.c diagnostic.h real.h diagnostic.def \
$(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(TM_P_H) flags.h $(GGC_H) \
- input.h toplev.h intl.h langhooks.h $(LANGHOOKS_DEF_H)
+ input.h toplev.h intl.h
toplev.o : toplev.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) function.h \
flags.h xcoffout.h input.h $(INSN_ATTR_H) output.h diagnostic.h \
debug.h insn-config.h intl.h $(RECOG_H) Makefile toplev.h \
dwarf2out.h sdbout.h dbxout.h $(EXPR_H) hard-reg-set.h $(BASIC_BLOCK_H) \
graph.h $(LOOP_H) except.h $(REGS_H) $(TIMEVAR_H) $(lang_options_files) \
- ssa.h $(PARAMS_H) $(TM_P_H) reload.h dwarf2asm.h $(TARGET_H) \
- langhooks.h insn-flags.h options.h cfglayout.h real.h
+ ssa.h $(PARAMS_H) $(TM_P_H) reload.h dwarf2asm.h $(TARGET_H) halfpic.h \
+ langhooks.h insn-flags.h options.h
$(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
-DTARGET_NAME=\"$(target_alias)\" \
-c $(srcdir)/toplev.c $(OUTPUT_OPTION)
@@ -1419,73 +1370,69 @@ rtl-error.o: rtl-error.c system.h $(RTL_H) $(INSN_ATTR_H) insn-config.h \
rtl.o : rtl.c $(GCONFIG_H) $(SYSTEM_H) $(RTL_H) real.h $(GGC_H) errors.h
$(CC) -c $(ALL_CFLAGS) -DGENERATOR_FILE $(ALL_CPPFLAGS) $(INCLUDES) $< $(OUTPUT_OPTION)
-print-rtl.o : print-rtl.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) \
- hard-reg-set.h $(BASIC_BLOCK_H) real.h
-rtlanal.o : rtlanal.c $(CONFIG_H) $(SYSTEM_H) toplev.h $(RTL_H) \
- hard-reg-set.h $(TM_P_H) insn-config.h $(RECOG_H) real.h flags.h
+print-rtl.o : print-rtl.c $(GCONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) \
+ hard-reg-set.h $(BASIC_BLOCK_H)
+ $(CC) -c $(ALL_CFLAGS) -DGENERATOR_FILE $(ALL_CPPFLAGS) $(INCLUDES) $< $(OUTPUT_OPTION)
+rtlanal.o : rtlanal.c $(CONFIG_H) $(SYSTEM_H) toplev.h $(RTL_H) hard-reg-set.h $(TM_P_H)
errors.o : errors.c $(GCONFIG_H) $(SYSTEM_H) errors.h
$(CC) -c $(ALL_CFLAGS) -DGENERATOR_FILE $(ALL_CPPFLAGS) $(INCLUDES) $< $(OUTPUT_OPTION)
varasm.o : varasm.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) flags.h \
- function.h $(EXPR_H) hard-reg-set.h $(REGS_H) \
+ function.h $(EXPR_H) hard-reg-set.h $(REGS_H) $(OBSTACK_H) \
output.h c-pragma.h toplev.h xcoffout.h debug.h $(GGC_H) $(TM_P_H) \
- $(HASHTAB_H) $(TARGET_H) langhooks.h gt-varasm.h real.h
+ $(HASHTAB_H) $(TARGET_H) langhooks.h
function.o : function.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h \
function.h $(EXPR_H) libfuncs.h $(REGS_H) hard-reg-set.h \
- insn-config.h $(RECOG_H) output.h toplev.h except.h $(HASHTAB_H) $(GGC_H) \
- $(TM_P_H) langhooks.h gt-function.h
+ insn-config.h $(RECOG_H) output.h toplev.h except.h hash.h $(GGC_H) \
+ $(TM_P_H) langhooks.h
stmt.o : stmt.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h function.h \
insn-config.h hard-reg-set.h $(EXPR_H) libfuncs.h except.h \
- $(LOOP_H) $(RECOG_H) toplev.h output.h varray.h $(GGC_H) $(TM_P_H) \
- langhooks.h $(PREDICT_H) gt-stmt.h
+ $(LOOP_H) $(RECOG_H) toplev.h output.h varray.h $(GGC_H) $(TM_P_H)
except.o : except.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h \
- except.h function.h $(EXPR_H) libfuncs.h integrate.h langhooks.h \
+ except.h function.h $(EXPR_H) libfuncs.h integrate.h \
insn-config.h hard-reg-set.h $(BASIC_BLOCK_H) output.h \
- dwarf2asm.h dwarf2out.h toplev.h $(HASHTAB_H) intl.h $(GGC_H) \
- gt-except.h
+ dwarf2asm.h dwarf2out.h toplev.h $(HASHTAB_H) intl.h $(GGC_H)
expr.o : expr.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h function.h \
$(REGS_H) $(EXPR_H) $(OPTABS_H) libfuncs.h insn-attr.h insn-config.h \
$(RECOG_H) output.h typeclass.h hard-reg-set.h toplev.h hard-reg-set.h \
- except.h reload.h $(GGC_H) langhooks.h intl.h $(TM_P_H) real.h
+ except.h reload.h $(GGC_H) langhooks.h intl.h $(TM_P_H)
builtins.o : builtins.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h \
$(TARGET_H) function.h $(REGS_H) $(EXPR_H) $(OPTABS_H) insn-config.h \
$(RECOG_H) output.h typeclass.h hard-reg-set.h toplev.h hard-reg-set.h \
- except.h $(TM_P_H) $(PREDICT_H) libfuncs.h real.h langhooks.h
-calls.o : calls.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h \
- $(EXPR_H) langhooks.h $(TARGET_H) \
- libfuncs.h $(REGS_H) toplev.h output.h function.h $(TIMEVAR_H) $(TM_P_H) \
- except.h
+ except.h $(TM_P_H) $(PREDICT_H) libfuncs.h
+calls.o : calls.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h $(EXPR_H) \
+ libfuncs.h $(REGS_H) toplev.h output.h function.h $(TIMEVAR_H) $(TM_P_H)
expmed.o : expmed.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h \
insn-config.h $(EXPR_H) $(OPTABS_H) $(RECOG_H) real.h \
- toplev.h $(TM_P_H) langhooks.h
+ toplev.h $(TM_P_H)
explow.o : explow.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h \
hard-reg-set.h insn-config.h $(EXPR_H) $(OPTABS_H) $(RECOG_H) \
- toplev.h function.h ggc.h $(TM_P_H) gt-explow.h
+ toplev.h function.h ggc.h $(TM_P_H)
optabs.o : optabs.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h \
insn-config.h $(EXPR_H) $(OPTABS_H) libfuncs.h $(RECOG_H) reload.h \
- toplev.h $(GGC_H) real.h $(TM_P_H) except.h gt-optabs.h $(BASIC_BLOCK_H)
+ toplev.h $(GGC_H) real.h $(TM_P_H) except.h hard-reg-set.h $(BASIC_BLOCK_H)
dbxout.o : dbxout.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) flags.h \
$(REGS_H) debug.h $(TM_P_H) $(TARGET_H) function.h langhooks.h \
insn-config.h reload.h gstab.h xcoffout.h output.h dbxout.h toplev.h
-debug.o : debug.c debug.h $(CONFIG_H) $(SYSTEM_H)
+debug.o : debug.c $(CONFIG_H) $(SYSTEM_H)
sdbout.o : sdbout.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) flags.h \
function.h $(EXPR_H) output.h hard-reg-set.h $(REGS_H) real.h \
- insn-config.h xcoffout.h c-pragma.h ggc.h \
- sdbout.h toplev.h $(TM_P_H) except.h debug.h langhooks.h gt-sdbout.h
+ insn-config.h $(OBSTACK_H) xcoffout.h c-pragma.h ggc.h \
+ sdbout.h toplev.h $(TM_P_H) except.h debug.h
dwarfout.o : dwarfout.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) dwarf.h \
flags.h insn-config.h reload.h output.h toplev.h $(TM_P_H) \
debug.h langhooks.h
dwarf2out.o : dwarf2out.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) dwarf2.h \
- debug.h flags.h insn-config.h reload.h output.h diagnostic.h real.h \
+ debug.h flags.h insn-config.h reload.h output.h diagnostic.h \
hard-reg-set.h $(REGS_H) $(EXPR_H) libfuncs.h toplev.h dwarf2out.h varray.h \
- $(GGC_H) except.h dwarf2asm.h $(TM_P_H) langhooks.h $(HASHTAB_H) gt-dwarf2out.h
+ $(GGC_H) except.h dwarf2asm.h $(TM_P_H) langhooks.h
dwarf2asm.o : dwarf2asm.c $(CONFIG_H) $(SYSTEM_H) flags.h $(RTL_H) $(TREE_H) \
- output.h dwarf2asm.h $(TM_P_H) $(GGC_H)
+ output.h dwarf2asm.h $(TM_P_H)
vmsdbgout.o : vmsdbgout.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) flags.h \
- output.h vmsdbg.h debug.h langhooks.h function.h
+ output.h vmsdbg.h debug.h langhooks.h
xcoffout.o : xcoffout.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) xcoffout.h \
- flags.h toplev.h output.h dbxout.h $(GGC_H) $(TARGET_H)
+ flags.h toplev.h output.h dbxout.h $(GGC_H)
emit-rtl.o : emit-rtl.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h \
function.h $(REGS_H) insn-config.h $(RECOG_H) real.h $(GGC_H) \
$(EXPR_H) $(srcdir)/../include/obstack.h hard-reg-set.h bitmap.h toplev.h \
@@ -1494,23 +1441,23 @@ real.o : real.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) toplev.h $(TM_P_H)
integrate.o : integrate.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h \
debug.h $(INTEGRATE_H) insn-config.h $(EXPR_H) real.h $(REGS_H) \
intl.h function.h output.h $(RECOG_H) except.h toplev.h $(LOOP_H) \
- $(PARAMS_H) $(TM_P_H) $(TARGET_H) langhooks.h gt-integrate.h
+ $(PARAMS_H) $(TM_P_H) $(TARGET_H)
jump.o : jump.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) flags.h hard-reg-set.h $(REGS_H) \
insn-config.h $(RECOG_H) $(EXPR_H) real.h except.h function.h \
toplev.h $(INSN_ATTR_H) $(TM_P_H) reload.h $(PREDICT_H)
simplify-rtx.o : simplify-rtx.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(REGS_H) \
hard-reg-set.h flags.h real.h insn-config.h $(RECOG_H) $(EXPR_H) toplev.h \
- output.h function.h $(GGC_H) $(OBSTACK_H) $(TM_P_H) $(TREE_H)
+ output.h function.h $(GGC_H) $(OBSTACK_H) $(TM_P_H)
cselib.o : cselib.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(REGS_H) \
hard-reg-set.h flags.h real.h insn-config.h $(RECOG_H) $(EXPR_H) toplev.h \
- output.h function.h cselib.h $(GGC_H) $(TM_P_H) gt-cselib.h
+ output.h function.h cselib.h $(GGC_H) $(OBSTACK_H) $(TM_P_H)
cse.o : cse.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(REGS_H) hard-reg-set.h flags.h \
real.h insn-config.h $(RECOG_H) $(EXPR_H) toplev.h output.h function.h \
- $(BASIC_BLOCK_H) $(GGC_H) $(TM_P_H) $(TIMEVAR_H)
+ $(BASIC_BLOCK_H) $(GGC_H) $(TM_P_H)
gcse.o : gcse.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(REGS_H) hard-reg-set.h \
flags.h real.h insn-config.h ggc.h $(RECOG_H) $(EXPR_H) $(BASIC_BLOCK_H) \
- function.h output.h toplev.h $(TM_P_H) $(PARAMS_H) except.h gt-gcse.h
+ function.h output.h toplev.h $(TM_P_H) $(PARAMS_H) except.h
sibcall.o : sibcall.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(REGS_H) function.h \
hard-reg-set.h flags.h insn-config.h $(RECOG_H) $(BASIC_BLOCK_H)
resource.o : resource.c $(CONFIG_H) $(RTL_H) hard-reg-set.h $(SYSTEM_H) \
@@ -1519,7 +1466,7 @@ resource.o : resource.c $(CONFIG_H) $(RTL_H) hard-reg-set.h $(SYSTEM_H) \
lcm.o : lcm.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(REGS_H) hard-reg-set.h flags.h \
real.h insn-config.h $(INSN_ATTR_H) $(RECOG_H) $(EXPR_H) $(BASIC_BLOCK_H) \
$(TM_P_H) df.h
-ssa.o : ssa.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(REGS_H) varray.h $(EXPR_H) \
+ssa.o : ssa.c $(CONFIG_H) $(SYSTEM_H) $(REGS_H) varray.h $(EXPR_H) \
hard-reg-set.h flags.h function.h real.h insn-config.h $(RECOG_H) \
$(BASIC_BLOCK_H) output.h ssa.h
ssa-dce.o : ssa-dce.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) hard-reg-set.h \
@@ -1534,8 +1481,7 @@ conflict.o : conflict.c $(CONFIG_H) $(SYSTEM_H) $(OBSTACK_H) $(HASHTAB_H) \
$(RTL_H) hard-reg-set.h $(BASIC_BLOCK_H)
profile.o : profile.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h \
insn-config.h output.h $(REGS_H) $(EXPR_H) function.h \
- gcov-io.h toplev.h $(GGC_H) hard-reg-set.h $(BASIC_BLOCK_H) $(TARGET_H) \
- langhooks.h profile.h libfuncs.h gt-profile.h
+ gcov-io.h toplev.h $(GGC_H) hard-reg-set.h $(BASIC_BLOCK_H) $(TARGET_H)
loop.o : loop.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) flags.h $(LOOP_H) \
insn-config.h $(REGS_H) hard-reg-set.h $(RECOG_H) $(EXPR_H) \
real.h $(PREDICT_H) $(BASIC_BLOCK_H) function.h \
@@ -1544,7 +1490,7 @@ doloop.o : doloop.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) flags.h $(LOOP_H) \
$(EXPR_H) hard-reg-set.h $(BASIC_BLOCK_H) $(TM_P_H) toplev.h
unroll.o : unroll.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) insn-config.h function.h \
$(INTEGRATE_H) $(REGS_H) $(RECOG_H) flags.h $(EXPR_H) $(LOOP_H) toplev.h \
- hard-reg-set.h varray.h $(BASIC_BLOCK_H) $(TM_P_H) $(PREDICT_H) $(PARAMS_H)
+ hard-reg-set.h varray.h $(BASIC_BLOCK_H) $(TM_P_H) $(PREDICT_H)
flow.o : flow.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h insn-config.h \
$(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h output.h toplev.h $(RECOG_H) \
function.h except.h $(EXPR_H) ssa.h $(GGC_H) $(TM_P_H)
@@ -1553,20 +1499,19 @@ cfg.o : cfg.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) flags.h insn-config.h \
function.h except.h $(GGC_H) $(TM_P_H)
cfgrtl.o : cfgrtl.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) flags.h insn-config.h \
$(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h output.h toplev.h $(RECOG_H) \
- function.h except.h $(GGC_H) $(TM_P_H) insn-config.h
+ function.h except.h $(GGC_H) $(TM_P_H)
cfganal.o : cfganal.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(BASIC_BLOCK_H) \
hard-reg-set.h insn-config.h $(RECOG_H) $(GGC_H) $(TM_P_H)
cfgbuild.o : cfgbuild.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) flags.h insn-config.h \
$(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h output.h toplev.h $(RECOG_H) \
- function.h except.h $(GGC_H)
+ function.h except.h $(GGC_H)
cfgcleanup.o : cfgcleanup.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TIMEVAR_H)\
$(BASIC_BLOCK_H) hard-reg-set.h output.h flags.h $(RECOG_H) toplev.h \
- $(GGC_H) insn-config.h cselib.h $(TARGET_H) $(TM_P_H) $(PARAMS_H)
+ $(GGC_H) insn-config.h cselib.h $(TARGET_H) $(TM_P_H)
cfgloop.o : cfgloop.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) \
$(BASIC_BLOCK_H) hard-reg-set.h
dominance.o : dominance.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) hard-reg-set.h \
- $(BASIC_BLOCK_H) et-forest.h
-et-forest.o : et-forest.c $(CONFIG_H) $(SYSTEM_H) et-forest.h
+ $(BASIC_BLOCK_H)
combine.o : combine.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) flags.h function.h \
insn-config.h $(INSN_ATTR_H) $(REGS_H) $(EXPR_H) \
$(BASIC_BLOCK_H) $(RECOG_H) real.h hard-reg-set.h toplev.h $(TM_P_H)
@@ -1576,27 +1521,14 @@ regclass.o : regclass.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) hard-reg-set.h flags.h
local-alloc.o : local-alloc.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) flags.h \
$(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h insn-config.h $(RECOG_H) \
output.h function.h $(INSN_ATTR_H) toplev.h except.h $(TM_P_H)
-bitmap.o : bitmap.c $(GCONFIG_H) $(SYSTEM_H) $(RTL_H) flags.h \
- $(BASIC_BLOCK_H) $(REGS_H) $(GGC_H)
+bitmap.o : bitmap.c $(GCONFIG_H) $(SYSTEM_H) $(RTL_H) flags.h $(BASIC_BLOCK_H) \
+ $(REGS_H)
$(CC) -c $(ALL_CFLAGS) -DGENERATOR_FILE $(ALL_CPPFLAGS) $(INCLUDES) $< $(OUTPUT_OPTION)
global.o : global.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) flags.h reload.h function.h \
$(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h insn-config.h output.h toplev.h \
$(TM_P_H)
-varray.o : varray.c $(CONFIG_H) $(SYSTEM_H) varray.h $(GGC_H) errors.h
-ra.o : ra.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TM_P_H) insn-config.h \
- $(RECOG_H) integrate.h function.h $(REGS_H) $(OBSTACK_H) hard-reg-set.h \
- $(BASIC_BLOCK_H) df.h expr.h output.h toplev.h flags.h reload.h ra.h
-ra-build.o : ra-build.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TM_P_H) \
- insn-config.h $(RECOG_H) function.h $(REGS_H) hard-reg-set.h \
- $(BASIC_BLOCK_H) df.h output.h ggc.h ra.h gt-ra-build.h reload.h
-ra-colorize.o : ra-colorize.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TM_P_H) \
- function.h $(REGS_H) hard-reg-set.h $(BASIC_BLOCK_H) df.h output.h ra.h
-ra-debug.o : ra-debug.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) insn-config.h \
- $(RECOG_H) function.h hard-reg-set.h $(BASIC_BLOCK_H) df.h output.h ra.h \
- $(TM_P_H)
-ra-rewrite.o : ra-rewrite.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TM_P_H) \
- function.h $(REGS_H) hard-reg-set.h $(BASIC_BLOCK_H) df.h expr.h \
- output.h except.h ra.h reload.h insn-config.h
+varray.o : varray.c $(CONFIG_H) $(SYSTEM_H) varray.h $(RTL_H) $(TREE_H) bitmap.h \
+ errors.h
reload.o : reload.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) flags.h output.h \
$(EXPR_H) $(OPTABS_H) reload.h $(RECOG_H) hard-reg-set.h insn-config.h \
$(REGS_H) function.h real.h toplev.h $(TM_P_H)
@@ -1612,8 +1544,7 @@ reorg.o : reorg.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) conditions.h hard-reg-set.h \
$(RECOG_H) function.h flags.h output.h $(EXPR_H) toplev.h $(PARAMS_H) $(TM_P_H)
alias.o : alias.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) flags.h hard-reg-set.h \
$(BASIC_BLOCK_H) $(REGS_H) toplev.h output.h $(EXPR_H) \
- $(GGC_H) function.h cselib.h $(TREE_H) $(TM_P_H) langhooks.h $(TARGET_H) \
- gt-alias.h
+ $(GGC_H) function.h cselib.h $(TREE_H) $(TM_P_H) langhooks.h
regmove.o : regmove.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) insn-config.h \
$(RECOG_H) output.h $(REGS_H) hard-reg-set.h flags.h function.h \
$(EXPR_H) $(BASIC_BLOCK_H) toplev.h $(TM_P_H) except.h reload.h
@@ -1625,33 +1556,28 @@ sched-deps.o : sched-deps.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) sched-int.h \
$(INSN_ATTR_H) toplev.h $(RECOG_H) except.h cselib.h $(PARAMS_H) $(TM_P_H)
sched-rgn.o : sched-rgn.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) sched-int.h \
$(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h flags.h insn-config.h function.h \
- $(INSN_ATTR_H) toplev.h $(RECOG_H) except.h $(TM_P_H) $(TARGET_H)
+ $(INSN_ATTR_H) toplev.h $(RECOG_H) except.h $(TM_P_H)
sched-ebb.o : sched-ebb.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) sched-int.h \
$(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h flags.h insn-config.h function.h \
$(INSN_ATTR_H) toplev.h $(RECOG_H) except.h $(TM_P_H)
sched-vis.o : sched-vis.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) sched-int.h \
- hard-reg-set.h $(BASIC_BLOCK_H) $(INSN_ATTR_H) $(REGS_H) $(TM_P_H) \
- $(TARGET_H) real.h
+ hard-reg-set.h $(BASIC_BLOCK_H) $(INSN_ATTR_H) $(REGS_H) $(TM_P_H)
final.o : final.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h intl.h \
$(REGS_H) $(RECOG_H) conditions.h insn-config.h $(INSN_ATTR_H) function.h \
- real.h output.h hard-reg-set.h except.h debug.h xcoffout.h profile.h \
+ real.h output.h hard-reg-set.h except.h debug.h xcoffout.h \
toplev.h reload.h dwarf2out.h $(BASIC_BLOCK_H) $(TM_P_H) $(TARGET_H) $(EXPR_H)
recog.o : recog.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) function.h $(BASIC_BLOCK_H) \
$(REGS_H) $(RECOG_H) $(EXPR_H) hard-reg-set.h flags.h insn-config.h \
$(INSN_ATTR_H) real.h toplev.h output.h reload.h $(TM_P_H)
reg-stack.o : reg-stack.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) $(RECOG_H) \
$(REGS_H) hard-reg-set.h flags.h insn-config.h toplev.h reload.h \
- varray.h function.h $(TM_P_H) $(GGC_H) gt-reg-stack.h
+ varray.h function.h $(TM_P_H)
predict.o: predict.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h \
insn-config.h $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h output.h toplev.h \
- $(RECOG_H) function.h except.h $(EXPR_H) $(TM_P_H) $(PREDICT_H) real.h \
- $(PARAMS_H) $(TARGET_H)
+ $(RECOG_H) function.h except.h $(EXPR_H) $(TM_P_H) $(PREDICT_H)
lists.o: lists.c $(CONFIG_H) $(SYSTEM_H) toplev.h $(RTL_H) $(GGC_H)
bb-reorder.o : bb-reorder.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) \
flags.h $(BASIC_BLOCK_H) hard-reg-set.h output.h cfglayout.h $(TARGET_H)
-tracer.o : tracer.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) \
- $(BASIC_BLOCK_H) hard-reg-set.h output.h cfglayout.h flags.h \
- $(PARAMS_H) profile.h
cfglayout.o : cfglayout.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) \
insn-config.h $(BASIC_BLOCK_H) hard-reg-set.h output.h function.h \
cfglayout.h
@@ -1661,7 +1587,9 @@ regrename.o : regrename.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) insn-config.h \
resource.h $(OBSTACK_H) flags.h $(TM_P_H)
ifcvt.o : ifcvt.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(REGS_H) toplev.h \
flags.h insn-config.h function.h $(RECOG_H) $(BASIC_BLOCK_H) $(EXPR_H) \
- output.h except.h $(TM_P_H) real.h
+ output.h except.h $(TM_P_H)
+dependence.o : dependence.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) \
+ $(C_COMMON_H) flags.h varray.h $(EXPR_H)
params.o : params.c $(CONFIG_H) $(SYSTEM_H) $(PARAMS_H) toplev.h
hooks.o: hooks.c $(CONFIG_H) $(SYSTEM_H) $(HOOKS_H)
@@ -1684,6 +1612,9 @@ mips-tdump: mips-tdump.o version.o $(LIBDEPS)
mips-tdump.o : mips-tdump.c $(CONFIG_H) $(RTL_H) $(SYSTEM_H)
+# Build file to support OSF/rose half-pic format.
+halfpic.o: halfpic.c $(CONFIG_H) $(RTL_H) $(TREE_H) $(SYSTEM_H) halfpic.h
+
#
# Generate header and source files from the machine description,
# and compile them.
@@ -1713,40 +1644,25 @@ mips-tdump.o : mips-tdump.c $(CONFIG_H) $(RTL_H) $(SYSTEM_H)
insn-config.h: s-config ; @true
s-config : $(md_file) genconfig$(build_exeext) $(srcdir)/move-if-change
- $(RUN_GEN) ./genconfig$(build_exeext) $(md_file) > tmp-config.h
+ ./genconfig$(build_exeext) $(md_file) > tmp-config.h
$(SHELL) $(srcdir)/move-if-change tmp-config.h insn-config.h
$(STAMP) s-config
-insn-conditions.c: s-conditions ; @true
-s-conditions : $(md_file) genconditions$(build_exeext) $(srcdir)/move-if-change
- $(RUN_GEN) ./genconditions$(build_exeext) $(md_file) > tmp-conditions.c
- $(SHELL) $(srcdir)/move-if-change tmp-conditions.c insn-conditions.c
- $(STAMP) s-conditions
-
-insn-conditions.o : insn-conditions.c $(GCONFIG_H) $(SYSTEM_H) $(RTL_H) \
- $(TM_P_H) $(REGS_H) function.h $(RECOG_H) real.h output.h flags.h \
- hard-reg-set.h resource.h toplev.h reload.h gensupport.h insn-constants.h
- $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) insn-conditions.c
-
-dummy-conditions.o : dummy-conditions.c $(HCONFIG_H) $(SYSTEM_H) gensupport.h
- $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) \
- $(srcdir)/dummy-conditions.c $(OUTPUT_OPTION)
-
insn-flags.h: s-flags ; @true
s-flags : $(md_file) genflags$(build_exeext) $(srcdir)/move-if-change
- $(RUN_GEN) ./genflags$(build_exeext) $(md_file) > tmp-flags.h
+ ./genflags$(build_exeext) $(md_file) > tmp-flags.h
$(SHELL) $(srcdir)/move-if-change tmp-flags.h insn-flags.h
$(STAMP) s-flags
insn-codes.h: s-codes ; @true
s-codes : $(md_file) gencodes$(build_exeext) $(srcdir)/move-if-change
- $(RUN_GEN) ./gencodes$(build_exeext) $(md_file) > tmp-codes.h
+ ./gencodes$(build_exeext) $(md_file) > tmp-codes.h
$(SHELL) $(srcdir)/move-if-change tmp-codes.h insn-codes.h
$(STAMP) s-codes
insn-constants.h: s-constants ; @true
s-constants : $(md_file) genconstants$(build_exeext) $(srcdir)/move-if-change
- $(RUN_GEN) ./genconstants$(build_exeext) $(md_file) > tmp-constants.h
+ ./genconstants$(build_exeext) $(md_file) > tmp-constants.h
$(SHELL) $(srcdir)/move-if-change tmp-constants.h insn-constants.h
$(STAMP) s-constants
@@ -1758,7 +1674,7 @@ insn-emit.o : insn-emit.c $(CONFIG_H) $(RTL_H) $(EXPR_H) real.h output.h \
insn-emit.c: s-emit ; @true
s-emit : $(md_file) genemit$(build_exeext) $(srcdir)/move-if-change
- $(RUN_GEN) ./genemit$(build_exeext) $(md_file) > tmp-emit.c
+ ./genemit$(build_exeext) $(md_file) > tmp-emit.c
$(SHELL) $(srcdir)/move-if-change tmp-emit.c insn-emit.c
$(STAMP) s-emit
@@ -1770,7 +1686,7 @@ insn-recog.o : insn-recog.c $(CONFIG_H) $(RTL_H) insn-config.h $(RECOG_H) \
insn-recog.c: s-recog ; @true
s-recog : $(md_file) genrecog$(build_exeext) $(srcdir)/move-if-change
- $(RUN_GEN) ./genrecog$(build_exeext) $(md_file) > tmp-recog.c
+ ./genrecog$(build_exeext) $(md_file) > tmp-recog.c
$(SHELL) $(srcdir)/move-if-change tmp-recog.c insn-recog.c
$(STAMP) s-recog
@@ -1781,7 +1697,7 @@ insn-opinit.o : insn-opinit.c $(CONFIG_H) $(RTL_H) \
insn-opinit.c: s-opinit ; @true
s-opinit : $(md_file) genopinit$(build_exeext) $(srcdir)/move-if-change
- $(RUN_GEN) ./genopinit$(build_exeext) $(md_file) > tmp-opinit.c
+ ./genopinit$(build_exeext) $(md_file) > tmp-opinit.c
$(SHELL) $(srcdir)/move-if-change tmp-opinit.c insn-opinit.c
$(STAMP) s-opinit
@@ -1792,7 +1708,7 @@ insn-extract.o : insn-extract.c $(CONFIG_H) $(RTL_H) $(SYSTEM_H) toplev.h \
insn-extract.c: s-extract ; @true
s-extract : $(md_file) genextract$(build_exeext) $(srcdir)/move-if-change
- $(RUN_GEN) ./genextract$(build_exeext) $(md_file) > tmp-extract.c
+ ./genextract$(build_exeext) $(md_file) > tmp-extract.c
$(SHELL) $(srcdir)/move-if-change tmp-extract.c insn-extract.c
$(STAMP) s-extract
@@ -1803,7 +1719,7 @@ insn-peep.o : insn-peep.c $(CONFIG_H) $(RTL_H) $(REGS_H) output.h real.h \
insn-peep.c: s-peep ; @true
s-peep : $(md_file) genpeep$(build_exeext) $(srcdir)/move-if-change
- $(RUN_GEN) ./genpeep$(build_exeext) $(md_file) > tmp-peep.c
+ ./genpeep$(build_exeext) $(md_file) > tmp-peep.c
$(SHELL) $(srcdir)/move-if-change tmp-peep.c insn-peep.c
$(STAMP) s-peep
@@ -1815,13 +1731,13 @@ insn-attrtab.o : insn-attrtab.c $(CONFIG_H) $(RTL_H) $(REGS_H) real.h \
insn-attr.h: s-attr ; @true
s-attr : $(md_file) genattr$(build_exeext) $(srcdir)/move-if-change
- $(RUN_GEN) ./genattr$(build_exeext) $(md_file) > tmp-attr.h
+ ./genattr$(build_exeext) $(md_file) > tmp-attr.h
$(SHELL) $(srcdir)/move-if-change tmp-attr.h insn-attr.h
$(STAMP) s-attr
insn-attrtab.c: s-attrtab ; @true
s-attrtab : $(md_file) genattrtab$(build_exeext) $(srcdir)/move-if-change
- $(RUN_GEN) ./genattrtab$(build_exeext) $(md_file) > tmp-attrtab.c
+ ./genattrtab$(build_exeext) $(md_file) > tmp-attrtab.c
$(SHELL) $(srcdir)/move-if-change tmp-attrtab.c insn-attrtab.c
$(STAMP) s-attrtab
@@ -1834,7 +1750,7 @@ insn-output.o : insn-output.c $(CONFIG_H) $(RTL_H) $(GGC_H) $(REGS_H) real.h \
insn-output.c: s-output ; @true
s-output : $(md_file) genoutput$(build_exeext) $(srcdir)/move-if-change
- $(RUN_GEN) ./genoutput$(build_exeext) $(md_file) > tmp-output.c
+ ./genoutput$(build_exeext) $(md_file) > tmp-output.c
$(SHELL) $(srcdir)/move-if-change tmp-output.c insn-output.c
$(STAMP) s-output
@@ -1843,83 +1759,19 @@ genrtl.c genrtl.h : s-genrtl
@true # force gnu make to recheck modification times.
s-genrtl: gengenrtl$(build_exeext) $(srcdir)/move-if-change $(RTL_BASE_H)
- $(RUN_GEN) ./gengenrtl$(build_exeext) -h > tmp-genrtl.h
+ ./gengenrtl$(build_exeext) -h > tmp-genrtl.h
$(SHELL) $(srcdir)/move-if-change tmp-genrtl.h genrtl.h
- $(RUN_GEN) ./gengenrtl$(build_exeext) > tmp-genrtl.c
+ ./gengenrtl$(build_exeext) > tmp-genrtl.c
$(SHELL) $(srcdir)/move-if-change tmp-genrtl.c genrtl.c
$(STAMP) s-genrtl
tm-preds.h: s-preds; @true
s-preds: genpreds$(build_exeext) $(srcdir)/move-if-change
- $(RUN_GEN) ./genpreds$(build_exeext) > tmp-preds.h
+ ./genpreds$(build_exeext) > tmp-preds.h
$(SHELL) $(srcdir)/move-if-change tmp-preds.h tm-preds.h
$(STAMP) s-preds
-GTFILES = $(GCONFIG_H) $(srcdir)/location.h \
- $(HASHTAB_H) \
- $(srcdir)/bitmap.h $(srcdir)/function.h $(srcdir)/rtl.h $(srcdir)/optabs.h \
- $(srcdir)/tree.h $(srcdir)/libfuncs.h $(srcdir)/hashtable.h $(srcdir)/real.h \
- $(srcdir)/varray.h $(srcdir)/ssa.h $(srcdir)/insn-addr.h $(srcdir)/cselib.h \
- $(srcdir)/c-common.h $(srcdir)/c-tree.h \
- $(srcdir)/basic-block.h \
- $(srcdir)/alias.c $(srcdir)/bitmap.c $(srcdir)/cselib.c \
- $(srcdir)/dwarf2out.c $(srcdir)/emit-rtl.c \
- $(srcdir)/except.c $(srcdir)/explow.c $(srcdir)/expr.c \
- $(srcdir)/fold-const.c $(srcdir)/function.c \
- $(srcdir)/gcse.c $(srcdir)/integrate.c $(srcdir)/lists.c $(srcdir)/optabs.c \
- $(srcdir)/profile.c $(srcdir)/ra-build.c $(srcdir)/regclass.c \
- $(srcdir)/reg-stack.c \
- $(srcdir)/sdbout.c $(srcdir)/stmt.c $(srcdir)/stor-layout.c \
- $(srcdir)/tree.c $(srcdir)/varasm.c \
- $(out_file) \
- @all_gtfiles@
-
-GTFILES_FILES_LANGS = @all_gtfiles_files_langs@
-GTFILES_FILES_FILES = @all_gtfiles_files_files@
-GTFILES_LANG_DIR_NAMES = @subdirs@
-GTFILES_SRCDIR = @srcdir@
-
-gtype-desc.h gtype-desc.c gt-except.h gt-function.h : s-gtype; @true
-gt-integrate.h gt-stmt.h gt-tree.h gt-varasm.h gt-emit-rtl.h : s-gtype; @true
-gt-explow.h gt-stor-layout.h gt-regclass.h gt-lists.h : s-gtype; @true
-gt-alias.h gt-cselib.h gt-fold-const.h gt-gcse.h gt-profile.h : s-gtype; @true
-gt-expr.h gt-sdbout.h gt-optabs.h gt-bitmap.h gt-dwarf2out.h : s-gtype ; @true
-gt-ra-build.h gt-reg-stack.h : s-gtype ; @true
-gt-c-common.h gt-c-decl.h gt-c-parse.h gt-c-pragma.h : s-gtype; @true
-gt-c-objc-common.h gtype-c.h gt-location.h : s-gtype ; @true
-
-gtyp-gen.h: Makefile
- echo "/* This file is machine generated. Do not edit. */" > tmp-gtyp.h
- echo "static const char *srcdir = " >> tmp-gtyp.h
- echo "\"$(GTFILES_SRCDIR)\"" >> tmp-gtyp.h
- echo ";" >> tmp-gtyp.h
- echo "static const char *lang_files[] = {" >> tmp-gtyp.h
- ll="$(GTFILES_FILES_FILES)"; \
- for f in $$ll; do \
- echo "\"$$f\", "; done >> tmp-gtyp.h
- echo "NULL};" >> tmp-gtyp.h
- echo "static const char *langs_for_lang_files[] = {" >> tmp-gtyp.h
- ff="$(GTFILES_FILES_LANGS)"; \
- for f in $$ff; do \
- echo "\"$$f\", " ; done >> tmp-gtyp.h
- echo "NULL};" >> tmp-gtyp.h
- echo "static const char *all_files[] = {" >> tmp-gtyp.h
- gf="$(GTFILES)"; \
- for f in $$gf; do \
- echo "\"$$f\", "; done >> tmp-gtyp.h
- echo " NULL};" >> tmp-gtyp.h
- echo "static const char *lang_dir_names[] = { \"c\", " >> tmp-gtyp.h
- gf="$(GTFILES_LANG_DIR_NAMES)"; \
- for l in $$gf; do \
- echo "\"$$l\", "; done >> tmp-gtyp.h
- echo "NULL};" >> tmp-gtyp.h
- $(SHELL) $(srcdir)/move-if-change tmp-gtyp.h gtyp-gen.h
-
-s-gtype: gengtype$(build_exeext) $(GTFILES)
- $(RUN_GEN) ./gengtype
- $(STAMP) s-gtype
-
#
# Compile the programs that generate insn-* from the machine description.
# They are compiled with $(HOST_CC), and associated libraries,
@@ -1938,123 +1790,93 @@ read-rtl.o: read-rtl.c $(HCONFIG_H) $(SYSTEM_H) $(RTL_H) \
gensupport.o: gensupport.c $(RTL_H) $(OBSTACK_H) $(SYSTEM_H) errors.h gensupport.h
$(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/gensupport.c $(OUTPUT_OPTION)
-genconfig$(build_exeext) : genconfig.o $(HOST_RTL) $(HOST_SUPPORT) \
- $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBDEPS)
+genconfig$(build_exeext) : genconfig.o $(HOST_RTL) $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBDEPS)
$(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ \
- genconfig.o $(HOST_RTL) $(HOST_SUPPORT) $(HOST_PRINT) \
- $(HOST_ERRORS) $(HOST_LIBS)
+ genconfig.o $(HOST_RTL) $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBS)
genconfig.o : genconfig.c $(RTL_H) $(HCONFIG_H) \
$(SYSTEM_H) errors.h gensupport.h
$(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genconfig.c $(OUTPUT_OPTION)
-genflags$(build_exeext) : genflags.o $(HOST_RTL) $(HOST_SUPPORT) \
- $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBDEPS)
+genflags$(build_exeext) : genflags.o $(HOST_RTL) $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBDEPS)
$(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ \
- genflags.o $(HOST_RTL) $(HOST_SUPPORT) $(HOST_PRINT) \
- $(HOST_ERRORS) $(HOST_LIBS)
+ genflags.o $(HOST_RTL) $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBS)
genflags.o : genflags.c $(RTL_H) $(OBSTACK_H) $(HCONFIG_H) \
$(SYSTEM_H) errors.h gensupport.h
$(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genflags.c $(OUTPUT_OPTION)
-gencodes$(build_exeext) : gencodes.o $(HOST_RTL) $(HOST_SUPPORT) \
- $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBDEPS)
+gencodes$(build_exeext) : gencodes.o $(HOST_RTL) $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBDEPS)
$(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ \
- gencodes.o $(HOST_RTL) $(HOST_SUPPORT) $(HOST_PRINT) \
- $(HOST_ERRORS) $(HOST_LIBS)
+ gencodes.o $(HOST_RTL) $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBS)
gencodes.o : gencodes.c $(RTL_H) $(HCONFIG_H) \
$(SYSTEM_H) errors.h gensupport.h
$(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/gencodes.c $(OUTPUT_OPTION)
-genconstants$(build_exeext) : genconstants.o $(HOST_RTL) $(HOST_EARLY_SUPPORT) \
- $(HOST_ERRORS) $(HOST_LIBDEPS)
+genconstants$(build_exeext) : genconstants.o $(HOST_RTL) $(HOST_ERRORS) $(HOST_LIBDEPS)
$(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ \
- genconstants.o $(HOST_EARLY_SUPPORT) $(HOST_RTL) \
- $(HOST_ERRORS) $(HOST_LIBS)
+ genconstants.o $(HOST_RTL) $(HOST_ERRORS) $(HOST_LIBS)
genconstants.o : genconstants.c $(RTL_H) $(HCONFIG_H) $(SYSTEM_H) errors.h
$(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genconstants.c $(OUTPUT_OPTION)
-genemit$(build_exeext) : genemit.o $(HOST_RTL) $(HOST_SUPPORT) \
- $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBDEPS)
+genemit$(build_exeext) : genemit.o $(HOST_RTL) $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBDEPS)
$(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ \
- genemit.o $(HOST_RTL) $(HOST_SUPPORT) $(HOST_PRINT) \
- $(HOST_ERRORS) $(HOST_LIBS)
+ genemit.o $(HOST_RTL) $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBS)
genemit.o : genemit.c $(RTL_H) $(HCONFIG_H) $(SYSTEM_H) errors.h gensupport.h
$(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genemit.c $(OUTPUT_OPTION)
-genopinit$(build_exeext) : genopinit.o $(HOST_RTL) $(HOST_SUPPORT) \
- $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBDEPS)
+genopinit$(build_exeext) : genopinit.o $(HOST_RTL) $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBDEPS)
$(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ \
- genopinit.o $(HOST_RTL) $(HOST_SUPPORT) $(HOST_PRINT) \
- $(HOST_ERRORS) $(HOST_LIBS)
+ genopinit.o $(HOST_RTL) $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBS)
genopinit.o : genopinit.c $(RTL_H) $(HCONFIG_H) \
$(SYSTEM_H) errors.h gensupport.h
$(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genopinit.c $(OUTPUT_OPTION)
-genrecog$(build_exeext) : genrecog.o $(HOST_RTL) $(HOST_SUPPORT) \
- $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBDEPS)
+genrecog$(build_exeext) : genrecog.o $(HOST_RTL) $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBDEPS)
$(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ \
- genrecog.o $(HOST_RTL) $(HOST_SUPPORT) $(HOST_PRINT) \
- $(HOST_ERRORS) $(HOST_LIBS)
+ genrecog.o $(HOST_RTL) $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBS)
genrecog.o : genrecog.c $(RTL_H) $(HCONFIG_H) \
$(SYSTEM_H) errors.h gensupport.h
$(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genrecog.c $(OUTPUT_OPTION)
-genextract$(build_exeext) : genextract.o $(HOST_RTL) $(HOST_SUPPORT) \
- $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBDEPS)
+genextract$(build_exeext) : genextract.o $(HOST_RTL) $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBDEPS)
$(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ \
- genextract.o $(HOST_RTL) $(HOST_SUPPORT) $(HOST_PRINT) \
- $(HOST_ERRORS) $(HOST_LIBS)
+ genextract.o $(HOST_RTL) $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBS)
genextract.o : genextract.c $(RTL_H) $(HCONFIG_H) \
$(SYSTEM_H) insn-config.h errors.h gensupport.h
$(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genextract.c $(OUTPUT_OPTION)
-genpeep$(build_exeext) : genpeep.o $(HOST_RTL) $(HOST_SUPPORT) \
- $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBDEPS)
+genpeep$(build_exeext) : genpeep.o $(HOST_RTL) $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBDEPS)
$(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ \
- genpeep.o $(HOST_RTL) $(HOST_SUPPORT) $(HOST_PRINT) \
- $(HOST_ERRORS) $(HOST_LIBS)
+ genpeep.o $(HOST_RTL) $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBS)
genpeep.o : genpeep.c $(RTL_H) $(HCONFIG_H) $(SYSTEM_H) errors.h gensupport.h
$(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genpeep.c $(OUTPUT_OPTION)
-genattr$(build_exeext) : genattr.o $(HOST_RTL) $(HOST_SUPPORT) \
- $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBDEPS)
+genattr$(build_exeext) : genattr.o $(HOST_RTL) $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBDEPS)
$(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ \
- genattr.o $(HOST_RTL) $(HOST_SUPPORT) $(HOST_PRINT) \
- $(HOST_ERRORS) $(HOST_LIBS)
+ genattr.o $(HOST_RTL) $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBS)
genattr.o : genattr.c $(RTL_H) $(HCONFIG_H) $(SYSTEM_H) errors.h gensupport.h
$(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genattr.c $(OUTPUT_OPTION)
-genattrtab$(build_exeext) : genattrtab.o genautomata.o \
- $(HOST_RTL) $(HOST_SUPPORT) $(HOST_PRINT) $(HOST_ERRORS) $(HOST_VARRAY) \
- $(HOST_LIBDEPS)
+genattrtab$(build_exeext) : genattrtab.o $(HOST_RTL) $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBDEPS)
$(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ \
- genattrtab.o genautomata.o \
- $(HOST_RTL) $(HOST_SUPPORT) $(HOST_PRINT) $(HOST_ERRORS) \
- $(HOST_VARRAY) $(HOST_LIBS) -lm
+ genattrtab.o $(HOST_RTL) $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBS)
genattrtab.o : genattrtab.c $(RTL_H) $(OBSTACK_H) $(HCONFIG_H) \
- $(SYSTEM_H) errors.h $(GGC_H) gensupport.h genattrtab.h
+ $(SYSTEM_H) errors.h $(GGC_H) gensupport.h
$(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genattrtab.c $(OUTPUT_OPTION)
-genautomata.o : genautomata.c $(RTL_H) $(OBSTACK_H) $(HCONFIG_H) \
- $(SYSTEM_H) errors.h varray.h genattrtab.h $(HASHTAB_H)
- $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genautomata.c $(OUTPUT_OPTION)
-
-genoutput$(build_exeext) : genoutput.o $(HOST_RTL) $(HOST_SUPPORT) \
- $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBDEPS)
+genoutput$(build_exeext) : genoutput.o $(HOST_RTL) $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBDEPS)
$(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ \
- genoutput.o $(HOST_RTL) $(HOST_SUPPORT) $(HOST_PRINT) \
- $(HOST_ERRORS) $(HOST_LIBS)
+ genoutput.o $(HOST_RTL) $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBS)
genoutput.o : genoutput.c $(RTL_H) $(HCONFIG_H) \
$(SYSTEM_H) errors.h gensupport.h
@@ -2074,92 +1896,38 @@ genpreds$(build_exeext) : genpreds.o $(HOST_LIBDEPS)
genpreds.o : genpreds.c $(RTL_BASE_H) $(HCONFIG_H) $(SYSTEM_H)
$(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genpreds.c $(OUTPUT_OPTION)
-gengtype$(build_exeext) : gengtype.o gengtype-lex.o gengtype-yacc.o \
- $(HOST_LIBDEPS)
- $(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ \
- gengtype.o gengtype-lex.o gengtype-yacc.o $(HOST_LIBS)
-
-gengtype.o : gengtype.c gengtype.h $(HCONFIG_H) $(SYSTEM_H) real.h rtl.def \
- gtyp-gen.h
- $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) \
- $(srcdir)/gengtype.c $(OUTPUT_OPTION)
-
-gengtype-lex.o : $(srcdir)/gengtype-lex.c gengtype.h $(srcdir)/gengtype-yacc.c \
- $(HCONFIG_H) $(SYSTEM_H)
- $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) \
- $(srcdir)/gengtype-lex.c $(OUTPUT_OPTION)
-
-gengtype-yacc.o : $(srcdir)/gengtype-yacc.c gengtype.h $(HCONFIG_H) $(SYSTEM_H)
- $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) \
- $(srcdir)/gengtype-yacc.c $(OUTPUT_OPTION)
-
-# The sed command works around a bug in flex-2.5.4.
-$(srcdir)/gengtype-lex.c : $(srcdir)/gengtype-lex.l
- cd $(srcdir) && \
- $(FLEX) $(FLEXFLAGS) -t -o$@ gengtype-lex.l | \
- sed 's/^\(char msg\[\];\)/yyconst \1/' > g-$$$$ ; \
- if test $$? -eq 0 ; then \
- mv -f g-$$$$ gengtype-lex.c ; \
- else \
- rm -f g-$$$$.* ; \
- false ; \
- fi
-
-$(srcdir)/gengtype-yacc.c: $(srcdir)/gengtype-yacc.y
- (cd $(srcdir) && \
- $(BISON) $(BISONFLAGS) -d -o gengtype-yacc.c gengtype-yacc.y || \
- ( rm -f $@ && false ) )
-
-genconditions$(build_exeext) : genconditions.o $(HOST_EARLY_SUPPORT) \
- $(HOST_RTL) $(HOST_ERRORS) $(HOST_LIBDEPS)
- $(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ \
- genconditions.o $(HOST_EARLY_SUPPORT) $(HOST_RTL) \
- $(HOST_ERRORS) $(HOST_LIBS)
-
-genconditions.o : genconditions.c $(RTL_H) $(HCONFIG_H) $(SYSTEM_H) errors.h
- $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) \
- $(srcdir)/genconditions.c $(OUTPUT_OPTION)
-
#
# Compile the libraries to be used by gen*.
# If we are not cross-building, gen* use the same .o's that cc1 will use,
-# and BUILD_PREFIX_1 is `loser-', just to ensure these rules don't conflict
+# and HOST_PREFIX_1 is `loser-', just to ensure these rules don't conflict
# with the rules for rtl.o, etc.
-$(BUILD_PREFIX_1)rtl.o: $(srcdir)/rtl.c $(HCONFIG_H) $(SYSTEM_H) $(RTL_H) \
+$(HOST_PREFIX_1)rtl.o: $(srcdir)/rtl.c $(HCONFIG_H) $(SYSTEM_H) $(RTL_H) \
real.h $(GGC_H) errors.h
- rm -f $(BUILD_PREFIX)rtl.c
- sed -e 's/config[.]h/hconfig.h/' $(srcdir)/rtl.c > $(BUILD_PREFIX)rtl.c
- $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(BUILD_PREFIX)rtl.c $(OUTPUT_OPTION)
+ rm -f $(HOST_PREFIX)rtl.c
+ sed -e 's/config[.]h/hconfig.h/' $(srcdir)/rtl.c > $(HOST_PREFIX)rtl.c
+ $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(HOST_PREFIX)rtl.c $(OUTPUT_OPTION)
-print-rtl1.o: $(srcdir)/print-rtl.c $(HCONFIG_H) \
+$(HOST_PREFIX_1)print-rtl.o: $(srcdir)/print-rtl.c $(HCONFIG_H) \
$(RTL_H) $(TREE_H) hard-reg-set.h $(BASIC_BLOCK_H)
- rm -f print-rtl1.c
- sed -e 's/config[.]h/hconfig.h/' $(srcdir)/print-rtl.c > print-rtl1.c
- $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) print-rtl1.c $(OUTPUT_OPTION)
-
-$(BUILD_PREFIX_1)bitmap.o: $(srcdir)/bitmap.c $(HCONFIG_H) $(SYSTEM_H) \
- $(RTL_H) flags.h $(BASIC_BLOCK_H) $(REGS_H) $(GGC_H)
- rm -f $(BUILD_PREFIX)bitmap.c
- sed -e 's/config[.]h/hconfig.h/' $(srcdir)/bitmap.c > $(BUILD_PREFIX)bitmap.c
- $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(BUILD_PREFIX)bitmap.c $(OUTPUT_OPTION)
-
-$(BUILD_PREFIX_1)errors.o: errors.c $(HCONFIG_H) $(SYSTEM_H) errors.h
- rm -f $(BUILD_PREFIX)errors.c
- sed -e 's/config[.]h/hconfig.h/' $(srcdir)/errors.c > $(BUILD_PREFIX)errors.c
- $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(BUILD_PREFIX)errors.c $(OUTPUT_OPTION)
-
-$(BUILD_PREFIX_1)varray.o: varray.c $(HCONFIG_H) $(SYSTEM_H) varray.h \
- $(RTL_H) $(GGC_H) $(TREE_H) bitmap.h errors.h
- rm -f $(BUILD_PREFIX)varray.c
- sed -e 's/config[.]h/hconfig.h/' $(srcdir)/varray.c > \
- $(BUILD_PREFIX)varray.c
- $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) \
- $(BUILD_PREFIX)varray.c $(OUTPUT_OPTION)
-
-$(BUILD_PREFIX_1)ggc-none.o: ggc-none.c $(HCONFIG_H) $(SYSTEM_H) $(GGC_H)
- rm -f $(BUILD_PREFIX)ggc-none.c
- sed -e 's/config[.]h/hconfig.h/' $(srcdir)/ggc-none.c > $(BUILD_PREFIX)ggc-none.c
- $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(BUILD_PREFIX)ggc-none.c $(OUTPUT_OPTION)
+ rm -f $(HOST_PREFIX)print-rtl.c
+ sed -e 's/config[.]h/hconfig.h/' $(srcdir)/print-rtl.c > $(HOST_PREFIX)print-rtl.c
+ $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(HOST_PREFIX)print-rtl.c $(OUTPUT_OPTION)
+
+$(HOST_PREFIX_1)bitmap.o: $(srcdir)/bitmap.c $(HCONFIG_H) $(SYSTEM_H) $(RTL_H) \
+ flags.h $(BASIC_BLOCK_H) $(REGS_H)
+ rm -f $(HOST_PREFIX)bitmap.c
+ sed -e 's/config[.]h/hconfig.h/' $(srcdir)/bitmap.c > $(HOST_PREFIX)bitmap.c
+ $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(HOST_PREFIX)bitmap.c $(OUTPUT_OPTION)
+
+$(HOST_PREFIX_1)errors.o: errors.c $(HCONFIG_H) $(SYSTEM_H) errors.h
+ rm -f $(HOST_PREFIX)errors.c
+ sed -e 's/config[.]h/hconfig.h/' $(srcdir)/errors.c > $(HOST_PREFIX)errors.c
+ $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(HOST_PREFIX)errors.c $(OUTPUT_OPTION)
+
+$(HOST_PREFIX_1)ggc-none.o: ggc-none.c $(HCONFIG_H) $(SYSTEM_H) $(GCC_H)
+ rm -f $(HOST_PREFIX)ggc-none.c
+ sed -e 's/config[.]h/hconfig.h/' $(srcdir)/ggc-none.c > $(HOST_PREFIX)ggc-none.c
+ $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(HOST_PREFIX)ggc-none.c $(OUTPUT_OPTION)
#
# Remake internationalization support.
@@ -2185,7 +1953,7 @@ intl.all intl.install: config.h insn-flags.h insn-constants.h
# Make-lang.in should add dependencies of po-generated on any generated
# files which need to be scanned by gettext (usually Yacc-generated parsers).
-po-generated: c-parse.c
+po-generated: c-parse.c tradcif.c
#
# Remake cpp and protoize.
@@ -2199,9 +1967,9 @@ PREPROCESSOR_DEFINES = \
-DCROSS_INCLUDE_DIR=\"$(gcc_tooldir)/sys-include\" \
-DTOOL_INCLUDE_DIR=\"$(gcc_tooldir)/include\"
-LIBCPP_OBJS = cpplib.o cpplex.o cppmacro.o cppexp.o cppfiles.o cpptrad.o \
- cpphash.o cpperror.o cppinit.o cppdefault.o cppmain.o \
- hashtable.o line-map.o mkdeps.o prefix.o mbchar.o
+LIBCPP_OBJS = cpplib.o cpplex.o cppmacro.o cppexp.o cppfiles.o \
+ cpphash.o cpperror.o cppinit.o cppdefault.o \
+ hashtable.o line-map.o mkdeps.o prefix.o version.o mbchar.o
LIBCPP_DEPS = $(CPPLIB_H) cpphash.h line-map.h hashtable.h intl.h \
$(OBSTACK_H) $(SYSTEM_H)
@@ -2213,7 +1981,11 @@ libcpp.a: $(LIBCPP_OBJS)
$(AR) $(AR_FLAGS) libcpp.a $(LIBCPP_OBJS)
-$(RANLIB) libcpp.a
-cppmain.o: cppmain.c $(CONFIG_H) $(LIBCPP_DEPS)
+cpp0$(exeext): cppmain.o intl.o libcpp.a $(LIBDEPS)
+ $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o cpp0$(exeext) cppmain.o \
+ intl.o libcpp.a $(LIBS)
+
+cppmain.o: cppmain.c $(CONFIG_H) $(CPPLIB_H) intl.h $(SYSTEM_H)
cpperror.o: cpperror.c $(CONFIG_H) $(LIBCPP_DEPS)
cppexp.o: cppexp.c $(CONFIG_H) $(LIBCPP_DEPS)
@@ -2221,10 +1993,9 @@ cpplex.o: cpplex.c $(CONFIG_H) $(LIBCPP_DEPS) mbchar.h
cppmacro.o: cppmacro.c $(CONFIG_H) $(LIBCPP_DEPS)
cpplib.o: cpplib.c $(CONFIG_H) $(LIBCPP_DEPS)
cpphash.o: cpphash.c $(CONFIG_H) $(LIBCPP_DEPS)
-cpptrad.o: cpptrad.c $(CONFIG_H) $(LIBCPP_DEPS)
cppfiles.o: cppfiles.c $(CONFIG_H) $(LIBCPP_DEPS) $(SPLAY_TREE_H) mkdeps.h
cppinit.o: cppinit.c $(CONFIG_H) $(LIBCPP_DEPS) cppdefault.h \
- mkdeps.h prefix.h
+ mkdeps.h prefix.h version.h except.h
cppdefault.o: cppdefault.c $(CONFIG_H) $(SYSTEM_H) cppdefault.h Makefile
$(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
@@ -2233,6 +2004,20 @@ cppdefault.o: cppdefault.c $(CONFIG_H) $(SYSTEM_H) cppdefault.h Makefile
mkdeps.o: mkdeps.c $(CONFIG_H) $(SYSTEM_H) mkdeps.h
+# The traditional mode preprocessor, a separate program for ease of
+# maintenance. Some code is shared with the ISO-C cpp.
+tradcpp0$(exeext): tradcpp.o tradcif.o cppdefault.o version.o intl.o \
+ mkdeps.o $(LIBDEPS)
+ $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o tradcpp0$(exeext) \
+ tradcpp.o tradcif.o mkdeps.o cppdefault.o version.o intl.o $(LIBS)
+
+tradcpp.o: tradcpp.c $(CONFIG_H) $(SYSTEM_H) version.h cppdefault.h tradcpp.h
+tradcif.o: $(srcdir)/tradcif.c $(CONFIG_H) $(SYSTEM_H) tradcpp.h
+
+$(srcdir)/tradcif.c: $(srcdir)/tradcif.y
+ (cd $(srcdir) && $(BISON) $(BISONFLAGS) -o tr$$$$.c tradcif.y && \
+ mv -f tr$$$$.c tradcif.c)
+
# Note for the stamp targets, we run the program `true' instead of
# having an empty command (nothing following the semicolon).
@@ -2314,7 +2099,8 @@ gcov$(exeext): $(GCOV_OBJS) $(LIBDEPS)
# s-* so that mostlyclean does not force the include directory to
# be rebuilt.
-# Build the include directory
+# Build the include directory including float.h (which no longer depends upon
+# enquire).
stmp-int-hdrs: $(STMP_FIXINC) $(USER_H) xlimits.h
# Copy in the headers provided with gcc.
# The sed command gets just the last file name component;
@@ -2334,6 +2120,11 @@ stmp-int-hdrs: $(STMP_FIXINC) $(USER_H) xlimits.h
rm -f include/limits.h
cp xlimits.h include/limits.h
chmod a+r include/limits.h
+ rm -f include/float.h
+ if [ x$(FLOAT_H) != xMakefile.in ]; then \
+ cp $(srcdir)/config/$(FLOAT_H) include/float.h && \
+ chmod a+r include/float.h; \
+ else :; fi
# Install the README
rm -f include/README
cp $(srcdir)/README-fixinc include/README
@@ -2355,7 +2146,7 @@ fixinc.sh: $(FIXINCSRCDIR)/mkfixinc.sh $(FIXINCSRCDIR)/fixincl.c \
$(FIXINCSRCDIR)/procopen.c $(FIXINCSRCDIR)/gnu-regex.c \
$(FIXINCSRCDIR)/server.c $(FIXINCSRCDIR)/gnu-regex.h \
$(FIXINCSRCDIR)/server.h $(FIXINCSRCDIR)/inclhack.def specs.ready
- (MAKE="$(MAKE)"; srcdir=`cd $(srcdir)/fixinc && ${PWD_COMMAND}` ; \
+ (MAKE="$(MAKE)"; srcdir=`cd $(srcdir)/fixinc && pwd` ; \
CC="$(HOST_CC)"; CFLAGS="$(HOST_CFLAGS)"; LDFLAGS="$(HOST_LDFLAGS)"; \
WARN_CFLAGS="$(WARN_CFLAGS)"; \
export MAKE srcdir CC CFLAGS LDFLAGS WARN_CFLAGS; cd ./fixinc && \
@@ -2365,10 +2156,10 @@ fixinc.sh: $(FIXINCSRCDIR)/mkfixinc.sh $(FIXINCSRCDIR)/fixincl.c \
stmp-fixinc: fixinc.sh gsyslimits.h
rm -rf include; mkdir include
-chmod a+rx include
- (TARGET_MACHINE='$(target)'; srcdir=`cd $(srcdir); ${PWD_COMMAND}`; \
+ (TARGET_MACHINE='$(target)'; srcdir=`cd $(srcdir); pwd`; \
SHELL='$(SHELL)' ;\
export TARGET_MACHINE srcdir SHELL ; \
- $(SHELL) ./fixinc.sh `${PWD_COMMAND}`/include $(SYSTEM_HEADER_DIR) $(OTHER_FIXINCLUDES_DIRS); \
+ $(SHELL) ./fixinc.sh `pwd`/include $(SYSTEM_HEADER_DIR) $(OTHER_FIXINCLUDES_DIRS); \
rm -f include/syslimits.h; \
if [ -f include/limits.h ]; then \
mv include/limits.h include/syslimits.h; \
@@ -2425,7 +2216,7 @@ xsys-protos.h: $(GCC_PASSES) $(srcdir)/sys-protos.h deduced.h gen-protos$(build_
mv tmp-fixtmp.c fixtmp.c
$(GCC_FOR_TARGET) fixtmp.c -w -U__SIZE_TYPE__ -U__PTRDIFF_TYPE__ -U__WCHAR_TYPE__ -E \
| sed -e 's/ / /g' -e 's/ *(/ (/g' -e 's/ [ ]*/ /g' -e 's/( )/()/' \
- | $(RUN_GEN) ./gen-protos >xsys-protos.hT
+ | ./gen-protos >xsys-protos.hT
mv xsys-protos.hT xsys-protos.h
rm -rf fixtmp.c
@@ -2477,22 +2268,24 @@ stmp-fixproto: fixhdr.ready fixproto stmp-int-hdrs
docdir = $(srcdir)/doc
doc: $(BUILD_INFO) $(GENERATED_MANPAGES) gccbug
-info: $(docdir)/cpp.info $(docdir)/gcc.info $(docdir)/gccint.info $(docdir)/gccinstall.info lang.info $(docdir)/cppinternals.info
+info: $(docdir)/cpp.info $(docdir)/gcc.info $(docdir)/gccint.info lang.info $(docdir)/cppinternals.info
-TEXI_CPP_FILES = $(docdir)/cpp.texi $(docdir)/include/fdl.texi \
+$(docdir)/cpp.info: $(docdir)/cpp.texi $(docdir)/include/fdl.texi \
$(docdir)/cppenv.texi $(docdir)/cppopts.texi
+ cd $(srcdir) && $(MAKEINFO) $(MAKEINFOFLAGS) -I doc -I doc/include -o doc/cpp.info doc/cpp.texi
-TEXI_GCC_FILES = $(docdir)/gcc.texi $(docdir)/include/gcc-common.texi \
+$(docdir)/gcc.info: $(docdir)/gcc.texi $(docdir)/include/gcc-common.texi \
$(docdir)/frontends.texi $(docdir)/standards.texi \
$(docdir)/invoke.texi $(docdir)/extend.texi $(docdir)/md.texi \
$(docdir)/objc.texi $(docdir)/gcov.texi $(docdir)/trouble.texi \
$(docdir)/bugreport.texi $(docdir)/service.texi \
- $(docdir)/contribute.texi $(docdir)/compat.texi \
+ $(docdir)/contribute.texi $(docdir)/vms.texi $(docdir)/compat.texi \
$(docdir)/include/funding.texi $(docdir)/gnu.texi \
$(docdir)/include/gpl.texi $(docdir)/include/fdl.texi \
$(docdir)/contrib.texi $(docdir)/cppenv.texi $(docdir)/cppopts.texi
+ cd $(srcdir) && $(MAKEINFO) $(MAKEINFOFLAGS) -I doc -I doc/include -o doc/gcc.info doc/gcc.texi
-TEXI_GCCINT_FILES = $(docdir)/gccint.texi \
+$(docdir)/gccint.info: $(docdir)/gccint.texi \
$(docdir)/include/gcc-common.texi $(docdir)/contribute.texi \
$(docdir)/makefile.texi $(docdir)/configterms.texi \
$(docdir)/portability.texi $(docdir)/interface.texi \
@@ -2503,47 +2296,46 @@ TEXI_GCCINT_FILES = $(docdir)/gccint.texi \
$(docdir)/headerdirs.texi $(docdir)/include/funding.texi \
$(docdir)/gnu.texi $(docdir)/include/gpl.texi \
$(docdir)/include/fdl.texi $(docdir)/contrib.texi \
- $(docdir)/languages.texi $(docdir)/sourcebuild.texi \
- $(docdir)/gty.texi
-
-TEXI_GCCINSTALL_FILES = $(docdir)/install.texi $(docdir)/install-old.texi \
- $(docdir)/include/fdl.texi
-
-TEXI_CPPINT_FILES = $(docdir)/cppinternals.texi
-
-$(docdir)/cpp.info: $(TEXI_CPP_FILES)
- cd $(srcdir) && $(MAKEINFO) $(MAKEINFOFLAGS) -I doc -I doc/include -o doc/cpp.info doc/cpp.texi
-
-$(docdir)/gcc.info: $(TEXI_GCC_FILES)
- cd $(srcdir) && $(MAKEINFO) $(MAKEINFOFLAGS) -I doc -I doc/include -o doc/gcc.info doc/gcc.texi
-
-$(docdir)/gccint.info: $(TEXI_GCCINT_FILES)
+ $(docdir)/languages.texi $(docdir)/sourcebuild.texi
cd $(srcdir) && $(MAKEINFO) $(MAKEINFOFLAGS) -I doc -I doc/include -o doc/gccint.info doc/gccint.texi
-$(docdir)/gccinstall.info: $(TEXI_GCCINSTALL_FILES)
- cd $(srcdir) && $(MAKEINFO) $(MAKEINFOFLAGS) -I doc -I doc/include -o doc/gccinstall.info doc/install.texi
-
-$(docdir)/cppinternals.info: $(TEXI_CPPINT_FILES)
+$(docdir)/cppinternals.info: $(docdir)/cppinternals.texi
cd $(srcdir) && $(MAKEINFO) $(MAKEINFOFLAGS) -I doc -I doc/include -o doc/cppinternals.info \
doc/cppinternals.texi
-dvi: gcc.dvi gccint.dvi gccinstall.dvi cpp.dvi lang.dvi cppinternals.dvi
+dvi: gcc.dvi gccint.dvi cpp.dvi lang.dvi cppinternals.dvi
# This works with GNU Make's default rule.
-cpp.dvi: $(TEXI_CPP_FILES)
+cpp.dvi: $(docdir)/cpp.texi $(docdir)/include/fdl.texi \
+ $(docdir)/cppenv.texi $(docdir)/cppopts.texi
$(TEXI2DVI) -I $(docdir) -I $(docdir)/include $(docdir)/cpp.texi
-gcc.dvi: $(TEXI_GCC_FILES)
+gcc.dvi: $(docdir)/gcc.texi $(docdir)/include/gcc-common.texi \
+ $(docdir)/frontends.texi $(docdir)/standards.texi \
+ $(docdir)/invoke.texi $(docdir)/extend.texi $(docdir)/md.texi \
+ $(docdir)/objc.texi $(docdir)/gcov.texi $(docdir)/trouble.texi \
+ $(docdir)/bugreport.texi $(docdir)/service.texi \
+ $(docdir)/contribute.texi $(docdir)/vms.texi \
+ $(docdir)/include/funding.texi $(docdir)/gnu.texi \
+ $(docdir)/include/gpl.texi $(docdir)/include/fdl.texi \
+ $(docdir)/contrib.texi $(docdir)/cppenv.texi $(docdir)/cppopts.texi
$(TEXI2DVI) -I $(docdir) -I $(docdir)/include $(docdir)/gcc.texi
-gccint.dvi: $(TEXI_GCCINT_FILES)
+gccint.dvi: $(docdir)/gccint.texi \
+ $(docdir)/include/gcc-common.texi $(docdir)/contribute.texi \
+ $(docdir)/makefile.texi $(docdir)/configterms.texi \
+ $(docdir)/portability.texi $(docdir)/interface.texi \
+ $(docdir)/passes.texi $(docdir)/c-tree.texi \
+ $(docdir)/rtl.texi $(docdir)/md.texi $(docdir)/tm.texi \
+ $(docdir)/hostconfig.texi $(docdir)/fragments.texi \
+ $(docdir)/configfiles.texi $(docdir)/collect2.texi \
+ $(docdir)/headerdirs.texi $(docdir)/include/funding.texi \
+ $(docdir)/gnu.texi $(docdir)/include/gpl.texi \
+ $(docdir)/include/fdl.texi $(docdir)/contrib.texi \
+ $(docdir)/languages.texi $(docdir)/sourcebuild.texi
$(TEXI2DVI) -I $(docdir) -I $(docdir)/include $(docdir)/gccint.texi
-gccinstall.dvi: $(TEXI_GCCINSTALL_FILES)
- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- $(TEXI2DVI) -I $$s/doc -I $$s/doc/include -o $@ $$s/doc/install.texi
-
-cppinternals.dvi: $(TEXI_CPPINT_FILES)
+cppinternals.dvi: $(docdir)/cppinternals.texi
$(TEXI2DVI) -I $(docdir) -I $(docdir)/include $(docdir)/cppinternals.texi
generated-manpages: $(docdir)/gcov.1 $(docdir)/cpp.1 $(docdir)/gcc.1 \
@@ -2618,24 +2410,22 @@ $(docdir)/fsf-funding.7: $(docdir)/include/funding.texi
INTL_MOSTLYCLEAN = intl.mostlyclean
mostlyclean: $(INTL_MOSTLYCLEAN) lang.mostlyclean
-rm -f $(STAGESTUFF)
- -rm -f *$(coverageexts)
-rm -rf libgcc
# Delete the temporary source copies for cross compilation.
- -rm -f $(BUILD_PREFIX_1)rtl.c $(BUILD_PREFIX_1)print-rtl.c
- -rm -f $(BUILD_PREFIX_1)bitmap.c $(BUILD_PREFIX_1)errors.c
- -rm -f $(BUILD_PREFIX_1)ggc-none.c
+ -rm -f $(HOST_PREFIX_1)rtl.c $(HOST_PREFIX_1)print-rtl.c
+ -rm -f $(HOST_PREFIX_1)bitmap.c $(HOST_PREFIX_1)errors.c
+ -rm -f $(HOST_PREFIX_1)ggc-none.c
# Delete the temp files made in the course of building libgcc.a.
-rm -f xlimits.h
# Delete other built files.
- -rm -f xsys-protos.hT
- -rm -f specs.h options.h gencheck.h
+ -rm -f t-float.h-cross xsys-protos.hT
# Delete the stamp and temporary files.
-rm -f s-* tmp-* stamp-* stmp-*
-rm -f */stamp-* */tmp-*
# Delete debugging dump files.
-rm -f *.[0-9][0-9].* */*.[0-9][0-9].*
# Delete some files made during installation.
- -rm -f specs SYSCALLS.c.X SYSCALLS.c
+ -rm -f specs float.h-* enquire SYSCALLS.c.X SYSCALLS.c
-rm -f collect collect2 mips-tfile mips-tdump
# Delete files generated for fixproto
-rm -rf fix-header$(build_exeext) xsys-protos.h deduced.h tmp-deduced.h \
@@ -2650,11 +2440,6 @@ mostlyclean: $(INTL_MOSTLYCLEAN) lang.mostlyclean
-rm -f gcc.vrs gcc.kys gcc.tps gcc.pgs gcc.fns
# Delete core dumps.
-rm -f core */core
-# Delete file generated for gengtype.c
- -rm -f gtyp-gen.h
-# Delete files generated by gengtype.c
- -rm -f gtype-*
- -rm -f gt-*
# Delete all files made by compilation
# that don't exist in the distribution.
@@ -2689,24 +2474,20 @@ distclean: clean $(INTL_DISTCLEAN) lang.distclean
-rm -f cstamp-h
-rm -f config.status config.run config.cache config.bak
-rm -f Make-lang Make-hooks Make-host Make-target
- -rm -f Makefile *.oaux
+ -rm -f Makefile specs.h options.h gencheck.h *.oaux
-rm -f gthr-default.h
-rm -f */stage1 */stage2 */stage3 */stage4 */include
-rm -f c-parse.output
-rm -f *.asm
+ -rm -f float.h
-rm -f site.exp site.bak testsuite/site.exp testsuite/site.bak
- -rm -f testsuite/*.log testsuite/*.sum
- -cd testsuite && rm -f x *.x *.x? *.exe *.rpo *.o *.s *.S *.c
- -cd testsuite && rm -f *.out *.gcov *.bb *.bbg
- -rm -rf ${QMTEST_DIR} stamp-qmtest
+ -rm -f testsuite/{gcc,g++}.{log,sum}
-rm -f intl/libintl.h libintl.h
-rm -f cxxmain.c
- -rm -f mklibgcc mkheaders gccbug .gdbinit configargs.h
+ -rm -f mklibgcc gccbug .gdbinit configargs.h
-rm -f gcov.pod
-rm -f fixinc/Makefile
-# Delete po/*.gmo only if we are not building in the source directory.
- -if [ ! -f po/exgettext ]; then rm -f po/*.gmo; fi
- -rmdir ada cp f java objc fixinc intl po testsuite 2>/dev/null
+ -rmdir ada cp f java objc fixinc intl po 2>/dev/null
# Delete anything likely to be found in the source directory
# that shouldn't be in the distribution.
@@ -2751,7 +2532,7 @@ maintainer-clean:
# Install the driver last so that the window when things are
# broken is small.
install: install-common $(INSTALL_HEADERS) $(INSTALL_LIBGCC) \
- install-cpp install-man install-info intl.install install-@POSUB@ \
+ $(INSTALL_CPP) install-man install-info intl.install install-@POSUB@ \
lang.install-normal install-driver
# Handle cpp installation.
@@ -2772,6 +2553,14 @@ install-cpp: cpp$(exeext)
else true; fi; \
fi
+uninstall-cpp:
+ -rm -f $(DESTDIR)$(bindir)/$(CPP_INSTALL_NAME)$(exeext)
+ -rm -f $(DESTDIR)$(bindir)/$(CPP_CROSS_NAME)$(exeext)
+ -if [ x$(cpp_install_dir) != x ]; then \
+ rm -f $(DESTDIR)$(prefix)/$(cpp_install_dir)/$(CPP_INSTALL_NAME)$(exeext); \
+ rm -f $(DESTDIR)$(prefix)/$(cpp_install_dir)/$(CPP_CROSS_NAME)$(exeext); \
+ else true; fi
+
# Create the installation directories.
# $(libdir)/gcc-lib/include isn't currently searched by cpp.
installdirs:
@@ -2829,6 +2618,10 @@ install-common: native $(EXTRA_PARTS) lang.install-common
$(INSTALL_DATA) SYSCALLS.c.X $(DESTDIR)$(libsubdir)/SYSCALLS.c.X; \
chmod a-x $(DESTDIR)$(libsubdir)/SYSCALLS.c.X; \
fi
+ -rm -f $(DESTDIR)$(libsubdir)/cpp0$(exeext)
+ $(INSTALL_PROGRAM) cpp0$(exeext) $(DESTDIR)$(libsubdir)/cpp0$(exeext)
+ -rm -f $(DESTDIR)$(libsubdir)/tradcpp0$(exeext)
+ $(INSTALL_PROGRAM) tradcpp0$(exeext) $(DESTDIR)$(libsubdir)/tradcpp0$(exeext)
# Install gcov if it was compiled.
-if [ -f gcov$(exeext) ]; \
then \
@@ -2837,16 +2630,12 @@ install-common: native $(EXTRA_PARTS) lang.install-common
fi
$(INSTALL_SCRIPT) gccbug $(DESTDIR)$(bindir)/$(GCCBUG_INSTALL_NAME)
-# Install the driver program as $(target_alias)-gcc,
-# $(target-alias)-gcc-$(version)
+# Install the driver program as $(target_alias)-gcc
# and also as either gcc (if native) or $(gcc_tooldir)/bin/gcc.
install-driver: installdirs xgcc$(exeext)
-if [ -f gcc-cross$(exeext) ] ; then \
rm -f $(DESTDIR)$(bindir)/$(GCC_CROSS_NAME)$(exeext); \
$(INSTALL_PROGRAM) gcc-cross$(exeext) $(DESTDIR)$(bindir)/$(GCC_CROSS_NAME)$(exeext); \
- rm -f $(DESTDIR)$(bindir)/$(target_alias)-gcc-$(version); \
- ( cd $(DESTDIR)$(bindir) && \
- $(LN) $(GCC_CROSS_NAME)$(exeext) $(target_alias)-gcc-$(version) ); \
if [ -d $(DESTDIR)$(gcc_tooldir)/bin/. ] ; then \
rm -f $(DESTDIR)$(gcc_tooldir)/bin/gcc$(exeext); \
$(INSTALL_PROGRAM) gcc-cross$(exeext) $(DESTDIR)$(gcc_tooldir)/bin/gcc$(exeext); \
@@ -2854,13 +2643,10 @@ install-driver: installdirs xgcc$(exeext)
else \
rm -f $(DESTDIR)$(bindir)/$(GCC_INSTALL_NAME)$(exeext); \
$(INSTALL_PROGRAM) xgcc$(exeext) $(DESTDIR)$(bindir)/$(GCC_INSTALL_NAME)$(exeext); \
- rm -f $(DESTDIR)$(bindir)/$(target_alias)-gcc-$(version); \
+ rm -f $(DESTDIR)$(bindir)/$(target_alias)-gcc-1$(exeext); \
( cd $(DESTDIR)$(bindir) && \
- $(LN) $(GCC_INSTALL_NAME)$(exeext) $(target_alias)-gcc-$(version) ); \
- rm -f $(DESTDIR)$(bindir)/$(target_alias)-gcc-tmp$(exeext); \
- ( cd $(DESTDIR)$(bindir) && \
- $(LN) $(GCC_INSTALL_NAME)$(exeext) $(target_alias)-gcc-tmp$(exeext) && \
- mv -f $(target_alias)-gcc-tmp$(exeext) $(GCC_TARGET_INSTALL_NAME)$(exeext) ); \
+ $(LN) $(GCC_INSTALL_NAME)$(exeext) $(target_alias)-gcc-1$(exeext) && \
+ mv -f $(target_alias)-gcc-1$(exeext) $(GCC_TARGET_INSTALL_NAME)$(exeext) ); \
fi
# Install the info files.
@@ -2923,7 +2709,7 @@ install-libgcc: libgcc.mk libgcc.a installdirs
r_f_t=: ; \
fi; \
$(MAKE) GCC_FOR_TARGET="$(GCC_FOR_TARGET)" \
- BUILD_PREFIX="$(BUILD_PREFIX)" BUILD_PREFIX_1="$(BUILD_PREFIX_1)" \
+ HOST_PREFIX="$(HOST_PREFIX)" HOST_PREFIX_1="$(HOST_PREFIX_1)" \
AR_FOR_TARGET="$(AR_FOR_TARGET)" \
AR_CREATE_FOR_TARGET="$(AR_CREATE_FOR_TARGET)" \
AR_FLAGS_FOR_TARGET="$(AR_FLAGS_FOR_TARGET)" \
@@ -2950,7 +2736,7 @@ install-multilib: stmp-multilib installdirs
r_f_t=: ; \
fi; \
$(MAKE) GCC_FOR_TARGET="$(GCC_FOR_TARGET)" \
- BUILD_PREFIX="$(BUILD_PREFIX)" BUILD_PREFIX_1="$(BUILD_PREFIX_1)" \
+ HOST_PREFIX="$(HOST_PREFIX)" HOST_PREFIX_1="$(HOST_PREFIX_1)" \
AR_FOR_TARGET="$(AR_FOR_TARGET)" \
AR_CREATE_FOR_TARGET="$(AR_CREATE_FOR_TARGET)" \
AR_FLAGS_FOR_TARGET="$(AR_FLAGS_FOR_TARGET)" \
@@ -2976,7 +2762,7 @@ install-headers: $(INSTALL_HEADERS_DIR)
# Don't need to use LN_S here since we really do need ln -s and no substitutes.
-files=`cd $(DESTDIR)$(libsubdir)/include; find . -type l -print 2>/dev/null`; \
if [ $$? -eq 0 ]; then \
- dir=`cd include; ${PWD_COMMAND}`; \
+ dir=`cd include; pwd`; \
for i in $$files; do \
dest=`ls -ld $(DESTDIR)$(libsubdir)/include/$$i | sed -n 's/.*-> //p'`; \
if expr "$$dest" : "$$dir.*" > /dev/null; then \
@@ -2998,7 +2784,7 @@ install-headers-tar: stmp-int-hdrs $(STMP_FIXPROTO) install-include-dir
# Unless a full pathname is provided, some shells would print the new CWD,
# found in CDPATH, corrupting the output. We could just redirect the
# output of `cd', but some shells lose on redirection within `()'s
- (cd `${PWD_COMMAND}`/include ; \
+ (cd `pwd`/include ; \
tar -cf - .; exit 0) | (cd $(DESTDIR)$(libsubdir)/include; tar xpf - )
# /bin/sh on some systems returns the status of the first tar,
# and that can lose with GNU tar which always writes a full block.
@@ -3007,50 +2793,13 @@ install-headers-tar: stmp-int-hdrs $(STMP_FIXPROTO) install-include-dir
# Install the include directory using cpio.
install-headers-cpio: stmp-int-hdrs $(STMP_FIXPROTO) install-include-dir
# See discussion about the use of `pwd` above
- cd `${PWD_COMMAND}`/include ; \
+ cd `pwd`/include ; \
find . -print | cpio -pdum $(DESTDIR)$(libsubdir)/include
# Install the include directory using cp.
install-headers-cp: stmp-int-hdrs $(STMP_FIXPROTO) install-include-dir
cp -p -r include $(DESTDIR)$(libsubdir)
-itoolsdir = $(libsubdir)/install-tools
-# Don't install the headers. Instead, install appropriate scripts
-# and supporting files for fixincludes to be run later.
-install-mkheaders: stmp-int-hdrs $(STMP_FIXPROTO) install-include-dir \
- mkheaders xlimits.h
- -rm -rf $(DESTDIR)$(itoolsdir)
- $(SHELL) $(srcdir)/mkinstalldirs $(DESTDIR)$(itoolsdir)/include
- for file in $(USER_H); do \
- realfile=`echo $$file | sed -e 's|.*/\([^/]*\)$$|\1|'`; \
- $(INSTALL_DATA) $$file \
- $(DESTDIR)$(itoolsdir)/include/$$realfile ; \
- done
- $(INSTALL_DATA) xlimits.h $(DESTDIR)$(itoolsdir)/include/limits.h
- if [ x$(STMP_FIXINC) != x ] ; then \
- $(INSTALL_DATA) $(srcdir)/README-fixinc \
- $(DESTDIR)$(itoolsdir)/include/README ; \
- $(INSTALL_PROGRAM) fixinc.sh $(DESTDIR)$(itoolsdir)/fixinc.sh ; \
- $(INSTALL_PROGRAM) fixinc/fixincl $(DESTDIR)$(itoolsdir)/fixincl ; \
- $(INSTALL_DATA) $(srcdir)/gsyslimits.h $(DESTDIR)$(itoolsdir)/gsyslimits.h ; \
- else :; fi
- if [ x$(STMP_FIXPROTO) != x ] ; then \
- $(INSTALL_PROGRAM) $(srcdir)/mkinstalldirs \
- $(DESTDIR)$(itoolsdir)/mkinstalldirs ; \
- $(INSTALL_PROGRAM) $(srcdir)/fixproto $(DESTDIR)$(itoolsdir)/fixproto ; \
- $(INSTALL_PROGRAM) fix-header$(build_exeext) \
- $(DESTDIR)$(itoolsdir)/fix-header$(build_exeext) ; \
- else :; fi
- $(INSTALL_PROGRAM) mkheaders $(DESTDIR)$(itoolsdir)/mkheaders
- echo 'SYSTEM_HEADER_DIR="$(SYSTEM_HEADER_DIR)"' \
- > $(DESTDIR)$(itoolsdir)/mkheaders.conf
- echo 'OTHER_FIXINCLUDES_DIRS="$(OTHER_FIXINCLUDES_DIRS)"' \
- >> $(DESTDIR)$(itoolsdir)/mkheaders.conf
- echo 'FIXPROTO_DEFINES="$(FIXPROTO_DEFINES)"' \
- >> $(DESTDIR)$(itoolsdir)/mkheaders.conf
- echo 'STMP_FIXPROTO="$(STMP_FIXPROTO)"' >> $(DESTDIR)$(itoolsdir)/mkheaders.conf
- echo 'STMP_FIXINC="$(STMP_FIXINC)"' >> $(DESTDIR)$(itoolsdir)/mkheaders.conf
-
# Use this target to install the program `collect2' under the name `collect2'.
install-collect2: collect2 installdirs
$(INSTALL_PROGRAM) collect2$(exeext) $(DESTDIR)$(libsubdir)/collect2$(exeext)
@@ -3058,16 +2807,10 @@ install-collect2: collect2 installdirs
$(INSTALL_PROGRAM) xgcc$(exeext) $(DESTDIR)$(libsubdir)/gcc$(exeext)
# Cancel installation by deleting the installed files.
-uninstall: intl.uninstall lang.uninstall
+uninstall: intl.uninstall lang.uninstall $(UNINSTALL_CPP)
-rm -rf $(DESTDIR)$(libsubdir)
-rm -rf $(DESTDIR)$(bindir)/$(GCC_INSTALL_NAME)$(exeext)
-rm -rf $(DESTDIR)$(bindir)/$(GCC_CROSS_NAME)$(exeext)
- -rm -f $(DESTDIR)$(bindir)/$(CPP_INSTALL_NAME)$(exeext)
- -rm -f $(DESTDIR)$(bindir)/$(CPP_CROSS_NAME)$(exeext)
- -if [ x$(cpp_install_dir) != x ]; then \
- rm -f $(DESTDIR)$(prefix)/$(cpp_install_dir)/$(CPP_INSTALL_NAME)$(exeext); \
- rm -f $(DESTDIR)$(prefix)/$(cpp_install_dir)/$(CPP_CROSS_NAME)$(exeext); \
- else true; fi
-rm -rf $(DESTDIR)$(bindir)/$(PROTOIZE_INSTALL_NAME)$(exeext)
-rm -rf $(DESTDIR)$(bindir)/$(PROTOIZE_CROSS_NAME)$(exeext)
-rm -rf $(DESTDIR)$(bindir)/$(UNPROTOIZE_INSTALL_NAME)$(exeext)
@@ -3095,8 +2838,8 @@ site.exp: ./config.status Makefile
@echo "## these variables are automatically generated by make ##" > ./tmp0
@echo "# Do not edit here. If you wish to override these values" >> ./tmp0
@echo "# add them to the last section" >> ./tmp0
- @echo "set rootme \"`${PWD_COMMAND}`\"" >> ./tmp0
- @echo "set srcdir \"`cd ${srcdir}; ${PWD_COMMAND}`\"" >> ./tmp0
+ @echo "set rootme \"`pwd`\"" >> ./tmp0
+ @echo "set srcdir \"`cd ${srcdir}; pwd`\"" >> ./tmp0
@echo "set host_triplet $(host_canonical)" >> ./tmp0
@echo "set build_triplet $(build_canonical)" >> ./tmp0
@echo "set target_triplet $(target)" >> ./tmp0
@@ -3129,26 +2872,23 @@ site.exp: ./config.status Makefile
fi
echo "set tmpdir $(objdir)/testsuite" >> ./tmp0
@echo "set srcdir \"\$${srcdir}/testsuite\"" >> ./tmp0
- @if [ "X$(ALT_CXX_UNDER_TEST)" != "X" ] ; then \
- echo "set ALT_CXX_UNDER_TEST $(ALT_CXX_UNDER_TEST)" >> ./tmp0; \
- else true; \
- fi
- @if [ "X$(COMPAT_OPTIONS)" != "X" ] ; then \
- echo "set COMPAT_OPTIONS $(COMPAT_OPTIONS)" >> ./tmp0; \
- else true; \
- fi
@echo "## All variables above are generated by configure. Do Not Edit ##" >> ./tmp0
@cat ./tmp0 > site.exp
@cat site.bak | sed \
-e '1,/^## All variables above are.*##/ d' >> site.exp
-@rm -f ./tmp?
-CHECK_TARGETS = check-gcc @check_languages@
+CHECK_TARGETS = check-gcc check-fixinc @check_languages@
check-c++ : check-g++
check-f77 : check-g77
check-java :
+check-fixinc :
+ if (autogen --ver=v) > /dev/null 2>&1 ; \
+ then cd fixinc && $(MAKE) check ; \
+ else true ; fi
+
check: $(CHECK_TARGETS)
# The idea is to parallelize testing of multilibs, for example:
@@ -3172,132 +2912,55 @@ $(TESTSUITEDIR)/site.exp: site.exp
sed '/set tmpdir/ s|testsuite|$(TESTSUITEDIR)|' < site.exp > $@
check-g++: $(TESTSUITEDIR)/site.exp
- -(rootme=`${PWD_COMMAND}`; export rootme; \
- srcdir=`cd ${srcdir}; ${PWD_COMMAND}` ; export srcdir ; \
+ -(rootme=`pwd`; export rootme; \
+ srcdir=`cd ${srcdir}; pwd` ; export srcdir ; \
cd $(TESTSUITEDIR); \
EXPECT=${EXPECT} ; export EXPECT ; \
if [ -f $${rootme}/../expect/expect ] ; then \
- TCL_LIBRARY=`cd .. ; cd ${srcdir}/../tcl/library ; ${PWD_COMMAND}` ; \
+ TCL_LIBRARY=`cd .. ; cd ${srcdir}/../tcl/library ; pwd` ; \
export TCL_LIBRARY ; fi ; \
$(RUNTEST) --tool g++ $(RUNTESTFLAGS))
check-gcc: $(TESTSUITEDIR)/site.exp
- -(rootme=`${PWD_COMMAND}`; export rootme; \
- srcdir=`cd ${srcdir}; ${PWD_COMMAND}` ; export srcdir ; \
+ -(rootme=`pwd`; export rootme; \
+ srcdir=`cd ${srcdir}; pwd` ; export srcdir ; \
cd $(TESTSUITEDIR); \
EXPECT=${EXPECT} ; export EXPECT ; \
if [ -f $${rootme}/../expect/expect ] ; then \
- TCL_LIBRARY=`cd .. ; cd ${srcdir}/../tcl/library ; ${PWD_COMMAND}` ; \
+ TCL_LIBRARY=`cd .. ; cd ${srcdir}/../tcl/library ; pwd` ; \
export TCL_LIBRARY ; fi ; \
$(RUNTEST) --tool gcc $(RUNTESTFLAGS))
check-g77: $(TESTSUITEDIR)/site.exp
- -(rootme=`${PWD_COMMAND}`; export rootme; \
- srcdir=`cd ${srcdir}; ${PWD_COMMAND}` ; export srcdir ; \
+ -(rootme=`pwd`; export rootme; \
+ srcdir=`cd ${srcdir}; pwd` ; export srcdir ; \
cd $(TESTSUITEDIR); \
EXPECT=${EXPECT} ; export EXPECT ; \
if [ -f $${rootme}/../expect/expect ] ; then \
- TCL_LIBRARY=`cd .. ; cd ${srcdir}/../tcl/library ; ${PWD_COMMAND}` ; \
+ TCL_LIBRARY=`cd .. ; cd ${srcdir}/../tcl/library ; pwd` ; \
export TCL_LIBRARY ; fi ; \
$(RUNTEST) --tool g77 $(RUNTESTFLAGS))
check-objc: $(TESTSUITEDIR)/site.exp
- -(rootme=`${PWD_COMMAND}`; export rootme; \
- srcdir=`cd ${srcdir}; ${PWD_COMMAND}` ; export srcdir ; \
+ -(rootme=`pwd`; export rootme; \
+ srcdir=`cd ${srcdir}; pwd` ; export srcdir ; \
cd $(TESTSUITEDIR); \
EXPECT=${EXPECT} ; export EXPECT ; \
if [ -f $${rootme}/../expect/expect ] ; then \
- TCL_LIBRARY=`cd .. ; cd ${srcdir}/../tcl/library ; ${PWD_COMMAND}` ; \
+ TCL_LIBRARY=`cd .. ; cd ${srcdir}/../tcl/library ; pwd` ; \
export TCL_LIBRARY ; fi ; \
$(RUNTEST) --tool objc $(RUNTESTFLAGS))
check-consistency: testsuite/site.exp
- -rootme=`${PWD_COMMAND}`; export rootme; \
- srcdir=`cd ${srcdir}; ${PWD_COMMAND}` ; export srcdir ; \
+ -rootme=`pwd`; export rootme; \
+ srcdir=`cd ${srcdir}; pwd` ; export srcdir ; \
cd testsuite; \
EXPECT=${EXPECT} ; export EXPECT ; \
if [ -f $${rootme}/../expect/expect ] ; then \
- TCL_LIBRARY=`cd .. ; cd ${srcdir}/../tcl/library ; ${PWD_COMMAND}` ; \
+ TCL_LIBRARY=`cd .. ; cd ${srcdir}/../tcl/library ; pwd` ; \
export TCL_LIBRARY ; fi ; \
$(RUNTEST) --tool consistency $(RUNTESTFLAGS)
-# QMTest targets
-
-# The path to qmtest.
-QMTEST_PATH=qmtest
-
-# The flags to pass to qmtest.
-QMTESTFLAGS=
-
-# The flags to pass to "qmtest run".
-QMTESTRUNFLAGS=
-
-# The command to use to invoke qmtest.
-QMTEST=${QMTEST_PATH} ${QMTESTFLAGS}
-
-# The tests (or suites) to run.
-QMTEST_GPP_TESTS=gpp
-
-# The subdirectory of the OBJDIR that will be used to store the QMTest
-# test database configuration and that will be used for temporary
-# scratch space during QMTest's execution.
-QMTEST_DIR=qmtestsuite
-
-# Create the QMTest database configuration.
-${QMTEST_DIR} stamp-qmtest:
- debug_options=""; \
- ${STAMP} empty.C; \
- for option in \
- -gdwarf-2 -gstabs -gstabs+ -gxcoff -gxcoff+ -gcoff; do \
- (./cc1plus -q $${option} empty.C 2>&1 | \
- grep "unknown or unsupported -g option" > /dev/null) || \
- debug_options="$${debug_options}$${option} "; done; \
- ${QMTEST} -D ${QMTEST_DIR} create-tdb \
- -c gcc_database.GCCDatabase \
- -a GCCDatabase.testsuite_root=`cd ${srcdir}/testsuite && pwd` \
- -a GCCDatabase.debug_options="$${debug_options}"
- rm -f empty.C empty.s
- $(STAMP) stamp-qmtest
-
-# Create the QMTest context file.
-${QMTEST_DIR}/context: stamp-qmtest
- echo "GCCTest.flags=-B${objdir}" >> $@
- echo "GCCTest.objdir=${objdir}/.." >> $@
- echo "GCCTest.host=${host_canonical}" >> $@
- echo "GCCTest.target=${target}" >> $@
- echo "GCCTest.gcov=${objdir}/gcov" >> $@
- echo "GPPTest.gpp=${objdir}/g++" >> $@
- echo "DGTest.demangler=${objdir}/c++filt" >> $@
-
-# Run the G++ testsuite using QMTest.
-qmtest-g++: ${QMTEST_DIR}/context ${QMTEST_DIR}/gpp-expected.qmr
- cd ${QMTEST_DIR} && ${QMTEST} run ${QMTESTRUNFLAGS} -C context \
- -o gpp.qmr -O gpp-expected.qmr \
- ${QMTEST_GPP_TESTS}
-
-# Use the QMTest GUI.
-qmtest-gui: ${QMTEST_DIR}/context
- cd ${QMTEST_DIR} && ${QMTEST} gui -C context
-
-# Build the set of expected G++ failures.
-${QMTEST_DIR}/gpp-expected.qmr: ${QMTEST_DIR}/context
- echo "Determining expected results..."
- cd ${QMTEST_DIR} && ${QMTEST} run ${QMTESTRUNFLAGS} -C context \
- -c "GCCTest.generate_xfails=1" -o gpp-expected.qmr \
- ${QMTEST_GPP_TESTS} \
- > /dev/null
-
-.PHONY: qmtest-g++
-
-# Run Paranoia on real.c.
-
-paranoia.o: $(srcdir)/../contrib/paranoia.cc $(CONFIG_H) $(SYSTEM_H) \
- real.h $(TREE_H)
- g++ -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $< $(OUTPUT_OPTION)
-
-paranoia: paranoia.o real.o $(LIBIBERTY)
- g++ -o $@ paranoia.o real.o $(LIBIBERTY)
-
# These exist for maintenance purposes.
# Update the tags table.
@@ -3316,7 +2979,6 @@ VOL_FILES=`echo $(BACKEND) $(OBJS) $(C_OBJS) $(LIBCPP_OBJS) *.c *.h gen*`
# WARN_CFLAGS setting can't be to the expansion of GCC_WARN_CFLAGS in
# the context of the stage_x rule.
STAGE2_FLAGS_TO_PASS = \
- ADAC="\$$(CC)" \
CFLAGS="$(BOOT_CFLAGS)" \
LDFLAGS="$(BOOT_LDFLAGS)" \
WARN_CFLAGS="\$$(GCC_WARN_CFLAGS)" \
@@ -3334,7 +2996,7 @@ STAGE2_FLAGS_TO_PASS = \
stage1_build:
$(MAKE) CC="$(CC)" libdir=$(libdir) LANGUAGES="$(BOOT_LANGUAGES)" \
CFLAGS="$(STAGE1_CFLAGS)" MAKEINFO="$(MAKEINFO)" \
- MAKEINFOFLAGS="$(MAKEINFOFLAGS)" COVERAGE_FLAGS=
+ MAKEINFOFLAGS="$(MAKEINFOFLAGS)"
$(STAMP) stage1_build
echo stage1_build > stage_last
@@ -3344,7 +3006,7 @@ stage1_copy: stage1_build
echo stage2_build > stage_last
stage2_build: stage1_copy
- $(MAKE) CC="$(STAGE_CC_WRAPPER) stage1/xgcc$(exeext) -Bstage1/ -B$(build_tooldir)/bin/" \
+ $(MAKE) CC="stage1/xgcc$(exeext) -Bstage1/ -B$(build_tooldir)/bin/" \
STAGE_PREFIX=stage1/ \
$(STAGE2_FLAGS_TO_PASS)
$(STAMP) stage2_build
@@ -3356,7 +3018,7 @@ stage2_copy: stage2_build
echo stage3_build > stage_last
stage3_build: stage2_copy
- $(MAKE) CC="$(STAGE_CC_WRAPPER) stage2/xgcc$(exeext) -Bstage2/ -B$(build_tooldir)/bin/" \
+ $(MAKE) CC="stage2/xgcc$(exeext) -Bstage2/ -B$(build_tooldir)/bin/" \
STAGE_PREFIX=stage2/ \
$(STAGE2_FLAGS_TO_PASS)
$(STAMP) stage3_build
@@ -3369,7 +3031,7 @@ stage3_copy: stage3_build
echo stage4_build > stage_last
stage4_build: stage3_copy
- $(MAKE) CC="$(STAGE_CC_WRAPPER) stage3/xgcc$(exeext) -Bstage3/ -B$(build_tooldir)/bin/" \
+ $(MAKE) CC="stage3/xgcc$(exeext) -Bstage3/ -B$(build_tooldir)/bin/" \
STAGE_PREFIX=stage3/ \
$(STAGE2_FLAGS_TO_PASS)
$(STAMP) stage4_build
@@ -3390,8 +3052,7 @@ bootstrap: stage3_build
@echo
@echo Bootstrap complete - make \"quickstrap\" to redo last build,
@echo \"restage1\" through \"restage3\" to rebuild specific stages,
- @echo \"restrap\" to redo the bootstrap from stage1, or
- @echo \"cleanstrap\" to redo the bootstrap from scratch.
+ @echo or \"cleanstrap\" to redo the bootstrap from scratch.
bootstrap-lean : clean_s1 clean_s2 stage3_build
@echo
@@ -3460,16 +3121,6 @@ cleanstrap:
-$(MAKE) clean
$(MAKE) LANGUAGES="$(LANGUAGES)" bootstrap
-unstrap:
- -rm -rf stage[234]*
- $(MAKE) unstage1
-
-# Differs from cleanstrap in that it starts from the earlier stage1 build,
-# not from scratch.
-restrap:
- $(MAKE) unstrap
- $(MAKE) LANGUAGES="$(LANGUAGES)" bootstrap
-
# Compare the object files in the current directory with those in the
# stage2 directory.
@@ -3508,21 +3159,18 @@ compare compare3 compare4 compare-lean compare3-lean compare4-lean: force
# Compare the object files in the current directory with those in the
# stage2 directory. Use gnu cmp (diffutils v2.4 or later) to avoid
# running tail and the overhead of twice copying each object file.
-# An exit status of 1 is precisely the result we're looking for (other
-# values mean other problems).
+
gnucompare gnucompare3 gnucompare4 gnucompare-lean gnucompare3-lean gnucompare4-lean: force
-rm -f .bad_compare
case "$@" in gnucompare | gnucompare-lean ) stage=2 ;; * ) stage=`echo $@ | sed -e 's,^gnucompare\([0-9][0-9]*\).*,\1,'` ;; esac; \
for file in *$(objext); do \
- cmp --ignore-initial=16 $$file stage$$stage/$$file > /dev/null 2>&1; \
- test $$? -eq 1 && echo $$file differs >> .bad_compare || true; \
+ (cmp --ignore-initial=16 $$file stage$$stage/$$file > /dev/null 2>&1 || echo $$file differs >> .bad_compare) || true; \
done
case "$@" in gnucompare | gnucompare-lean ) stage=2 ;; * ) stage=`echo $@ | sed -e 's,^gnucompare\([0-9][0-9]*\).*,\1,'` ;; esac; \
for dir in tmp-foo intl $(SUBDIRS); do \
if [ "`echo $$dir/*$(objext)`" != "$$dir/*$(objext)" ] ; then \
for file in $$dir/*$(objext); do \
- cmp --ignore-initial=16 $$file stage$$stage/$$file > /dev/null 2>&1; \
- test $$? -eq 1 && echo $$file differs >> .bad_compare || true; \
+ (cmp --ignore-initial=16 $$file stage$$stage/$$file > /dev/null 2>&1 || echo $$file differs >> .bad_compare) || true; \
done; \
else true; fi; \
done
@@ -3675,6 +3323,59 @@ risky-stage4: stage4
force:
+# ---
+# The enquire rules are still useful for building new float-anything.h.
+# Special flags for compiling enquire.
+# We disable optimization to make floating point more reliable.
+ENQUIRE_CFLAGS = -DNO_MEM -DNO_LONG_DOUBLE_IO -O0
+ENQUIRE_LDFLAGS = $(LDFLAGS)
+
+# Enquire target (This is a variable so that a target can choose not to
+# build it.)
+ENQUIRE = enquire
+
+# Test to see whether <float.h> exists in the system header files,
+# and is not derived from GCC.
+FLOAT_H_TEST = \
+ [ -f $(SYSTEM_HEADER_DIR)/float.h ] && \
+ if grep 'ifndef _FLOAT_H___' $(SYSTEM_HEADER_DIR)/float.h >/dev/null; \
+ then false; \
+ else :; fi
+# We pretend to not having a usable <float.h>, hence disable the FLOAT_H_TEST
+# to ensure, we're emitting a full blown <float.h> ourselves.
+FLOAT_H_TEST = false
+
+# Used to compile enquire with standard cc, but have forgotten why.
+# Let's try with GCC.
+enquire: enquire.o $(GCC_PARTS)
+ $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(ENQUIRE_LDFLAGS) enquire.o -o $@
+enquire.o: $(srcdir)/enquire.c $(GCC_PASSES) stmp-int-hdrs
+ if $(FLOAT_H_TEST); then \
+ rm -f include/float.h; \
+ SYS_FLOAT_H_WRAP=1; \
+ else :; \
+ SYS_FLOAT_H_WRAP=0; \
+ fi; \
+ $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(ALL_CPPFLAGS) $(ENQUIRE_CFLAGS) \
+ -DSYS_FLOAT_H_WRAP=$$SYS_FLOAT_H_WRAP \
+ -I. -c $(srcdir)/enquire.c $(OUTPUT_OPTION)
+
+# Create float.h source for the native machine.
+# Make it empty if we can use the system float.h without changes.
+float.h-nat: enquire
+ -./enquire -f > tmp-float.h
+ grep '#define [^_]' tmp-float.h >/dev/null || true > tmp-float.h
+ mv tmp-float.h float.h-nat
+
+# Create a dummy float.h source for a cross-compiler.
+# ??? This isn't used anymore. Should we create config/float-unkn.h
+# and make that the default float_format in configure?
+float.h-cross:
+ echo "#ifndef __GCC_FLOAT_NOT_NEEDED" > t-float.h-cross
+ echo "#error float.h values not known for cross-compiler" >> t-float.h-cross
+ echo "#endif" >> t-float.h-cross
+ mv t-float.h-cross float.h-cross
+
# Rules for generating translated message descriptions.
# Disabled by autoconf if the tools are not available.
@@ -3685,7 +3386,7 @@ MSGMERGE = msgmerge
PACKAGE = @PACKAGE@
CATALOGS = @CATALOGS@
-.PHONY: build- install- build-po install-po update-po
+.PHONY: build- install- build-po install-po update-po
# Dummy rules to deal with dependencies produced by use of
# "build-@POSUB@" and "install-@POSUB@" above, when NLS is disabled.
diff --git a/contrib/gcc/NEWS b/contrib/gcc/NEWS
deleted file mode 100644
index 3c7aeeb..0000000
--- a/contrib/gcc/NEWS
+++ /dev/null
@@ -1,2446 +0,0 @@
-This file contains information about GCC releases which has been generated
-automatically from the online release notes. It covers releases of GCC
-(and the former EGCS project) since EGCS 1.0, on the line of development
-that led to GCC 3. For information on GCC 2.8.1 and older releases of GCC 2,
-see ONEWS.
-
-======================================================================
-http://gcc.gnu.org/gcc-3.2/index.html
-
- GCC 3.2
-
- November 19, 2002
-
- The [1]GNU project and the GCC developers are pleased to announce the
- release of GCC 3.2.1.
-
- The links below still apply to GCC 3.2.1.
-
- August 14, 2002
-
- The [2]GNU project and the GCC developers are pleased to announce the
- release of GCC 3.2.
-
- GCC used to stand for the GNU C Compiler, but since the compiler
- supports several other languages aside from C, it now stands for the
- GNU Compiler Collection.
-
- A list of [3]successful builds is updated as new information becomes
- available.
-
- The GCC developers would like to thank the numerous people that have
- contributed [4]new features, improvements, bug fixes, and other
- changes as well as test results to GCC. This [5]amazing group of
- volunteers is what makes GCC successful.
-
- For additional information about GCC please refer to the [6]GCC
- project web site or contact the [7]GCC development mailing list.
-
- To obtain GCC please use [8]our mirror sites, one of the [9]GNU mirror
- sites, or [10]our CVS server.
- _________________________________________________________________
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [11]gnu@gnu.org. There
- are also [12]other ways to contact the FSF.
-
- These pages are maintained by [13]The GCC team.
-
-
- Please send comments on these web pages and GCC to our public
- mailing list at [14]gcc@gnu.org or [15]gcc@gcc.gnu.org, send other
- questions to [16]gnu@gnu.org.
-
- Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
- 330, Boston, MA 02111, USA.
-
- Verbatim copying and distribution of this entire article is permitted
- in any medium, provided this notice is preserved.
-
- Last modified 2002-11-18 [17]Valid XHTML 1.0
-
-References
-
- 1. http://www.gnu.org/
- 2. http://www.gnu.org/
- 3. http://gcc.gnu.org/gcc-3.2/buildstat.html
- 4. http://gcc.gnu.org/gcc-3.2/changes.html
- 5. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
- 6. http://gcc.gnu.org/index.html
- 7. mailto:gcc@gcc.gnu.org
- 8. http://gcc.gnu.org/mirrors.html
- 9. http://www.gnu.org/order/ftp.html
- 10. http://gcc.gnu.org/cvs.html
- 11. mailto:gnu@gnu.org
- 12. http://www.gnu.org/home.html#ContactInfo
- 13. http://gcc.gnu.org/about.html
- 14. mailto:gcc@gnu.org
- 15. mailto:gcc@gcc.gnu.org
- 16. mailto:gnu@gnu.org
- 17. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/gcc-3.2/changes.html
-
- Changes in GCC 3.2.1
-
-C/C++/Objective-C
-
- * The method of constructing the list of directories to be searched
- for header files has been revised. If a directory named by a -I
- option is a standard system include directory, the option is
- ignored to ensure that the default search order for system
- directories and the special treatment of system header files are
- not defeated.
- * The C and Objective-C compilers no longer accept the "Naming
- Types" extension (typedef foo = bar); it was already unavailable
- in C++. Code which uses it will need to be changed to use the
- "typeof" extension instead: typedef typeof(bar) foo. (We have
- removed this extension without a period of deprecation because it
- has caused the compiler to crash since version 3.0 and no one
- noticed until very recently. Thus we conclude it is not in
- widespread use.)
-
-New Targets and Target Specific Improvements
-
- IA-32
-
- * Fixed a number of bugs in SSE and MMX intrinsics.
- * Fixed common compiler crashes with SSE instruction set enabled
- (implied by -march=pentium3, pentium4, athlon-xp)
- * __m128 and __m128i is not 128bit aligned when used in structures.
-
- x86-64
-
- * A bug whereby the compiler could generate bad code for bzero has
- been fixed.
- * ABI fixes (implying ABI incompatibilities with previous version in
- some corner cases)
- * Fixed prefetch code generation
-
-Bug Fixes
-
- See [1]this message for a list of bugs fixed in this release.
-
- Changes in GCC 3.2
-
-Bug Fixes
-
- See [2]this message for a list of bugs fixed in this release.
-
-Caveats
-
- * The C++ compiler does not correctly zero-initialize
- pointers-to-data members. You must explicitly initialize them. For
- example:
- int S::*m(0);
-
- will work, but depending on default-initialization to zero will
- not work. This bug cannot be fixed in GCC 3.2 without inducing
- unacceptable risks. It will be fixed in GCC 3.3.
- * This GCC release is based on the GCC 3.1 sourcebase, and thus has
- all the [3]changes in the GCC 3.1 series. In addition, GCC 3.2 has
- a number of C++ ABI fixes which make its C++ compiler generate
- binary code which is incompatible with the C++ compilers found in
- earlier GCC releases, including GCC 3.1 and GCC 3.1.1.
-
-New Languages and Language specific improvements
-
- C++
-
- * There are now no known differences between the C++ ABI implemented
- in GCC and the multi-vendor standard. We believe that the ABI for
- the C++ standard library is now stable and will not change in
- future versions of the compiler. However, hard experience has
- taught us to be cautious; it is possible that more problems will
- be found. It is our intention to make changes to the ABI only if
- they are necessary for correct compilation of C++, as opposed to
- conformance to the ABI documents.
- * For details on how to build an ABI compliant compiler for
- GNU/Linux systems, check the [4]common C++ ABI page.
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [5]gnu@gnu.org. There
- are also [6]other ways to contact the FSF.
-
- These pages are maintained by [7]The GCC team.
-
-
- Please send comments on these web pages and GCC to our public
- mailing list at [8]gcc@gnu.org or [9]gcc@gcc.gnu.org, send other
- questions to [10]gnu@gnu.org.
-
- Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
- 330, Boston, MA 02111, USA.
-
- Verbatim copying and distribution of this entire article is permitted
- in any medium, provided this notice is preserved.
-
- Last modified 2002-11-18 [11]Valid XHTML 1.0
-
-References
-
- 1. http://gcc.gnu.org/ml/gcc/2002-11/msg00445.html
- 2. http://gcc.gnu.org/ml/gcc/2002-08/msg00405.html
- 3. http://gcc.gnu.org/gcc-3.1/changes.html
- 4. http://gcc.gnu.org/gcc-3.2/c++-abi.html
- 5. mailto:gnu@gnu.org
- 6. http://www.gnu.org/home.html#ContactInfo
- 7. http://gcc.gnu.org/about.html
- 8. mailto:gcc@gnu.org
- 9. mailto:gcc@gcc.gnu.org
- 10. mailto:gnu@gnu.org
- 11. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/gcc-3.1/index.html
-
- GCC 3.1
-
- July 27, 2002
-
- The [1]GNU project and the GCC developers are pleased to announce the
- release of GCC 3.1.1.
-
- The links below still apply to GCC 3.1.1.
-
- May 15, 2002
-
- The [2]GNU project and the GCC developers are pleased to announce the
- release of GCC 3.1.
-
- GCC used to stand for the GNU C Compiler, but since the compiler
- supports several other languages aside from C, it now stands for the
- GNU Compiler Collection.
-
- A list of [3]successful builds is updated as new information becomes
- available.
-
- The GCC developers would like to thank the numerous people that have
- contributed [4]new features, improvements, bug fixes, and other
- changes as well as test results to GCC. This [5]amazing group of
- volunteers is what makes GCC successful.
-
- For additional information about GCC please refer to the [6]GCC
- project web site or contact the [7]GCC development mailing list.
-
- To obtain GCC please use [8]our mirror sites, one of the [9]GNU mirror
- sites, or [10]our CVS server.
- _________________________________________________________________
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [11]gnu@gnu.org. There
- are also [12]other ways to contact the FSF.
-
- These pages are maintained by [13]The GCC team.
-
-
- Please send comments on these web pages and GCC to our public
- mailing list at [14]gcc@gnu.org or [15]gcc@gcc.gnu.org, send other
- questions to [16]gnu@gnu.org.
-
- Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
- 330, Boston, MA 02111, USA.
-
- Verbatim copying and distribution of this entire article is permitted
- in any medium, provided this notice is preserved.
-
- Last modified 2002-11-11 [17]Valid XHTML 1.0
-
-References
-
- 1. http://www.gnu.org/
- 2. http://www.gnu.org/
- 3. http://gcc.gnu.org/gcc-3.1/buildstat.html
- 4. http://gcc.gnu.org/gcc-3.1/changes.html
- 5. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
- 6. http://gcc.gnu.org/index.html
- 7. mailto:gcc@gcc.gnu.org
- 8. http://gcc.gnu.org/mirrors.html
- 9. http://www.gnu.org/order/ftp.html
- 10. http://gcc.gnu.org/cvs.html
- 11. mailto:gnu@gnu.org
- 12. http://www.gnu.org/home.html#ContactInfo
- 13. http://gcc.gnu.org/about.html
- 14. mailto:gcc@gnu.org
- 15. mailto:gcc@gcc.gnu.org
- 16. mailto:gnu@gnu.org
- 17. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/gcc-3.1/changes.html
-
- GCC 3.1 Changes, New Features, and Fixes
-
-Additional changes in GCC 3.1.1
-
- * A bug related to how structures and unions are returned has been
- fixed for powerpc-*-netbsd*.
- * An important bug in the implementation of -fprefetch-loop-arrays
- has been fixed. Previously the optimization prefetched random
- blocks of memory for most targets except for i386.
- * The Java compiler now compiles Java programs much faster and also
- works with parallel make.
- * Nested functions have been fixed for mips*-*-netbsd*.
- * Some missing floating point support routines have beed added for
- mips*-*-netbsd*.
- * This [1]message gives additional information about the bugs fixed
- in this release.
-
-Caveats
-
- * The -traditional C compiler option has been deprecated and will be
- removed in GCC 3.3. (It remains possible to preprocess non-C code
- with the traditional preprocessor.)
- * The default debugging format for most ELF platforms (including
- GNU/Linux and FreeBSD; notable exception is Solaris) has changed
- from stabs to DWARF2. This requires GDB 5.1.1 or later.
-
-General Optimizer Improvements
-
- * Jan Hubicka, SuSE Labs, together with Richard Henderson, Red Hat,
- and Andreas Jaeger, SuSE Labs, has contributed [2]infrastructure
- for profile driven optimizations.
- Options -fprofile-arcs and -fbranch-probabilities can now be used
- to improve speed of the generated code by profiling the actual
- program behaviour on typical runs. In the absence of profile info
- the compiler attempts to guess the profile statically.
- * [3]SPEC2000 and [4]SPEC95 benchmark suites are now used daily to
- monitor performance of the generated code.
- According to the SPECInt2000 results on an AMD Athlon CPU, the
- code generated by GCC 3.1 is 6% faster on the average (8.2% faster
- with profile feedback) compared to GCC 3.0. The code produced by
- GCC 3.0 is about 2.1% faster compared to 2.95.3. Tests were done
- using the -O2 -march=athlon command-line options.
- * Alexandre Oliva, of [5]Red Hat, has generalized the tree inlining
- infrastructure developed by [6]CodeSourcery, LLC for the C++ front
- end, so that it is now used in the C front end too. Inlining
- functions as trees exposes them earlier to the compiler, giving it
- more opportunities for optimization.
- * Support for data prefetching instructions has been added to the
- GCC back end and several targets. A new __builtin_prefetch
- intrinsic is available to explicitly insert prefetch instructions
- and experimental support for loop array prefetching has been added
- (see -fprefetch-loop-array documentation).
- * Support for emitting debugging information for macros has been
- added for DWARF2. It is activated using -g3.
-
-New Languages and Language specific improvements
-
- C/C++
-
- * A few more [7]ISO C99 features.
- * The preprocessor is 10-50% faster than the preprocessor in GCC
- 3.0.
- * The preprocessor's symbol table has been merged with the symbol
- table of the C, C++ and Objective-C front ends.
- * The preprocessor consumes less memory than the preprocessor in GCC
- 3.0, often significantly so. On normal input files, it typically
- consumes less memory than pre-3.0 cccp-based GCC, too.
-
- C++
-
- * -fhonor-std and -fno-honor-std have been removed. -fno-honor-std
- was a workaround to allow std compliant code to work with the
- non-std compliant libstdc++-v2. libstdc++-v3 is std compliant.
- * The C++ ABI has been fixed so that void (A::*)() const is mangled
- as "M1AKFvvE", rather than "MK1AFvvE" as before. This change only
- affects pointer to cv-qualified member function types.
- * The C++ ABI has been changed to correctly handle this code:
- struct A {
- void operator delete[] (void *, size_t);
- };
-
- struct B : public A {
- };
-
- new B[10];
-
- The amount of storage allocated for the array will be greater than
- it was in 3.0, in order to store the number of elements in the
- array, so that the correct size can be passed to operator delete[]
- when the array is deleted. Previously, the value passed to
- operator delete[] was unpredictable.
- This change will only affect code that declares a two-argument
- operator delete[] with a second parameter of type size_t in a base
- class, and does not override that definition in a derived class.
- * The C++ ABI has been changed so that:
- struct A {
- void operator delete[] (void *, size_t);
- void operator delete[] (void *);
- };
-
- does not cause unnecessary storage to be allocated when an array
- of A objects is allocated.
- This change will only affect code that declares both of these
- forms of operator delete[], and declared the two-argument form
- before the one-argument form.
- * The C++ ABI has been changed so that when a parameter is passed by
- value, any cleanup for that parameter is performed in the caller,
- as specified by the ia64 C++ ABI, rather than the called function
- as before. As a result, classes with a non-trivial destructor but
- a trivial copy constructor will be passed and returned by
- invisible reference, rather than by bitwise copy as before.
- * G++ now supports the "named return value optimization": for code
- like
- A f () {
- A a;
- ...
- return a;
- }
-
- G++ will allocate a in the return value slot, so that the return
- becomes a no-op. For this to work, all return statements in the
- function must return the same variable.
- * Improvements to the C++ library are listed in [8]the libstdc++-v3
- FAQ.
-
- Objective-C
-
- * Annoying linker warnings (due to incorrect code being generated)
- have been fixed.
- * If a class method cannot be found, the compiler no longer issues a
- warning if a corresponding instance method exists in the root
- class.
- * Forward @protocol declarations have been fixed.
- * Loading of categories has been fixed in certain situations (GNU
- run time only).
- * The class lookup in the run-time library has been rewritten so
- that class method dispatch is more than twice as fast as it used
- to be (GNU run time only).
-
- Java
-
- * libgcj now includes RMI, java.lang.ref.*, javax.naming, and
- javax.transaction.
- * Property files and other system resources can be compiled into
- executables which use libgcj using the new gcj --resource feature.
- * libgcj has been ported to more platforms. In particular there is
- now a mostly-functional mingw32 (Windows) target port.
- * JNI and CNI invocation interfaces were implemented, so
- gcj-compiled Java code can now be called from a C/C++ application.
- * gcj can now use builtin functions for certain known methods, for
- instance Math.cos.
- * gcj can now automatically remove redundant array-store checks in
- some common cases.
- * The --no-store-checks optimization option was added. This can be
- used to omit runtime store checks for code which is known not to
- throw ArrayStoreException
- * The following third party interface standards were added to
- libgcj: org.w3c.dom and org.xml.sax.
- * java.security has been merged with GNU Classpath. The new package
- is now JDK 1.2 compliant, and much more complete.
- * A bytecode verifier was added to the libgcj interpreter.
- * java.lang.Character was rewritten to comply with the Unicode 3.0
- standard, and improve performance.
- * Partial support for many more locales was added to libgcj.
- * Socket timeouts have been implemented.
- * libgcj has been merged into a single shared library. There are no
- longer separate shared libraries for the garbage collector and
- zlib.
- * Several performance improvements were made to gcj and libgcj:
- + Hash synchronization (thin locks)
- + A special allocation path for finalizer-free objects
- + Thread-local allocation
- + Parallel GC, and other GC tweaks
-
- Fortran
-
- Fortran improvements are listed in [9]the Fortran documentation.
-
- Ada
-
- [10]Ada Core Technologies, Inc, has contributed its GNAT Ada 95 front
- end and associated tools. The GNAT compiler fully implements the Ada
- language as defined by the ISO/IEC 8652 standard.
-
- Please note that the integration of the Ada front end is still work in
- progress.
-
-New Targets and Target Specific Improvements
-
- * Hans-Peter Nilsson has contributed a port to [11]MMIX, the CPU
- architecture used in new editions of Donald E. Knuth's The Art of
- Computer Programming.
- * [12]Axis Communications has contributed its port to the CRIS CPU
- architecture, used in the ETRAX system-on-a-chip series. See
- [13]Axis' developer site for technical information.
- * Alexandre Oliva, of [14]Red Hat, has contributed a port to the
- [15]SuperH SH5 64-bit RISC microprocessor architecture, extending
- the existing SH port.
- * UltraSPARC is fully supported in 64-bit mode. The option -m64
- enables it.
- * For compatibility with the Sun compiler #pragma redefine_extname
- has been implemented on Solaris.
- * The x86 back end has had some noticeable work done to it.
- + [16]SuSE Labs developers Jan Hubicka, Bo Thorsen and Andreas
- Jaeger have contributed a port to the AMD x86-64
- architecture. For more information on x86-64 see
- [17]http://www.x86-64.org.
- + The compiler now supports MMX, 3DNow!, SSE, and SSE2
- instructions. Options -mmmx, -m3dnow, -msse, and -msse2 will
- enable the respective instruction sets. Intel C++ compatible
- MMX/3DNow!/SSE intrinsics are implemented. SSE2 intrinsics
- will be added in next major release.
- + Following those improvements, targets for Pentium MMX, K6-2,
- K6-3, Pentium III, Pentium 4, and Athlon 4 Mobile/XP/MP were
- added. Refer to the documentation on -march= and -mcpu=
- options for details.
- + For those targets that support it, -mfpmath=sse will cause
- the compiler to generate SSE/SSE2 instructions for floating
- point math instead of x87 instructions. Usually, this will
- lead to quicker code -- especially on the Pentium 4. Note
- that only scalar floating point instructions are used and GCC
- does not exploit SIMD features yet.
- + Prefetch support has been added to the Pentium III, Pentium
- 4, K6-2, K6-3, and Athlon series.
- + Code generated for floating point to integer converisons has
- been improved leading to better performance of many 3D
- applications.
- * The PowerPC back end has added 64-bit PowerPC GNU/Linux support.
- * C++ support for AIX has been improved.
- * Aldy Hernandez, of [18]Red Hat, Inc has contributed extensions to
- the PowerPC port supporting the AltiVec programming model (SIMD).
- The support, though presently useful, is experimental and is
- expected to stabilize for 3.2. The support is written to conform
- to Motorola's AltiVec specs. See -maltivec.
-
-Obsolete Systems
-
- Support for a number of older systems has been declared obsolete in
- GCC 3.1. Unless there is activity to revive them, the next release of
- GCC will have their sources permanently removed.
-
- All configurations of the following processor architectures have been
- declared obsolete:
- * MIL-STD-1750A, 1750a-*-*
- * AMD A29k, a29k-*-*
- * Convex, c*-convex-*
- * Clipper, clipper-*-*
- * Elxsi, elxsi-*-*
- * Intel i860, i860-*-*
- * Sun picoJava, pj-*-* and pjl-*-*
- * Western Electric 32000, we32k-*-*
-
- Most configurations of the following processor architectures have been
- declared obsolete, but we are preserving a few systems which may have
- active developers. It is unlikely that the remaining systems will
- survive much longer unless we see definite signs of port activity.
- * Motorola 88000 except
- + Generic a.out, m88k-*-aout*
- + Generic SVR4, m88k-*-sysv4
- + OpenBSD, m88k-*-openbsd*
- * NS32k except
- + NetBSD, ns32k-*-netbsd*
- + OpenBSD, ns32k-*-openbsd*.
- * ROMP except
- + OpenBSD, romp-*-openbsd*.
-
- Finally, only some configurations of these processor architectures are
- being obsoleted.
- * Alpha:
- + OSF/1, alpha*-*-osf[123]*. (Digital Unix and Tru64 Unix, aka
- alpha*-*-osf[45], are still supported.)
- * ARM:
- + RISCiX, arm-*-riscix*.
- * i386:
- + 386BSD, i?86-*-bsd*
- + Chorus, i?86-*-chorusos*
- + DG/UX, i?86-*-dgux*
- + FreeBSD 1.x, i?86-*-freebsd1.*
- + IBM AIX, i?86-*-aix*
- + ISC UNIX, i?86-*-isc*
- + Linux with pre-BFD linker, i?86-*-linux*oldld*
- + NEXTstep, i?86-next-*
- + OSF UNIX, i?86-*-osf1* and i?86-*-osfrose*
- + RTEMS/coff, i?86-*-rtemscoff*
- + RTEMS/go32, i?86-go32-rtems*
- + Sequent/BSD, i?86-sequent-bsd*
- + Sequent/ptx before version 3, i?86-sequent-ptx[12]* and
- i?86-sequent-sysv3*
- + SunOS, i?86-*-sunos*
- * Motorola 68000:
- + Altos, m68[k0]*-altos-*
- + Apollo, m68[k0]*-apollo-*
- + Apple A/UX, m68[k0]*-apple-*
- + Bull, m68[k0]*-bull-*
- + Convergent, m68[k0]*-convergent-*
- + Generic SVR3, m68[k0]*-*-sysv3*
- + ISI, m68[k0]*-isi-*
- + LynxOS, m68[k0]*-*-lynxos*
- + NEXT, m68[k0]*-next-*
- + RTEMS/coff, m68[k0]*-*-rtemscoff*
- + Sony, m68[k0]*-sony-*
- * MIPS:
- + DEC Ultrix, mips-*-ultrix* and mips-dec-*
- + Generic BSD, mips-*-bsd*
- + Generic System V, mips-*-sysv*
- + IRIX before version 5, mips-sgi-irix[1234]*
- + RiscOS, mips-*-riscos*
- + Sony, mips-sony-*
- + Tandem, mips-tandem-*
- * SPARC:
- + RTEMS/a.out, sparc-*-rtemsaout*.
-
-Documentation improvements
-
- * The old manual ("Using and Porting the GNU Compiler Collection")
- has been replaced by a users manual ("Using the GNU Compiler
- Collection") and a separate internals reference manual ("GNU
- Compiler Collection Internals").
- * More complete and much improved documentation about GCC's internal
- representation used by the C and C++ front ends.
- * Many cleanups and improvements in general.
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [19]gnu@gnu.org. There
- are also [20]other ways to contact the FSF.
-
- These pages are maintained by [21]The GCC team.
-
-
- Please send comments on these web pages and GCC to our public
- mailing list at [22]gcc@gnu.org or [23]gcc@gcc.gnu.org, send other
- questions to [24]gnu@gnu.org.
-
- Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
- 330, Boston, MA 02111, USA.
-
- Verbatim copying and distribution of this entire article is permitted
- in any medium, provided this notice is preserved.
-
- Last modified 2002-11-11 [25]Valid XHTML 1.0
-
-References
-
- 1. http://gcc.gnu.org/ml/gcc/2002-07/msg01208.html
- 2. http://gcc.gnu.org/news/profiledriven.html
- 3. http://www.suse.de/~aj/SPEC/
- 4. http://people.redhat.com/dnovillo/SPEC/
- 5. http://www.redhat.com/
- 6. http://www.codesourcery.com/
- 7. http://gcc.gnu.org/gcc-3.1/c99status.html
- 8. http://gcc.gnu.org/onlinedocs/libstdc++/faq/index.html#4_1
- 9. http://gcc.gnu.org/onlinedocs/g77/News.html
- 10. http://www.gnat.com/
- 11. http://www-cs-faculty.stanford.edu/~knuth/mmix.html
- 12. http://www.axis.com/
- 13. http://developer.axis.com/
- 14. http://www.redhat.com/
- 15. http://www.superh.com/
- 16. http://www.suse.com/
- 17. http://www.x86-64.org/
- 18. http://www.redhat.com/
- 19. mailto:gnu@gnu.org
- 20. http://www.gnu.org/home.html#ContactInfo
- 21. http://gcc.gnu.org/about.html
- 22. mailto:gcc@gnu.org
- 23. mailto:gcc@gcc.gnu.org
- 24. mailto:gnu@gnu.org
- 25. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/gcc-3.0/gcc-3.0.html
-
- GCC 3.0.4
-
- February 20, 2002
-
- The [1]GNU project and the GCC developers are pleased to announce the
- release of GCC 3.0.4, which is a bug-fix release for the GCC 3.0
- series.
-
- GCC used to stand for the GNU C Compiler, but since the compiler
- supports several other languages aside from C, it now stands for the
- GNU Compiler Collection.
-
- GCC 3.0.x has several new optimizations, new targets, new languages
- and many other new features, relative to GCC 2.95.x. See the [2]new
- features page for a more complete list.
-
- A list of [3]successful builds is updated as new information becomes
- available.
-
- The GCC developers would like to thank the numerous people that have
- contributed new features, test results, bugfixes, etc to GCC. This
- [4]amazing group of volunteers is what makes GCC successful.
-
- And finally, we can't in good conscience fail to mention some
- [5]caveats to using GCC 3.0.x.
-
- For additional information about GCC please refer to the [6]GCC
- project web site or contact the [7]GCC development mailing list.
-
- To obtain GCC please use [8]our mirror sites, one of the [9]GNU mirror
- sites, or [10]our CVS server.
- _________________________________________________________________
-
-Previous 3.0.x Releases
-
- December 20, 2001: GCC 3.0.3 has been released.
- October 25, 2001: GCC 3.0.2 has been released.
- August 20, 2001: GCC 3.0.1 has been released.
- June 18, 2001: GCC 3.0 has been released.
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [11]gnu@gnu.org. There
- are also [12]other ways to contact the FSF.
-
- These pages are maintained by [13]The GCC team.
-
-
- Please send comments on these web pages and GCC to our public
- mailing list at [14]gcc@gnu.org or [15]gcc@gcc.gnu.org, send other
- questions to [16]gnu@gnu.org.
-
- Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
- 330, Boston, MA 02111, USA.
-
- Verbatim copying and distribution of this entire article is permitted
- in any medium, provided this notice is preserved.
-
- Last modified 2002-11-11 [17]Valid XHTML 1.0
-
-References
-
- 1. http://www.gnu.org/
- 2. http://gcc.gnu.org/gcc-3.0/features.html
- 3. http://gcc.gnu.org/gcc-3.0/buildstat.html
- 4. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
- 5. http://gcc.gnu.org/gcc-3.0/caveats.html
- 6. http://gcc.gnu.org/index.html
- 7. mailto:gcc@gcc.gnu.org
- 8. http://gcc.gnu.org/mirrors.html
- 9. http://www.gnu.org/order/ftp.html
- 10. http://gcc.gnu.org/cvs.html
- 11. mailto:gnu@gnu.org
- 12. http://www.gnu.org/home.html#ContactInfo
- 13. http://gcc.gnu.org/about.html
- 14. mailto:gcc@gnu.org
- 15. mailto:gcc@gcc.gnu.org
- 16. mailto:gnu@gnu.org
- 17. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/gcc-3.0/features.html
-
- GCC 3.0 New Features
-
-Additional changes in GCC 3.0.4
-
- * GCC 3.0 now supports newer versions of the [1]NetBSD operating
- system, which use the ELF object file format, on x86 processors.
- * Correct debugging information is generated from functions that
- have lines from multiple files (e.g. yacc output).
- * A fix for whitespace handling in the -traditional preprocessor,
- which can affect Fortran.
- * Fixes to the exception handling runtime.
- * More fixes for bad code generation in C++.
- * A fix for shared library generation under AIX 4.3.
- * Documentation updates.
- * Port of GCC to Tensilica's Xtensa processor contributed.
- * A fix for compiling the PPC Linux kernel (FAT fs wouldn't link).
-
-Additional changes in GCC 3.0.3
-
- * A fix to correct an accidental change to the PowerPC ABI.
- * Fixes for bad code generation on a variety of architectures.
- * Improvements to the debugging information generated for C++
- classes.
- * Fixes for bad code generation in C++.
- * A fix to avoid crashes in the C++ demangler.
- * A fix to the C++ standard library to avoid buffer overflows.
- * Miscellaneous improvements for a variety of architectures.
-
-Additional changes in GCC 3.0.2
-
- * Fixes for bad code generation during loop unrolling.
- * Fixes for bad code generation by the sibling call optimization.
- * Minor improvements to x86 code generation.
- * Implemenation of function descriptors in C++ vtables for IA64.
- * Numerous minor bug-fixes.
-
-Additional changes in GCC 3.0.1
-
- * C++ fixes for incorrect code-generation.
- * Improved cross-compiling support for the C++ standard library.
- * Fixes for some embedded targets that worked in GCC 2.95.3, but not
- in GCC 3.0.
- * Fixes for various exception-handling bugs.
- * A port to the S/390 architecture.
-
-General Optimizer Improvements
-
- * [2]Basic block reordering pass.
- * New if-conversion pass with support for conditional (predicated)
- execution.
- * New tail call and sibling call elimination optimizations.
- * New register renaming pass.
- * New (experimental) [3]static single assignment (SSA)
- representation support.
- * New dead-code elimination pass implemented using the SSA
- representation.
- * [4]Global null pointer test elimination.
- * [5]Global code hoisting/unification.
- * More builtins and optimizations for stdio.h, string.h and old BSD
- functions, as well as for ISO C99 functions.
- * New builtin __builtin_expect for giving hints to the branch
- predictor.
-
-New Languages and Language specific improvements
-
- * The GNU Compiler for the Java(TM) language (GCJ) is now integrated
- and supported, including the run-time library containing most
- common non-GUI Java classes, a bytecode interpreter, and the Boehm
- conservative garbage collector. Many bugs have been fixed. GCJ can
- compile Java source or Java bytecodes to either native code or
- Java class files, and supports native methods written in either
- the standard JNI or the more efficient and convenient CNI.
- * Here is a [6]partial list of C++ improvements, both new features
- and those no longer supported.
- * New C++ ABI. On the IA-64 platform GCC is capable of
- inter-operating with other IA-64 compilers.
- * The new ABI also significantly reduces the size of symbol and
- debug information.
- * New [7]C++ support library and many C++ bug fixes, vastly
- improving our conformance to the ISO C++ standard.
- * New [8]inliner for C++.
- * Rewritten C preprocessor, integrated into the C, C++ and Objective
- C compilers, with very many improvements including ISO C99 support
- and [9]improvements to dependency generation.
- * Support for more [10]ISO C99 features.
- * Many improvements to support for checking calls to format
- functions such as printf and scanf, including support for ISO C99
- format features, extensions from the Single Unix Specification and
- GNU libc 2.2, checking of strfmon formats and features to assist
- in auditing for format string security bugs.
- * New warnings for C code that may have undefined semantics because
- of violations of sequence point rules in the C standard (such as a
- = a++;, a[n] = b[n++]; and a[i++] = i;), included in -Wall.
- * Additional warning option -Wfloat-equal.
- * Improvements to -Wtraditional.
- * Fortran improvements are listed in [11]the Fortran documentation.
-
-New Targets and Target Specific Improvements
-
- * New x86 back-end, generating much improved code.
- * Support for a generic i386-elf target contributed.
- * New option to emit x86 assembly code using Intel style syntax
- (-mintel-syntax).
- * HPUX 11 support contributed.
- * Improved PowerPC code generation, including scheduled prologue and
- epilogue.
- * Port of GCC to Intel's IA-64 processor contributed.
- * Port of GCC to Motorola's MCore 210 and 340 contributed.
- * New unified back-end for Arm, Thumb and StrongArm contributed.
- * Port of GCC to Intel's XScale processor contributed.
- * Port of GCC to Atmel's AVR microcontrollers contributed.
- * Port of GCC to Mitsubishi's D30V processor contributed.
- * Port of GCC to Matsushita's AM33 processor (a member of the
- MN10300 processor family) contributed.
- * Port of GCC to Fujitsu's FR30 processor contributed.
- * Port of GCC to Motorola's 68HC11 and 68HC12 processors
- contributed.
- * Port of GCC to Sun's picoJava processor core contributed.
-
-Documentation improvements
-
- * Substantially rewritten and improved C preprocessor manual.
- * Many improvements to other documentation.
- * Manpages for gcc, cpp and gcov are now generated automatically
- from the master Texinfo manual, eliminating the problem of
- manpages being out of date. (The generated manpages are only
- extracts from the full manual, which is provided in Texinfo form,
- from which info, HTML, other formats and a printed manual can be
- generated.)
- * Generated info files are included in the release tarballs
- alongside their Texinfo sources, avoiding problems on some
- platforms with building makeinfo as part of the GCC distribution.
-
-Other significant improvements
-
- * Garbage collection used internally by the compiler for most memory
- allocation instead of obstacks.
- * Lengauer and Tarjan algorithm used for computing dominators in the
- CFG. This algorithm can be significantly faster and more space
- efficient than our older algorithm.
- * gccbug script provided to assist in submitting bug reports to the
- GCC GNATS bug tracking database. (Bug reports previously submitted
- directly to the GCC mailing lists, for which no GNATS bug tracking
- number has been received, should be submitted again to the bug
- tracking database using gccbug if you can reproduce the problem
- with GCC 3.0.)
- * The internal libgcc library is [12]built as a shared library on
- systems that support it.
- * Extensive testsuite included with GCC, with many new tests. In
- addition to tests for GCC bugs that have been fixed, many tests
- have been added for language features, compiler warnings and
- builtin functions.
- * Additional language-independent warning options -Wpacked,
- -Wpadded, -Wunreachable-code and -Wdisabled-optimization.
- * Target-independent options -falign-functions, -falign-loops and
- -falign-jumps.
-
- Plus a great many bugfixes and almost all the [13]features found in
- GCC 2.95.
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [14]gnu@gnu.org. There
- are also [15]other ways to contact the FSF.
-
- These pages are maintained by [16]The GCC team.
-
-
- Please send comments on these web pages and GCC to our public
- mailing list at [17]gcc@gnu.org or [18]gcc@gcc.gnu.org, send other
- questions to [19]gnu@gnu.org.
-
- Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
- 330, Boston, MA 02111, USA.
-
- Verbatim copying and distribution of this entire article is permitted
- in any medium, provided this notice is preserved.
-
- Last modified 2002-11-11 [20]Valid XHTML 1.0
-
-References
-
- 1. http://www.netbsd.org/
- 2. http://gcc.gnu.org/news/reorder.html
- 3. http://gcc.gnu.org/news/ssa.html
- 4. http://gcc.gnu.org/news/null.html
- 5. http://gcc.gnu.org/news/unify.html
- 6. http://gcc.gnu.org/gcc-3.0/c++features.html
- 7. http://gcc.gnu.org/libstdc++/
- 8. http://gcc.gnu.org/news/inlining.html
- 9. http://gcc.gnu.org/news/dependencies.html
- 10. http://gcc.gnu.org/gcc-3.0/c99status.html
- 11. http://gcc.gnu.org/onlinedocs/g77/News.html
- 12. http://gcc.gnu.org/gcc-3.0/libgcc.html
- 13. http://gcc.gnu.org/gcc-2.95/features.html
- 14. mailto:gnu@gnu.org
- 15. http://www.gnu.org/home.html#ContactInfo
- 16. http://gcc.gnu.org/about.html
- 17. mailto:gcc@gnu.org
- 18. mailto:gcc@gcc.gnu.org
- 19. mailto:gnu@gnu.org
- 20. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/gcc-3.0/caveats.html
-
- GCC 3.0 Caveats
-
- * -fstrict-aliasing is now part of -O2 and higher optimization
- levels. This allows the compiler to assume the strictest aliasing
- rules applicable to the language being compiled. For C and C++,
- this activates optimizations based on the type of expressions.
- This optimization may thus break old, non-compliant code.
- * Enumerations are now properly promoted to int in function
- parameters and function returns. Normally this change is not
- visible, but when using -fshort-enums this is an ABI change.
- * The undocumented extension that allowed C programs to have a label
- at the end of a compound statement has been deprecated and may be
- removed in a future version. Programs that now generate a warning
- about this may be fixed by adding a null statement (a single
- semicolon) after the label.
- * The poorly documented extension that allowed string constants in
- C, C++ and Objective C to contain unescaped newlines has been
- deprecated and may be removed in a future version. Programs using
- this extension may be fixed in several ways: the bare newline may
- be replaced by \n, or preceded by \n\, or string concatenation may
- be used with the bare newline preceded by \n" and " placed at the
- start of the next line.
- * The Chill compiler is not included in GCC 3.0, because of the lack
- of a volunteer to convert it to use garbage collection.
- * Certain non-standard iostream methods from earlier versions of
- libstdc++ are not included in libstdc++ v3, i.e. filebuf::attach,
- ostream::form, and istream::gets. Here are workaround hints for:
- [1]ostream::form, [2]filebuf::attach.
- * The new C++ ABI is not yet fully supported by current (as of
- 2001-07-01) releases and development versions of GDB, or any
- earlier versions. There is a problem setting breakpoints by line
- number, and other related issues that have been fixed in GCC 3.0
- but not yet handled in GDB:
- [3]http://gcc.gnu.org/ml/gcc-bugs/2001-06/msg00421.html
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [4]gnu@gnu.org. There
- are also [5]other ways to contact the FSF.
-
- These pages are maintained by [6]The GCC team.
-
-
- Please send comments on these web pages and GCC to our public
- mailing list at [7]gcc@gnu.org or [8]gcc@gcc.gnu.org, send other
- questions to [9]gnu@gnu.org.
-
- Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
- 330, Boston, MA 02111, USA.
-
- Verbatim copying and distribution of this entire article is permitted
- in any medium, provided this notice is preserved.
-
- Last modified 2002-11-11 [10]Valid XHTML 1.0
-
-References
-
- 1. http://gcc.gnu.org/onlinedocs/libstdc++/21_strings/howto.html
- 2. http://gcc.gnu.org/onlinedocs/libstdc++/ext/howto.html
- 3. http://gcc.gnu.org/ml/gcc-bugs/2001-06/msg00421.html
- 4. mailto:gnu@gnu.org
- 5. http://www.gnu.org/home.html#ContactInfo
- 6. http://gcc.gnu.org/about.html
- 7. mailto:gcc@gnu.org
- 8. mailto:gcc@gcc.gnu.org
- 9. mailto:gnu@gnu.org
- 10. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/gcc-2.95/index.html
-
- GCC 2.95
-
- July 31, 1999: The GNU project and the GCC/EGCS developers are pleased
- to announce the release of GCC version 2.95. This is the first release
- of GCC since the April 1999 GCC/EGCS reunification and includes nearly
- a year's worth of new development and bugfixes.
-
- August 19, 1999: GCC version 2.95.1 has been released.
-
- October 27, 1999: GCC version 2.95.2 has been released.
-
- March 16, 2001: GCC version 2.95.3 has been released.
-
- GCC used to stand for the GNU C Compiler, but since the compiler
- supports several other languages aside from C, it now stands for the
- GNU Compiler Collection.
-
- The whole suite has been extensively [1]regression tested and
- [2]package tested. It should be reliable and suitable for widespread
- use.
-
- The compiler has several new optimizations, new targets, new languages
- and other new features. See the [3]new features page for a more
- complete list of new features found in the GCC 2.95 releases.
-
- The sources include installation instructions in both HTML and
- plaintext forms in the install directory in the distribution. However,
- the most up to date [4]installation instructions and [5]build/test
- status are on the web pages. We will update those pages as new
- information becomes available.
-
- The GCC developers would like to thank the numerous people that have
- contributed new features, test results, bugfixes, etc to GCC. This
- [6]amazing group of volunteers is what makes GCC successful.
-
- And finally, we can't in good conscience fail to mention some
- [7]caveats to using GCC 2.95.
-
- Download GCC 2.95 from the [8]GNU FTP server (ftp://ftp.gnu.org)
- [9]Find a GNU mirror site
- [10]Find a GCC mirror site
-
- For additional information about GCC please see the [11]GCC project
- web server or contact the [12]GCC development mailing list.
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [13]gnu@gnu.org. There
- are also [14]other ways to contact the FSF.
-
- These pages are maintained by [15]The GCC team.
-
-
- Please send comments on these web pages and GCC to our public
- mailing list at [16]gcc@gnu.org or [17]gcc@gcc.gnu.org, send other
- questions to [18]gnu@gnu.org.
-
- Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
- 330, Boston, MA 02111, USA.
-
- Verbatim copying and distribution of this entire article is permitted
- in any medium, provided this notice is preserved.
-
- Last modified 2002-11-11 [19]Valid XHTML 1.0
-
-References
-
- 1. http://gcc.gnu.org/gcc-2.95/regress.html
- 2. http://gcc.gnu.org/gcc-2.95/othertest.html
- 3. http://gcc.gnu.org/gcc-2.95/features.html
- 4. http://gcc.gnu.org/install/
- 5. http://gcc.gnu.org/gcc-2.95/buildstat.html
- 6. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
- 7. http://gcc.gnu.org/gcc-2.95/caveats.html
- 8. ftp://ftp.gnu.org/pub/gnu/gcc/
- 9. http://www.gnu.org/order/ftp.html
- 10. http://gcc.gnu.org/mirrors.html
- 11. http://gcc.gnu.org/index.html
- 12. mailto:gcc@gcc.gnu.org
- 13. mailto:gnu@gnu.org
- 14. http://www.gnu.org/home.html#ContactInfo
- 15. http://gcc.gnu.org/about.html
- 16. mailto:gcc@gnu.org
- 17. mailto:gcc@gcc.gnu.org
- 18. mailto:gnu@gnu.org
- 19. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/gcc-2.95/features.html
-
- GCC 2.95 New Features
-
- * General Optimizer Improvements:
- + [1]Localized register spilling to improve speed and code
- density especially on small register class machines.
- + [2]Global CSE using lazy code motion algorithms.
- + [3]Improved global constant/copy propagation.
- + [4]Improved control flow graph analysis and manipulation.
- + [5]Local dead store elimination.
- + [6]Memory Load hoisting/store sinking in loops.
- + [7]Type based alias analysis is enabled by default. Note this
- feature will expose bugs in the Linux kernel. Please refer to
- the [8]FAQ for additional information on this issue.
- + Major revamp of GIV detection, combination and simplification
- to improve loop performance.
- + Major improvements to register allocation and reloading.
- * New Languages and Language specific improvements
- + [9]Many C++ improvements.
- + [10]Many Fortran improvements.
- + [11]Java front-end has been integrated. [12]runtime library
- is available separately.
- + [13]ISO C99 support
- + [14]Chill front-end and runtime has been integrated.
- + Boehm garbage collector support in libobjc.
- + More support for various pragmas which appear in vendor
- include files
- * New Targets and Target Specific Improvements
- + [15]Sparc backend rewrite.
- + -mschedule=8000 will optimize code for PA8000 class
- processors; -mpa-risc-2-0 will generate code for PA2.0
- processors
- + Various micro-optimizations for the ia32 port. K6
- optimizations
- + Compiler will attempt to align doubles in the stack on the
- ia32 port
- + Alpha EV6 support
- + PowerPC 750
- + RS6000/PowerPC: -mcpu=401 was added as an alias for
- -mcpu=403. -mcpu=e603e was added to do -mcpu=603e and
- -msoft-float.
- + c3x, c4x
- + HyperSparc
- + SparcLite86x
- + sh4
- + Support for new systems (OpenBSD, FreeBSD, UWIN, Interix,
- arm-linux)
- + vxWorks targets include support for vxWorks threads
- + StrongARM 110 and ARM9 support added. ARM Scheduling
- parameters rewritten.
- + Various changes to the MIPS port to avoid assembler macros,
- which in turn improves performance
- + Various performance improvements to the i960 port.
- + Major rewrite of ns32k port
- * Other significant improvements
- + [16]Ability to dump cfg information and display it using vcg.
- + The new faster scheme for fixing vendor header files is
- enabled by default.
- + Experimental internationalization support.
- + multibyte character support
- + Some compile-time speedups for pathological problems
- + Better support for complex types
- * Plus the usual mountain of bugfixes
- * Core compiler is based on the gcc2 development tree from Sept 30,
- 1998, so we have all of the [17]features found in GCC 2.8.
-
-Additional Changes in GCC 2.95.1
-
- * Generic bugfixes and improvements
- + Various documentation fixes related to the GCC/EGCS merger.
- + Fix memory management bug which could lead to spurious
- aborts, core dumps or random parsing errors in the compiler.
- + Fix a couple bugs in the dwarf1 and dwarf2 debug record
- support.
- + Fix infinite loop in the CSE optimizer.
- + Avoid undefined behavior in compiler FP emulation code
- + Fix install problem when prefix is overridden on the make
- install command.
- + Fix problem with unwanted installation of assert.h on some
- systems.
- + Fix problem with finding the wrong assembler in a single tree
- build.
- + Avoid increasing the known alignment of a register that is
- already known to be a pointer.
- * Platform specific bugfixes and improvements
- + Codegen bugfix for prologue/epilogue for cpu32 target.
- + Fix long long code generation bug for the Coldfire target.
- + Fix various aborts in the SH compiler.
- + Fix bugs in libgcc support library for the SH.
- + Fix alpha ev6 code generation bug.
- + Fix problems with EXIT_SUCCESS/EXIT_FAILURE redefinitions on
- AIX platforms.
- + Fix -fpic code generation bug for rs6000/ppc svr4 targets.
- + Fix varargs/stdarg code generation bug for rs6000/ppc svr4
- targets.
- + Fix weak symbol handling for rs6000/ppc svr4 targets.
- + Fix various problems with 64bit code generation for the
- rs6000/ppc port.
- + Fix codegen bug which caused tetex to be mis-compiled on the
- x86.
- + Fix compiler abort in new cfg code exposed by x86 port.
- + Fix out of range array reference in code convert flat
- registers to the x87 stacked FP register file.
- + Fix minor vxworks configuration bug.
- + Fix return type of bsearch for SunOS 4.x.
- * Language & Runtime specific fixes.
- + The G++ signature extension has been deprecated. It will be
- removed in the next major release of G++. Use of signatures
- will result in a warning from the compiler.
- + Several bugs relating to templates and namespaces were fixed.
- + A bug that caused crashes when combining templates with -g on
- DWARF1 platforms was fixed.
- + Pointers-to-members, virtual functions, and multiple
- inheritance should now work together correctly.
- + Some code-generation bugs relating to function try blocks
- were fixed.
- + G++ is a little bit more lenient with certain archaic
- constructs than in GCC 2.95.
- + Fix to prevent shared library version #s from bring truncated
- to 1 digit
- + Fix missing std:: in the libstdc++ library.
- + Fix stream locking problems in libio.
- + Fix problem in java compiler driver.
-
-Additional Changes in GCC 2.95.2
-
- The -fstrict-aliasing is not enabled by default for GCC 2.95.2. While
- the optimizations performed by -fstrict-aliasing are valid according
- to the C and C++ standards, the optimization have caused some
- problems, particularly with old non-conforming code.
-
- The GCC developers are experimenting with ways to warn users about
- code which violates the C/C++ standards, but those warnings are not
- ready for widespread use at this time. Rather than wait for those
- warnings the GCC developers have chosen to disable -fstrict-aliasing
- by default for the GCC 2.95.2 release.
-
- We strongly encourage developers to find and fix code which violates
- the C/C++ standards as -fstrict-aliasing may be enabled by default in
- future releases. Use the option -fstrict-aliasing to re-enable these
- optimizations.
- * Generic bugfixes and improvements
- + Fix incorrectly optimized memory reference in global common
- subexpression elimination (GCSE) optimization pass.
- + Fix code generation bug in regmove.c in which it could
- incorrectly change a "const" value.
- + Fix bug in optimization of conditionals involving volatile
- memory references.
- + Avoid over-allocation of stack space for some procedures.
- + Fixed bug in the compiler which caused incorrect optimization
- of an obscure series of bit manipulations, shifts and
- arithmetic.
- + Fixed register allocator bug which caused teTeX to be
- mis-compiled on Sparc targets.
- + Avoid incorrect optimization of degenerate case statements
- for certain targets such as the ARM.
- + Fix out of range memory reference in the jump optimizer.
- + Avoid dereferencing null pointer in fix-header.
- + Fix test for GCC specific features so that it is possible to
- bootstrap with gcc-2.6.2 and older versions of GCC.
- + Fix typo in scheduler which could potentially cause out of
- range memory accesses.
- + Avoid incorrect loop reversal which caused incorrect code for
- certain loops on PowerPC targets.
- + Avoid incorrect optimization of switch statements on certain
- targets (for example the ARM).
- * Platform specific bugfixes and improvements
- + Work around bug in Sun V5.0 compilers which caused bootstrap
- comparison failures on Sparc targets.
- + Fix Sparc backend bug which caused aborts in final.c.
- + Fix sparc-hal-solaris2* configuration fragments.
- + Fix bug in sparc block profiling.
- + Fix obscure code generation bug for the PARISC targets.
- + Define __STDC_EXT__ for HPUX configurations.
- + Various POWERPC64 code generation bugfixes.
- + Fix abort for PPC targets using ELF (ex GNU/Linux).
- + Fix collect2 problems for AIX targets.
- + Correct handling of .file directive for PPC targets.
- + Fix bug in fix_trunc x86 patterns.
- + Fix x86 port to correctly pop the FP stack for functions that
- return structures in memory.
- + Fix minor bug in strlen x86 pattern.
- + Use stabs debugging instead of dwarf1 for x86-solaris
- targets.
- + Fix template repository code to handle leading underscore in
- mangled names.
- + Fix weak/weak alias support for OpenBSD.
- + GNU/Linux for the ARM has C++ compatible include files.
- * Language & Runtime specific fixes.
- + Fix handling of constructor attribute in the C front-end
- which caused problems building the Chill runtime library on
- some targets.
- + Fix minor problem merging type qualifiers in the C front-end.
- + Fix aliasing bug for pointers and references (C/C++).
- + Fix incorrect "non-constant initializer bug" when
- -traditional or -fwritable-strings is enabled.
- + Fix build error for Chill front-end on SunOS.
- + Do not complain about duplicate instantiations when using
- -frepo (C++).
- + Fix array bounds handling in C++ front-end which caused
- problems with dwarf debugging information in some
- circumstances.
- + Fix minor namespace problem.
- + Fix problem linking java programs.
-
-Additional Changes in GCC 2.95.3
-
- * Generic bugfixes and improvements
- + Fix numerous problems that caused incorrect optimization in
- the register reloading code.
- + Fix numerous problems that caused incorrect optimization in
- the loop optimizer.
- + Fix aborts in the functions build_insn_chain and scan_loops
- under some circumstances.
- + Fix an alias analysis bug.
- + Fix an infinite compilation bug in the combiner.
- + A few problems with complex number support have been fixed.
- + It is no longer possible for gcc to act as a fork bomb when
- installed incorrectly.
- + The -fpack-struct option should be recognized now.
- + Fixed a bug that caused incorrect code to be generated due to
- a lost stack adjustment.
- * Platform specific bugfixes and improvements
- + Support building ARM toolchains hosted on Windows.
- + Fix attribute calculations in ARM toolchains.
- + arm-linux support has been improved.
- + Fix a PIC failure on sparc targets.
- + On ix86 targets, the regparm attribute should now work
- reliably.
- + Several updates for the h8300 port.
- + Fix problem building libio with glibc 2.2.
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [18]gnu@gnu.org. There
- are also [19]other ways to contact the FSF.
-
- These pages are maintained by [20]The GCC team.
-
-
- Please send comments on these web pages and GCC to our public
- mailing list at [21]gcc@gnu.org or [22]gcc@gcc.gnu.org, send other
- questions to [23]gnu@gnu.org.
-
- Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
- 330, Boston, MA 02111, USA.
-
- Verbatim copying and distribution of this entire article is permitted
- in any medium, provided this notice is preserved.
-
- Last modified 2002-11-11 [24]Valid XHTML 1.0
-
-References
-
- 1. http://gcc.gnu.org/news/spill.html
- 2. http://gcc.gnu.org/news/lcm.html
- 3. http://gcc.gnu.org/news/cprop.html
- 4. http://gcc.gnu.org/news/cfg.html
- 5. http://gcc.gnu.org/news/dse.html
- 6. http://gcc.gnu.org/news/hoist.html
- 7. http://gcc.gnu.org/news/alias.html
- 8. http://gcc.gnu.org/fom_serv/cache/24.html
- 9. http://gcc.gnu.org/gcc-2.95/c++features.html
- 10. http://gcc.gnu.org/onlinedocs/g77/News.html
- 11. http://gcc.gnu.org/java/gcj-announce.txt
- 12. http://gcc.gnu.org/news/javaannounce.html
- 13. http://gcc.gnu.org/c99status.html
- 14. http://gcc.gnu.org/news/chill.html
- 15. http://gcc.gnu.org/news/sparc.html
- 16. http://gcc.gnu.org/news/egcs-vcg.html
- 17. http://gcc.gnu.org/egcs-1.0/features-2.8.html
- 18. mailto:gnu@gnu.org
- 19. http://www.gnu.org/home.html#ContactInfo
- 20. http://gcc.gnu.org/about.html
- 21. mailto:gcc@gnu.org
- 22. mailto:gcc@gcc.gnu.org
- 23. mailto:gnu@gnu.org
- 24. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/gcc-2.95/caveats.html
-
- GCC 2.95 Caveats
-
- * GCC 2.95 will issue an error for invalid asm statements that had
- been silently accepted by earlier versions of the compiler. This
- is particularly noticeable when compiling older versions of the
- Linux kernel (2.0.xx). Please refer to the [1]FAQ for more
- information on this issue.
- * GCC 2.95 implements type based alias analysis to disambiguate
- memory references. Some programs, particularly the Linux kernel
- violate ANSI/ISO aliasing rules and therefore may not operate
- correctly when compiled with GCC 2.95. Please refer to the [2]FAQ
- for more information on this issue.
- * GCC 2.95 has a known bug in its handling of complex variables for
- 64bit targets. Instead of silently generating incorrect code, GCC
- 2.95 will issue a fatal error for situations it can not handle.
- This primarily affects the Fortran community as Fortran makes more
- use of complex variables than C or C++.
- * GCC 2.95 has an integrated libstdc++, but does not have an
- integrated libg++. Furthermore old libg++ releases will not work
- with GCC 2.95. You can retrieve a recent copy of libg++ from the
- [3]GCC ftp server.
- Note most C++ programs only need libstdc++.
- * Exception handling may not work with shared libraries,
- particularly on alphas, hppas, rs6000/powerpc and mips based
- platforms. Exception handling is known to work on x86 GNU/Linux
- platforms with shared libraries.
- * In general, GCC 2.95 is more rigorous about rejecting invalid C++
- code or deprecated C++ constructs than G++ 2.7, G++ 2.8, EGCS 1.0,
- or EGCS 1.1. As a result it may be necessary to fix C++ code
- before it will compile with GCC 2.95.
- * G++ is also converting toward the ISO C++ standard; as a result
- code which was previously valid (and thus accepted by other
- compilers and older versions of g++) may no longer be accepted.
- The flag -fpermissive may allow some non-conforming code to
- compile with GCC 2.95.
- * GCC 2.95 compiled C++ code is not binary compatible with EGCS
- 1.1.x, EGCS 1.0.x or GCC 2.8.x.
- * GCC 2.95 does not have changes from the GCC 2.8 tree that were
- made between Sept 30, 1998 and April 30, 1999 (the official end of
- the GCC 2.8 project). Future GCC releases will include all the
- changes from the defunct GCC 2.8 sources.
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [4]gnu@gnu.org. There
- are also [5]other ways to contact the FSF.
-
- These pages are maintained by [6]The GCC team.
-
-
- Please send comments on these web pages and GCC to our public
- mailing list at [7]gcc@gnu.org or [8]gcc@gcc.gnu.org, send other
- questions to [9]gnu@gnu.org.
-
- Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
- 330, Boston, MA 02111, USA.
-
- Verbatim copying and distribution of this entire article is permitted
- in any medium, provided this notice is preserved.
-
- Last modified 2002-11-11 [10]Valid XHTML 1.0
-
-References
-
- 1. http://gcc.gnu.org/faq.html#asmclobber
- 2. http://gcc.gnu.org/fom_serv/cache/24.html
- 3. ftp://gcc.gnu.org/pub/gcc/infrastructure/libg++-2.8.1.3.tar.gz
- 4. mailto:gnu@gnu.org
- 5. http://www.gnu.org/home.html#ContactInfo
- 6. http://gcc.gnu.org/about.html
- 7. mailto:gcc@gnu.org
- 8. mailto:gcc@gcc.gnu.org
- 9. mailto:gnu@gnu.org
- 10. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/egcs-1.1/index.html
-
- EGCS 1.1
-
- September 3, 1998: We are pleased to announce the release of EGCS 1.1.
- December 1, 1998: We are pleased to announce the release of EGCS
- 1.1.1.
- March 15, 1999: We are pleased to announce the release of EGCS 1.1.2.
-
- EGCS is a free software project to further the development of the GNU
- compilers using an open development environment.
-
- EGCS 1.1 is a major new release of the EGCS compiler system. It has
- been [1]extensively tested and is believed to be stable and suitable
- for widespread use.
-
- EGCS 1.1 is based on an June 6, 1998 snapshot of the GCC 2.8
- development sources; it contains all of the new features found in GCC
- 2.8.1 as well as all new development from GCC up to June 6, 1998.
-
- EGCS 1.1 also contains many improvements and features not found in GCC
- or in older versions of EGCS:
- * Global common subexpression elimination and global constant/copy
- propagation (aka [2]gcse)
- * Ongoing improvements to the [3]alias analysis support to allow for
- better optimizations throughout the compiler.
- * Vastly improved [4]C++ compiler and integrated C++ runtime
- libraries.
- * Fixes for the /tmp symlink race security problems.
- * New targets including mips16, arm-thumb and 64 bit PowerPC.
- * Improvements to GNU Fortran (g77) compiler and runtime library
- made since g77 version 0.5.23.
-
- See the [5]new features page for a more complete list of new features
- found in EGCS 1.1 releases.
-
- EGCS 1.1.1 is a minor update to fix several serious problems in EGCS
- 1.1:
- * General improvements and fixes
- + Avoid some stack overflows when compiling large functions.
- + Avoid incorrect loop invariant code motions.
- + Fix some core dumps on Linux kernel code.
- + Bring back the imake -Di386 and friends fix from EGCS 1.0.2.
- + Fix code generation problem in gcse.
- + Various documentation related fixes.
- * g++/libstdc++ improvements and fixes
- + MT safe EH fix for setjmp/longjmp based exception handling.
- + Fix a few bad interactions between optimization and exception
- handling.
- + Fixes for demangling of template names starting with "__".
- + Fix a bug that would fail to run destructors in some cases
- with -O2.
- + Fix 'new' of classes with virtual bases.
- + Fix crash building Qt on the Alpha.
- + Fix failure compiling WIFEXITED macro on GNU/Linux.
- + Fix some -frepo failures.
- * g77 and libf2c improvements and fixes
- + Various documentation fixes.
- + Avoid compiler crash on RAND intrinsic.
- + Fix minor bugs in makefiles exposed by BSD make programs.
- + Define _XOPEN_SOURCE for libI77 build to avoid potential
- problems on some 64-bit systems.
- + Fix problem with implicit endfile on rewind.
- + Fix spurious recursive I/O errors.
- * platform specific improvements and fixes
- + Match all versions of UnixWare7.
- + Do not assume x86 SVR4 or UnixWare targets can handle stabs.
- + Fix PPC/RS6000 LEGITIMIZE_ADDRESS macro and bug in conversion
- from unsigned ints to double precision floats.
- + Fix ARM ABI issue with NetBSD.
- + Fix a few arm code generation bugs.
- + Fixincludes will fix additional broken SCO OpenServer header
- files.
- + Fix a m68k backend bug which caused invalid offsets in reg+d
- addresses.
- + Fix problems with 64bit AIX 4.3 support.
- + Fix handling of long longs for varargs/stdarg functions on
- the ppc.
- + Minor fixes to CPP predefines for Windows.
- + Fix code generation problems with gpr<->fpr copies for 64bit
- ppc.
- + Fix a few coldfire code generation bugs.
- + Fix some more header file problems on SunOS 4.x.
- + Fix assert.h handling for RTEMS.
- + Fix Windows handling of TREE_SYMBOL_REFERENCED.
- + Fix x86 compiler abort in reg-stack pass.
- + Fix cygwin/windows problem with section attributes.
- + Fix Alpha code generation problem exposed by SMP Linux
- kernels.
- + Fix typo in m68k 32->64bit integer conversion.
- + Make sure target libraries build with -fPIC for PPC & Alpha
- targets.
-
- EGCS 1.1.2 is a minor update to fix several serious problems in EGCS
- 1.1.1:
- * General improvements and fixes
- + Fix bug in loop optimizer which caused the SPARC (and
- potentially other) ports to segfault.
- + Fix infinite recursion in alias analysis and combiner code.
- + Fix bug in regclass preferencing.
- + Fix incorrect loop reversal which caused incorrect code to be
- generated for several targets.
- + Fix return value for builtin memcpy.
- + Reduce compile time for certain loops which exposed quadratic
- behavior in the loop optimizer.
- + Fix bug which caused volatile memory to be written multiple
- times when only one write was needed/desired.
- + Fix compiler abort in caller-save.c
- + Fix combiner bug which caused incorrect code generation for
- certain division by constant operations.
- + Fix incorrect code generation due to a bug in range check
- optimizations.
- + Fix incorrect code generation due to mis-handling of
- clobbered values in CSE.
- + Fix compiler abort/segfault due to incorrect register
- splitting when unrolling loops.
- + Fix code generation involving autoincremented addresses with
- ternary operators.
- + Work around bug in the scheduler which caused qt to be
- mis-compiled on some platforms.
- + Fix code generation problems with -fshort-enums.
- + Tighten security for temporary files.
- + Improve compile time for codes which make heavy use of
- overloaded functions.
- + Fix multiply defined constructor/destructor symbol problems.
- + Avoid setting bogus RPATH environemnt variable during
- bootstrap.
- + Avoid GNU-make dependencies in the texinfo subdir.
- + Install CPP wrapper script in $(prefix)/bin if --enable-cpp.
- --enable-cpp=<dirname> can be used to specify an additional
- install directory for the cpp wrapper script.
- + Fix CSE bug which caused incorrect label-label refs to appear
- on some platforms.
- + Avoid linking in EH routines from libgcc if they are not
- needed.
- + Avoid obscure bug in aliasing code.
- + Fix bug in weak symbol handling.
- * Platform-specific improvements and fixes
- + Fix detection of PPro/PII on Unixware 7.
- + Fix compiler segfault when building spec99 and other programs
- for SPARC targets.
- + Fix code-generation bugs for integer and floating point
- conditional move instructions on the PPro/PII.
- + Use fixincludes to fix byteorder problems on i?86-*-sysv.
- + Fix build failure for the arc port.
- + Fix floating point format configuration for i?86-gnu port.
- + Fix problems with hppa1.0-hp-hpux10.20 configuration when
- threads are enabled.
- + Fix coldfire code generation bugs.
- + Fix "unrecognized insn" problems for Alpha and PPC ports.
- + Fix h8/300 code generation problem with floating point values
- in memory.
- + Fix unrecognized insn problems for the m68k port.
- + Fix namespace-pollution problem for the x86 port.
- + Fix problems with old assembler on x86 NeXT systems.
- + Fix PIC code-generation problems for the SPARC port.
- + Fix minor bug with LONG_CALLS in PowerPC SVR4 support.
- + Fix minor ISO namespace violation in Alpha varargs/stdarg
- support.
- + Fix incorrect "braf" instruction usage for the SH port.
- + Fix minor bug in va-sh which prevented its use with -ansi.
- + Fix problems recognizing and supporting FreeBSD.
- + Handle OpenBSD systems correctly.
- + Minor fixincludes fix for Digital UNIX 4.0B.
- + Fix problems with ctors/dtors in SCO shared libraries.
- + Abort instead of generating incorrect code for PPro/PII
- floating point conditional moves.
- + Avoid multiply defined symbols on Linux/GNU systems using
- libc-5.4.xx.
- + Fix abort in alpha compiler.
- * Fortran-specific fixes
- + Fix the IDate intrinsic (VXT) (in libg2c) so the returned
- year is in the documented, non-Y2K-compliant range of 0-99,
- instead of being returned as 100 in the year 2000.
- + Fix the `Date_and_Time' intrinsic (in libg2c) to return the
- milliseconds value properly in Values(8).
- + Fix the `LStat' intrinsic (in libg2c) to return device-ID
- information properly in SArray(7).
-
- Each release includes installation instructions in both HTML and
- plaintext forms (see the INSTALL directory in the toplevel directory
- of the distribution). However, we also keep the most up to date
- [6]installation instructions and [7]build/test status on our web page.
- We will update those pages as new information becomes available.
-
- The EGCS project would like to thank the numerous people that have
- contributed new features, test results, bugfixes, etc. This [8]amazing
- group of volunteers is what makes EGCS successful.
-
- And finally, we can't in good conscience fail to mention some
- [9]caveats to using EGCS 1.1.
-
- Download EGCS from egcs.cygnus.com (USA California).
-
- The EGCS 1.1 release is also available on many mirror sites.
- [10]Goto mirror list to find a closer site.
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [11]gnu@gnu.org. There
- are also [12]other ways to contact the FSF.
-
- These pages are maintained by [13]The GCC team.
-
-
- Please send comments on these web pages and GCC to our public
- mailing list at [14]gcc@gnu.org or [15]gcc@gcc.gnu.org, send other
- questions to [16]gnu@gnu.org.
-
- Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
- 330, Boston, MA 02111, USA.
-
- Verbatim copying and distribution of this entire article is permitted
- in any medium, provided this notice is preserved.
-
- Last modified 2002-11-11 [17]Valid XHTML 1.0
-
-References
-
- 1. http://gcc.gnu.org/egcs-1.1/egcs-1.1-test.html
- 2. http://gcc.gnu.org/news/gcse.html
- 3. http://gcc.gnu.org/news/alias.html
- 4. http://gcc.gnu.org/egcs-1.1/c++features.html
- 5. http://gcc.gnu.org/egcs-1.1/features.html
- 6. http://gcc.gnu.org/install/
- 7. http://gcc.gnu.org/egcs-1.1/buildstat.html
- 8. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
- 9. http://gcc.gnu.org/egcs-1.1/caveats.html
- 10. http://gcc.gnu.org/mirrors.html
- 11. mailto:gnu@gnu.org
- 12. http://www.gnu.org/home.html#ContactInfo
- 13. http://gcc.gnu.org/about.html
- 14. mailto:gcc@gnu.org
- 15. mailto:gcc@gcc.gnu.org
- 16. mailto:gnu@gnu.org
- 17. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/egcs-1.1/features.html
-
- EGCS 1.1 new features
-
- * Integrated GNU Fortran (g77) compiler and runtime library with
- improvements, based on [1]g77 version 0.5.23.
- * Vast improvements in the C++ compiler; so many they have [2]page
- of their own!
- * Compiler implements [3]global common subexpression elimination and
- global copy/constant propagation.
- * More major improvements in the [4]alias analysis code.
- * More major improvements in the exception handling code to improve
- performance, lower static overhead and provide the infrastructure
- for future improvements.
- * The infamous /tmp symlink race security problems have been fixed.
- * The regmove optimization pass has been nearly completely rewritten
- to improve performance of generated code.
- * The compiler now recomputes register usage information before
- local register allocation. By providing more accurate information
- to the priority based allocator, we get better register
- allocation.
- * The register reloading phase of the compiler optimizes spill code
- much better than in previous releases.
- * Some bad interactions between the register allocator and
- instruction scheduler have been fixed, resulting in much better
- code for certain programs. Additionally, we have tuned the
- scheduler in various ways to improve performance of generated code
- for some architectures.
- * The compiler's branch shortening algorithms have been
- significantly improved to work better on targets which align jump
- targets.
- * The compiler now supports -Os to prefer optimizing for code space
- over optimizing for code speed.
- * The compiler will now totally eliminate library calls which
- compute constant values. This primarily helps targets with no
- integer div/mul support and targets without floating point
- support.
- * The compiler now supports an extensive "--help" option.
- * cpplib has been greatly improved and may be suitable for limited
- use.
- * Memory footprint for the compiler has been significantly reduced
- for some pathological cases.
- * The time to build EGCS has been improved for certain targets
- (particularly the alpha and mips platforms).
- * Many infrastructure improvements throughout the compiler, plus the
- usual mountain of bugfixes and minor improvements.
- * Target dependent improvements:
- + SPARC port now includes V8 plus and V9 support as well as
- performance tuning for Ultra class machines. The SPARC port
- now uses the Haifa scheduler.
- + Alpha port has been tuned for the EV6 processor and has an
- optimized expansion of memcpy/bzero. The Alpha port now uses
- the Haifa scheduler.
- + RS6000/PowerPC: EGCS 1.1 includes support for the Power64
- architecture and aix4.3 support. The RS6000/PowerPC port now
- uses the Haifa scheduler.
- + x86: Alignment of static store data and jump targets is per
- Intel recommendations now. Various improvements throughout
- the x86 port to improve performance on Pentium processors.
- Conditional move support has been fixed and enabled for PPro
- processors. The x86 port also better supports 64bit
- operations now.
- + MIPS has improved multiply/multiply-add support and now
- includes mips16 ISA support.
- + M68k has many micro-optimizations and Coldfire fixes.
- * Core compiler is based on the GCC development tree from June 9,
- 1998, so we have all of the [5]features found in GCC 2.8.
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [6]gnu@gnu.org. There
- are also [7]other ways to contact the FSF.
-
- These pages are maintained by [8]The GCC team.
-
-
- Please send comments on these web pages and GCC to our public
- mailing list at [9]gcc@gnu.org or [10]gcc@gcc.gnu.org, send other
- questions to [11]gnu@gnu.org.
-
- Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
- 330, Boston, MA 02111, USA.
-
- Verbatim copying and distribution of this entire article is permitted
- in any medium, provided this notice is preserved.
-
- Last modified 2002-11-11 [12]Valid XHTML 1.0
-
-References
-
- 1. http://gcc.gnu.org/onlinedocs/g77/News.html
- 2. http://gcc.gnu.org/egcs-1.1/c++features.html
- 3. http://gcc.gnu.org/news/gcse.html
- 4. http://gcc.gnu.org/news/alias.html
- 5. http://gcc.gnu.org/egcs-1.0/features-2.8.html
- 6. mailto:gnu@gnu.org
- 7. http://www.gnu.org/home.html#ContactInfo
- 8. http://gcc.gnu.org/about.html
- 9. mailto:gcc@gnu.org
- 10. mailto:gcc@gcc.gnu.org
- 11. mailto:gnu@gnu.org
- 12. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/egcs-1.1/caveats.html
-
- EGCS 1.1 Caveats
-
- * EGCS has an integrated libstdc++, but does not have an integrated
- libg++. Furthermore old libg++ releases will not work with EGCS;
- HJ Lu has made a libg++-2.8.1.2 snapshot available which may work
- with EGCS.
- Note most C++ programs only need libstdc++.
- * Exception handling may not work with shared libraries,
- particularly on alphas, hppas, rs6000/powerpc and mips based
- platforms. Exception handling is known to work on x86-linux
- platforms with shared libraries.
- * Some versions of the Linux kernel have bugs which prevent them
- from being compiled or from running when compiled by EGCS. See
- [1]the FAQ for additional information.
- * In general, EGCS is more rigorous about rejecting invalid C++ code
- or deprecated C++ constructs than g++-2.7, g++-2.8 or EGCS 1.0. As
- a result it may be necessary to fix C++ code before it will
- compile with EGCS.
- * G++ is also converting toward the ISO C++ standard; as a result
- code which was previously valid (and thus accepted by other
- compilers and older versions of g++) may no longer be accepted.
- * EGCS 1.1 compiled C++ code is not binary compatible with EGCS
- 1.0.x or GCC 2.8.x due to changes necessary to support thread safe
- exception handling.
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [2]gnu@gnu.org. There
- are also [3]other ways to contact the FSF.
-
- These pages are maintained by [4]The GCC team.
-
-
- Please send comments on these web pages and GCC to our public
- mailing list at [5]gcc@gnu.org or [6]gcc@gcc.gnu.org, send other
- questions to [7]gnu@gnu.org.
-
- Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
- 330, Boston, MA 02111, USA.
-
- Verbatim copying and distribution of this entire article is permitted
- in any medium, provided this notice is preserved.
-
- Last modified 2002-11-11 [8]Valid XHTML 1.0
-
-References
-
- 1. http://gcc.gnu.org/fom_serv/cache/24.html
- 2. mailto:gnu@gnu.org
- 3. http://www.gnu.org/home.html#ContactInfo
- 4. http://gcc.gnu.org/about.html
- 5. mailto:gcc@gnu.org
- 6. mailto:gcc@gcc.gnu.org
- 7. mailto:gnu@gnu.org
- 8. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/egcs-1.0/egcs-1.0.3.html
-
- EGCS 1.0.3
-
- May 15, 1998
-
- We are pleased to announce the release of EGCS 1.0.3.
-
- EGCS is a collaborative effort involving several groups of hackers
- using an open development model to accelerate development and testing
- of GNU compilers and runtime libraries.
-
- EGCS 1.0.3 is a minor update to the EGCS 1.0.2 compiler to fix a few
- problems reported by Red Hat for builds of Red Hat 5.1.
- * Generic bugfixes:
- + Fix a typo in the libio library which resulted in incorrect
- behavior of istream::get.
- + Fix the Fortran negative array index problem.
- + Fix a major problem with the ObjC runtime thread support
- exposed by glibc2.
- + Reduce memory consumption of the Haifa scheduler.
- * Target specific bugfixes:
- + Fix one x86 floating point code generation bug exposed by
- glibc2 builds.
- + Fix one x86 internal compiler error exposed by glibc2 builds.
- + Fix profiling bugs on the Alpha.
- + Fix ImageMagick & emacs 20.2 build problems on the Alpha.
- + Fix rs6000/ppc bug when converting values from integer types
- to floating point types.
-
- An important goal of EGCS is to allow wide scale testing of new
- features and optimizations which are still under development. However,
- EGCS has been carefully tested and should be comparable in quality to
- most GCC releases.
-
- EGCS 1.0.3 is based on an August 2, 1997 snapshot of the GCC 2.8
- development sources; it contains nearly all of the new features found
- in GCC 2.8.
-
- EGCS also contains many improvements and features not found in GCC 2.7
- or GCC 2.8.
- * Integrated C++ runtime libraries, including support for most major
- GNU/Linux systems!
- * The integrated libstdc++ library includes a verbatim copy of SGI's
- STL release instead of a modified copy.
- * Integrated GNU Fortran compiler.
- * New instruction scheduler.
- * New alias analysis code.
-
- See the [1]new features page for a more complete list of new features
- found in EGCS 1.0.x releases.
-
- The EGCS 1.0.3 release includes installation instructions in both HTML
- and plaintext forms (see the INSTALL directory in the toplevel
- directory of the EGCS 1.0.3 distribution). However, we also keep the
- most up to date [2]installation instructions and [3]build/test status
- on our web page. We will update those pages as new information becomes
- available.
-
- And, we can't in good conscience fail to mention some [4]caveats to
- using EGCS.
-
- Update: Big thanks to Stanford for providing a high speed link for
- downloading EGCS (go.cygnus.com)!
-
- Download EGCS from ftp.cygnus.com (USA California) or go.cygnus.com
- (USA California -- High speed link provided by Stanford).
-
- The EGCS 1.0.3 release is also available on many mirror sites.
- [5]Goto mirror list to find a closer site
-
- We'd like to thank the numerous people that have contributed new
- features, test results, bugfixes, etc. Unfortunately, they're far too
- numerous to mention by name.
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [6]gnu@gnu.org. There
- are also [7]other ways to contact the FSF.
-
- These pages are maintained by [8]The GCC team.
-
-
- Please send comments on these web pages and GCC to our public
- mailing list at [9]gcc@gnu.org or [10]gcc@gcc.gnu.org, send other
- questions to [11]gnu@gnu.org.
-
- Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
- 330, Boston, MA 02111, USA.
-
- Verbatim copying and distribution of this entire article is permitted
- in any medium, provided this notice is preserved.
-
- Last modified 2002-11-11 [12]Valid XHTML 1.0
-
-References
-
- 1. http://gcc.gnu.org/egcs-1.0/features.html
- 2. http://gcc.gnu.org/install/
- 3. http://gcc.gnu.org/egcs-1.0/buildstat.html
- 4. http://gcc.gnu.org/egcs-1.0/caveats.html
- 5. http://gcc.gnu.org/mirrors.html
- 6. mailto:gnu@gnu.org
- 7. http://www.gnu.org/home.html#ContactInfo
- 8. http://gcc.gnu.org/about.html
- 9. mailto:gcc@gnu.org
- 10. mailto:gcc@gcc.gnu.org
- 11. mailto:gnu@gnu.org
- 12. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/egcs-1.0/egcs-1.0.2.html
-
- EGCS 1.0.2
-
- March 16, 1998
-
- We are pleased to announce the release of EGCS 1.0.2.
-
- EGCS is a collaborative effort involving several groups of hackers
- using an open development model to accelerate development and testing
- of GNU compilers and runtime libraries.
-
- EGCS 1.0.2 is a minor update to the EGCS 1.0.1 compiler to fix several
- serious problems in EGCS 1.0.1.
- * General improvements and fixes
- + Memory consumption significantly reduced, especially for
- templates and inline functions.
- + Fix various problems with glibc2.1.
- + Fix loop optimization bug exposed by rs6000/ppc port.
- + Fix to avoid potential code generation problems in jump.c.
- + Fix some undefined symbol problems in dwarf1 debug support.
- * g++/libstdc++ improvements and fixes
- + libstdc++ in the EGCS release has been updated and should be
- link compatible with libstdc++-2.8.
- + Various fixes in libio/libstdc++ to work better on Linux
- systems.
- + Fix problems with duplicate symbols on systems that do not
- support weak symbols.
- + Memory corruption bug and undefined symbols in bastring have
- been fixed.
- + Various exception handling fixes.
- + Fix compiler abort for very long thunk names.
- * g77 improvements and fixes
- + Fix compiler crash for omitted bound in Fortran CASE
- statement.
- + Add missing entries to g77 lang-options.
- + Fix problem with -fpedantic in the g77 compiler.
- + Fix "backspace" problem with g77 on alphas.
- + Fix x86 backend problem with Fortran literals and -fpic.
- + Fix some of the problems with negative subscripts for g77 on
- alphas.
- + Fixes for Fortran builds on cygwin32/mingw32.
- * platform specific improvements and fixes
- + Fix long double problems on x86 (exposed by glibc).
- + x86 ports define i386 again to keep imake happy.
- + Fix exception handling support on NetBSD ports.
- + Several changes to collect2 to fix many problems with AIX.
- + Define __ELF__ for rs6000/linux.
- + Fix -mcall-linux problem on rs6000/linux.
- + Fix stdarg/vararg problem for rs6000/linux.
- + Allow autoconf to select a proper install problem on AIX 3.1.
- + m68k port support includes -mcpu32 option as well as cpu32
- multilibs.
- + Fix stdarg bug for irix6.
- + Allow EGCS to build on irix5 without the gnu assembler.
- + Fix problem with static linking on sco5.
- + Fix bootstrap on sco5 with native compiler.
- + Fix for abort building newlib on H8 target.
- + Fix fixincludes handling of math.h on SunOS.
- + Minor fix for motorola 3300 m68k systems.
-
- An important goal of EGCS is to allow wide scale testing of new
- features and optimizations which are still under development. However,
- EGCS has been carefully tested and should be comparable in quality to
- most GCC releases.
-
- EGCS 1.0.2 is based on an August 2, 1997 snapshot of the GCC 2.8
- development sources; it contains nearly all of the new features found
- in GCC 2.8.
-
- EGCS also contains many improvements and features not found in GCC 2.7
- or GCC 2.8.
- * Integrated C++ runtime libraries, including support for most major
- linux systems!
- * The integrated libstdc++ library includes a verbatim copy of SGI's
- STL release.
- * Integrated GNU Fortran compiler.
- * New instruction scheduler.
- * New alias analysis code.
-
- See the [1]new features page for a more complete list of new features
- found in EGCS 1.0.x releases.
-
- The EGCS 1.0.2 release includes installation instructions in both HTML
- and plaintext forms (see the INSTALL directory in the toplevel
- directory of the EGCS 1.0.2 distribution). However, we also keep the
- most up to date [2]installation instructions and [3]build/test status
- on our web page. We will update those pages as new information becomes
- available.
-
- And, we can't in good conscience fail to mention some [4]caveats to
- using EGCS.
-
- Update: Big thanks to Stanford for providing a high speed link for
- downloading EGCS (go.cygnus.com)!
-
- Download EGCS from ftp.cygnus.com (USA California) or go.cygnus.com
- (USA California -- High speed link provided by Stanford).
-
- The EGCS 1.0.2 release is also available on many mirror sites.
- [5]Goto mirror list to find a closer site
-
- We'd like to thank the numerous people that have contributed new
- features, test results, bugfixes, etc. Unfortunately, they're far too
- numerous to mention by name.
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [6]gnu@gnu.org. There
- are also [7]other ways to contact the FSF.
-
- These pages are maintained by [8]The GCC team.
-
-
- Please send comments on these web pages and GCC to our public
- mailing list at [9]gcc@gnu.org or [10]gcc@gcc.gnu.org, send other
- questions to [11]gnu@gnu.org.
-
- Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
- 330, Boston, MA 02111, USA.
-
- Verbatim copying and distribution of this entire article is permitted
- in any medium, provided this notice is preserved.
-
- Last modified 2002-11-11 [12]Valid XHTML 1.0
-
-References
-
- 1. http://gcc.gnu.org/egcs-1.0/features.html
- 2. http://gcc.gnu.org/install/index.html
- 3. http://gcc.gnu.org/egcs-1.0/buildstat.html
- 4. http://gcc.gnu.org/egcs-1.0/caveats.html
- 5. http://gcc.gnu.org/mirrors.html
- 6. mailto:gnu@gnu.org
- 7. http://www.gnu.org/home.html#ContactInfo
- 8. http://gcc.gnu.org/about.html
- 9. mailto:gcc@gnu.org
- 10. mailto:gcc@gcc.gnu.org
- 11. mailto:gnu@gnu.org
- 12. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/egcs-1.0/egcs-1.0.1.html
-
- EGCS 1.0.1
-
- January 6, 1998
-
- We are pleased to announce the release of EGCS 1.0.1.
-
- EGCS is a collaborative effort involving several groups of hackers
- using an open development model to accelerate development and testing
- of GNU compilers and runtime libraries.
-
- EGCS 1.0.1 is a minor update to the EGCS 1.0 compiler to fix a few
- critical bugs and add support for Red Hat 5.0 Linux. Changes since the
- EGCS 1.0 release:
- * Add support for Red Hat 5.0 Linux and better support for Linux
- systems using glibc2.
- Many programs failed to link when compiled with EGCS 1.0 on Red
- Hat 5.0 or on systems with newer versions of glibc2. EGCS 1.0.1
- should fix these problems.
- * Compatibility with both EGCS 1.0 and GCC 2.8 libgcc exception
- handling interfaces.
- To avoid future compatibility problems, we strongly urge anyone
- who is planning on distributing shared libraries that contain C++
- code to upgrade to EGCS 1.0.1 first.
- Soon after EGCS 1.0 was released, the GCC developers made some
- incompatible changes in libgcc's exception handling interfaces.
- These changes were needed to solve problems on some platforms.
- This means that GCC 2.8.0, when released, will not be seamlessly
- compatible with shared libraries built by EGCS 1.0. The reason is
- that the libgcc.a in GCC 2.8.0 will not contain a function needed
- by the old interface.
- The result of this is that there may be compatibility problems
- with shared libraries built by EGCS 1.0 when used with GCC 2.8.0.
- With EGCS 1.0.1, generated code uses the new (GCC 2.8.0)
- interface, and libgcc.a has the support routines for both the old
- and the new interfaces (so EGCS 1.0.1 and EGCS 1.0 code can be
- freely mixed, and EGCS 1.0.1 and GCC 2.8.0 code can be freely
- mixed).
- The maintainers of GCC 2.x have decided against including seamless
- support for the old interface in 2.8.0, since it was never
- "official", so to avoid future compatibility problems we recommend
- against distributing any shared libraries built by EGCS 1.0 that
- contain C++ code (upgrade to 1.0.1 and use that).
- * Various bugfixes in the x86, hppa, mips, and rs6000/ppc backends.
- The x86 changes fix code generation errors exposed when building
- glibc2 and the Linux dynamic linker (ld.so).
- The hppa change fixes a compiler abort when configured for use
- with RTEMS.
- The MIPS changes fix problems with the definition of LONG_MAX on
- newer systems, allow for command line selection of the target ABI,
- and fix one code generation problem.
- The rs6000/ppc change fixes some problems with passing structures
- to varargs/stdarg functions.
- * A few machine independent bugfixes, mostly to fix code generation
- errors when building Linux kernels or glibc.
- * Fix a few critical exception handling and template bugs in the C++
- compiler.
- * Fix Fortran namelist bug on alphas.
- * Fix build problems on x86-solaris systems.
-
- An important goal of EGCS is to allow wide scale testing of new
- features and optimizations which are still under development. However,
- EGCS has been carefully tested and should be comparable in quality to
- most GCC releases.
-
- EGCS 1.0.1 is based on an August 2, 1997 snapshot of the GCC 2.8
- development sources; it contains nearly all of the new features found
- in GCC 2.8.
-
- EGCS also contains many improvements and features not found in GCC 2.7
- and even the soon to be released GCC 2.8 compilers.
- * Integrated C++ runtime libraries, including support for most major
- linux systems!
- * The integrated libstdc++ library includes a verbatim copy of SGI's
- STL release.
- * Integrated GNU Fortran compiler
- * New instruction scheduler
- * New alias analysis code
-
- See the [1]new features page for a more complete list of new features
- found in EGCS 1.0.x releases.
-
- The EGCS 1.0.1 release includes installation instructions in both HTML
- and plaintext forms (see the INSTALL directory in the toplevel
- directory of the EGCS 1.0.1 distribution). However, we also keep the
- most up to date [2]installation instructions and [3]build/test status
- on our web page. We will update those pages as new information becomes
- available.
-
- And, we can't in good conscience fail to mention some [4]caveats to
- using EGCS.
-
- Update: Big thanks to Stanford for providing a high speed link for
- downloading EGCS (go.cygnus.com)!
-
- Download EGCS from ftp.cygnus.com (USA California) or go.cygnus.com
- (USA California -- High speed link provided by Stanford).
-
- The EGCS 1.0.1 release is also available on many mirror sites.
- [5]Goto mirror list to find a closer site
-
- We'd like to thank the numerous people that have contributed new
- features, test results, bugfixes, etc. Unfortunately, they're far too
- numerous to mention by name.
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [6]gnu@gnu.org. There
- are also [7]other ways to contact the FSF.
-
- These pages are maintained by [8]The GCC team.
-
-
- Please send comments on these web pages and GCC to our public
- mailing list at [9]gcc@gnu.org or [10]gcc@gcc.gnu.org, send other
- questions to [11]gnu@gnu.org.
-
- Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
- 330, Boston, MA 02111, USA.
-
- Verbatim copying and distribution of this entire article is permitted
- in any medium, provided this notice is preserved.
-
- Last modified 2002-11-11 [12]Valid XHTML 1.0
-
-References
-
- 1. http://gcc.gnu.org/egcs-1.0/features.html
- 2. http://gcc.gnu.org/install/index.html
- 3. http://gcc.gnu.org/egcs-1.0/buildstat.html
- 4. http://gcc.gnu.org/egcs-1.0/caveats.html
- 5. http://gcc.gnu.org/mirrors.html
- 6. mailto:gnu@gnu.org
- 7. http://www.gnu.org/home.html#ContactInfo
- 8. http://gcc.gnu.org/about.html
- 9. mailto:gcc@gnu.org
- 10. mailto:gcc@gcc.gnu.org
- 11. mailto:gnu@gnu.org
- 12. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/egcs-1.0/egcs-1.0.html
-
- EGCS 1.0
-
- December 3, 1997
-
- We are pleased to announce the release of EGCS 1.0.
-
- EGCS is a collaborative effort involving several groups of hackers
- using an open development model to accelerate development and testing
- of GNU compilers and runtime libraries.
-
- An important goal of EGCS is to allow wide scale testing of
- experimental features and optimizations; therefore, EGCS contains some
- features and optimizations which are still under development. However,
- EGCS has been carefully tested and should be comparable in quality to
- most GCC releases.
-
- EGCS 1.0 is based on an August 2, 1997 snapshot of the GCC 2.8
- development sources; it contains nearly all of the new features found
- in GCC 2.8.
-
- EGCS 1.0 also contains many improvements and features not found in GCC
- 2.7 and even the soon to be released GCC 2.8 compilers.
- * Integrated C++ runtime libraries, including support for most major
- linux systems!
- * The integrated libstdc++ library includes a verbatim copy of SGI's
- STL release.
- * Integrated GNU Fortran compiler.
- * New instruction scheduler.
- * New alias analysis code.
-
- See the [1]new features page for a more complete list of new features.
-
- The EGCS 1.0 release includes installation instructions in both HTML
- and plaintext forms (see the INSTALL directory in the toplevel
- directory of the EGCS 1.0 distribution). However, we also keep the
- most up to date [2]installation instructions and [3]build/test status
- on our web page. We will update those pages as new information becomes
- available.
-
- And, we can't in good conscience fail to mention some [4]caveats to
- using EGCS.
-
- Update: The T1 into our main California offices has been 100%
- saturated since shortly after the release. We've added an EGCS 1.0
- mirror at our Massachusetts office to help share the load. We also
- encourage folks to use the many mirrors available throughout the
- world.
-
- Update: Big thanks to Stanford for providing a high speed link for
- downloading EGCS (go.cygnus.com)!
-
- Download EGCS from ftp.cygnus.com (USA California) or go.cygnus.com
- (USA California -- High speed link provided by Stanford).
-
- The EGCS 1.0 release should be available on most mirror sites by now.
- [5]Goto mirror list to find a closer site
-
- We'd like to thank the numerous people that have contributed new
- features, test results, bugfixes, etc. Unfortunately, they're far too
- numerous to mention by name.
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [6]gnu@gnu.org. There
- are also [7]other ways to contact the FSF.
-
- These pages are maintained by [8]The GCC team.
-
-
- Please send comments on these web pages and GCC to our public
- mailing list at [9]gcc@gnu.org or [10]gcc@gcc.gnu.org, send other
- questions to [11]gnu@gnu.org.
-
- Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
- 330, Boston, MA 02111, USA.
-
- Verbatim copying and distribution of this entire article is permitted
- in any medium, provided this notice is preserved.
-
- Last modified 2002-11-11 [12]Valid XHTML 1.0
-
-References
-
- 1. http://gcc.gnu.org/egcs-1.0/features.html
- 2. http://gcc.gnu.org/install/index.html
- 3. http://gcc.gnu.org/egcs-1.0/buildstat.html
- 4. http://gcc.gnu.org/egcs-1.0/caveats.html
- 5. http://gcc.gnu.org/mirrors.html
- 6. mailto:gnu@gnu.org
- 7. http://www.gnu.org/home.html#ContactInfo
- 8. http://gcc.gnu.org/about.html
- 9. mailto:gcc@gnu.org
- 10. mailto:gcc@gcc.gnu.org
- 11. mailto:gnu@gnu.org
- 12. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/egcs-1.0/features.html
-
- EGCS 1.0 features
-
- * Core compiler is based on the gcc2 development tree from Aug 2,
- 1997, so we have most of the [1]features found in GCC 2.8.
- * Integrated GNU Fortran compiler based on g77-0.5.22-19970929.
- * Vast improvements in the C++ compiler; so many they have [2]page
- of their own!
- * Integrated C++ runtime libraries, including support for most major
- linux systems!
- * New instruction scheduler from IBM Haifa which includes support
- for function wide instruction scheduling as well as superscalar
- scheduling.
- * Significantly improved alias analysis code.
- * Improved register allocation for two address machines.
- * Significant code generation improvements for Fortran code on
- Alphas.
- * Various optimizations from the g77 project as well as improved
- loop optimizations.
- * Dwarf2 debug format support for some targets.
- * egcs libstdc++ includes the SGI STL implementation without
- changes.
- * As a result of these and other changes, egcs libstc++ is not
- binary compatible with previous releases of libstdc++.
- * Various new ports -- UltraSPARC, Irix6.2 & Irix6.3 support, The
- SCO Openserver 5 family (5.0.{0,2,4} and Internet FastStart 1.0
- and 1.1), Support for RTEMS on several embedded targets, Support
- for arm-linux, Mitsubishi M32R, Hitachi H8/S, Matsushita MN102 and
- MN103, NEC V850, Sparclet, Solaris & Linux on PowerPCs, etc.
- * Integrated testsuites for gcc, g++, g77, libstdc++ and libio.
- * RS6000/PowerPC ports generate code which can run on all
- RS6000/PowerPC variants by default.
- * -mcpu= and -march= switches for the x86 port to allow better
- control over how the x86 port generates code.
- * Includes the template repository patch (aka repo patch); note the
- new template code makes repo obsolete for ELF systems using gnu-ld
- such as Linux.
- * Plus the usual assortment of bugfixes and improvements.
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [3]gnu@gnu.org. There
- are also [4]other ways to contact the FSF.
-
- These pages are maintained by [5]The GCC team.
-
-
- Please send comments on these web pages and GCC to our public
- mailing list at [6]gcc@gnu.org or [7]gcc@gcc.gnu.org, send other
- questions to [8]gnu@gnu.org.
-
- Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
- 330, Boston, MA 02111, USA.
-
- Verbatim copying and distribution of this entire article is permitted
- in any medium, provided this notice is preserved.
-
- Last modified 2002-11-11 [9]Valid XHTML 1.0
-
-References
-
- 1. http://gcc.gnu.org/egcs-1.0/features-2.8.html
- 2. http://gcc.gnu.org/egcs-1.0/c++features.html
- 3. mailto:gnu@gnu.org
- 4. http://www.gnu.org/home.html#ContactInfo
- 5. http://gcc.gnu.org/about.html
- 6. mailto:gcc@gnu.org
- 7. mailto:gcc@gcc.gnu.org
- 8. mailto:gnu@gnu.org
- 9. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/egcs-1.0/caveats.html
-
- EGCS 1.0 Caveats
-
- * EGCS has an integrated libstdc++, but does not have an integrated
- libg++. Furthermore old libg++ releases will not work with egc; HJ
- Lu has made a libg++-2.8.1.2 available which may work with EGCS.
- Note most C++ programs only need libstdc++.
- * Note that using -pedantic or -Wreturn-type can cause an explosion
- in the amount of memory needed for template-heavy C++ code, such
- as code that uses STL. Also note that -Wall includes
- -Wreturn-type, so if you use -Wall you will need to specify
- -Wno-return-type to turn it off.
- * Exception handling may not work with shared libraries,
- particularly on alphas, hppas, and mips based platforms. Exception
- handling is known to work on x86-linux platforms with shared
- libraries.
- * Some versions of the Linux kernel have bugs which prevent them
- from being compiled or from running when compiled by EGCS. See
- [1]the FAQ for additional information.
- * In general, EGCS is more rigorous about rejecting invalid C++ code
- or deprecated C++ constructs than G++ 2.7. As a result it may be
- necessary to fix C++ code before it will compile with EGCS.
- * G++ is also aggressively tracking the C++ standard; as a result
- code which was previously valid (and thus accepted by other
- compilers and older versions of G++) may no longer be accepted.
- * EGCS 1.0 may not work with Red Hat Linux 5.0 on all targets. EGCS
- 1.0.x and later releases should work with Red Hat Linux 5.0.
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [2]gnu@gnu.org. There
- are also [3]other ways to contact the FSF.
-
- These pages are maintained by [4]The GCC team.
-
-
- Please send comments on these web pages and GCC to our public
- mailing list at [5]gcc@gnu.org or [6]gcc@gcc.gnu.org, send other
- questions to [7]gnu@gnu.org.
-
- Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
- 330, Boston, MA 02111, USA.
-
- Verbatim copying and distribution of this entire article is permitted
- in any medium, provided this notice is preserved.
-
- Last modified 2002-11-11 [8]Valid XHTML 1.0
-
-References
-
- 1. http://gcc.gnu.org/fom_serv/cache/24.html
- 2. mailto:gnu@gnu.org
- 3. http://www.gnu.org/home.html#ContactInfo
- 4. http://gcc.gnu.org/about.html
- 5. mailto:gcc@gnu.org
- 6. mailto:gcc@gcc.gnu.org
- 7. mailto:gnu@gnu.org
- 8. http://validator.w3.org/check/referer
-======================================================================
diff --git a/contrib/gcc/README b/contrib/gcc/README
deleted file mode 100644
index 3a49513..0000000
--- a/contrib/gcc/README
+++ /dev/null
@@ -1,17 +0,0 @@
-This directory contains the GNU Compiler Collection (GCC).
-
-The GNU Compiler Collection is free software. See the file COPYING
-for copying permission. The manuals, and some of the runtime
-libraries, are under different terms; see the individual source files
-for details.
-
-The directory INSTALL contains copies of the installation information
-as HTML and plain text. The source of this information is
-gcc/doc/install.texi. The installation information includes details
-of what is included in the GCC sources and what files GCC installs.
-
-See the file gcc/doc/gcc.texi (together with other files that it
-includes) for usage and porting information. An online readable
-version of the manual is in the files gcc/doc/gcc.info*.
-
-See http://gcc.gnu.org/bugs.html for how to report bugs usefully.
diff --git a/contrib/gcc/builtins.c b/contrib/gcc/builtins.c
index 4c5650a..d8874d6 100644
--- a/contrib/gcc/builtins.c
+++ b/contrib/gcc/builtins.c
@@ -22,9 +22,9 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "config.h"
#include "system.h"
#include "machmode.h"
-#include "real.h"
#include "rtl.h"
#include "tree.h"
+#include "obstack.h"
#include "flags.h"
#include "regs.h"
#include "hard-reg-set.h"
@@ -41,7 +41,6 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "predict.h"
#include "tm_p.h"
#include "target.h"
-#include "langhooks.h"
#define CALLED_AS_BUILT_IN(NODE) \
(!strncmp (IDENTIFIER_POINTER (DECL_NAME (NODE)), "__builtin_", 10))
@@ -62,7 +61,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
const char *const built_in_class_names[4]
= {"NOT_BUILT_IN", "BUILT_IN_FRONTEND", "BUILT_IN_MD", "BUILT_IN_NORMAL"};
-#define DEF_BUILTIN(X, N, C, T, LT, B, F, NA, AT) STRINGX(X),
+#define DEF_BUILTIN(X, N, C, T, LT, B, F, NA) STRINGX(X),
const char *const built_in_names[(int) END_BUILTINS] =
{
#include "builtins.def"
@@ -73,6 +72,8 @@ const char *const built_in_names[(int) END_BUILTINS] =
initialized to NULL_TREE. */
tree built_in_decls[(int) END_BUILTINS];
+tree (*lang_type_promotes_to) PARAMS ((tree));
+
static int get_pointer_alignment PARAMS ((tree, unsigned int));
static tree c_strlen PARAMS ((tree));
static const char *c_getstr PARAMS ((tree));
@@ -97,11 +98,11 @@ static rtx expand_builtin_mathfn PARAMS ((tree, rtx, rtx));
static rtx expand_builtin_constant_p PARAMS ((tree));
static rtx expand_builtin_args_info PARAMS ((tree));
static rtx expand_builtin_next_arg PARAMS ((tree));
-static rtx expand_builtin_va_start PARAMS ((tree));
+static rtx expand_builtin_va_start PARAMS ((int, tree));
static rtx expand_builtin_va_end PARAMS ((tree));
static rtx expand_builtin_va_copy PARAMS ((tree));
static rtx expand_builtin_memcmp PARAMS ((tree, tree, rtx,
- enum machine_mode));
+ enum machine_mode));
static rtx expand_builtin_strcmp PARAMS ((tree, rtx,
enum machine_mode));
static rtx expand_builtin_strncmp PARAMS ((tree, rtx,
@@ -117,19 +118,17 @@ static rtx expand_builtin_strspn PARAMS ((tree, rtx,
static rtx expand_builtin_strcspn PARAMS ((tree, rtx,
enum machine_mode));
static rtx expand_builtin_memcpy PARAMS ((tree, rtx,
- enum machine_mode));
+ enum machine_mode));
static rtx expand_builtin_strcpy PARAMS ((tree, rtx,
- enum machine_mode));
+ enum machine_mode));
static rtx builtin_strncpy_read_str PARAMS ((PTR, HOST_WIDE_INT,
enum machine_mode));
static rtx expand_builtin_strncpy PARAMS ((tree, rtx,
enum machine_mode));
static rtx builtin_memset_read_str PARAMS ((PTR, HOST_WIDE_INT,
enum machine_mode));
-static rtx builtin_memset_gen_str PARAMS ((PTR, HOST_WIDE_INT,
- enum machine_mode));
static rtx expand_builtin_memset PARAMS ((tree, rtx,
- enum machine_mode));
+ enum machine_mode));
static rtx expand_builtin_bzero PARAMS ((tree));
static rtx expand_builtin_strlen PARAMS ((tree, rtx));
static rtx expand_builtin_strstr PARAMS ((tree, rtx,
@@ -148,8 +147,6 @@ static tree stabilize_va_list PARAMS ((tree, int));
static rtx expand_builtin_expect PARAMS ((tree, rtx));
static tree fold_builtin_constant_p PARAMS ((tree));
static tree fold_builtin_classify_type PARAMS ((tree));
-static tree fold_builtin_inf PARAMS ((tree, int));
-static tree fold_builtin_nan PARAMS ((tree, tree, int));
static tree build_function_call_expr PARAMS ((tree, tree));
static int validate_arglist PARAMS ((tree, ...));
@@ -514,7 +511,7 @@ expand_builtin_setjmp_setup (buf_addr, receiver_label)
void
expand_builtin_setjmp_receiver (receiver_label)
- rtx receiver_label ATTRIBUTE_UNUSED;
+ rtx receiver_label ATTRIBUTE_UNUSED;
{
/* Clobber the FP when we get here, so we have to make sure it's
marked as used by this function. */
@@ -642,7 +639,7 @@ void
expand_builtin_longjmp (buf_addr, value)
rtx buf_addr, value;
{
- rtx fp, lab, stack, insn, last;
+ rtx fp, lab, stack, insn;
enum machine_mode sa_mode = STACK_SAVEAREA_MODE (SAVE_NONLOCAL);
if (setjmp_alias_set == -1)
@@ -665,7 +662,6 @@ expand_builtin_longjmp (buf_addr, value)
current_function_calls_longjmp = 1;
- last = get_last_insn ();
#ifdef HAVE_builtin_longjmp
if (HAVE_builtin_longjmp)
emit_insn (gen_builtin_longjmp (buf_addr));
@@ -711,8 +707,6 @@ expand_builtin_longjmp (buf_addr, value)
internal exception handling use only. */
for (insn = get_last_insn (); insn; insn = PREV_INSN (insn))
{
- if (insn == last)
- abort ();
if (GET_CODE (insn) == JUMP_INSN)
{
REG_NOTES (insn) = alloc_EXPR_LIST (REG_NON_LOCAL_GOTO, const0_rtx,
@@ -720,7 +714,7 @@ expand_builtin_longjmp (buf_addr, value)
break;
}
else if (GET_CODE (insn) == CALL_INSN)
- break;
+ break;
}
}
@@ -746,7 +740,7 @@ expand_builtin_prefetch (arglist)
{
arg1 = TREE_VALUE (TREE_CHAIN (arglist));
if (TREE_CHAIN (TREE_CHAIN (arglist)))
- arg2 = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (arglist)));
+ arg2 = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (arglist)));
else
arg2 = build_int_2 (3, 0);
}
@@ -762,8 +756,8 @@ expand_builtin_prefetch (arglist)
/* Argument 1 (read/write flag) must be a compile-time constant int. */
if (TREE_CODE (arg1) != INTEGER_CST)
{
- error ("second arg to `__builtin_prefetch' must be a constant");
- arg1 = integer_zero_node;
+ error ("second arg to `__builtin_prefetch' must be a constant");
+ arg1 = integer_zero_node;
}
op1 = expand_expr (arg1, NULL_RTX, VOIDmode, 0);
/* Argument 1 must be either zero or one. */
@@ -790,26 +784,19 @@ expand_builtin_prefetch (arglist)
#ifdef HAVE_prefetch
if (HAVE_prefetch)
{
- if ((! (*insn_data[(int) CODE_FOR_prefetch].operand[0].predicate)
- (op0,
- insn_data[(int) CODE_FOR_prefetch].operand[0].mode))
- || (GET_MODE(op0) != Pmode))
- {
-#ifdef POINTERS_EXTEND_UNSIGNED
- if (GET_MODE(op0) != Pmode)
- op0 = convert_memory_address (Pmode, op0);
-#endif
- op0 = force_reg (Pmode, op0);
- }
+ if (! (*insn_data[(int)CODE_FOR_prefetch].operand[0].predicate)
+ (op0,
+ insn_data[(int)CODE_FOR_prefetch].operand[0].mode))
+ op0 = force_reg (Pmode, op0);
emit_insn (gen_prefetch (op0, op1, op2));
}
else
#endif
op0 = protect_from_queue (op0, 0);
- /* Don't do anything with direct references to volatile memory, but
- generate code to handle other side effects. */
- if (GET_CODE (op0) != MEM && side_effects_p (op0))
- emit_insn (op0);
+ /* Don't do anything with direct references to volatile memory, but
+ generate code to handle other side effects. */
+ if (GET_CODE (op0) != MEM && side_effects_p (op0))
+ emit_insn (op0);
}
/* Get a MEM rtx for expression EXP which is the address of an operand
@@ -833,7 +820,7 @@ get_memory_rtx (exp)
If it is an ADDR_EXPR, use the operand. Otherwise, dereference it if
we can. First remove any nops. */
while ((TREE_CODE (exp) == NOP_EXPR || TREE_CODE (exp) == CONVERT_EXPR
- || TREE_CODE (exp) == NON_LVALUE_EXPR)
+ || TREE_CODE (exp) == NON_LVALUE_EXPR)
&& POINTER_TYPE_P (TREE_TYPE (TREE_OPERAND (exp, 0))))
exp = TREE_OPERAND (exp, 0);
@@ -887,7 +874,7 @@ apply_args_register_offset (regno)
/* Arguments are always put in outgoing registers (in the argument
block) if such make sense. */
#ifdef OUTGOING_REGNO
- regno = OUTGOING_REGNO (regno);
+ regno = OUTGOING_REGNO(regno);
#endif
return apply_args_reg_offset[regno];
}
@@ -1014,7 +1001,7 @@ apply_result_size ()
mode = GET_MODE_WIDER_MODE (mode))
if (HARD_REGNO_MODE_OK (regno, mode)
&& have_insn_for (SET, mode))
- best_mode = mode;
+ best_mode = mode;
if (best_mode == VOIDmode)
for (mode = GET_CLASS_NARROWEST_MODE (MODE_VECTOR_INT);
@@ -1160,12 +1147,12 @@ expand_builtin_apply_args ()
apply_args_value = temp;
- /* Put the insns after the NOTE that starts the function.
- If this is inside a start_sequence, make the outer-level insn
+ /* Put the sequence after the NOTE that starts the function.
+ If this is inside a SEQUENCE, make the outer-level insn
chain current, so the code is placed at the start of the
function. */
push_topmost_sequence ();
- emit_insn_before (seq, NEXT_INSN (get_insns ()));
+ emit_insns_before (seq, NEXT_INSN (get_insns ()));
pop_topmost_sequence ();
return temp;
}
@@ -1227,7 +1214,7 @@ expand_builtin_apply (function, arguments, argsize)
set_mem_align (dest, PARM_BOUNDARY);
src = gen_rtx_MEM (BLKmode, incoming_args);
set_mem_align (src, PARM_BOUNDARY);
- emit_block_move (dest, src, argsize, BLOCK_OP_NORMAL);
+ emit_block_move (dest, src, argsize);
/* Refer to the argument block. */
apply_args_size ();
@@ -1262,7 +1249,7 @@ expand_builtin_apply (function, arguments, argsize)
emit_move_insn (value, adjust_address (arguments, Pmode, size));
emit_move_insn (struct_value_rtx, value);
if (GET_CODE (struct_value_rtx) == REG)
- use_reg (&call_fusage, struct_value_rtx);
+ use_reg (&call_fusage, struct_value_rtx);
size += GET_MODE_SIZE (Pmode);
}
@@ -1394,7 +1381,7 @@ expand_builtin_return (result)
}
/* Put the USE insns before the return. */
- emit_insn (call_fusage);
+ emit_insns (call_fusage);
/* Return whatever values was restored by jumping directly to the end
of the function. */
@@ -1483,7 +1470,6 @@ expand_builtin_mathfn (exp, target, subtarget)
rtx op0, insns;
tree fndecl = TREE_OPERAND (TREE_OPERAND (exp, 0), 0);
tree arglist = TREE_OPERAND (exp, 1);
- enum machine_mode argmode;
if (!validate_arglist (arglist, REAL_TYPE, VOID_TYPE))
return 0;
@@ -1526,22 +1512,14 @@ expand_builtin_mathfn (exp, target, subtarget)
case BUILT_IN_SQRTF:
case BUILT_IN_SQRTL:
builtin_optab = sqrt_optab; break;
- case BUILT_IN_EXP:
- case BUILT_IN_EXPF:
- case BUILT_IN_EXPL:
- builtin_optab = exp_optab; break;
- case BUILT_IN_LOG:
- case BUILT_IN_LOGF:
- case BUILT_IN_LOGL:
- builtin_optab = log_optab; break;
- default:
+ default:
abort ();
}
/* Compute into TARGET.
Set TARGET to wherever the result comes back. */
- argmode = TYPE_MODE (TREE_TYPE (TREE_VALUE (arglist)));
- target = expand_unop (argmode, builtin_optab, op0, target, 0);
+ target = expand_unop (TYPE_MODE (TREE_TYPE (TREE_VALUE (arglist))),
+ builtin_optab, op0, target, 0);
/* If we were unable to expand via the builtin, stop the
sequence (without outputting the insns) and return 0, causing
@@ -1552,12 +1530,18 @@ expand_builtin_mathfn (exp, target, subtarget)
return 0;
}
- /* If errno must be maintained, we must set it to EDOM for NaN results. */
+ /* If errno must be maintained and if we are not allowing unsafe
+ math optimizations, check the result. */
- if (flag_errno_math && HONOR_NANS (argmode))
+ if (flag_errno_math && ! flag_unsafe_math_optimizations)
{
rtx lab1;
+ /* Don't define the builtin FP instructions
+ if your machine is not IEEE. */
+ if (TARGET_FLOAT_FORMAT != IEEE_FLOAT_FORMAT)
+ abort ();
+
lab1 = gen_label_rtx ();
/* Test the result; if it is NaN, set errno=EDOM because
@@ -1566,16 +1550,16 @@ expand_builtin_mathfn (exp, target, subtarget)
0, lab1);
#ifdef TARGET_EDOM
- {
+ {
#ifdef GEN_ERRNO_RTX
- rtx errno_rtx = GEN_ERRNO_RTX;
+ rtx errno_rtx = GEN_ERRNO_RTX;
#else
- rtx errno_rtx
- = gen_rtx_MEM (word_mode, gen_rtx_SYMBOL_REF (Pmode, "errno"));
+ rtx errno_rtx
+ = gen_rtx_MEM (word_mode, gen_rtx_SYMBOL_REF (Pmode, "errno"));
#endif
- emit_move_insn (errno_rtx, GEN_INT (TARGET_EDOM));
- }
+ emit_move_insn (errno_rtx, GEN_INT (TARGET_EDOM));
+ }
#else
/* We can't set errno=EDOM directly; let the library call do it.
Pop the arguments right away in case the call gets deleted. */
@@ -1590,7 +1574,7 @@ expand_builtin_mathfn (exp, target, subtarget)
/* Output the entire sequence. */
insns = get_insns ();
end_sequence ();
- emit_insn (insns);
+ emit_insns (insns);
return target;
}
@@ -1652,7 +1636,7 @@ expand_builtin_strlen (exp, target)
/* Mark the beginning of the strlen sequence so we can emit the
source operand later. */
- before_strlen = get_last_insn ();
+ before_strlen = get_last_insn();
char_rtx = const0_rtx;
char_mode = insn_data[(int) icode].operand[2].mode;
@@ -1672,7 +1656,7 @@ expand_builtin_strlen (exp, target)
expand_expr (src, src_reg, ptr_mode, EXPAND_SUM));
if (pat != src_reg)
emit_move_insn (src_reg, pat);
- pat = get_insns ();
+ pat = gen_sequence ();
end_sequence ();
if (before_strlen)
@@ -1958,20 +1942,20 @@ expand_builtin_memcpy (arglist, target, mode)
/* If DEST is not a pointer type, call the normal function. */
if (dest_align == 0)
- return 0;
+ return 0;
/* If the LEN parameter is zero, return DEST. */
if (host_integerp (len, 1) && tree_low_cst (len, 1) == 0)
- {
- /* Evaluate and ignore SRC in case it has side-effects. */
- expand_expr (src, const0_rtx, VOIDmode, EXPAND_NORMAL);
- return expand_expr (dest, target, mode, EXPAND_NORMAL);
- }
+ {
+ /* Evaluate and ignore SRC in case it has side-effects. */
+ expand_expr (src, const0_rtx, VOIDmode, EXPAND_NORMAL);
+ return expand_expr (dest, target, mode, EXPAND_NORMAL);
+ }
/* If either SRC is not a pointer type, don't do this
operation in-line. */
if (src_align == 0)
- return 0;
+ return 0;
dest_mem = get_memory_rtx (dest);
set_mem_align (dest_mem, dest_align);
@@ -1990,29 +1974,17 @@ expand_builtin_memcpy (arglist, target, mode)
store_by_pieces (dest_mem, INTVAL (len_rtx),
builtin_memcpy_read_str,
(PTR) src_str, dest_align);
- dest_mem = force_operand (XEXP (dest_mem, 0), NULL_RTX);
-#ifdef POINTERS_EXTEND_UNSIGNED
- if (GET_MODE (dest_mem) != ptr_mode)
- dest_mem = convert_memory_address (ptr_mode, dest_mem);
-#endif
- return dest_mem;
+ return force_operand (XEXP (dest_mem, 0), NULL_RTX);
}
src_mem = get_memory_rtx (src);
set_mem_align (src_mem, src_align);
/* Copy word part most expediently. */
- dest_addr = emit_block_move (dest_mem, src_mem, len_rtx,
- BLOCK_OP_NORMAL);
+ dest_addr = emit_block_move (dest_mem, src_mem, len_rtx);
if (dest_addr == 0)
- {
- dest_addr = force_operand (XEXP (dest_mem, 0), NULL_RTX);
-#ifdef POINTERS_EXTEND_UNSIGNED
- if (GET_MODE (dest_addr) != ptr_mode)
- dest_addr = convert_memory_address (ptr_mode, dest_addr);
-#endif
- }
+ dest_addr = force_operand (XEXP (dest_mem, 0), NULL_RTX);
return dest_addr;
}
@@ -2030,7 +2002,7 @@ expand_builtin_strcpy (exp, target, mode)
enum machine_mode mode;
{
tree arglist = TREE_OPERAND (exp, 1);
- tree fn, len, src, dst;
+ tree fn, len;
if (!validate_arglist (arglist, POINTER_TYPE, POINTER_TYPE, VOID_TYPE))
return 0;
@@ -2039,18 +2011,14 @@ expand_builtin_strcpy (exp, target, mode)
if (!fn)
return 0;
- src = TREE_VALUE (TREE_CHAIN (arglist));
- len = c_strlen (src);
- if (len == 0 || TREE_SIDE_EFFECTS (len))
+ len = c_strlen (TREE_VALUE (TREE_CHAIN (arglist)));
+ if (len == 0)
return 0;
- dst = TREE_VALUE (arglist);
len = size_binop (PLUS_EXPR, len, ssize_int (1));
- arglist = build_tree_list (NULL_TREE, len);
- arglist = tree_cons (NULL_TREE, src, arglist);
- arglist = tree_cons (NULL_TREE, dst, arglist);
+ chainon (arglist, build_tree_list (NULL_TREE, len));
return expand_expr (build_function_call_expr (fn, arglist),
- target, mode, EXPAND_NORMAL);
+ target, mode, EXPAND_NORMAL);
}
/* Callback routine for store_by_pieces. Read GET_MODE_BITSIZE (MODE)
@@ -2095,9 +2063,9 @@ expand_builtin_strncpy (arglist, target, mode)
/* If the len parameter is zero, return the dst parameter. */
if (integer_zerop (len))
- {
- /* Evaluate and ignore the src argument in case it has
- side-effects. */
+ {
+ /* Evaluate and ignore the src argument in case it has
+ side-effects. */
expand_expr (TREE_VALUE (TREE_CHAIN (arglist)), const0_rtx,
VOIDmode, EXPAND_NORMAL);
/* Return the dst parameter. */
@@ -2132,20 +2100,15 @@ expand_builtin_strncpy (arglist, target, mode)
store_by_pieces (dest_mem, tree_low_cst (len, 1),
builtin_strncpy_read_str,
(PTR) p, dest_align);
- dest_mem = force_operand (XEXP (dest_mem, 0), NULL_RTX);
-#ifdef POINTERS_EXTEND_UNSIGNED
- if (GET_MODE (dest_mem) != ptr_mode)
- dest_mem = convert_memory_address (ptr_mode, dest_mem);
-#endif
- return dest_mem;
+ return force_operand (XEXP (dest_mem, 0), NULL_RTX);
}
/* OK transform into builtin memcpy. */
fn = built_in_decls[BUILT_IN_MEMCPY];
if (!fn)
- return 0;
+ return 0;
return expand_expr (build_function_call_expr (fn, arglist),
- target, mode, EXPAND_NORMAL);
+ target, mode, EXPAND_NORMAL);
}
}
@@ -2167,34 +2130,6 @@ builtin_memset_read_str (data, offset, mode)
return c_readstr (p, mode);
}
-/* Callback routine for store_by_pieces. Return the RTL of a register
- containing GET_MODE_SIZE (MODE) consecutive copies of the unsigned
- char value given in the RTL register data. For example, if mode is
- 4 bytes wide, return the RTL for 0x01010101*data. */
-
-static rtx
-builtin_memset_gen_str (data, offset, mode)
- PTR data;
- HOST_WIDE_INT offset ATTRIBUTE_UNUSED;
- enum machine_mode mode;
-{
- rtx target, coeff;
- size_t size;
- char *p;
-
- size = GET_MODE_SIZE (mode);
- if (size == 1)
- return (rtx) data;
-
- p = alloca (size);
- memset (p, 1, size);
- coeff = c_readstr (p, mode);
-
- target = convert_to_mode (mode, (rtx) data, 1);
- target = expand_mult (mode, target, coeff, NULL_RTX, 1);
- return force_reg (mode, target);
-}
-
/* Expand expression EXP, which is a call to the memset builtin. Return 0
if we failed the caller should emit a normal call, otherwise try to get
the result in TARGET, if convenient (and in mode MODE if that's
@@ -2229,46 +2164,14 @@ expand_builtin_memset (exp, target, mode)
/* If the LEN parameter is zero, return DEST. */
if (host_integerp (len, 1) && tree_low_cst (len, 1) == 0)
- {
- /* Evaluate and ignore VAL in case it has side-effects. */
- expand_expr (val, const0_rtx, VOIDmode, EXPAND_NORMAL);
- return expand_expr (dest, target, mode, EXPAND_NORMAL);
- }
+ {
+ /* Evaluate and ignore VAL in case it has side-effects. */
+ expand_expr (val, const0_rtx, VOIDmode, EXPAND_NORMAL);
+ return expand_expr (dest, target, mode, EXPAND_NORMAL);
+ }
if (TREE_CODE (val) != INTEGER_CST)
- {
- rtx val_rtx;
-
- if (!host_integerp (len, 1))
- return 0;
-
- if (optimize_size && tree_low_cst (len, 1) > 1)
- return 0;
-
- /* Assume that we can memset by pieces if we can store the
- * the coefficients by pieces (in the required modes).
- * We can't pass builtin_memset_gen_str as that emits RTL. */
- c = 1;
- if (!can_store_by_pieces (tree_low_cst (len, 1),
- builtin_memset_read_str,
- (PTR) &c, dest_align))
- return 0;
-
- val = fold (build1 (CONVERT_EXPR, unsigned_char_type_node, val));
- val_rtx = expand_expr (val, NULL_RTX, VOIDmode, 0);
- val_rtx = force_reg (TYPE_MODE (unsigned_char_type_node),
- val_rtx);
- dest_mem = get_memory_rtx (dest);
- store_by_pieces (dest_mem, tree_low_cst (len, 1),
- builtin_memset_gen_str,
- (PTR) val_rtx, dest_align);
- dest_mem = force_operand (XEXP (dest_mem, 0), NULL_RTX);
-#ifdef POINTERS_EXTEND_UNSIGNED
- if (GET_MODE (dest_mem) != ptr_mode)
- dest_mem = convert_memory_address (ptr_mode, dest_mem);
-#endif
- return dest_mem;
- }
+ return 0;
if (target_char_cast (val, &c))
return 0;
@@ -2286,12 +2189,7 @@ expand_builtin_memset (exp, target, mode)
store_by_pieces (dest_mem, tree_low_cst (len, 1),
builtin_memset_read_str,
(PTR) &c, dest_align);
- dest_mem = force_operand (XEXP (dest_mem, 0), NULL_RTX);
-#ifdef POINTERS_EXTEND_UNSIGNED
- if (GET_MODE (dest_mem) != ptr_mode)
- dest_mem = convert_memory_address (ptr_mode, dest_mem);
-#endif
- return dest_mem;
+ return force_operand (XEXP (dest_mem, 0), NULL_RTX);
}
len_rtx = expand_expr (len, NULL_RTX, VOIDmode, 0);
@@ -2301,13 +2199,7 @@ expand_builtin_memset (exp, target, mode)
dest_addr = clear_storage (dest_mem, len_rtx);
if (dest_addr == 0)
- {
- dest_addr = force_operand (XEXP (dest_mem, 0), NULL_RTX);
-#ifdef POINTERS_EXTEND_UNSIGNED
- if (GET_MODE (dest_addr) != ptr_mode)
- dest_addr = convert_memory_address (ptr_mode, dest_addr);
-#endif
- }
+ dest_addr = force_operand (XEXP (dest_mem, 0), NULL_RTX);
return dest_addr;
}
@@ -2364,7 +2256,7 @@ expand_builtin_memcmp (exp, arglist, target, mode)
const char *p1, *p2;
if (!validate_arglist (arglist,
- POINTER_TYPE, POINTER_TYPE, INTEGER_TYPE, VOID_TYPE))
+ POINTER_TYPE, POINTER_TYPE, INTEGER_TYPE, VOID_TYPE))
return 0;
arg1 = TREE_VALUE (arglist);
@@ -2403,12 +2295,12 @@ expand_builtin_memcmp (exp, arglist, target, mode)
tree cst_uchar_ptr_node = build_pointer_type (cst_uchar_node);
tree ind1 =
fold (build1 (CONVERT_EXPR, integer_type_node,
- build1 (INDIRECT_REF, cst_uchar_node,
- build1 (NOP_EXPR, cst_uchar_ptr_node, arg1))));
+ build1 (INDIRECT_REF, cst_uchar_node,
+ build1 (NOP_EXPR, cst_uchar_ptr_node, arg1))));
tree ind2 =
fold (build1 (CONVERT_EXPR, integer_type_node,
- build1 (INDIRECT_REF, cst_uchar_node,
- build1 (NOP_EXPR, cst_uchar_ptr_node, arg2))));
+ build1 (INDIRECT_REF, cst_uchar_node,
+ build1 (NOP_EXPR, cst_uchar_ptr_node, arg2))));
tree result = fold (build (MINUS_EXPR, integer_type_node, ind1, ind2));
return expand_expr (result, target, mode, EXPAND_NORMAL);
}
@@ -2545,12 +2437,12 @@ expand_builtin_strcmp (exp, target, mode)
if (!len || TREE_CODE (len) != INTEGER_CST)
{
if (len2 && !TREE_SIDE_EFFECTS (len2))
- len = len2;
+ len = len2;
else if (len == 0)
- return 0;
+ return 0;
}
else if (len2 && TREE_CODE (len2) == INTEGER_CST
- && tree_int_cst_lt (len2, len))
+ && tree_int_cst_lt (len2, len))
len = len2;
/* If both arguments have side effects, we cannot optimize. */
@@ -2561,11 +2453,9 @@ expand_builtin_strcmp (exp, target, mode)
if (!fn)
return 0;
- arglist = build_tree_list (NULL_TREE, len);
- arglist = tree_cons (NULL_TREE, arg2, arglist);
- arglist = tree_cons (NULL_TREE, arg1, arglist);
+ chainon (arglist, build_tree_list (NULL_TREE, len));
return expand_expr (build_function_call_expr (fn, arglist),
- target, mode, EXPAND_NORMAL);
+ target, mode, EXPAND_NORMAL);
}
/* Expand expression EXP, which is a call to the strncmp builtin. Return 0
@@ -2593,23 +2483,23 @@ expand_builtin_strncmp (exp, target, mode)
/* If the len parameter is zero, return zero. */
if (host_integerp (arg3, 1) && tree_low_cst (arg3, 1) == 0)
- {
- /* Evaluate and ignore arg1 and arg2 in case they have
- side-effects. */
- expand_expr (arg1, const0_rtx, VOIDmode, EXPAND_NORMAL);
- expand_expr (arg2, const0_rtx, VOIDmode, EXPAND_NORMAL);
- return const0_rtx;
- }
+ {
+ /* Evaluate and ignore arg1 and arg2 in case they have
+ side-effects. */
+ expand_expr (arg1, const0_rtx, VOIDmode, EXPAND_NORMAL);
+ expand_expr (arg2, const0_rtx, VOIDmode, EXPAND_NORMAL);
+ return const0_rtx;
+ }
p1 = c_getstr (arg1);
p2 = c_getstr (arg2);
/* If all arguments are constant, evaluate at compile-time. */
if (host_integerp (arg3, 1) && p1 && p2)
- {
- const int r = strncmp (p1, p2, tree_low_cst (arg3, 1));
- return (r < 0 ? constm1_rtx : (r > 0 ? const1_rtx : const0_rtx));
- }
+ {
+ const int r = strncmp (p1, p2, tree_low_cst (arg3, 1));
+ return (r < 0 ? constm1_rtx : (r > 0 ? const1_rtx : const0_rtx));
+ }
/* If len == 1 or (either string parameter is "" and (len >= 1)),
return (*(const u_char*)arg1 - *(const u_char*)arg2). */
@@ -2667,7 +2557,7 @@ expand_builtin_strncmp (exp, target, mode)
newarglist = tree_cons (NULL_TREE, arg2, newarglist);
newarglist = tree_cons (NULL_TREE, arg1, newarglist);
return expand_expr (build_function_call_expr (fn, newarglist),
- target, mode, EXPAND_NORMAL);
+ target, mode, EXPAND_NORMAL);
}
/* Expand expression EXP, which is a call to the strcat builtin.
@@ -2719,7 +2609,7 @@ expand_builtin_strncat (arglist, target, mode)
/* If the requested length is zero, or the src parameter string
length is zero, return the dst parameter. */
if (integer_zerop (len) || (p && *p == '\0'))
- {
+ {
/* Evaluate and ignore the src and len parameters in case
they have side-effects. */
expand_expr (src, const0_rtx, VOIDmode, EXPAND_NORMAL);
@@ -2731,7 +2621,7 @@ expand_builtin_strncat (arglist, target, mode)
length, call strcat. */
if (TREE_CODE (len) == INTEGER_CST && p
&& compare_tree_int (len, strlen (p)) >= 0)
- {
+ {
tree newarglist
= tree_cons (NULL_TREE, dst, build_tree_list (NULL_TREE, src));
tree fn = built_in_decls[BUILT_IN_STRCAT];
@@ -2767,14 +2657,14 @@ expand_builtin_strspn (arglist, target, mode)
/* If both arguments are constants, evaluate at compile-time. */
if (p1 && p2)
- {
+ {
const size_t r = strspn (p1, p2);
return expand_expr (size_int (r), target, mode, EXPAND_NORMAL);
}
/* If either argument is "", return 0. */
if ((p1 && *p1 == '\0') || (p2 && *p2 == '\0'))
- {
+ {
/* Evaluate and ignore both arguments in case either one has
side-effects. */
expand_expr (s1, const0_rtx, VOIDmode, EXPAND_NORMAL);
@@ -2804,14 +2694,14 @@ expand_builtin_strcspn (arglist, target, mode)
/* If both arguments are constants, evaluate at compile-time. */
if (p1 && p2)
- {
+ {
const size_t r = strcspn (p1, p2);
return expand_expr (size_int (r), target, mode, EXPAND_NORMAL);
}
/* If the first argument is "", return 0. */
if (p1 && *p1 == '\0')
- {
+ {
/* Evaluate and ignore argument s2 in case it has
side-effects. */
expand_expr (s2, const0_rtx, VOIDmode, EXPAND_NORMAL);
@@ -2820,7 +2710,7 @@ expand_builtin_strcspn (arglist, target, mode)
/* If the second argument is "", return __builtin_strlen(s1). */
if (p2 && *p2 == '\0')
- {
+ {
tree newarglist = build_tree_list (NULL_TREE, s1),
fn = built_in_decls[BUILT_IN_STRLEN];
@@ -2876,11 +2766,11 @@ expand_builtin_saveregs ()
saveregs_value = val;
- /* Put the insns after the NOTE that starts the function. If this
- is inside a start_sequence, make the outer-level insn chain current, so
+ /* Put the sequence after the NOTE that starts the function. If this
+ is inside a SEQUENCE, make the outer-level insn chain current, so
the code is placed at the start of the function. */
push_topmost_sequence ();
- emit_insn_after (seq, get_insns ());
+ emit_insns_after (seq, get_insns ());
pop_topmost_sequence ();
return val;
@@ -2948,9 +2838,10 @@ expand_builtin_next_arg (arglist)
{
tree fntype = TREE_TYPE (current_function_decl);
- if (TYPE_ARG_TYPES (fntype) == 0
- || (TREE_VALUE (tree_last (TYPE_ARG_TYPES (fntype)))
- == void_type_node))
+ if ((TYPE_ARG_TYPES (fntype) == 0
+ || (TREE_VALUE (tree_last (TYPE_ARG_TYPES (fntype)))
+ == void_type_node))
+ && ! current_function_varargs)
{
error ("`va_start' used in function with fixed args");
return const0_rtx;
@@ -2973,7 +2864,7 @@ expand_builtin_next_arg (arglist)
if (arg != last_parm)
warning ("second parameter of `va_start' not last named argument");
}
- else
+ else if (! current_function_varargs)
/* Evidently an out of date version of <stdarg.h>; can't validate
va_start's second argument, but can still work as intended. */
warning ("`__builtin_next_arg' called without an argument");
@@ -3037,12 +2928,25 @@ stabilize_va_list (valist, needs_lvalue)
the variable. */
void
-std_expand_builtin_va_start (valist, nextarg)
+std_expand_builtin_va_start (stdarg_p, valist, nextarg)
+ int stdarg_p;
tree valist;
rtx nextarg;
{
tree t;
+ if (! stdarg_p)
+ {
+ /* The dummy named parameter is declared as a 'word' sized
+ object, but if a 'word' is smaller than an 'int', it would
+ have been promoted to int when it was added to the arglist. */
+ int align = PARM_BOUNDARY / BITS_PER_UNIT;
+ int size = MAX (UNITS_PER_WORD,
+ GET_MODE_SIZE (TYPE_MODE (integer_type_node)));
+ int offset = ((size + align - 1) / align) * align;
+ nextarg = plus_constant (nextarg, -offset);
+ }
+
t = build (MODIFY_EXPR, TREE_TYPE (valist), valist,
make_tree (ptr_type_node, nextarg));
TREE_SIDE_EFFECTS (t) = 1;
@@ -3050,27 +2954,31 @@ std_expand_builtin_va_start (valist, nextarg)
expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
}
-/* Expand ARGLIST, from a call to __builtin_va_start. */
+/* Expand ARGLIST, which from a call to __builtin_stdarg_va_start or
+ __builtin_varargs_va_start, depending on STDARG_P. */
static rtx
-expand_builtin_va_start (arglist)
+expand_builtin_va_start (stdarg_p, arglist)
+ int stdarg_p;
tree arglist;
{
rtx nextarg;
- tree chain, valist;
+ tree chain = arglist, valist;
- chain = TREE_CHAIN (arglist);
+ if (stdarg_p)
+ nextarg = expand_builtin_next_arg (chain = TREE_CHAIN (arglist));
+ else
+ nextarg = expand_builtin_next_arg (NULL_TREE);
if (TREE_CHAIN (chain))
error ("too many arguments to function `va_start'");
- nextarg = expand_builtin_next_arg (chain);
valist = stabilize_va_list (TREE_VALUE (arglist), 1);
#ifdef EXPAND_BUILTIN_VA_START
- EXPAND_BUILTIN_VA_START (valist, nextarg);
+ EXPAND_BUILTIN_VA_START (stdarg_p, valist, nextarg);
#else
- std_expand_builtin_va_start (valist, nextarg);
+ std_expand_builtin_va_start (stdarg_p, valist, nextarg);
#endif
return const0_rtx;
@@ -3170,8 +3078,7 @@ expand_builtin_va_arg (valist, type)
/* Generate a diagnostic for requesting data of a type that cannot
be passed through `...' due to type promotion at the call site. */
- else if ((promoted_type = (*lang_hooks.types.type_promotes_to) (type))
- != type)
+ else if ((promoted_type = (*lang_type_promotes_to) (type)) != NULL_TREE)
{
const char *name = "<anonymous type>", *pname = 0;
static bool gave_help;
@@ -3247,7 +3154,7 @@ expand_builtin_va_end (arglist)
#ifdef EXPAND_BUILTIN_VA_END
valist = stabilize_va_list (valist, 0);
- EXPAND_BUILTIN_VA_END (arglist);
+ EXPAND_BUILTIN_VA_END(arglist);
#else
/* Evaluate for side effects, if needed. I hate macros that don't
do that. */
@@ -3307,7 +3214,7 @@ expand_builtin_va_copy (arglist)
set_mem_align (srcb, TYPE_ALIGN (va_list_type_node));
/* Copy. */
- emit_block_move (dstb, srcb, size, BLOCK_OP_NORMAL);
+ emit_block_move (dstb, srcb, size);
}
return const0_rtx;
@@ -3478,12 +3385,8 @@ expand_builtin_fputs (arglist, ignore, unlocked)
/* FALLTHROUGH */
case 1: /* length is greater than 1, call fwrite. */
{
- tree string_arg;
+ tree string_arg = TREE_VALUE (arglist);
- /* If optimizing for size keep fputs. */
- if (optimize_size)
- return 0;
- string_arg = TREE_VALUE (arglist);
/* New argument list transforming fputs(string, stream) to
fwrite(string, 1, len, stream). */
arglist = build_tree_list (NULL_TREE, TREE_VALUE (TREE_CHAIN (arglist)));
@@ -3529,7 +3432,7 @@ expand_builtin_expect (arglist, target)
target = expand_expr (exp, target, VOIDmode, EXPAND_NORMAL);
/* Don't bother with expected value notes for integral constants. */
- if (flag_guess_branch_prob && GET_CODE (target) != CONST_INT)
+ if (GET_CODE (target) != CONST_INT)
{
/* We do need to force this into a register so that we can be
moderately sure to be able to correctly interpret the branch
@@ -3547,7 +3450,7 @@ expand_builtin_expect (arglist, target)
/* Like expand_builtin_expect, except do this in a jump context. This is
called from do_jump if the conditional is a __builtin_expect. Return either
- a list of insns to emit the jump or NULL if we cannot optimize
+ a SEQUENCE of insns to emit the jump or NULL if we cannot optimize
__builtin_expect. We need to optimize this at jump time so that machines
like the PowerPC don't turn the test into a SCC operation, and then jump
based on the test being 0/1. */
@@ -3568,8 +3471,8 @@ expand_builtin_expect_jump (exp, if_false_label, if_true_label)
if (TREE_CODE (TREE_TYPE (arg1)) == INTEGER_TYPE
&& (integer_zerop (arg1) || integer_onep (arg1)))
{
+ int j;
int num_jumps = 0;
- rtx insn;
/* If we fail to locate an appropriate conditional jump, we'll
fall back to normal evaluation. Ensure that the expression
@@ -3590,17 +3493,16 @@ expand_builtin_expect_jump (exp, if_false_label, if_true_label)
/* Expand the jump insns. */
start_sequence ();
do_jump (arg0, if_false_label, if_true_label);
- ret = get_insns ();
+ ret = gen_sequence ();
end_sequence ();
/* Now that the __builtin_expect has been validated, go through and add
the expect's to each of the conditional jumps. If we run into an
error, just give up and generate the 'safe' code of doing a SCC
operation and then doing a branch on that. */
- insn = ret;
- while (insn != NULL_RTX)
+ for (j = 0; j < XVECLEN (ret, 0); j++)
{
- rtx next = NEXT_INSN (insn);
+ rtx insn = XVECEXP (ret, 0, j);
rtx pattern;
if (GET_CODE (insn) == JUMP_INSN && any_condjump_p (insn)
@@ -3611,7 +3513,7 @@ expand_builtin_expect_jump (exp, if_false_label, if_true_label)
int taken;
if (GET_CODE (ifelse) != IF_THEN_ELSE)
- goto do_next_insn;
+ continue;
if (GET_CODE (XEXP (ifelse, 1)) == LABEL_REF)
{
@@ -3638,7 +3540,7 @@ expand_builtin_expect_jump (exp, if_false_label, if_true_label)
label = NULL_RTX;
}
else
- goto do_next_insn;
+ continue;
/* If the test is expected to fail, reverse the
probabilities. */
@@ -3652,14 +3554,11 @@ expand_builtin_expect_jump (exp, if_false_label, if_true_label)
else if (label == if_false_label)
taken = 1 - taken;
else if (label != if_true_label)
- goto do_next_insn;
+ continue;
num_jumps++;
predict_insn_def (insn, PRED_BUILTIN_EXPECT, taken);
}
-
- do_next_insn:
- insn = next;
}
/* If no jumps were modified, fail and do __builtin_expect the normal
@@ -3701,9 +3600,6 @@ expand_builtin (exp, target, subtarget, mode, ignore)
tree arglist = TREE_OPERAND (exp, 1);
enum built_in_function fcode = DECL_FUNCTION_CODE (fndecl);
- /* Perform postincrements before expanding builtin functions.  */
- emit_queue ();
-
if (DECL_BUILT_IN_CLASS (fndecl) == BUILT_IN_MD)
return (*targetm.expand_builtin) (exp, target, subtarget, mode, ignore);
@@ -3712,18 +3608,11 @@ expand_builtin (exp, target, subtarget, mode, ignore)
if (!optimize && !CALLED_AS_BUILT_IN (fndecl))
switch (fcode)
{
+ case BUILT_IN_SIN:
+ case BUILT_IN_COS:
case BUILT_IN_SQRT:
case BUILT_IN_SQRTF:
case BUILT_IN_SQRTL:
- case BUILT_IN_SIN:
- case BUILT_IN_SINF:
- case BUILT_IN_SINL:
- case BUILT_IN_COS:
- case BUILT_IN_COSF:
- case BUILT_IN_COSL:
- case BUILT_IN_EXP:
- case BUILT_IN_EXPF:
- case BUILT_IN_EXPL:
case BUILT_IN_MEMSET:
case BUILT_IN_MEMCPY:
case BUILT_IN_MEMCMP:
@@ -3757,11 +3646,11 @@ expand_builtin (exp, target, subtarget, mode, ignore)
case BUILT_IN_FPUTC_UNLOCKED:
case BUILT_IN_FPUTS_UNLOCKED:
case BUILT_IN_FWRITE_UNLOCKED:
- return expand_call (exp, target, ignore);
+ return expand_call (exp, target, ignore);
default:
- break;
- }
+ break;
+ }
switch (fcode)
{
@@ -3794,12 +3683,6 @@ expand_builtin (exp, target, subtarget, mode, ignore)
case BUILT_IN_COS:
case BUILT_IN_COSF:
case BUILT_IN_COSL:
- case BUILT_IN_EXP:
- case BUILT_IN_EXPF:
- case BUILT_IN_EXPL:
- case BUILT_IN_LOG:
- case BUILT_IN_LOGF:
- case BUILT_IN_LOGL:
/* Treat these like sqrt only if unsafe math optimizations are allowed,
because of possible accuracy problems. */
if (! flag_unsafe_math_optimizations)
@@ -3812,6 +3695,9 @@ expand_builtin (exp, target, subtarget, mode, ignore)
return target;
break;
+ case BUILT_IN_FMOD:
+ break;
+
case BUILT_IN_APPLY_ARGS:
return expand_builtin_apply_args ();
@@ -3876,11 +3762,11 @@ expand_builtin (exp, target, subtarget, mode, ignore)
0 otherwise. */
case BUILT_IN_AGGREGATE_INCOMING_ADDRESS:
if (arglist != 0
- || ! AGGREGATE_TYPE_P (TREE_TYPE (TREE_TYPE (current_function_decl)))
- || GET_CODE (DECL_RTL (DECL_RESULT (current_function_decl))) != MEM)
- return const0_rtx;
+ || ! AGGREGATE_TYPE_P (TREE_TYPE (TREE_TYPE (current_function_decl)))
+ || GET_CODE (DECL_RTL (DECL_RESULT (current_function_decl))) != MEM)
+ return const0_rtx;
else
- return XEXP (DECL_RTL (DECL_RESULT (current_function_decl)), 0);
+ return XEXP (DECL_RTL (DECL_RESULT (current_function_decl)), 0);
case BUILT_IN_ALLOCA:
target = expand_builtin_alloca (arglist, target);
@@ -4032,6 +3918,15 @@ expand_builtin (exp, target, subtarget, mode, ignore)
expand_builtin_trap ();
return const0_rtx;
+ case BUILT_IN_PUTCHAR:
+ case BUILT_IN_PUTS:
+ case BUILT_IN_FPUTC:
+ case BUILT_IN_FWRITE:
+ case BUILT_IN_PUTCHAR_UNLOCKED:
+ case BUILT_IN_PUTS_UNLOCKED:
+ case BUILT_IN_FPUTC_UNLOCKED:
+ case BUILT_IN_FWRITE_UNLOCKED:
+ break;
case BUILT_IN_FPUTS:
target = expand_builtin_fputs (arglist, ignore,/*unlocked=*/ 0);
if (target)
@@ -4050,8 +3945,8 @@ expand_builtin (exp, target, subtarget, mode, ignore)
case BUILT_IN_DWARF_CFA:
return virtual_cfa_rtx;
#ifdef DWARF2_UNWIND_INFO
- case BUILT_IN_DWARF_SP_COLUMN:
- return expand_builtin_dwarf_sp_column ();
+ case BUILT_IN_DWARF_FP_REGNUM:
+ return expand_builtin_dwarf_fp_regnum ();
case BUILT_IN_INIT_DWARF_REG_SIZES:
expand_builtin_init_dwarf_reg_sizes (TREE_VALUE (arglist));
return const0_rtx;
@@ -4068,9 +3963,10 @@ expand_builtin (exp, target, subtarget, mode, ignore)
case BUILT_IN_EH_RETURN_DATA_REGNO:
return expand_builtin_eh_return_data_regno (arglist);
#endif
- case BUILT_IN_VA_START:
+ case BUILT_IN_VARARGS_START:
+ return expand_builtin_va_start (0, arglist);
case BUILT_IN_STDARG_START:
- return expand_builtin_va_start (arglist);
+ return expand_builtin_va_start (1, arglist);
case BUILT_IN_VA_END:
return expand_builtin_va_end (arglist);
case BUILT_IN_VA_COPY:
@@ -4082,10 +3978,9 @@ expand_builtin (exp, target, subtarget, mode, ignore)
return const0_rtx;
- default: /* just do library call, if unknown builtin */
- if (!DECL_ASSEMBLER_NAME_SET_P (fndecl))
- error ("built-in function `%s' not currently supported",
- IDENTIFIER_POINTER (DECL_NAME (fndecl)));
+ default: /* just do library call, if unknown builtin */
+ error ("built-in function `%s' not currently supported",
+ IDENTIFIER_POINTER (DECL_NAME (fndecl)));
}
/* The switch statement above can drop through to cause the function
@@ -4147,44 +4042,6 @@ fold_builtin_classify_type (arglist)
return build_int_2 (type_to_class (TREE_TYPE (TREE_VALUE (arglist))), 0);
}
-/* Fold a call to __builtin_inf or __builtin_huge_val. */
-
-static tree
-fold_builtin_inf (type, warn)
- tree type;
- int warn;
-{
- REAL_VALUE_TYPE real;
-
- if (!MODE_HAS_INFINITIES (TYPE_MODE (type)) && warn)
- warning ("target format does not support infinity");
-
- real_inf (&real);
- return build_real (type, real);
-}
-
-/* Fold a call to __builtin_nan or __builtin_nans. */
-
-static tree
-fold_builtin_nan (arglist, type, quiet)
- tree arglist, type;
- int quiet;
-{
- REAL_VALUE_TYPE real;
- const char *str;
-
- if (!validate_arglist (arglist, POINTER_TYPE, VOID_TYPE))
- return 0;
- str = c_getstr (TREE_VALUE (arglist));
- if (!str)
- return 0;
-
- if (!real_nan (&real, str, quiet, TYPE_MODE (type)))
- return 0;
-
- return build_real (type, real);
-}
-
/* Used by constant folding to eliminate some builtin calls early. EXP is
the CALL_EXPR of a call to a builtin function. */
@@ -4221,26 +4078,6 @@ fold_builtin (exp)
}
break;
- case BUILT_IN_INF:
- case BUILT_IN_INFF:
- case BUILT_IN_INFL:
- return fold_builtin_inf (TREE_TYPE (TREE_TYPE (fndecl)), true);
-
- case BUILT_IN_HUGE_VAL:
- case BUILT_IN_HUGE_VALF:
- case BUILT_IN_HUGE_VALL:
- return fold_builtin_inf (TREE_TYPE (TREE_TYPE (fndecl)), false);
-
- case BUILT_IN_NAN:
- case BUILT_IN_NANF:
- case BUILT_IN_NANL:
- return fold_builtin_nan (arglist, TREE_TYPE (TREE_TYPE (fndecl)), true);
-
- case BUILT_IN_NANS:
- case BUILT_IN_NANSF:
- case BUILT_IN_NANSL:
- return fold_builtin_nan (arglist, TREE_TYPE (TREE_TYPE (fndecl)), false);
-
default:
break;
}
@@ -4275,32 +4112,29 @@ validate_arglist VPARAMS ((tree arglist, ...))
VA_OPEN (ap, arglist);
VA_FIXEDARG (ap, tree, arglist);
- do
+ do {
+ code = va_arg (ap, enum tree_code);
+ switch (code)
{
- code = va_arg (ap, enum tree_code);
- switch (code)
- {
- case 0:
- /* This signifies an ellipses, any further arguments are all ok. */
- res = 1;
- goto end;
- case VOID_TYPE:
- /* This signifies an endlink, if no arguments remain, return
- true, otherwise return false. */
- res = arglist == 0;
- goto end;
- default:
- /* If no parameters remain or the parameter's code does not
- match the specified code, return false. Otherwise continue
- checking any remaining arguments. */
- if (arglist == 0
- || code != TREE_CODE (TREE_TYPE (TREE_VALUE (arglist))))
- goto end;
- break;
- }
- arglist = TREE_CHAIN (arglist);
+ case 0:
+ /* This signifies an ellipses, any further arguments are all ok. */
+ res = 1;
+ goto end;
+ case VOID_TYPE:
+ /* This signifies an endlink, if no arguments remain, return
+ true, otherwise return false. */
+ res = arglist == 0;
+ goto end;
+ default:
+ /* If no parameters remain or the parameter's code does not
+ match the specified code, return false. Otherwise continue
+ checking any remaining arguments. */
+ if (arglist == 0 || code != TREE_CODE (TREE_TYPE (TREE_VALUE (arglist))))
+ goto end;
+ break;
}
- while (1);
+ arglist = TREE_CHAIN (arglist);
+ } while (1);
/* We need gotos here since we can only have one VA_CLOSE in a
function. */
diff --git a/contrib/gcc/c-common.c b/contrib/gcc/c-common.c
index b40a35a..3511f15 100644
--- a/contrib/gcc/c-common.c
+++ b/contrib/gcc/c-common.c
@@ -22,7 +22,6 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "config.h"
#include "system.h"
#include "tree.h"
-#include "real.h"
#include "flags.h"
#include "toplev.h"
#include "output.h"
@@ -31,17 +30,17 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "ggc.h"
#include "expr.h"
#include "c-common.h"
+#include "tree-inline.h"
#include "diagnostic.h"
#include "tm_p.h"
#include "obstack.h"
+#include "c-lex.h"
#include "cpplib.h"
#include "target.h"
-#include "langhooks.h"
-#include "except.h" /* For USING_SJLJ_EXCEPTIONS. */
-#include "tree-inline.h"
-#include "c-tree.h"
+cpp_reader *parse_in; /* Declared in c-lex.h. */
-cpp_reader *parse_in; /* Declared in c-pragma.h. */
+#undef WCHAR_TYPE_SIZE
+#define WCHAR_TYPE_SIZE TYPE_PRECISION (wchar_type_node)
/* We let tm.h override the types used here, to handle trivial differences
such as the choice of unsigned int or long unsigned int for size_t.
@@ -57,10 +56,6 @@ cpp_reader *parse_in; /* Declared in c-pragma.h. */
#define WCHAR_TYPE "int"
#endif
-/* WCHAR_TYPE gets overridden by -fshort-wchar. */
-#define MODIFIED_WCHAR_TYPE \
- (flag_short_wchar ? "short unsigned int" : WCHAR_TYPE)
-
#ifndef PTRDIFF_TYPE
#define PTRDIFF_TYPE "long int"
#endif
@@ -85,10 +80,6 @@ cpp_reader *parse_in; /* Declared in c-pragma.h. */
: "long long unsigned int"))
#endif
-#ifndef REGISTER_PREFIX
-#define REGISTER_PREFIX ""
-#endif
-
/* The variant of the C language being processed. */
enum c_language_kind c_language;
@@ -189,22 +180,6 @@ enum c_language_kind c_language;
tree c_global_trees[CTI_MAX];
-/* Switches common to the C front ends. */
-
-/* Nonzero if prepreprocessing only. */
-int flag_preprocess_only;
-
-/* Nonzero if an ISO standard was selected. It rejects macros in the
- user's namespace. */
-int flag_iso;
-
-/* Nonzero whenever Objective-C functionality is being used. */
-int flag_objc;
-
-/* Nonzero if -undef was given. It suppresses target built-in macros
- and assertions. */
-int flag_undef;
-
/* Nonzero means don't recognize the non-ANSI builtin functions. */
int flag_no_builtin;
@@ -222,180 +197,6 @@ int flag_short_double;
int flag_short_wchar;
-/* Nonzero means allow Microsoft extensions without warnings or errors. */
-int flag_ms_extensions;
-
-/* Nonzero means don't recognize the keyword `asm'. */
-
-int flag_no_asm;
-
-/* Nonzero means give string constants the type `const char *', as mandated
- by the standard. */
-
-int flag_const_strings;
-
-/* Nonzero means `$' can be in an identifier. */
-
-#ifndef DOLLARS_IN_IDENTIFIERS
-#define DOLLARS_IN_IDENTIFIERS 1
-#endif
-int dollars_in_ident = DOLLARS_IN_IDENTIFIERS;
-
-/* Nonzero means to treat bitfields as signed unless they say `unsigned'. */
-
-int flag_signed_bitfields = 1;
-int explicit_flag_signed_bitfields;
-
-/* Nonzero means warn about pointer casts that can drop a type qualifier
- from the pointer target type. */
-
-int warn_cast_qual;
-
-/* Warn about functions which might be candidates for format attributes. */
-
-int warn_missing_format_attribute;
-
-/* Nonzero means warn about sizeof(function) or addition/subtraction
- of function pointers. */
-
-int warn_pointer_arith;
-
-/* Nonzero means warn for any global function def
- without separate previous prototype decl. */
-
-int warn_missing_prototypes;
-
-/* Warn if adding () is suggested. */
-
-int warn_parentheses;
-
-/* Warn if initializer is not completely bracketed. */
-
-int warn_missing_braces;
-
-/* Warn about comparison of signed and unsigned values.
- If -1, neither -Wsign-compare nor -Wno-sign-compare has been specified. */
-
-int warn_sign_compare;
-
-/* Nonzero means warn about usage of long long when `-pedantic'. */
-
-int warn_long_long = 1;
-
-/* Nonzero means warn about deprecated conversion from string constant to
- `char *'. */
-
-int warn_write_strings;
-
-/* Nonzero means warn about multiple (redundant) decls for the same single
- variable or function. */
-
-int warn_redundant_decls;
-
-/* Warn about testing equality of floating point numbers. */
-
-int warn_float_equal;
-
-/* Warn about a subscript that has type char. */
-
-int warn_char_subscripts;
-
-/* Warn if a type conversion is done that might have confusing results. */
-
-int warn_conversion;
-
-/* Warn about #pragma directives that are not recognized. */
-
-int warn_unknown_pragmas; /* Tri state variable. */
-
-/* Warn about format/argument anomalies in calls to formatted I/O functions
- (*printf, *scanf, strftime, strfmon, etc.). */
-
-int warn_format;
-
-/* Warn about Y2K problems with strftime formats. */
-
-int warn_format_y2k;
-
-/* Warn about excess arguments to formats. */
-
-int warn_format_extra_args;
-
-/* Warn about zero-length formats. */
-
-int warn_format_zero_length;
-
-/* Warn about non-literal format arguments. */
-
-int warn_format_nonliteral;
-
-/* Warn about possible security problems with calls to format functions. */
-
-int warn_format_security;
-
-
-/* C/ObjC language option variables. */
-
-
-/* Nonzero means message about use of implicit function declarations;
- 1 means warning; 2 means error. */
-
-int mesg_implicit_function_declaration = -1;
-
-/* Nonzero means allow type mismatches in conditional expressions;
- just make their values `void'. */
-
-int flag_cond_mismatch;
-
-/* Nonzero means enable C89 Amendment 1 features. */
-
-int flag_isoc94;
-
-/* Nonzero means use the ISO C99 dialect of C. */
-
-int flag_isoc99;
-
-/* Nonzero means that we have builtin functions, and main is an int */
-
-int flag_hosted = 1;
-
-/* Nonzero means add default format_arg attributes for functions not
- in ISO C. */
-
-int flag_noniso_default_format_attributes = 1;
-
-/* Nonzero means warn when casting a function call to a type that does
- not match the return type (e.g. (float)sqrt() or (anything*)malloc()
- when there is no previous declaration of sqrt or malloc. */
-
-int warn_bad_function_cast;
-
-/* Warn about traditional constructs whose meanings changed in ANSI C. */
-
-int warn_traditional;
-
-/* Nonzero means warn for non-prototype function decls
- or non-prototyped defs without previous prototype. */
-
-int warn_strict_prototypes;
-
-/* Nonzero means warn for any global function def
- without separate previous decl. */
-
-int warn_missing_declarations;
-
-/* Nonzero means warn about declarations of objects not at
- file-scope level and about *all* declarations of functions (whether
- or static) not at file-scope level. Note that we exclude
- implicit function declarations. To get warnings about those, use
- -Wimplicit. */
-
-int warn_nested_externs;
-
-/* Warn if main is suspicious. */
-
-int warn_main;
-
/* Nonzero means warn about possible violations of sequence point rules. */
int warn_sequence_point;
@@ -403,254 +204,6 @@ int warn_sequence_point;
/* Nonzero means to warn about compile-time division by zero. */
int warn_div_by_zero = 1;
-/* Nonzero means warn about use of implicit int. */
-
-int warn_implicit_int;
-
-/* Warn about NULL being passed to argument slots marked as requiring
- non-NULL. */
-
-int warn_nonnull;
-
-
-/* ObjC language option variables. */
-
-
-/* Open and close the file for outputting class declarations, if
- requested (ObjC). */
-
-int flag_gen_declaration;
-
-/* Generate code for GNU or NeXT runtime environment. */
-
-#ifdef NEXT_OBJC_RUNTIME
-int flag_next_runtime = 1;
-#else
-int flag_next_runtime = 0;
-#endif
-
-/* Tells the compiler that this is a special run. Do not perform any
- compiling, instead we are to test some platform dependent features
- and output a C header file with appropriate definitions. */
-
-int print_struct_values;
-
-/* ???. Undocumented. */
-
-const char *constant_string_class_name;
-
-/* Warn if multiple methods are seen for the same selector, but with
- different argument types. Performs the check on the whole selector
- table at the end of compilation. */
-
-int warn_selector;
-
-/* Warn if a @selector() is found, and no method with that selector
- has been previously declared. The check is done on each
- @selector() as soon as it is found - so it warns about forward
- declarations. */
-
-int warn_undeclared_selector;
-
-/* Warn if methods required by a protocol are not implemented in the
- class adopting it. When turned off, methods inherited to that
- class are also considered implemented. */
-
-int warn_protocol = 1;
-
-
-/* C++ language option variables. */
-
-
-/* Nonzero means don't recognize any extension keywords. */
-
-int flag_no_gnu_keywords;
-
-/* Nonzero means do emit exported implementations of functions even if
- they can be inlined. */
-
-int flag_implement_inlines = 1;
-
-/* Nonzero means do emit exported implementations of templates, instead of
- multiple static copies in each file that needs a definition. */
-
-int flag_external_templates;
-
-/* Nonzero means that the decision to emit or not emit the implementation of a
- template depends on where the template is instantiated, rather than where
- it is defined. */
-
-int flag_alt_external_templates;
-
-/* Nonzero means that implicit instantiations will be emitted if needed. */
-
-int flag_implicit_templates = 1;
-
-/* Nonzero means that implicit instantiations of inline templates will be
- emitted if needed, even if instantiations of non-inline templates
- aren't. */
-
-int flag_implicit_inline_templates = 1;
-
-/* Nonzero means generate separate instantiation control files and
- juggle them at link time. */
-
-int flag_use_repository;
-
-/* Nonzero if we want to issue diagnostics that the standard says are not
- required. */
-
-int flag_optional_diags = 1;
-
-/* Nonzero means we should attempt to elide constructors when possible. */
-
-int flag_elide_constructors = 1;
-
-/* Nonzero means that member functions defined in class scope are
- inline by default. */
-
-int flag_default_inline = 1;
-
-/* Controls whether compiler generates 'type descriptor' that give
- run-time type information. */
-
-int flag_rtti = 1;
-
-/* Nonzero if we want to conserve space in the .o files. We do this
- by putting uninitialized data and runtime initialized data into
- .common instead of .data at the expense of not flagging multiple
- definitions. */
-
-int flag_conserve_space;
-
-/* Nonzero if we want to obey access control semantics. */
-
-int flag_access_control = 1;
-
-/* Nonzero if we want to check the return value of new and avoid calling
- constructors if it is a null pointer. */
-
-int flag_check_new;
-
-/* Nonzero if we want the new ISO rules for pushing a new scope for `for'
- initialization variables.
- 0: Old rules, set by -fno-for-scope.
- 2: New ISO rules, set by -ffor-scope.
- 1: Try to implement new ISO rules, but with backup compatibility
- (and warnings). This is the default, for now. */
-
-int flag_new_for_scope = 1;
-
-/* Nonzero if we want to emit defined symbols with common-like linkage as
- weak symbols where possible, in order to conform to C++ semantics.
- Otherwise, emit them as local symbols. */
-
-int flag_weak = 1;
-
-/* Nonzero to use __cxa_atexit, rather than atexit, to register
- destructors for local statics and global objects. */
-
-int flag_use_cxa_atexit = DEFAULT_USE_CXA_ATEXIT;
-
-/* Nonzero means output .vtable_{entry,inherit} for use in doing vtable gc. */
-
-int flag_vtable_gc;
-
-/* Nonzero means make the default pedwarns warnings instead of errors.
- The value of this flag is ignored if -pedantic is specified. */
-
-int flag_permissive;
-
-/* Nonzero means to implement standard semantics for exception
- specifications, calling unexpected if an exception is thrown that
- doesn't match the specification. Zero means to treat them as
- assertions and optimize accordingly, but not check them. */
-
-int flag_enforce_eh_specs = 1;
-
-/* The version of the C++ ABI in use. The following values are
- allowed:
-
- 0: The version of the ABI believed most conformant with the
- C++ ABI specification. This ABI may change as bugs are
- discovered and fixed. Therefore, 0 will not necessarily
- indicate the same ABI in different versions of G++.
-
- 1: The version of the ABI first used in G++ 3.2.
-
- Additional positive integers will be assigned as new versions of
- the ABI become the default version of the ABI. */
-
-int flag_abi_version = 1;
-
-/* Nonzero means warn about things that will change when compiling
- with an ABI-compliant compiler. */
-
-int warn_abi = 0;
-
-/* Nonzero means warn about implicit declarations. */
-
-int warn_implicit = 1;
-
-/* Nonzero means warn when all ctors or dtors are private, and the class
- has no friends. */
-
-int warn_ctor_dtor_privacy = 1;
-
-/* Nonzero means warn in function declared in derived class has the
- same name as a virtual in the base class, but fails to match the
- type signature of any virtual function in the base class. */
-
-int warn_overloaded_virtual;
-
-/* Nonzero means warn when declaring a class that has a non virtual
- destructor, when it really ought to have a virtual one. */
-
-int warn_nonvdtor;
-
-/* Nonzero means warn when the compiler will reorder code. */
-
-int warn_reorder;
-
-/* Nonzero means warn when synthesis behavior differs from Cfront's. */
-
-int warn_synth;
-
-/* Nonzero means warn when we convert a pointer to member function
- into a pointer to (void or function). */
-
-int warn_pmf2ptr = 1;
-
-/* Nonzero means warn about violation of some Effective C++ style rules. */
-
-int warn_ecpp;
-
-/* Nonzero means warn where overload resolution chooses a promotion from
- unsigned to signed over a conversion to an unsigned of the same size. */
-
-int warn_sign_promo;
-
-/* Nonzero means warn when an old-style cast is used. */
-
-int warn_old_style_cast;
-
-/* Nonzero means warn when non-templatized friend functions are
- declared within a template */
-
-int warn_nontemplate_friend = 1;
-
-/* Nonzero means complain about deprecated features. */
-
-int warn_deprecated = 1;
-
-/* Maximum template instantiation depth. This limit is rather
- arbitrary, but it exists to limit the time it takes to notice
- infinite template instantiations. */
-
-int max_tinst_depth = 500;
-
-
-
/* The elements of `ridpointers' are identifier nodes for the reserved
type names and storage classes. It is indexed by a RID_... value. */
tree *ridpointers;
@@ -714,169 +267,6 @@ static int if_stack_space = 0;
/* Stack pointer. */
static int if_stack_pointer = 0;
-static tree handle_packed_attribute PARAMS ((tree *, tree, tree, int,
- bool *));
-static tree handle_nocommon_attribute PARAMS ((tree *, tree, tree, int,
- bool *));
-static tree handle_common_attribute PARAMS ((tree *, tree, tree, int,
- bool *));
-static tree handle_noreturn_attribute PARAMS ((tree *, tree, tree, int,
- bool *));
-static tree handle_noinline_attribute PARAMS ((tree *, tree, tree, int,
- bool *));
-static tree handle_always_inline_attribute PARAMS ((tree *, tree, tree, int,
- bool *));
-static tree handle_used_attribute PARAMS ((tree *, tree, tree, int,
- bool *));
-static tree handle_unused_attribute PARAMS ((tree *, tree, tree, int,
- bool *));
-static tree handle_const_attribute PARAMS ((tree *, tree, tree, int,
- bool *));
-static tree handle_transparent_union_attribute PARAMS ((tree *, tree, tree,
- int, bool *));
-static tree handle_constructor_attribute PARAMS ((tree *, tree, tree, int,
- bool *));
-static tree handle_destructor_attribute PARAMS ((tree *, tree, tree, int,
- bool *));
-static tree handle_mode_attribute PARAMS ((tree *, tree, tree, int,
- bool *));
-static tree handle_section_attribute PARAMS ((tree *, tree, tree, int,
- bool *));
-static tree handle_aligned_attribute PARAMS ((tree *, tree, tree, int,
- bool *));
-static tree handle_weak_attribute PARAMS ((tree *, tree, tree, int,
- bool *));
-static tree handle_alias_attribute PARAMS ((tree *, tree, tree, int,
- bool *));
-static tree handle_visibility_attribute PARAMS ((tree *, tree, tree, int,
- bool *));
-static tree handle_tls_model_attribute PARAMS ((tree *, tree, tree, int,
- bool *));
-static tree handle_no_instrument_function_attribute PARAMS ((tree *, tree,
- tree, int,
- bool *));
-static tree handle_malloc_attribute PARAMS ((tree *, tree, tree, int,
- bool *));
-static tree handle_no_limit_stack_attribute PARAMS ((tree *, tree, tree, int,
- bool *));
-static tree handle_pure_attribute PARAMS ((tree *, tree, tree, int,
- bool *));
-static tree handle_deprecated_attribute PARAMS ((tree *, tree, tree, int,
- bool *));
-static tree handle_vector_size_attribute PARAMS ((tree *, tree, tree, int,
- bool *));
-static tree handle_nonnull_attribute PARAMS ((tree *, tree, tree, int,
- bool *));
-static tree handle_nothrow_attribute PARAMS ((tree *, tree, tree, int,
- bool *));
-static tree handle_cleanup_attribute PARAMS ((tree *, tree, tree, int,
- bool *));
-static tree vector_size_helper PARAMS ((tree, tree));
-
-static void check_function_nonnull PARAMS ((tree, tree));
-static void check_nonnull_arg PARAMS ((void *, tree,
- unsigned HOST_WIDE_INT));
-static bool nonnull_check_p PARAMS ((tree, unsigned HOST_WIDE_INT));
-static bool get_nonnull_operand PARAMS ((tree,
- unsigned HOST_WIDE_INT *));
-void builtin_define_std PARAMS ((const char *));
-static void builtin_define_with_value PARAMS ((const char *, const char *,
- int));
-static void builtin_define_with_int_value PARAMS ((const char *,
- HOST_WIDE_INT));
-static void builtin_define_with_hex_fp_value PARAMS ((const char *, tree,
- int, const char *,
- const char *));
-static void builtin_define_type_max PARAMS ((const char *, tree, int));
-static void builtin_define_type_precision PARAMS ((const char *, tree));
-static void builtin_define_float_constants PARAMS ((const char *,
- const char *, tree));
-
-/* Table of machine-independent attributes common to all C-like languages. */
-const struct attribute_spec c_common_attribute_table[] =
-{
- /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler } */
- { "packed", 0, 0, false, false, false,
- handle_packed_attribute },
- { "nocommon", 0, 0, true, false, false,
- handle_nocommon_attribute },
- { "common", 0, 0, true, false, false,
- handle_common_attribute },
- /* FIXME: logically, noreturn attributes should be listed as
- "false, true, true" and apply to function types. But implementing this
- would require all the places in the compiler that use TREE_THIS_VOLATILE
- on a decl to identify non-returning functions to be located and fixed
- to check the function type instead. */
- { "noreturn", 0, 0, true, false, false,
- handle_noreturn_attribute },
- { "volatile", 0, 0, true, false, false,
- handle_noreturn_attribute },
- { "noinline", 0, 0, true, false, false,
- handle_noinline_attribute },
- { "always_inline", 0, 0, true, false, false,
- handle_always_inline_attribute },
- { "used", 0, 0, true, false, false,
- handle_used_attribute },
- { "unused", 0, 0, false, false, false,
- handle_unused_attribute },
- /* The same comments as for noreturn attributes apply to const ones. */
- { "const", 0, 0, true, false, false,
- handle_const_attribute },
- { "transparent_union", 0, 0, false, false, false,
- handle_transparent_union_attribute },
- { "constructor", 0, 0, true, false, false,
- handle_constructor_attribute },
- { "destructor", 0, 0, true, false, false,
- handle_destructor_attribute },
- { "mode", 1, 1, false, true, false,
- handle_mode_attribute },
- { "section", 1, 1, true, false, false,
- handle_section_attribute },
- { "aligned", 0, 1, false, false, false,
- handle_aligned_attribute },
- { "weak", 0, 0, true, false, false,
- handle_weak_attribute },
- { "alias", 1, 1, true, false, false,
- handle_alias_attribute },
- { "no_instrument_function", 0, 0, true, false, false,
- handle_no_instrument_function_attribute },
- { "malloc", 0, 0, true, false, false,
- handle_malloc_attribute },
- { "no_stack_limit", 0, 0, true, false, false,
- handle_no_limit_stack_attribute },
- { "pure", 0, 0, true, false, false,
- handle_pure_attribute },
- { "deprecated", 0, 0, false, false, false,
- handle_deprecated_attribute },
- { "vector_size", 1, 1, false, true, false,
- handle_vector_size_attribute },
- { "visibility", 1, 1, true, false, false,
- handle_visibility_attribute },
- { "tls_model", 1, 1, true, false, false,
- handle_tls_model_attribute },
- { "nonnull", 0, -1, false, true, true,
- handle_nonnull_attribute },
- { "nothrow", 0, 0, true, false, false,
- handle_nothrow_attribute },
- { "may_alias", 0, 0, false, true, false, NULL },
- { "cleanup", 1, 1, true, false, false,
- handle_cleanup_attribute },
- { NULL, 0, 0, false, false, false, NULL }
-};
-
-/* Give the specifications for the format attributes, used by C and all
- descendents. */
-
-const struct attribute_spec c_common_format_attribute_table[] =
-{
- /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler } */
- { "format", 3, 3, false, true, true,
- handle_format_attribute },
- { "format_arg", 1, 1, false, true, true,
- handle_format_arg_attribute },
- { NULL, 0, 0, false, false, false, NULL }
-};
-
/* Record the start of an if-then, and record the start of it
for ambiguous else detection.
@@ -1093,7 +483,7 @@ fname_as_string (pretty_p)
if (pretty_p)
name = (current_function_decl
- ? (*lang_hooks.decl_printable_name) (current_function_decl, 2)
+ ? (*decl_printable_name) (current_function_decl, 2)
: "top level");
else if (current_function_decl && DECL_NAME (current_function_decl))
name = IDENTIFIER_POINTER (DECL_NAME (current_function_decl));
@@ -1140,13 +530,6 @@ fname_decl (rid, id)
if (!decl)
{
tree saved_last_tree = last_tree;
- /* If a tree is built here, it would normally have the lineno of
- the current statement. Later this tree will be moved to the
- beginning of the function and this line number will be wrong.
- To avoid this problem set the lineno to 0 here; that prevents
- it from appearing in the RTL. */
- int saved_lineno = lineno;
- lineno = 0;
decl = (*make_fname_decl) (id, fname_vars[ix].pretty);
if (last_tree != saved_last_tree)
@@ -1162,7 +545,6 @@ fname_decl (rid, id)
saved_function_name_decls);
}
*fname_vars[ix].decl = decl;
- lineno = saved_lineno;
}
if (!ix && !current_function_decl)
pedwarn_with_decl (decl, "`%s' is not defined outside of function scope");
@@ -1170,152 +552,136 @@ fname_decl (rid, id)
return decl;
}
-/* Given a STRING_CST, give it a suitable array-of-chars data type. */
-
-tree
-fix_string_type (value)
- tree value;
-{
- const int wchar_bytes = TYPE_PRECISION (wchar_type_node) / BITS_PER_UNIT;
- const int wide_flag = TREE_TYPE (value) == wchar_array_type_node;
- const int nchars_max = flag_isoc99 ? 4095 : 509;
- int length = TREE_STRING_LENGTH (value);
- int nchars;
-
- /* Compute the number of elements, for the array type. */
- nchars = wide_flag ? length / wchar_bytes : length;
-
- if (pedantic && nchars - 1 > nchars_max && c_language == clk_c)
- pedwarn ("string length `%d' is greater than the length `%d' ISO C%d compilers are required to support",
- nchars - 1, nchars_max, flag_isoc99 ? 99 : 89);
-
- /* Create the array type for the string constant.
- -Wwrite-strings says make the string constant an array of const char
- so that copying it to a non-const pointer will get a warning.
- For C++, this is the standard behavior. */
- if (flag_const_strings && ! flag_writable_strings)
- {
- tree elements
- = build_type_variant (wide_flag ? wchar_type_node : char_type_node,
- 1, 0);
- TREE_TYPE (value)
- = build_array_type (elements,
- build_index_type (build_int_2 (nchars - 1, 0)));
- }
- else
- TREE_TYPE (value)
- = build_array_type (wide_flag ? wchar_type_node : char_type_node,
- build_index_type (build_int_2 (nchars - 1, 0)));
-
- TREE_CONSTANT (value) = 1;
- TREE_READONLY (value) = ! flag_writable_strings;
- TREE_STATIC (value) = 1;
- return value;
-}
-
-/* Given a VARRAY of STRING_CST nodes, concatenate them into one
- STRING_CST. */
+/* Given a chain of STRING_CST nodes,
+ concatenate them into one STRING_CST
+ and give it a suitable array-of-chars data type. */
tree
combine_strings (strings)
- varray_type strings;
+ tree strings;
{
- const int wchar_bytes = TYPE_PRECISION (wchar_type_node) / BITS_PER_UNIT;
- const int nstrings = VARRAY_ACTIVE_SIZE (strings);
tree value, t;
int length = 1;
int wide_length = 0;
int wide_flag = 0;
- int i;
- char *p, *q;
+ int wchar_bytes = TYPE_PRECISION (wchar_type_node) / BITS_PER_UNIT;
+ int nchars;
+ const int nchars_max = flag_isoc99 ? 4095 : 509;
- /* Don't include the \0 at the end of each substring. Count wide
- strings and ordinary strings separately. */
- for (i = 0; i < nstrings; ++i)
+ if (TREE_CHAIN (strings))
{
- t = VARRAY_TREE (strings, i);
+ /* More than one in the chain, so concatenate. */
+ char *p, *q;
- if (TREE_TYPE (t) == wchar_array_type_node)
+ /* Don't include the \0 at the end of each substring,
+ except for the last one.
+ Count wide strings and ordinary strings separately. */
+ for (t = strings; t; t = TREE_CHAIN (t))
{
- wide_length += TREE_STRING_LENGTH (t) - wchar_bytes;
- wide_flag = 1;
- }
- else
- {
- length += (TREE_STRING_LENGTH (t) - 1);
- if (C_ARTIFICIAL_STRING_P (t) && !in_system_header)
- warning ("concatenation of string literals with __FUNCTION__ is deprecated");
+ if (TREE_TYPE (t) == wchar_array_type_node)
+ {
+ wide_length += (TREE_STRING_LENGTH (t) - wchar_bytes);
+ wide_flag = 1;
+ }
+ else
+ {
+ length += (TREE_STRING_LENGTH (t) - 1);
+ if (C_ARTIFICIAL_STRING_P (t) && !in_system_header)
+ warning ("concatenation of string literals with __FUNCTION__ is deprecated");
+ }
}
- }
-
- /* If anything is wide, the non-wides will be converted,
- which makes them take more space. */
- if (wide_flag)
- length = length * wchar_bytes + wide_length;
- p = xmalloc (length);
+ /* If anything is wide, the non-wides will be converted,
+ which makes them take more space. */
+ if (wide_flag)
+ length = length * wchar_bytes + wide_length;
- /* Copy the individual strings into the new combined string.
- If the combined string is wide, convert the chars to ints
- for any individual strings that are not wide. */
+ p = xmalloc (length);
- q = p;
- for (i = 0; i < nstrings; ++i)
- {
- int len, this_wide;
+ /* Copy the individual strings into the new combined string.
+ If the combined string is wide, convert the chars to ints
+ for any individual strings that are not wide. */
- t = VARRAY_TREE (strings, i);
- this_wide = TREE_TYPE (t) == wchar_array_type_node;
- len = TREE_STRING_LENGTH (t) - (this_wide ? wchar_bytes : 1);
- if (this_wide == wide_flag)
+ q = p;
+ for (t = strings; t; t = TREE_CHAIN (t))
{
- memcpy (q, TREE_STRING_POINTER (t), len);
- q += len;
- }
- else
- {
- const int nzeros = (TYPE_PRECISION (wchar_type_node)
- / BITS_PER_UNIT) - 1;
- int j, k;
-
- if (BYTES_BIG_ENDIAN)
+ int len = (TREE_STRING_LENGTH (t)
+ - ((TREE_TYPE (t) == wchar_array_type_node)
+ ? wchar_bytes : 1));
+ if ((TREE_TYPE (t) == wchar_array_type_node) == wide_flag)
{
- for (k = 0; k < len; k++)
- {
- for (j = 0; j < nzeros; j++)
- *q++ = 0;
- *q++ = TREE_STRING_POINTER (t)[k];
- }
+ memcpy (q, TREE_STRING_POINTER (t), len);
+ q += len;
}
else
{
- for (k = 0; k < len; k++)
+ int i, j;
+ for (i = 0; i < len; i++)
{
- *q++ = TREE_STRING_POINTER (t)[k];
- for (j = 0; j < nzeros; j++)
- *q++ = 0;
+ if (BYTES_BIG_ENDIAN)
+ {
+ for (j=0; j<(WCHAR_TYPE_SIZE / BITS_PER_UNIT)-1; j++)
+ *q++ = 0;
+ *q++ = TREE_STRING_POINTER (t)[i];
+ }
+ else
+ {
+ *q++ = TREE_STRING_POINTER (t)[i];
+ for (j=0; j<(WCHAR_TYPE_SIZE / BITS_PER_UNIT)-1; j++)
+ *q++ = 0;
+ }
}
}
}
- }
+ if (wide_flag)
+ {
+ int i;
+ for (i = 0; i < wchar_bytes; i++)
+ *q++ = 0;
+ }
+ else
+ *q = 0;
- /* Nul terminate the string. */
- if (wide_flag)
- {
- for (i = 0; i < wchar_bytes; i++)
- *q++ = 0;
+ value = build_string (length, p);
+ free (p);
}
else
- *q = 0;
+ {
+ value = strings;
+ length = TREE_STRING_LENGTH (value);
+ if (TREE_TYPE (value) == wchar_array_type_node)
+ wide_flag = 1;
+ }
- value = build_string (length, p);
- free (p);
+ /* Compute the number of elements, for the array type. */
+ nchars = wide_flag ? length / wchar_bytes : length;
+
+ if (pedantic && nchars - 1 > nchars_max && c_language == clk_c)
+ pedwarn ("string length `%d' is greater than the length `%d' ISO C%d compilers are required to support",
+ nchars - 1, nchars_max, flag_isoc99 ? 99 : 89);
- if (wide_flag)
- TREE_TYPE (value) = wchar_array_type_node;
+ /* Create the array type for the string constant.
+ -Wwrite-strings says make the string constant an array of const char
+ so that copying it to a non-const pointer will get a warning.
+ For C++, this is the standard behavior. */
+ if (flag_const_strings
+ && (! flag_traditional && ! flag_writable_strings))
+ {
+ tree elements
+ = build_type_variant (wide_flag ? wchar_type_node : char_type_node,
+ 1, 0);
+ TREE_TYPE (value)
+ = build_array_type (elements,
+ build_index_type (build_int_2 (nchars - 1, 0)));
+ }
else
- TREE_TYPE (value) = char_array_type_node;
+ TREE_TYPE (value)
+ = build_array_type (wide_flag ? wchar_type_node : char_type_node,
+ build_index_type (build_int_2 (nchars - 1, 0)));
+ TREE_CONSTANT (value) = 1;
+ TREE_READONLY (value) = ! flag_writable_strings;
+ TREE_STATIC (value) = 1;
return value;
}
@@ -1389,15 +755,13 @@ void
unsigned_conversion_warning (result, operand)
tree result, operand;
{
- tree type = TREE_TYPE (result);
-
if (TREE_CODE (operand) == INTEGER_CST
- && TREE_CODE (type) == INTEGER_TYPE
- && TREE_UNSIGNED (type)
+ && TREE_CODE (TREE_TYPE (result)) == INTEGER_TYPE
+ && TREE_UNSIGNED (TREE_TYPE (result))
&& skip_evaluation == 0
- && !int_fits_type_p (operand, type))
+ && !int_fits_type_p (operand, TREE_TYPE (result)))
{
- if (!int_fits_type_p (operand, c_common_signed_type (type)))
+ if (!int_fits_type_p (operand, signed_type (TREE_TYPE (result))))
/* This detects cases like converting -129 or 256 to unsigned char. */
warning ("large integer implicitly truncated to unsigned type");
else if (warn_conversion)
@@ -1446,8 +810,7 @@ convert_and_check (type, expr)
don't warn unless pedantic. */
if ((pedantic
|| TREE_UNSIGNED (type)
- || ! constant_fits_type_p (expr,
- c_common_unsigned_type (type)))
+ || ! constant_fits_type_p (expr, unsigned_type (type)))
&& skip_evaluation == 0)
warning ("overflow in implicit constant conversion");
}
@@ -1849,7 +1212,7 @@ verify_tree (x, pbefore_sp, pno_sp, writer)
}
}
-/* Try to warn for undefined behavior in EXPR due to missing sequence
+/* Try to warn for undefined behaviour in EXPR due to missing sequence
points. */
static void
@@ -1937,7 +1300,7 @@ check_case_value (value)
that is unsigned if UNSIGNEDP is nonzero, otherwise signed. */
tree
-c_common_type_for_size (bits, unsignedp)
+type_for_size (bits, unsignedp)
unsigned bits;
int unsignedp;
{
@@ -1981,7 +1344,7 @@ c_common_type_for_size (bits, unsignedp)
then UNSIGNEDP selects between signed and unsigned types. */
tree
-c_common_type_for_mode (mode, unsignedp)
+type_for_mode (mode, unsignedp)
enum machine_mode mode;
int unsignedp;
{
@@ -2036,44 +1399,41 @@ c_common_type_for_mode (mode, unsignedp)
if (mode == TYPE_MODE (build_pointer_type (integer_type_node)))
return build_pointer_type (integer_type_node);
- switch (mode)
+#ifdef VECTOR_MODE_SUPPORTED_P
+ if (VECTOR_MODE_SUPPORTED_P (mode))
{
- case V16QImode:
- return unsignedp ? unsigned_V16QI_type_node : V16QI_type_node;
- case V8HImode:
- return unsignedp ? unsigned_V8HI_type_node : V8HI_type_node;
- case V4SImode:
- return unsignedp ? unsigned_V4SI_type_node : V4SI_type_node;
- case V2DImode:
- return unsignedp ? unsigned_V2DI_type_node : V2DI_type_node;
- case V2SImode:
- return unsignedp ? unsigned_V2SI_type_node : V2SI_type_node;
- case V2HImode:
- return unsignedp ? unsigned_V2HI_type_node : V2HI_type_node;
- case V4HImode:
- return unsignedp ? unsigned_V4HI_type_node : V4HI_type_node;
- case V8QImode:
- return unsignedp ? unsigned_V8QI_type_node : V8QI_type_node;
- case V1DImode:
- return unsignedp ? unsigned_V1DI_type_node : V1DI_type_node;
- case V16SFmode:
- return V16SF_type_node;
- case V4SFmode:
- return V4SF_type_node;
- case V2SFmode:
- return V2SF_type_node;
- case V2DFmode:
- return V2DF_type_node;
- default:
- break;
+ switch (mode)
+ {
+ case V16QImode:
+ return unsignedp ? unsigned_V16QI_type_node : V16QI_type_node;
+ case V8HImode:
+ return unsignedp ? unsigned_V8HI_type_node : V8HI_type_node;
+ case V4SImode:
+ return unsignedp ? unsigned_V4SI_type_node : V4SI_type_node;
+ case V2SImode:
+ return unsignedp ? unsigned_V2SI_type_node : V2SI_type_node;
+ case V4HImode:
+ return unsignedp ? unsigned_V4HI_type_node : V4HI_type_node;
+ case V8QImode:
+ return unsignedp ? unsigned_V8QI_type_node : V8QI_type_node;
+ case V16SFmode:
+ return V16SF_type_node;
+ case V4SFmode:
+ return V4SF_type_node;
+ case V2SFmode:
+ return V2SF_type_node;
+ default:
+ break;
+ }
}
+#endif
return 0;
}
/* Return an unsigned type the same as TYPE in other respects. */
tree
-c_common_unsigned_type (type)
+unsigned_type (type)
tree type;
{
tree type1 = TYPE_MAIN_VARIANT (type);
@@ -2102,13 +1462,13 @@ c_common_unsigned_type (type)
if (type1 == intQI_type_node)
return unsigned_intQI_type_node;
- return c_common_signed_or_unsigned_type (1, type);
+ return signed_or_unsigned_type (1, type);
}
/* Return a signed type the same as TYPE in other respects. */
tree
-c_common_signed_type (type)
+signed_type (type)
tree type;
{
tree type1 = TYPE_MAIN_VARIANT (type);
@@ -2137,14 +1497,14 @@ c_common_signed_type (type)
if (type1 == unsigned_intQI_type_node)
return intQI_type_node;
- return c_common_signed_or_unsigned_type (0, type);
+ return signed_or_unsigned_type (0, type);
}
/* Return a type the same as TYPE except unsigned or
signed according to UNSIGNEDP. */
tree
-c_common_signed_or_unsigned_type (unsignedp, type)
+signed_or_unsigned_type (unsignedp, type)
int unsignedp;
tree type;
{
@@ -2212,9 +1572,8 @@ min_precision (value, unsignedp)
return log + 1 + ! unsignedp;
}
-/* Print an error message for invalid operands to arith operation
- CODE. NOP_EXPR is used as a special case (see
- c_common_truthvalue_conversion). */
+/* Print an error message for invalid operands to arith operation CODE.
+ NOP_EXPR is used as a special case (see truthvalue_conversion). */
void
binary_op_error (code)
@@ -2394,20 +1753,19 @@ shorten_compare (op0_ptr, op1_ptr, restype_ptr, rescode_ptr)
int unsignedp = TREE_UNSIGNED (*restype_ptr);
tree val;
- type = c_common_signed_or_unsigned_type (unsignedp0,
- TREE_TYPE (primop0));
+ type = signed_or_unsigned_type (unsignedp0, TREE_TYPE (primop0));
/* If TYPE is an enumeration, then we need to get its min/max
values from it's underlying integral type, not the enumerated
type itself. */
if (TREE_CODE (type) == ENUMERAL_TYPE)
- type = c_common_type_for_size (TYPE_PRECISION (type), unsignedp0);
+ type = type_for_size (TYPE_PRECISION (type), unsignedp0);
maxval = TYPE_MAX_VALUE (type);
minval = TYPE_MIN_VALUE (type);
if (unsignedp && !unsignedp0)
- *restype_ptr = c_common_signed_type (*restype_ptr);
+ *restype_ptr = signed_type (*restype_ptr);
if (TREE_TYPE (primop1) != *restype_ptr)
primop1 = convert (*restype_ptr, primop1);
@@ -2504,11 +1862,22 @@ shorten_compare (op0_ptr, op1_ptr, restype_ptr, rescode_ptr)
default:
break;
}
- type = c_common_unsigned_type (type);
+ type = unsigned_type (type);
+ }
+
+ if (!max_gt && !unsignedp0 && TREE_CODE (primop0) != INTEGER_CST)
+ {
+ /* This is the case of (char)x >?< 0x80, which people used to use
+ expecting old C compilers to change the 0x80 into -0x80. */
+ if (val == boolean_false_node)
+ warning ("comparison is always false due to limited range of data type");
+ if (val == boolean_true_node)
+ warning ("comparison is always true due to limited range of data type");
}
- if (TREE_CODE (primop0) != INTEGER_CST)
+ if (!min_lt && unsignedp0 && TREE_CODE (primop0) != INTEGER_CST)
{
+ /* This is the case of (unsigned char)x >?< -1 or < 0. */
if (val == boolean_false_node)
warning ("comparison is always false due to limited range of data type");
if (val == boolean_true_node)
@@ -2545,19 +1914,15 @@ shorten_compare (op0_ptr, op1_ptr, restype_ptr, rescode_ptr)
&& TYPE_PRECISION (TREE_TYPE (primop1)) < TYPE_PRECISION (*restype_ptr))
{
type = common_type (TREE_TYPE (primop0), TREE_TYPE (primop1));
- type = c_common_signed_or_unsigned_type (unsignedp0
- || TREE_UNSIGNED (*restype_ptr),
- type);
+ type = signed_or_unsigned_type (unsignedp0
+ || TREE_UNSIGNED (*restype_ptr),
+ type);
/* Make sure shorter operand is extended the right way
to match the longer operand. */
- primop0
- = convert (c_common_signed_or_unsigned_type (unsignedp0,
- TREE_TYPE (primop0)),
- primop0);
- primop1
- = convert (c_common_signed_or_unsigned_type (unsignedp1,
- TREE_TYPE (primop1)),
- primop1);
+ primop0 = convert (signed_or_unsigned_type (unsignedp0, TREE_TYPE (primop0)),
+ primop0);
+ primop1 = convert (signed_or_unsigned_type (unsignedp1, TREE_TYPE (primop1)),
+ primop1);
}
else
{
@@ -2580,7 +1945,7 @@ shorten_compare (op0_ptr, op1_ptr, restype_ptr, rescode_ptr)
so suppress the warning. */
if (extra_warnings && !in_system_header
&& ! (TREE_CODE (primop0) == INTEGER_CST
- && ! TREE_OVERFLOW (convert (c_common_signed_type (type),
+ && ! TREE_OVERFLOW (convert (signed_type (type),
primop0))))
warning ("comparison of unsigned expression >= 0 is always true");
value = boolean_true_node;
@@ -2589,7 +1954,7 @@ shorten_compare (op0_ptr, op1_ptr, restype_ptr, rescode_ptr)
case LT_EXPR:
if (extra_warnings && !in_system_header
&& ! (TREE_CODE (primop0) == INTEGER_CST
- && ! TREE_OVERFLOW (convert (c_common_signed_type (type),
+ && ! TREE_OVERFLOW (convert (signed_type (type),
primop0))))
warning ("comparison of unsigned expression < 0 is always false");
value = boolean_false_node;
@@ -2698,8 +2063,8 @@ pointer_int_sum (resultcode, ptrop, intop)
if (TYPE_PRECISION (TREE_TYPE (intop)) != TYPE_PRECISION (sizetype)
|| TREE_UNSIGNED (TREE_TYPE (intop)) != TREE_UNSIGNED (sizetype))
- intop = convert (c_common_type_for_size (TYPE_PRECISION (sizetype),
- TREE_UNSIGNED (sizetype)), intop);
+ intop = convert (type_for_size (TYPE_PRECISION (sizetype),
+ TREE_UNSIGNED (sizetype)), intop);
/* Replace the integer argument with a suitable product by the object size.
Do this multiplication as signed, then convert to the appropriate
@@ -2731,7 +2096,7 @@ pointer_int_sum (resultcode, ptrop, intop)
The resulting type should always be `boolean_type_node'. */
tree
-c_common_truthvalue_conversion (expr)
+truthvalue_conversion (expr)
tree expr;
{
if (TREE_CODE (expr) == ERROR_MARK)
@@ -2797,32 +2162,32 @@ c_common_truthvalue_conversion (expr)
case COMPLEX_EXPR:
return build_binary_op ((TREE_SIDE_EFFECTS (TREE_OPERAND (expr, 1))
? TRUTH_OR_EXPR : TRUTH_ORIF_EXPR),
- c_common_truthvalue_conversion (TREE_OPERAND (expr, 0)),
- c_common_truthvalue_conversion (TREE_OPERAND (expr, 1)),
+ truthvalue_conversion (TREE_OPERAND (expr, 0)),
+ truthvalue_conversion (TREE_OPERAND (expr, 1)),
0);
case NEGATE_EXPR:
case ABS_EXPR:
case FLOAT_EXPR:
case FFS_EXPR:
- /* These don't change whether an object is nonzero or zero. */
- return c_common_truthvalue_conversion (TREE_OPERAND (expr, 0));
+ /* These don't change whether an object is non-zero or zero. */
+ return truthvalue_conversion (TREE_OPERAND (expr, 0));
case LROTATE_EXPR:
case RROTATE_EXPR:
- /* These don't change whether an object is zero or nonzero, but
+ /* These don't change whether an object is zero or non-zero, but
we can't ignore them if their second arg has side-effects. */
if (TREE_SIDE_EFFECTS (TREE_OPERAND (expr, 1)))
return build (COMPOUND_EXPR, boolean_type_node, TREE_OPERAND (expr, 1),
- c_common_truthvalue_conversion (TREE_OPERAND (expr, 0)));
+ truthvalue_conversion (TREE_OPERAND (expr, 0)));
else
- return c_common_truthvalue_conversion (TREE_OPERAND (expr, 0));
+ return truthvalue_conversion (TREE_OPERAND (expr, 0));
case COND_EXPR:
/* Distribute the conversion into the arms of a COND_EXPR. */
return fold (build (COND_EXPR, boolean_type_node, TREE_OPERAND (expr, 0),
- c_common_truthvalue_conversion (TREE_OPERAND (expr, 1)),
- c_common_truthvalue_conversion (TREE_OPERAND (expr, 2))));
+ truthvalue_conversion (TREE_OPERAND (expr, 1)),
+ truthvalue_conversion (TREE_OPERAND (expr, 2))));
case CONVERT_EXPR:
/* Don't cancel the effect of a CONVERT_EXPR from a REFERENCE_TYPE,
@@ -2835,19 +2200,14 @@ c_common_truthvalue_conversion (expr)
/* If this is widening the argument, we can ignore it. */
if (TYPE_PRECISION (TREE_TYPE (expr))
>= TYPE_PRECISION (TREE_TYPE (TREE_OPERAND (expr, 0))))
- return c_common_truthvalue_conversion (TREE_OPERAND (expr, 0));
+ return truthvalue_conversion (TREE_OPERAND (expr, 0));
break;
case MINUS_EXPR:
- /* Perhaps reduce (x - y) != 0 to (x != y). The expressions
- aren't guaranteed to the be same for modes that can represent
- infinity, since if x and y are both +infinity, or both
- -infinity, then x - y is not a number.
-
- Note that this transformation is safe when x or y is NaN.
- (x - y) is then NaN, and both (x - y) != 0 and x != y will
- be false. */
- if (HONOR_INFINITIES (TYPE_MODE (TREE_TYPE (TREE_OPERAND (expr, 0)))))
+ /* With IEEE arithmetic, x - x may not equal 0, so we can't optimize
+ this case. */
+ if (TARGET_FLOAT_FORMAT == IEEE_FLOAT_FORMAT
+ && TREE_CODE (TREE_TYPE (expr)) == REAL_TYPE)
break;
/* fall through... */
case BIT_XOR_EXPR:
@@ -2880,12 +2240,12 @@ c_common_truthvalue_conversion (expr)
if (TREE_CODE (TREE_TYPE (expr)) == COMPLEX_TYPE)
{
- tree t = save_expr (expr);
+ tree tem = save_expr (expr);
return (build_binary_op
((TREE_SIDE_EFFECTS (expr)
? TRUTH_OR_EXPR : TRUTH_ORIF_EXPR),
- c_common_truthvalue_conversion (build_unary_op (REALPART_EXPR, t, 0)),
- c_common_truthvalue_conversion (build_unary_op (IMAGPART_EXPR, t, 0)),
+ truthvalue_conversion (build_unary_op (REALPART_EXPR, tem, 0)),
+ truthvalue_conversion (build_unary_op (IMAGPART_EXPR, tem, 0)),
0));
}
@@ -2894,7 +2254,7 @@ c_common_truthvalue_conversion (expr)
static tree builtin_function_2 PARAMS ((const char *, const char *, tree, tree,
int, enum built_in_class, int, int,
- tree));
+ int));
/* Make a variant type in the proper way for C/C++, propagating qualifiers
down to the element type of an array. */
@@ -2956,6 +2316,7 @@ c_apply_type_quals_to_decl (type_quals, decl)
}
}
+
/* Return the typed-based alias set for T, which may be an expression
or a type. Return -1 if we don't do anything special. */
@@ -2988,17 +2349,13 @@ c_common_get_alias_set (t)
|| t == signed_char_type_node
|| t == unsigned_char_type_node)
return 0;
-
- /* If it has the may_alias attribute, it can alias anything. */
- if (lookup_attribute ("may_alias", TYPE_ATTRIBUTES (t)))
- return 0;
-
+
/* The C standard specifically allows aliasing between signed and
unsigned variants of the same type. We treat the signed
variant as canonical. */
if (TREE_CODE (t) == INTEGER_TYPE && TREE_UNSIGNED (t))
{
- tree t1 = c_common_signed_type (t);
+ tree t1 = signed_type (t);
/* t1 == t can happen for boolean nodes which are always unsigned. */
if (t1 != t)
@@ -3039,66 +2396,36 @@ c_common_get_alias_set (t)
return -1;
}
-/* Compute the value of 'sizeof (TYPE)' or '__alignof__ (TYPE)', where the
- second parameter indicates which OPERATOR is being applied. The COMPLAIN
- flag controls whether we should diagnose possibly ill-formed
- constructs or not. */
+/* Implement the __alignof keyword: Return the minimum required
+ alignment of TYPE, measured in bytes. */
+
tree
-c_sizeof_or_alignof_type (type, op, complain)
+c_alignof (type)
tree type;
- enum tree_code op;
- int complain;
{
- const char *op_name;
- tree value = NULL;
- enum tree_code type_code = TREE_CODE (type);
-
- my_friendly_assert (op == SIZEOF_EXPR || op == ALIGNOF_EXPR, 20020720);
- op_name = op == SIZEOF_EXPR ? "sizeof" : "__alignof__";
-
- if (type_code == FUNCTION_TYPE)
- {
- if (op == SIZEOF_EXPR)
- {
- if (complain && (pedantic || warn_pointer_arith))
- pedwarn ("invalid application of `sizeof' to a function type");
- value = size_one_node;
- }
- else
- value = size_int (FUNCTION_BOUNDARY / BITS_PER_UNIT);
- }
- else if (type_code == VOID_TYPE || type_code == ERROR_MARK)
+ enum tree_code code = TREE_CODE (type);
+ tree t;
+
+ /* In C++, sizeof applies to the referent. Handle alignof the same way. */
+ if (code == REFERENCE_TYPE)
{
- if (type_code == VOID_TYPE
- && complain && (pedantic || warn_pointer_arith))
- pedwarn ("invalid application of `%s' to a void type", op_name);
- value = size_one_node;
+ type = TREE_TYPE (type);
+ code = TREE_CODE (type);
}
+
+ if (code == FUNCTION_TYPE)
+ t = size_int (FUNCTION_BOUNDARY / BITS_PER_UNIT);
+ else if (code == VOID_TYPE || code == ERROR_MARK)
+ t = size_one_node;
else if (!COMPLETE_TYPE_P (type))
{
- if (complain)
- error ("invalid application of `%s' to an incomplete type", op_name);
- value = size_zero_node;
+ error ("__alignof__ applied to an incomplete type");
+ t = size_zero_node;
}
else
- {
- if (op == SIZEOF_EXPR)
- /* Convert in case a char is more than one unit. */
- value = size_binop (CEIL_DIV_EXPR, TYPE_SIZE_UNIT (type),
- size_int (TYPE_PRECISION (char_type_node)
- / BITS_PER_UNIT));
- else
- value = size_int (TYPE_ALIGN (type) / BITS_PER_UNIT);
- }
+ t = size_int (TYPE_ALIGN (type) / BITS_PER_UNIT);
- /* VALUE will have an integer type with TYPE_IS_SIZETYPE set.
- TYPE_IS_SIZETYPE means that certain things (like overflow) will
- never happen. However, this node should really have type
- `size_t', which is just a typedef for an ordinary integer type. */
- value = fold (build1 (NOP_EXPR, size_type_node, value));
- my_friendly_assert (!TYPE_IS_SIZETYPE (TREE_TYPE (value)), 20001021);
-
- return value;
+ return fold (build1 (NOP_EXPR, size_type_node, t));
}
/* Implement the __alignof keyword: Return the minimum required
@@ -3149,30 +2476,19 @@ c_alignof_expr (expr)
return fold (build1 (NOP_EXPR, size_type_node, t));
}
-/* Handle C and C++ default attributes. */
+/* Give the specifications for the format attributes, used by C and all
+ descendents. */
-enum built_in_attribute
+static const struct attribute_spec c_format_attribute_table[] =
{
-#define DEF_ATTR_NULL_TREE(ENUM) ENUM,
-#define DEF_ATTR_INT(ENUM, VALUE) ENUM,
-#define DEF_ATTR_IDENT(ENUM, STRING) ENUM,
-#define DEF_ATTR_TREE_LIST(ENUM, PURPOSE, VALUE, CHAIN) ENUM,
-#define DEF_FN_ATTR(NAME, ATTRS, PREDICATE) /* No entry needed in enum. */
-#include "builtin-attrs.def"
-#undef DEF_ATTR_NULL_TREE
-#undef DEF_ATTR_INT
-#undef DEF_ATTR_IDENT
-#undef DEF_ATTR_TREE_LIST
-#undef DEF_FN_ATTR
- ATTR_LAST
+ /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler } */
+ { "format", 3, 3, false, true, true,
+ handle_format_attribute },
+ { "format_arg", 1, 1, false, true, true,
+ handle_format_arg_attribute },
+ { NULL, 0, 0, false, false, false, NULL }
};
-static GTY(()) tree built_in_attributes[(int) ATTR_LAST];
-
-static bool c_attrs_initialized = false;
-
-static void c_init_attributes PARAMS ((void));
-
/* Build tree nodes and builtin functions common to both C and C++ language
frontends. */
@@ -3190,7 +2506,6 @@ c_common_nodes_and_builtins ()
#define DEF_FUNCTION_TYPE_VAR_0(NAME, RETURN) NAME,
#define DEF_FUNCTION_TYPE_VAR_1(NAME, RETURN, ARG1) NAME,
#define DEF_FUNCTION_TYPE_VAR_2(NAME, RETURN, ARG1, ARG2) NAME,
-#define DEF_FUNCTION_TYPE_VAR_3(NAME, RETURN, ARG1, ARG2, ARG3) NAME,
#define DEF_POINTER_TYPE(NAME, TYPE) NAME,
#include "builtin-types.def"
#undef DEF_PRIMITIVE_TYPE
@@ -3202,7 +2517,6 @@ c_common_nodes_and_builtins ()
#undef DEF_FUNCTION_TYPE_VAR_0
#undef DEF_FUNCTION_TYPE_VAR_1
#undef DEF_FUNCTION_TYPE_VAR_2
-#undef DEF_FUNCTION_TYPE_VAR_3
#undef DEF_POINTER_TYPE
BT_LAST
};
@@ -3212,9 +2526,18 @@ c_common_nodes_and_builtins ()
tree builtin_types[(int) BT_LAST];
int wchar_type_size;
tree array_domain_type;
+ /* Either char* or void*. */
+ tree traditional_ptr_type_node;
+ /* Either const char* or const void*. */
+ tree traditional_cptr_type_node;
+ tree traditional_len_type_node;
tree va_list_ref_type_node;
tree va_list_arg_type_node;
+ /* We must initialize this before any builtin functions (which might have
+ attributes) are declared. (c_common_init is too late.) */
+ format_attribute_table = c_format_attribute_table;
+
/* Define `int' and `char' first so that dbx will output them first. */
record_builtin_type (RID_INT, NULL, integer_type_node);
record_builtin_type (RID_CHAR, "char", char_type_node);
@@ -3248,52 +2571,41 @@ c_common_nodes_and_builtins ()
record_builtin_type (RID_MAX, "signed char", signed_char_type_node);
record_builtin_type (RID_MAX, "unsigned char", unsigned_char_type_node);
- /* These are types that c_common_type_for_size and
- c_common_type_for_mode use. */
- (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL, NULL_TREE,
- intQI_type_node));
- (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL, NULL_TREE,
- intHI_type_node));
- (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL, NULL_TREE,
- intSI_type_node));
- (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL, NULL_TREE,
- intDI_type_node));
+ /* These are types that type_for_size and type_for_mode use. */
+ pushdecl (build_decl (TYPE_DECL, NULL_TREE, intQI_type_node));
+ pushdecl (build_decl (TYPE_DECL, NULL_TREE, intHI_type_node));
+ pushdecl (build_decl (TYPE_DECL, NULL_TREE, intSI_type_node));
+ pushdecl (build_decl (TYPE_DECL, NULL_TREE, intDI_type_node));
#if HOST_BITS_PER_WIDE_INT >= 64
- (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
- get_identifier ("__int128_t"),
- intTI_type_node));
+ pushdecl (build_decl (TYPE_DECL, get_identifier ("__int128_t"), intTI_type_node));
#endif
- (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL, NULL_TREE,
- unsigned_intQI_type_node));
- (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL, NULL_TREE,
- unsigned_intHI_type_node));
- (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL, NULL_TREE,
- unsigned_intSI_type_node));
- (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL, NULL_TREE,
- unsigned_intDI_type_node));
+ pushdecl (build_decl (TYPE_DECL, NULL_TREE, unsigned_intQI_type_node));
+ pushdecl (build_decl (TYPE_DECL, NULL_TREE, unsigned_intHI_type_node));
+ pushdecl (build_decl (TYPE_DECL, NULL_TREE, unsigned_intSI_type_node));
+ pushdecl (build_decl (TYPE_DECL, NULL_TREE, unsigned_intDI_type_node));
#if HOST_BITS_PER_WIDE_INT >= 64
- (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
- get_identifier ("__uint128_t"),
- unsigned_intTI_type_node));
+ pushdecl (build_decl (TYPE_DECL, get_identifier ("__uint128_t"), unsigned_intTI_type_node));
#endif
/* Create the widest literal types. */
widest_integer_literal_type_node
= make_signed_type (HOST_BITS_PER_WIDE_INT * 2);
- (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL, NULL_TREE,
- widest_integer_literal_type_node));
+ pushdecl (build_decl (TYPE_DECL, NULL_TREE,
+ widest_integer_literal_type_node));
widest_unsigned_literal_type_node
= make_unsigned_type (HOST_BITS_PER_WIDE_INT * 2);
- (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL, NULL_TREE,
- widest_unsigned_literal_type_node));
+ pushdecl (build_decl (TYPE_DECL, NULL_TREE,
+ widest_unsigned_literal_type_node));
/* `unsigned long' is the standard type for sizeof.
Note that stddef.h uses `unsigned long',
and this must agree, even if long and int are the same size. */
size_type_node =
TREE_TYPE (identifier_global_value (get_identifier (SIZE_TYPE)));
- signed_size_type_node = c_common_signed_type (size_type_node);
+ signed_size_type_node = signed_type (size_type_node);
+ if (flag_traditional)
+ size_type_node = signed_size_type_node;
set_sizetype (size_type_node);
build_common_tree_nodes_2 (flag_short_double);
@@ -3302,18 +2614,14 @@ c_common_nodes_and_builtins ()
record_builtin_type (RID_DOUBLE, NULL, double_type_node);
record_builtin_type (RID_MAX, "long double", long_double_type_node);
- (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
- get_identifier ("complex int"),
- complex_integer_type_node));
- (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
- get_identifier ("complex float"),
- complex_float_type_node));
- (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
- get_identifier ("complex double"),
- complex_double_type_node));
- (*lang_hooks.decls.pushdecl)
- (build_decl (TYPE_DECL, get_identifier ("complex long double"),
- complex_long_double_type_node));
+ pushdecl (build_decl (TYPE_DECL, get_identifier ("complex int"),
+ complex_integer_type_node));
+ pushdecl (build_decl (TYPE_DECL, get_identifier ("complex float"),
+ complex_float_type_node));
+ pushdecl (build_decl (TYPE_DECL, get_identifier ("complex double"),
+ complex_double_type_node));
+ pushdecl (build_decl (TYPE_DECL, get_identifier ("complex long double"),
+ complex_long_double_type_node));
/* Types which are common to the fortran compiler and libf2c. When
changing these, you also need to be concerned with f/com.h. */
@@ -3335,12 +2643,12 @@ c_common_nodes_and_builtins ()
if (g77_integer_type_node != NULL_TREE)
{
- (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
- get_identifier ("__g77_integer"),
- g77_integer_type_node));
- (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
- get_identifier ("__g77_uinteger"),
- g77_uinteger_type_node));
+ pushdecl (build_decl (TYPE_DECL,
+ get_identifier ("__g77_integer"),
+ g77_integer_type_node));
+ pushdecl (build_decl (TYPE_DECL,
+ get_identifier ("__g77_uinteger"),
+ g77_uinteger_type_node));
}
if (TYPE_PRECISION (float_type_node) * 2
@@ -3360,12 +2668,12 @@ c_common_nodes_and_builtins ()
if (g77_longint_type_node != NULL_TREE)
{
- (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
- get_identifier ("__g77_longint"),
- g77_longint_type_node));
- (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
- get_identifier ("__g77_ulongint"),
- g77_ulongint_type_node));
+ pushdecl (build_decl (TYPE_DECL,
+ get_identifier ("__g77_longint"),
+ g77_longint_type_node));
+ pushdecl (build_decl (TYPE_DECL,
+ get_identifier ("__g77_ulongint"),
+ g77_ulongint_type_node));
}
record_builtin_type (RID_VOID, NULL, void_type_node);
@@ -3397,8 +2705,19 @@ c_common_nodes_and_builtins ()
= build_pointer_type (build_qualified_type
(char_type_node, TYPE_QUAL_CONST));
+ traditional_ptr_type_node = ((flag_traditional &&
+ c_language != clk_cplusplus)
+ ? string_type_node : ptr_type_node);
+ traditional_cptr_type_node = ((flag_traditional &&
+ c_language != clk_cplusplus)
+ ? const_string_type_node : const_ptr_type_node);
+
+ (*targetm.init_builtins) ();
+
/* This is special for C++ so functions can be overloaded. */
- wchar_type_node = get_identifier (MODIFIED_WCHAR_TYPE);
+ wchar_type_node = get_identifier (flag_short_wchar
+ ? "short unsigned int"
+ : WCHAR_TYPE);
wchar_type_node = TREE_TYPE (identifier_global_value (wchar_type_node));
wchar_type_size = TYPE_PRECISION (wchar_type_node);
if (c_language == clk_cplusplus)
@@ -3411,8 +2730,8 @@ c_common_nodes_and_builtins ()
}
else
{
- signed_wchar_type_node = c_common_signed_type (wchar_type_node);
- unsigned_wchar_type_node = c_common_unsigned_type (wchar_type_node);
+ signed_wchar_type_node = signed_type (wchar_type_node);
+ unsigned_wchar_type_node = unsigned_type (wchar_type_node);
}
/* This is for wide string constants. */
@@ -3430,19 +2749,16 @@ c_common_nodes_and_builtins ()
default_function_type = build_function_type (integer_type_node, NULL_TREE);
ptrdiff_type_node
= TREE_TYPE (identifier_global_value (get_identifier (PTRDIFF_TYPE)));
- unsigned_ptrdiff_type_node = c_common_unsigned_type (ptrdiff_type_node);
+ unsigned_ptrdiff_type_node = unsigned_type (ptrdiff_type_node);
- (*lang_hooks.decls.pushdecl)
- (build_decl (TYPE_DECL, get_identifier ("__builtin_va_list"),
- va_list_type_node));
+ pushdecl (build_decl (TYPE_DECL, get_identifier ("__builtin_va_list"),
+ va_list_type_node));
- (*lang_hooks.decls.pushdecl)
- (build_decl (TYPE_DECL, get_identifier ("__builtin_ptrdiff_t"),
- ptrdiff_type_node));
+ pushdecl (build_decl (TYPE_DECL, get_identifier ("__builtin_ptrdiff_t"),
+ ptrdiff_type_node));
- (*lang_hooks.decls.pushdecl)
- (build_decl (TYPE_DECL, get_identifier ("__builtin_size_t"),
- sizetype));
+ pushdecl (build_decl (TYPE_DECL, get_identifier ("__builtin_size_t"),
+ sizetype));
if (TREE_CODE (va_list_type_node) == ARRAY_TYPE)
{
@@ -3455,6 +2771,10 @@ c_common_nodes_and_builtins ()
va_list_ref_type_node = build_reference_type (va_list_type_node);
}
+ traditional_len_type_node = ((flag_traditional &&
+ c_language != clk_cplusplus)
+ ? integer_type_node : sizetype);
+
#define DEF_PRIMITIVE_TYPE(ENUM, VALUE) \
builtin_types[(int) ENUM] = VALUE;
#define DEF_FUNCTION_TYPE_0(ENUM, RETURN) \
@@ -3520,19 +2840,6 @@ c_common_nodes_and_builtins ()
tree_cons (NULL_TREE, \
builtin_types[(int) ARG2], \
NULL_TREE)));
-
-#define DEF_FUNCTION_TYPE_VAR_3(ENUM, RETURN, ARG1, ARG2, ARG3) \
- builtin_types[(int) ENUM] \
- = build_function_type \
- (builtin_types[(int) RETURN], \
- tree_cons (NULL_TREE, \
- builtin_types[(int) ARG1], \
- tree_cons (NULL_TREE, \
- builtin_types[(int) ARG2], \
- tree_cons (NULL_TREE, \
- builtin_types[(int) ARG3], \
- NULL_TREE))));
-
#define DEF_POINTER_TYPE(ENUM, TYPE) \
builtin_types[(int) ENUM] \
= build_pointer_type (builtin_types[(int) TYPE]);
@@ -3544,15 +2851,10 @@ c_common_nodes_and_builtins ()
#undef DEF_FUNCTION_TYPE_4
#undef DEF_FUNCTION_TYPE_VAR_0
#undef DEF_FUNCTION_TYPE_VAR_1
-#undef DEF_FUNCTION_TYPE_VAR_2
-#undef DEF_FUNCTION_TYPE_VAR_3
#undef DEF_POINTER_TYPE
- if (!c_attrs_initialized)
- c_init_attributes ();
-
-#define DEF_BUILTIN(ENUM, NAME, CLASS, TYPE, LIBTYPE, \
- BOTH_P, FALLBACK_P, NONANSI_P, ATTRS) \
+#define DEF_BUILTIN(ENUM, NAME, CLASS, \
+ TYPE, LIBTYPE, BOTH_P, FALLBACK_P, NONANSI_P) \
if (NAME) \
{ \
tree decl; \
@@ -3565,8 +2867,7 @@ c_common_nodes_and_builtins ()
CLASS, \
(FALLBACK_P \
? (NAME + strlen ("__builtin_")) \
- : NULL), \
- built_in_attributes[(int) ATTRS]); \
+ : NULL)); \
else \
decl = builtin_function_2 (NAME, \
NAME + strlen ("__builtin_"), \
@@ -3576,16 +2877,40 @@ c_common_nodes_and_builtins ()
CLASS, \
FALLBACK_P, \
NONANSI_P, \
- built_in_attributes[(int) ATTRS]); \
+ /*noreturn_p=*/0); \
\
built_in_decls[(int) ENUM] = decl; \
}
#include "builtins.def"
#undef DEF_BUILTIN
- (*targetm.init_builtins) ();
+ /* Declare _exit and _Exit just to mark them as non-returning. */
+ builtin_function_2 (NULL, "_exit", NULL_TREE,
+ builtin_types[BT_FN_VOID_INT],
+ 0, NOT_BUILT_IN, 0, 1, 1);
+ builtin_function_2 (NULL, "_Exit", NULL_TREE,
+ builtin_types[BT_FN_VOID_INT],
+ 0, NOT_BUILT_IN, 0, !flag_isoc99, 1);
+
+ /* Declare these functions non-returning
+ to avoid spurious "control drops through" warnings. */
+ builtin_function_2 (NULL, "abort",
+ NULL_TREE, ((c_language == clk_cplusplus)
+ ? builtin_types[BT_FN_VOID]
+ : builtin_types[BT_FN_VOID_VAR]),
+ 0, NOT_BUILT_IN, 0, 0, 1);
+
+ builtin_function_2 (NULL, "exit",
+ NULL_TREE, ((c_language == clk_cplusplus)
+ ? builtin_types[BT_FN_VOID_INT]
+ : builtin_types[BT_FN_VOID_VAR]),
+ 0, NOT_BUILT_IN, 0, 0, 1);
main_identifier_node = get_identifier ("main");
+
+ /* ??? Perhaps there's a better place to do this. But it is related
+ to __builtin_va_arg, so it isn't that off-the-wall. */
+ lang_type_promotes_to = simple_type_promotes_to;
}
tree
@@ -3652,15 +2977,15 @@ builtin_function_disabled_p (name)
conflicts with headers. FUNCTION_CODE and CLASS are as for
builtin_function. If LIBRARY_NAME_P is nonzero, NAME is passed as
the LIBRARY_NAME parameter to builtin_function when declaring BUILTIN_NAME.
- If NONANSI_P is nonzero, the name NAME is treated as a non-ANSI name;
- ATTRS is the tree list representing the builtin's function attributes.
+ If NONANSI_P is nonzero, the name NAME is treated as a non-ANSI name; if
+ NORETURN_P is nonzero, the function is marked as non-returning.
Returns the declaration of BUILTIN_NAME, if any, otherwise
the declaration of NAME. Does not declare NAME if flag_no_builtin,
or if NONANSI_P and flag_no_nonansi_builtin. */
static tree
builtin_function_2 (builtin_name, name, builtin_type, type, function_code,
- class, library_name_p, nonansi_p, attrs)
+ class, library_name_p, nonansi_p, noreturn_p)
const char *builtin_name;
const char *name;
tree builtin_type;
@@ -3669,23 +2994,31 @@ builtin_function_2 (builtin_name, name, builtin_type, type, function_code,
enum built_in_class class;
int library_name_p;
int nonansi_p;
- tree attrs;
+ int noreturn_p;
{
tree bdecl = NULL_TREE;
tree decl = NULL_TREE;
if (builtin_name != 0)
{
bdecl = builtin_function (builtin_name, builtin_type, function_code,
- class, library_name_p ? name : NULL,
- attrs);
+ class, library_name_p ? name : NULL);
+ if (noreturn_p)
+ {
+ TREE_THIS_VOLATILE (bdecl) = 1;
+ TREE_SIDE_EFFECTS (bdecl) = 1;
+ }
}
if (name != 0 && !flag_no_builtin && !builtin_function_disabled_p (name)
&& !(nonansi_p && flag_no_nonansi_builtin))
{
- decl = builtin_function (name, type, function_code, class, NULL,
- attrs);
+ decl = builtin_function (name, type, function_code, class, NULL);
if (nonansi_p)
DECL_BUILT_IN_NONANSI (decl) = 1;
+ if (noreturn_p)
+ {
+ TREE_THIS_VOLATILE (decl) = 1;
+ TREE_SIDE_EFFECTS (decl) = 1;
+ }
}
return (bdecl != 0 ? bdecl : decl);
}
@@ -3721,6 +3054,34 @@ c_promoting_integer_type_p (t)
}
}
+/* Given a type, apply default promotions wrt unnamed function arguments
+ and return the new type. Return NULL_TREE if no change. */
+/* ??? There is a function of the same name in the C++ front end that
+ does something similar, but is more thorough and does not return NULL
+ if no change. We could perhaps share code, but it would make the
+ self_promoting_type property harder to identify. */
+
+tree
+simple_type_promotes_to (type)
+ tree type;
+{
+ if (TYPE_MAIN_VARIANT (type) == float_type_node)
+ return double_type_node;
+
+ if (c_promoting_integer_type_p (type))
+ {
+ /* Traditionally, unsignedness is preserved in default promotions.
+ Also preserve unsignedness if not really getting any wider. */
+ if (TREE_UNSIGNED (type)
+ && (flag_traditional
+ || TYPE_PRECISION (type) == TYPE_PRECISION (integer_type_node)))
+ return unsigned_type_node;
+ return integer_type_node;
+ }
+
+ return NULL_TREE;
+}
+
/* Return 1 if PARMS specifies a fixed number of parameters
and none of their types is affected by default promotions. */
@@ -3761,81 +3122,6 @@ strip_array_types (type)
return type;
}
-static tree expand_unordered_cmp PARAMS ((tree, tree, enum tree_code,
- enum tree_code));
-
-/* Expand a call to an unordered comparison function such as
- __builtin_isgreater(). FUNCTION is the function's declaration and
- PARAMS a list of the values passed. For __builtin_isunordered(),
- UNORDERED_CODE is UNORDERED_EXPR and ORDERED_CODE is NOP_EXPR. In
- other cases, UNORDERED_CODE and ORDERED_CODE are comparison codes
- that give the opposite of the desired result. UNORDERED_CODE is
- used for modes that can hold NaNs and ORDERED_CODE is used for the
- rest. */
-
-static tree
-expand_unordered_cmp (function, params, unordered_code, ordered_code)
- tree function, params;
- enum tree_code unordered_code, ordered_code;
-{
- tree arg0, arg1, type;
- enum tree_code code0, code1;
-
- /* Check that we have exactly two arguments. */
- if (params == 0 || TREE_CHAIN (params) == 0)
- {
- error ("too few arguments to function `%s'",
- IDENTIFIER_POINTER (DECL_NAME (function)));
- return error_mark_node;
- }
- else if (TREE_CHAIN (TREE_CHAIN (params)) != 0)
- {
- error ("too many arguments to function `%s'",
- IDENTIFIER_POINTER (DECL_NAME (function)));
- return error_mark_node;
- }
-
- arg0 = TREE_VALUE (params);
- arg1 = TREE_VALUE (TREE_CHAIN (params));
-
- code0 = TREE_CODE (TREE_TYPE (arg0));
- code1 = TREE_CODE (TREE_TYPE (arg1));
-
- /* Make sure that the arguments have a common type of REAL. */
- type = 0;
- if ((code0 == INTEGER_TYPE || code0 == REAL_TYPE)
- && (code1 == INTEGER_TYPE || code1 == REAL_TYPE))
- type = common_type (TREE_TYPE (arg0), TREE_TYPE (arg1));
-
- if (type == 0 || TREE_CODE (type) != REAL_TYPE)
- {
- error ("non-floating-point argument to function `%s'",
- IDENTIFIER_POINTER (DECL_NAME (function)));
- return error_mark_node;
- }
-
- if (unordered_code == UNORDERED_EXPR)
- {
- if (MODE_HAS_NANS (TYPE_MODE (type)))
- return build_binary_op (unordered_code,
- convert (type, arg0),
- convert (type, arg1),
- 0);
- else
- return integer_zero_node;
- }
-
- return build_unary_op (TRUTH_NOT_EXPR,
- build_binary_op (MODE_HAS_NANS (TYPE_MODE (type))
- ? unordered_code
- : ordered_code,
- convert (type, arg0),
- convert (type, arg1),
- 0),
- 0);
-}
-
-
/* Recognize certain built-in functions so we can make tree-codes
other than CALL_EXPR. We do this when it enables fold-const.c
to do something useful. */
@@ -3848,6 +3134,8 @@ tree
expand_tree_builtin (function, params, coerced_params)
tree function, params, coerced_params;
{
+ enum tree_code code;
+
if (DECL_BUILT_IN_CLASS (function) != BUILT_IN_NORMAL)
return NULL_TREE;
@@ -3886,22 +3174,72 @@ expand_tree_builtin (function, params, coerced_params)
return build_unary_op (IMAGPART_EXPR, TREE_VALUE (coerced_params), 0);
case BUILT_IN_ISGREATER:
- return expand_unordered_cmp (function, params, UNLE_EXPR, LE_EXPR);
+ if (TARGET_FLOAT_FORMAT == IEEE_FLOAT_FORMAT)
+ code = UNLE_EXPR;
+ else
+ code = LE_EXPR;
+ goto unordered_cmp;
case BUILT_IN_ISGREATEREQUAL:
- return expand_unordered_cmp (function, params, UNLT_EXPR, LT_EXPR);
+ if (TARGET_FLOAT_FORMAT == IEEE_FLOAT_FORMAT)
+ code = UNLT_EXPR;
+ else
+ code = LT_EXPR;
+ goto unordered_cmp;
case BUILT_IN_ISLESS:
- return expand_unordered_cmp (function, params, UNGE_EXPR, GE_EXPR);
+ if (TARGET_FLOAT_FORMAT == IEEE_FLOAT_FORMAT)
+ code = UNGE_EXPR;
+ else
+ code = GE_EXPR;
+ goto unordered_cmp;
case BUILT_IN_ISLESSEQUAL:
- return expand_unordered_cmp (function, params, UNGT_EXPR, GT_EXPR);
+ if (TARGET_FLOAT_FORMAT == IEEE_FLOAT_FORMAT)
+ code = UNGT_EXPR;
+ else
+ code = GT_EXPR;
+ goto unordered_cmp;
case BUILT_IN_ISLESSGREATER:
- return expand_unordered_cmp (function, params, UNEQ_EXPR, EQ_EXPR);
+ if (TARGET_FLOAT_FORMAT == IEEE_FLOAT_FORMAT)
+ code = UNEQ_EXPR;
+ else
+ code = EQ_EXPR;
+ goto unordered_cmp;
case BUILT_IN_ISUNORDERED:
- return expand_unordered_cmp (function, params, UNORDERED_EXPR, NOP_EXPR);
+ if (TARGET_FLOAT_FORMAT != IEEE_FLOAT_FORMAT)
+ return integer_zero_node;
+ code = UNORDERED_EXPR;
+ goto unordered_cmp;
+
+ unordered_cmp:
+ {
+ tree arg0, arg1;
+
+ if (params == 0
+ || TREE_CHAIN (params) == 0)
+ {
+ error ("too few arguments to function `%s'",
+ IDENTIFIER_POINTER (DECL_NAME (function)));
+ return error_mark_node;
+ }
+ else if (TREE_CHAIN (TREE_CHAIN (params)) != 0)
+ {
+ error ("too many arguments to function `%s'",
+ IDENTIFIER_POINTER (DECL_NAME (function)));
+ return error_mark_node;
+ }
+
+ arg0 = TREE_VALUE (params);
+ arg1 = TREE_VALUE (TREE_CHAIN (params));
+ arg0 = build_binary_op (code, arg0, arg1, 0);
+ if (code != UNORDERED_EXPR)
+ arg0 = build_unary_op (TRUTH_NOT_EXPR, arg0, 0);
+ return arg0;
+ }
+ break;
default:
break;
@@ -3910,7 +3248,7 @@ expand_tree_builtin (function, params, coerced_params)
return NULL_TREE;
}
-/* Returns nonzero if CODE is the code for a statement. */
+/* Returns non-zero if CODE is the code for a statement. */
int
statement_code_p (code)
@@ -4228,6 +3566,41 @@ finish_label_address_expr (label)
return result;
}
+/* Mark P (a stmt_tree) for GC. The use of a `void *' for the
+ parameter allows this function to be used as a GC-marking
+ function. */
+
+void
+mark_stmt_tree (p)
+ void *p;
+{
+ stmt_tree st = (stmt_tree) p;
+
+ ggc_mark_tree (st->x_last_stmt);
+ ggc_mark_tree (st->x_last_expr_type);
+}
+
+/* Mark LD for GC. */
+
+void
+c_mark_lang_decl (c)
+ struct c_lang_decl *c ATTRIBUTE_UNUSED;
+{
+}
+
+/* Mark F for GC. */
+
+void
+mark_c_language_function (f)
+ struct language_function *f;
+{
+ if (!f)
+ return;
+
+ mark_stmt_tree (&f->x_stmt_tree);
+ ggc_mark_tree (f->x_scope_stmt_stack);
+}
+
/* Hook used by expand_expr to expand language-specific tree codes. */
rtx
@@ -4235,7 +3608,7 @@ c_expand_expr (exp, target, tmode, modifier)
tree exp;
rtx target;
enum machine_mode tmode;
- int modifier; /* Actually enum_modifier. */
+ enum expand_modifier modifier;
{
switch (TREE_CODE (exp))
{
@@ -4376,7 +3749,7 @@ c_safe_from_p (target, exp)
/* Hook used by unsafe_for_reeval to handle language-specific tree codes. */
int
-c_common_unsafe_for_reeval (exp)
+c_unsafe_for_reeval (exp)
tree exp;
{
/* Statement expressions may not be reevaluated, likewise compound
@@ -4401,6 +3774,56 @@ c_staticp (exp)
return 0;
}
+/* Tree code classes. */
+
+#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) TYPE,
+
+static const char c_tree_code_type[] = {
+ 'x',
+#include "c-common.def"
+};
+#undef DEFTREECODE
+
+/* Table indexed by tree code giving number of expression
+ operands beyond the fixed part of the node structure.
+ Not used for types or decls. */
+
+#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) LENGTH,
+
+static const int c_tree_code_length[] = {
+ 0,
+#include "c-common.def"
+};
+#undef DEFTREECODE
+
+/* Names of tree components.
+ Used for printing out the tree and error messages. */
+#define DEFTREECODE(SYM, NAME, TYPE, LEN) NAME,
+
+static const char *const c_tree_code_name[] = {
+ "@@dummy",
+#include "c-common.def"
+};
+#undef DEFTREECODE
+
+/* Adds the tree codes specific to the C front end to the list of all
+ tree codes. */
+
+void
+add_c_tree_codes ()
+{
+ memcpy (tree_code_type + (int) LAST_AND_UNUSED_TREE_CODE,
+ c_tree_code_type,
+ (int) LAST_C_TREE_CODE - (int) LAST_AND_UNUSED_TREE_CODE);
+ memcpy (tree_code_length + (int) LAST_AND_UNUSED_TREE_CODE,
+ c_tree_code_length,
+ (LAST_C_TREE_CODE - (int) LAST_AND_UNUSED_TREE_CODE) * sizeof (int));
+ memcpy (tree_code_name + (int) LAST_AND_UNUSED_TREE_CODE,
+ c_tree_code_name,
+ (LAST_C_TREE_CODE - (int) LAST_AND_UNUSED_TREE_CODE) * sizeof (char *));
+ lang_unsafe_for_reeval = c_unsafe_for_reeval;
+}
+
#define CALLED_AS_BUILT_IN(NODE) \
(!strncmp (IDENTIFIER_POINTER (DECL_NAME (NODE)), "__builtin_", 10))
@@ -4589,7 +4012,7 @@ c_expand_builtin_printf (arglist, target, tmode, modifier, ignore, unlocked)
memcpy (newstr, TREE_STRING_POINTER (stripped_string), newlen - 1);
newstr[newlen - 1] = 0;
- arglist = fix_string_type (build_string (newlen, newstr));
+ arglist = combine_strings (build_string (newlen, newstr));
arglist = build_tree_list (NULL_TREE, arglist);
fn = fn_puts;
}
@@ -4728,449 +4151,112 @@ boolean_increment (code, arg)
return val;
}
-/* Define NAME with value TYPE precision. */
-static void
-builtin_define_type_precision (name, type)
- const char *name;
- tree type;
-{
- builtin_define_with_int_value (name, TYPE_PRECISION (type));
-}
-
-/* Define the float.h constants for TYPE using NAME_PREFIX and FP_SUFFIX. */
-static void
-builtin_define_float_constants (name_prefix, fp_suffix, type)
- const char *name_prefix;
- const char *fp_suffix;
- tree type;
-{
- /* Used to convert radix-based values to base 10 values in several cases.
-
- In the max_exp -> max_10_exp conversion for 128-bit IEEE, we need at
- least 6 significant digits for correct results. Using the fraction
- formed by (log(2)*1e6)/(log(10)*1e6) overflows a 32-bit integer as an
- intermediate; perhaps someone can find a better approximation, in the
- mean time, I suspect using doubles won't harm the bootstrap here. */
-
- const double log10_2 = .30102999566398119521;
- double log10_b;
- const struct real_format *fmt;
-
- char name[64], buf[128];
- int dig, min_10_exp, max_10_exp;
- int decimal_dig;
-
- fmt = real_format_for_mode[TYPE_MODE (type) - QFmode];
-
- /* The radix of the exponent representation. */
- if (type == float_type_node)
- builtin_define_with_int_value ("__FLT_RADIX__", fmt->b);
- log10_b = log10_2 * fmt->log2_b;
-
- /* The number of radix digits, p, in the floating-point significand. */
- sprintf (name, "__%s_MANT_DIG__", name_prefix);
- builtin_define_with_int_value (name, fmt->p);
-
- /* The number of decimal digits, q, such that any floating-point number
- with q decimal digits can be rounded into a floating-point number with
- p radix b digits and back again without change to the q decimal digits,
-
- p log10 b if b is a power of 10
- floor((p - 1) log10 b) otherwise
- */
- dig = (fmt->p - 1) * log10_b;
- sprintf (name, "__%s_DIG__", name_prefix);
- builtin_define_with_int_value (name, dig);
-
- /* The minimum negative int x such that b**(x-1) is a normalized float. */
- sprintf (name, "__%s_MIN_EXP__", name_prefix);
- sprintf (buf, "(%d)", fmt->emin);
- builtin_define_with_value (name, buf, 0);
-
- /* The minimum negative int x such that 10**x is a normalized float,
-
- ceil (log10 (b ** (emin - 1)))
- = ceil (log10 (b) * (emin - 1))
-
- Recall that emin is negative, so the integer truncation calculates
- the ceiling, not the floor, in this case. */
- min_10_exp = (fmt->emin - 1) * log10_b;
- sprintf (name, "__%s_MIN_10_EXP__", name_prefix);
- sprintf (buf, "(%d)", min_10_exp);
- builtin_define_with_value (name, buf, 0);
-
- /* The maximum int x such that b**(x-1) is a representable float. */
- sprintf (name, "__%s_MAX_EXP__", name_prefix);
- builtin_define_with_int_value (name, fmt->emax);
-
- /* The maximum int x such that 10**x is in the range of representable
- finite floating-point numbers,
-
- floor (log10((1 - b**-p) * b**emax))
- = floor (log10(1 - b**-p) + log10(b**emax))
- = floor (log10(1 - b**-p) + log10(b)*emax)
-
- The safest thing to do here is to just compute this number. But since
- we don't link cc1 with libm, we cannot. We could implement log10 here
- a series expansion, but that seems too much effort because:
-
- Note that the first term, for all extant p, is a number exceedingly close
- to zero, but slightly negative. Note that the second term is an integer
- scaling an irrational number, and that because of the floor we are only
- interested in its integral portion.
-
- In order for the first term to have any effect on the integral portion
- of the second term, the second term has to be exceedingly close to an
- integer itself (e.g. 123.000000000001 or something). Getting a result
- that close to an integer requires that the irrational multiplicand have
- a long series of zeros in its expansion, which doesn't occur in the
- first 20 digits or so of log10(b).
-
- Hand-waving aside, crunching all of the sets of constants above by hand
- does not yield a case for which the first term is significant, which
- in the end is all that matters. */
- max_10_exp = fmt->emax * log10_b;
- sprintf (name, "__%s_MAX_10_EXP__", name_prefix);
- builtin_define_with_int_value (name, max_10_exp);
-
- /* The number of decimal digits, n, such that any floating-point number
- can be rounded to n decimal digits and back again without change to
- the value.
-
- p * log10(b) if b is a power of 10
- ceil(1 + p * log10(b)) otherwise
-
- The only macro we care about is this number for the widest supported
- floating type, but we want this value for rendering constants below. */
- {
- double d_decimal_dig = 1 + fmt->p * log10_b;
- decimal_dig = d_decimal_dig;
- if (decimal_dig < d_decimal_dig)
- decimal_dig++;
- }
- if (type == long_double_type_node)
- builtin_define_with_int_value ("__DECIMAL_DIG__", decimal_dig);
-
- /* Since, for the supported formats, B is always a power of 2, we
- construct the following numbers directly as a hexadecimal
- constants. */
-
- /* The maximum representable finite floating-point number,
- (1 - b**-p) * b**emax */
- {
- int i, n;
- char *p;
-
- strcpy (buf, "0x0.");
- n = fmt->p * fmt->log2_b;
- for (i = 0, p = buf + 4; i + 3 < n; i += 4)
- *p++ = 'f';
- if (i < n)
- *p++ = "08ce"[n - i];
- sprintf (p, "p%d", fmt->emax * fmt->log2_b);
- }
- sprintf (name, "__%s_MAX__", name_prefix);
- builtin_define_with_hex_fp_value (name, type, decimal_dig, buf, fp_suffix);
-
- /* The minimum normalized positive floating-point number,
- b**(emin-1). */
- sprintf (name, "__%s_MIN__", name_prefix);
- sprintf (buf, "0x1p%d", (fmt->emin - 1) * fmt->log2_b);
- builtin_define_with_hex_fp_value (name, type, decimal_dig, buf, fp_suffix);
-
- /* The difference between 1 and the least value greater than 1 that is
- representable in the given floating point type, b**(1-p). */
- sprintf (name, "__%s_EPSILON__", name_prefix);
- sprintf (buf, "0x1p%d", (1 - fmt->p) * fmt->log2_b);
- builtin_define_with_hex_fp_value (name, type, decimal_dig, buf, fp_suffix);
-
- /* For C++ std::numeric_limits<T>::denorm_min. The minimum denormalized
- positive floating-point number, b**(emin-p). Zero for formats that
- don't support denormals. */
- sprintf (name, "__%s_DENORM_MIN__", name_prefix);
- if (fmt->has_denorm)
- {
- sprintf (buf, "0x1p%d", (fmt->emin - fmt->p) * fmt->log2_b);
- builtin_define_with_hex_fp_value (name, type, decimal_dig,
- buf, fp_suffix);
- }
- else
- {
- sprintf (buf, "0.0%s", fp_suffix);
- builtin_define_with_value (name, buf, 0);
- }
-}
+/* Handle C and C++ default attributes. */
-/* Hook that registers front end and target-specific built-ins. */
-void
-cb_register_builtins (pfile)
- cpp_reader *pfile;
+enum built_in_attribute
{
- /* -undef turns off target-specific built-ins. */
- if (flag_undef)
- return;
-
- if (c_language == clk_cplusplus)
- {
- if (SUPPORTS_ONE_ONLY)
- cpp_define (pfile, "__GXX_WEAK__=1");
- else
- cpp_define (pfile, "__GXX_WEAK__=0");
- if (warn_deprecated)
- cpp_define (pfile, "__DEPRECATED");
- }
- if (flag_exceptions)
- cpp_define (pfile, "__EXCEPTIONS");
-
- /* represents the C++ ABI version, always defined so it can be used while
- preprocessing C and assembler. */
- cpp_define (pfile, "__GXX_ABI_VERSION=102");
-
- /* libgcc needs to know this. */
- if (USING_SJLJ_EXCEPTIONS)
- cpp_define (pfile, "__USING_SJLJ_EXCEPTIONS__");
-
- /* stddef.h needs to know these. */
- builtin_define_with_value ("__SIZE_TYPE__", SIZE_TYPE, 0);
- builtin_define_with_value ("__PTRDIFF_TYPE__", PTRDIFF_TYPE, 0);
- builtin_define_with_value ("__WCHAR_TYPE__", MODIFIED_WCHAR_TYPE, 0);
- builtin_define_with_value ("__WINT_TYPE__", WINT_TYPE, 0);
-
- /* limits.h needs to know these. */
- builtin_define_type_max ("__SCHAR_MAX__", signed_char_type_node, 0);
- builtin_define_type_max ("__SHRT_MAX__", short_integer_type_node, 0);
- builtin_define_type_max ("__INT_MAX__", integer_type_node, 0);
- builtin_define_type_max ("__LONG_MAX__", long_integer_type_node, 1);
- builtin_define_type_max ("__LONG_LONG_MAX__", long_long_integer_type_node, 2);
- builtin_define_type_max ("__WCHAR_MAX__", wchar_type_node, 0);
-
- builtin_define_type_precision ("__CHAR_BIT__", char_type_node);
-
- /* float.h needs to know these. */
-
- builtin_define_with_int_value ("__FLT_EVAL_METHOD__",
- TARGET_FLT_EVAL_METHOD);
-
- builtin_define_float_constants ("FLT", "F", float_type_node);
- builtin_define_float_constants ("DBL", "", double_type_node);
- builtin_define_float_constants ("LDBL", "L", long_double_type_node);
-
- /* For use in assembly language. */
- builtin_define_with_value ("__REGISTER_PREFIX__", REGISTER_PREFIX, 0);
- builtin_define_with_value ("__USER_LABEL_PREFIX__", user_label_prefix, 0);
-
- /* Misc. */
- builtin_define_with_value ("__VERSION__", version_string, 1);
-
- /* Other target-independent built-ins determined by command-line
- options. */
- if (optimize_size)
- cpp_define (pfile, "__OPTIMIZE_SIZE__");
- if (optimize)
- cpp_define (pfile, "__OPTIMIZE__");
-
- if (flag_hosted)
- cpp_define (pfile, "__STDC_HOSTED__=1");
- else
- cpp_define (pfile, "__STDC_HOSTED__=0");
-
- if (fast_math_flags_set_p ())
- cpp_define (pfile, "__FAST_MATH__");
- if (flag_really_no_inline)
- cpp_define (pfile, "__NO_INLINE__");
- if (flag_signaling_nans)
- cpp_define (pfile, "__SUPPORT_SNAN__");
- if (flag_finite_math_only)
- cpp_define (pfile, "__FINITE_MATH_ONLY__=1");
- else
- cpp_define (pfile, "__FINITE_MATH_ONLY__=0");
-
- if (flag_iso)
- cpp_define (pfile, "__STRICT_ANSI__");
-
- if (!flag_signed_char)
- cpp_define (pfile, "__CHAR_UNSIGNED__");
-
- if (c_language == clk_cplusplus && TREE_UNSIGNED (wchar_type_node))
- cpp_define (pfile, "__WCHAR_UNSIGNED__");
+#define DEF_ATTR_NULL_TREE(ENUM) ENUM,
+#define DEF_ATTR_INT(ENUM, VALUE) ENUM,
+#define DEF_ATTR_IDENT(ENUM, STRING) ENUM,
+#define DEF_ATTR_TREE_LIST(ENUM, PURPOSE, VALUE, CHAIN) ENUM,
+#define DEF_FN_ATTR(NAME, ATTRS, PREDICATE) /* No entry needed in enum. */
+#include "builtin-attrs.def"
+#undef DEF_ATTR_NULL_TREE
+#undef DEF_ATTR_INT
+#undef DEF_ATTR_IDENT
+#undef DEF_ATTR_TREE_LIST
+#undef DEF_FN_ATTR
+ ATTR_LAST
+};
- /* Make the choice of ObjC runtime visible to source code. */
- if (flag_objc && flag_next_runtime)
- cpp_define (pfile, "__NEXT_RUNTIME__");
+static tree built_in_attributes[(int) ATTR_LAST];
- /* A straightforward target hook doesn't work, because of problems
- linking that hook's body when part of non-C front ends. */
-# define preprocessing_asm_p() (cpp_get_options (pfile)->lang == CLK_ASM)
-# define preprocessing_trad_p() (cpp_get_options (pfile)->traditional)
-# define builtin_define(TXT) cpp_define (pfile, TXT)
-# define builtin_assert(TXT) cpp_assert (pfile, TXT)
- TARGET_CPU_CPP_BUILTINS ();
- TARGET_OS_CPP_BUILTINS ();
-}
+static bool c_attrs_initialized = false;
-/* Pass an object-like macro. If it doesn't lie in the user's
- namespace, defines it unconditionally. Otherwise define a version
- with two leading underscores, and another version with two leading
- and trailing underscores, and define the original only if an ISO
- standard was not nominated.
+static void c_init_attributes PARAMS ((void));
- e.g. passing "unix" defines "__unix", "__unix__" and possibly
- "unix". Passing "_mips" defines "__mips", "__mips__" and possibly
- "_mips". */
+/* Common initialization before parsing options. */
void
-builtin_define_std (macro)
- const char *macro;
+c_common_init_options (lang)
+ enum c_language_kind lang;
{
- size_t len = strlen (macro);
- char *buff = alloca (len + 5);
- char *p = buff + 2;
- char *q = p + len;
-
- /* prepend __ (or maybe just _) if in user's namespace. */
- memcpy (p, macro, len + 1);
- if (!( *p == '_' && (p[1] == '_' || ISUPPER (p[1]))))
- {
- if (*p != '_')
- *--p = '_';
- if (p[1] != '_')
- *--p = '_';
- }
- cpp_define (parse_in, p);
+ c_language = lang;
+ parse_in = cpp_create_reader (lang == clk_c ? CLK_GNUC89:
+ lang == clk_cplusplus ? CLK_GNUCXX: CLK_OBJC);
- /* If it was in user's namespace... */
- if (p != buff + 2)
- {
- /* Define the macro with leading and following __. */
- if (q[-1] != '_')
- *q++ = '_';
- if (q[-2] != '_')
- *q++ = '_';
- *q = '\0';
- cpp_define (parse_in, p);
-
- /* Finally, define the original macro if permitted. */
- if (!flag_iso)
- cpp_define (parse_in, macro);
- }
+ /* Mark as "unspecified" (see c_common_post_options). */
+ flag_bounds_check = -1;
}
-/* Pass an object-like macro and a value to define it to. The third
- parameter says whether or not to turn the value into a string
- constant. */
-static void
-builtin_define_with_value (macro, expansion, is_str)
- const char *macro;
- const char *expansion;
- int is_str;
+/* Post-switch processing. */
+void
+c_common_post_options ()
{
- char *buf;
- size_t mlen = strlen (macro);
- size_t elen = strlen (expansion);
- size_t extra = 2; /* space for an = and a NUL */
+ cpp_post_options (parse_in);
- if (is_str)
- extra += 2; /* space for two quote marks */
-
- buf = alloca (mlen + elen + extra);
- if (is_str)
- sprintf (buf, "%s=\"%s\"", macro, expansion);
- else
- sprintf (buf, "%s=%s", macro, expansion);
+ flag_inline_trees = 1;
- cpp_define (parse_in, buf);
-}
-
-/* Pass an object-like macro and an integer value to define it to. */
-static void
-builtin_define_with_int_value (macro, value)
- const char *macro;
- HOST_WIDE_INT value;
-{
- char *buf;
- size_t mlen = strlen (macro);
- size_t vlen = 18;
- size_t extra = 2; /* space for = and NUL. */
-
- buf = alloca (mlen + vlen + extra);
- memcpy (buf, macro, mlen);
- buf[mlen] = '=';
- sprintf (buf + mlen + 1, HOST_WIDE_INT_PRINT_DEC, value);
+ /* Use tree inlining if possible. Function instrumentation is only
+ done in the RTL level, so we disable tree inlining. */
+ if (! flag_instrument_function_entry_exit)
+ {
+ if (!flag_no_inline)
+ flag_no_inline = 1;
+ if (flag_inline_functions)
+ {
+ flag_inline_trees = 2;
+ flag_inline_functions = 0;
+ }
+ }
- cpp_define (parse_in, buf);
+ /* If still "unspecified", make it match -fbounded-pointers. */
+ if (flag_bounds_check == -1)
+ flag_bounds_check = flag_bounded_pointers;
+
+ /* Special format checking options don't work without -Wformat; warn if
+ they are used. */
+ if (warn_format_y2k && !warn_format)
+ warning ("-Wformat-y2k ignored without -Wformat");
+ if (warn_format_extra_args && !warn_format)
+ warning ("-Wformat-extra-args ignored without -Wformat");
+ if (warn_format_nonliteral && !warn_format)
+ warning ("-Wformat-nonliteral ignored without -Wformat");
+ if (warn_format_security && !warn_format)
+ warning ("-Wformat-security ignored without -Wformat");
+ if (warn_missing_format_attribute && !warn_format)
+ warning ("-Wmissing-format-attribute ignored without -Wformat");
+
+ /* If an error has occurred in cpplib, note it so we fail
+ immediately. */
+ errorcount += cpp_errors (parse_in);
}
-/* Pass an object-like macro a hexadecimal floating-point value. */
-static void
-builtin_define_with_hex_fp_value (macro, type, digits, hex_str, fp_suffix)
- const char *macro;
- tree type ATTRIBUTE_UNUSED;
- int digits;
- const char *hex_str;
- const char *fp_suffix;
+/* Front end initialization common to C, ObjC and C++. */
+const char *
+c_common_init (filename)
+ const char *filename;
{
- REAL_VALUE_TYPE real;
- char dec_str[64], buf[256];
-
- /* Hex values are really cool and convenient, except that they're
- not supported in strict ISO C90 mode. First, the "p-" sequence
- is not valid as part of a preprocessor number. Second, we get a
- pedwarn from the preprocessor, which has no context, so we can't
- suppress the warning with __extension__.
+ /* Do this before initializing pragmas, as then cpplib's hash table
+ has been set up. */
+ filename = init_c_lex (filename);
- So instead what we do is construct the number in hex (because
- it's easy to get the exact correct value), parse it as a real,
- then print it back out as decimal. */
+ init_pragma ();
- real_from_string (&real, hex_str);
- real_to_decimal (dec_str, &real, sizeof (dec_str), digits, 0);
+ if (!c_attrs_initialized)
+ c_init_attributes ();
- sprintf (buf, "%s=%s%s", macro, dec_str, fp_suffix);
- cpp_define (parse_in, buf);
+ return filename;
}
-/* Define MAX for TYPE based on the precision of the type. IS_LONG is
- 1 for type "long" and 2 for "long long". We have to handle
- unsigned types, since wchar_t might be unsigned. */
-
-static void
-builtin_define_type_max (macro, type, is_long)
- const char *macro;
- tree type;
- int is_long;
+/* Common finish hook for the C, ObjC and C++ front ends. */
+void
+c_common_finish ()
{
- static const char *const values[]
- = { "127", "255",
- "32767", "65535",
- "2147483647", "4294967295",
- "9223372036854775807", "18446744073709551615",
- "170141183460469231731687303715884105727",
- "340282366920938463463374607431768211455" };
- static const char *const suffixes[] = { "", "U", "L", "UL", "LL", "ULL" };
-
- const char *value, *suffix;
- char *buf;
- size_t idx;
-
- /* Pre-rendering the values mean we don't have to futz with printing a
- multi-word decimal value. There are also a very limited number of
- precisions that we support, so it's really a waste of time. */
- switch (TYPE_PRECISION (type))
- {
- case 8: idx = 0; break;
- case 16: idx = 2; break;
- case 32: idx = 4; break;
- case 64: idx = 6; break;
- case 128: idx = 8; break;
- default: abort ();
- }
-
- value = values[idx + TREE_UNSIGNED (type)];
- suffix = suffixes[is_long * 2 + TREE_UNSIGNED (type)];
+ cpp_finish (parse_in);
- buf = alloca (strlen (macro) + 1 + strlen (value) + strlen (suffix) + 1);
- sprintf (buf, "%s=%s%s", macro, value, suffix);
-
- cpp_define (parse_in, buf);
+ /* For performance, avoid tearing down cpplib's internal structures.
+ Call cpp_errors () instead of cpp_destroy (). */
+ errorcount += cpp_errors (parse_in);
}
static void
@@ -5195,6 +4281,7 @@ c_init_attributes ()
#undef DEF_ATTR_IDENT
#undef DEF_ATTR_TREE_LIST
#undef DEF_FN_ATTR
+ ggc_add_tree_root (built_in_attributes, (int) ATTR_LAST);
c_attrs_initialized = true;
}
@@ -5238,1447 +4325,3 @@ shadow_warning (msgid, name, decl)
"shadowed declaration is here");
}
-/* Attribute handlers common to C front ends. */
-
-/* Handle a "packed" attribute; arguments as in
- struct attribute_spec.handler. */
-
-static tree
-handle_packed_attribute (node, name, args, flags, no_add_attrs)
- tree *node;
- tree name;
- tree args ATTRIBUTE_UNUSED;
- int flags;
- bool *no_add_attrs;
-{
- tree *type = NULL;
- if (DECL_P (*node))
- {
- if (TREE_CODE (*node) == TYPE_DECL)
- type = &TREE_TYPE (*node);
- }
- else
- type = node;
-
- if (type)
- {
- if (!(flags & (int) ATTR_FLAG_TYPE_IN_PLACE))
- *type = build_type_copy (*type);
- TYPE_PACKED (*type) = 1;
- }
- else if (TREE_CODE (*node) == FIELD_DECL)
- DECL_PACKED (*node) = 1;
- /* We can't set DECL_PACKED for a VAR_DECL, because the bit is
- used for DECL_REGISTER. It wouldn't mean anything anyway. */
- else
- {
- warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name));
- *no_add_attrs = true;
- }
-
- return NULL_TREE;
-}
-
-/* Handle a "nocommon" attribute; arguments as in
- struct attribute_spec.handler. */
-
-static tree
-handle_nocommon_attribute (node, name, args, flags, no_add_attrs)
- tree *node;
- tree name;
- tree args ATTRIBUTE_UNUSED;
- int flags ATTRIBUTE_UNUSED;
- bool *no_add_attrs;
-{
- if (TREE_CODE (*node) == VAR_DECL)
- DECL_COMMON (*node) = 0;
- else
- {
- warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name));
- *no_add_attrs = true;
- }
-
- return NULL_TREE;
-}
-
-/* Handle a "common" attribute; arguments as in
- struct attribute_spec.handler. */
-
-static tree
-handle_common_attribute (node, name, args, flags, no_add_attrs)
- tree *node;
- tree name;
- tree args ATTRIBUTE_UNUSED;
- int flags ATTRIBUTE_UNUSED;
- bool *no_add_attrs;
-{
- if (TREE_CODE (*node) == VAR_DECL)
- DECL_COMMON (*node) = 1;
- else
- {
- warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name));
- *no_add_attrs = true;
- }
-
- return NULL_TREE;
-}
-
-/* Handle a "noreturn" attribute; arguments as in
- struct attribute_spec.handler. */
-
-static tree
-handle_noreturn_attribute (node, name, args, flags, no_add_attrs)
- tree *node;
- tree name;
- tree args ATTRIBUTE_UNUSED;
- int flags ATTRIBUTE_UNUSED;
- bool *no_add_attrs;
-{
- tree type = TREE_TYPE (*node);
-
- /* See FIXME comment in c_common_attribute_table. */
- if (TREE_CODE (*node) == FUNCTION_DECL)
- TREE_THIS_VOLATILE (*node) = 1;
- else if (TREE_CODE (type) == POINTER_TYPE
- && TREE_CODE (TREE_TYPE (type)) == FUNCTION_TYPE)
- TREE_TYPE (*node)
- = build_pointer_type
- (build_type_variant (TREE_TYPE (type),
- TREE_READONLY (TREE_TYPE (type)), 1));
- else
- {
- warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name));
- *no_add_attrs = true;
- }
-
- return NULL_TREE;
-}
-
-/* Handle a "noinline" attribute; arguments as in
- struct attribute_spec.handler. */
-
-static tree
-handle_noinline_attribute (node, name, args, flags, no_add_attrs)
- tree *node;
- tree name;
- tree args ATTRIBUTE_UNUSED;
- int flags ATTRIBUTE_UNUSED;
- bool *no_add_attrs;
-{
- if (TREE_CODE (*node) == FUNCTION_DECL)
- DECL_UNINLINABLE (*node) = 1;
- else
- {
- warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name));
- *no_add_attrs = true;
- }
-
- return NULL_TREE;
-}
-
-/* Handle a "always_inline" attribute; arguments as in
- struct attribute_spec.handler. */
-
-static tree
-handle_always_inline_attribute (node, name, args, flags, no_add_attrs)
- tree *node;
- tree name;
- tree args ATTRIBUTE_UNUSED;
- int flags ATTRIBUTE_UNUSED;
- bool *no_add_attrs;
-{
- if (TREE_CODE (*node) == FUNCTION_DECL)
- {
- /* Do nothing else, just set the attribute. We'll get at
- it later with lookup_attribute. */
- }
- else
- {
- warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name));
- *no_add_attrs = true;
- }
-
- return NULL_TREE;
-}
-
-/* Handle a "used" attribute; arguments as in
- struct attribute_spec.handler. */
-
-static tree
-handle_used_attribute (pnode, name, args, flags, no_add_attrs)
- tree *pnode;
- tree name;
- tree args ATTRIBUTE_UNUSED;
- int flags ATTRIBUTE_UNUSED;
- bool *no_add_attrs;
-{
- tree node = *pnode;
-
- if (TREE_CODE (node) == FUNCTION_DECL
- || (TREE_CODE (node) == VAR_DECL && TREE_STATIC (node)))
- TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (node))
- = TREE_USED (node) = 1;
- else
- {
- warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name));
- *no_add_attrs = true;
- }
-
- return NULL_TREE;
-}
-
-/* Handle a "unused" attribute; arguments as in
- struct attribute_spec.handler. */
-
-static tree
-handle_unused_attribute (node, name, args, flags, no_add_attrs)
- tree *node;
- tree name;
- tree args ATTRIBUTE_UNUSED;
- int flags;
- bool *no_add_attrs;
-{
- if (DECL_P (*node))
- {
- tree decl = *node;
-
- if (TREE_CODE (decl) == PARM_DECL
- || TREE_CODE (decl) == VAR_DECL
- || TREE_CODE (decl) == FUNCTION_DECL
- || TREE_CODE (decl) == LABEL_DECL
- || TREE_CODE (decl) == TYPE_DECL)
- TREE_USED (decl) = 1;
- else
- {
- warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name));
- *no_add_attrs = true;
- }
- }
- else
- {
- if (!(flags & (int) ATTR_FLAG_TYPE_IN_PLACE))
- *node = build_type_copy (*node);
- TREE_USED (*node) = 1;
- }
-
- return NULL_TREE;
-}
-
-/* Handle a "const" attribute; arguments as in
- struct attribute_spec.handler. */
-
-static tree
-handle_const_attribute (node, name, args, flags, no_add_attrs)
- tree *node;
- tree name;
- tree args ATTRIBUTE_UNUSED;
- int flags ATTRIBUTE_UNUSED;
- bool *no_add_attrs;
-{
- tree type = TREE_TYPE (*node);
-
- /* See FIXME comment on noreturn in c_common_attribute_table. */
- if (TREE_CODE (*node) == FUNCTION_DECL)
- TREE_READONLY (*node) = 1;
- else if (TREE_CODE (type) == POINTER_TYPE
- && TREE_CODE (TREE_TYPE (type)) == FUNCTION_TYPE)
- TREE_TYPE (*node)
- = build_pointer_type
- (build_type_variant (TREE_TYPE (type), 1,
- TREE_THIS_VOLATILE (TREE_TYPE (type))));
- else
- {
- warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name));
- *no_add_attrs = true;
- }
-
- return NULL_TREE;
-}
-
-/* Handle a "transparent_union" attribute; arguments as in
- struct attribute_spec.handler. */
-
-static tree
-handle_transparent_union_attribute (node, name, args, flags, no_add_attrs)
- tree *node;
- tree name;
- tree args ATTRIBUTE_UNUSED;
- int flags;
- bool *no_add_attrs;
-{
- tree decl = NULL_TREE;
- tree *type = NULL;
- int is_type = 0;
-
- if (DECL_P (*node))
- {
- decl = *node;
- type = &TREE_TYPE (decl);
- is_type = TREE_CODE (*node) == TYPE_DECL;
- }
- else if (TYPE_P (*node))
- type = node, is_type = 1;
-
- if (is_type
- && TREE_CODE (*type) == UNION_TYPE
- && (decl == 0
- || (TYPE_FIELDS (*type) != 0
- && TYPE_MODE (*type) == DECL_MODE (TYPE_FIELDS (*type)))))
- {
- if (!(flags & (int) ATTR_FLAG_TYPE_IN_PLACE))
- *type = build_type_copy (*type);
- TYPE_TRANSPARENT_UNION (*type) = 1;
- }
- else if (decl != 0 && TREE_CODE (decl) == PARM_DECL
- && TREE_CODE (*type) == UNION_TYPE
- && TYPE_MODE (*type) == DECL_MODE (TYPE_FIELDS (*type)))
- DECL_TRANSPARENT_UNION (decl) = 1;
- else
- {
- warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name));
- *no_add_attrs = true;
- }
-
- return NULL_TREE;
-}
-
-/* Handle a "constructor" attribute; arguments as in
- struct attribute_spec.handler. */
-
-static tree
-handle_constructor_attribute (node, name, args, flags, no_add_attrs)
- tree *node;
- tree name;
- tree args ATTRIBUTE_UNUSED;
- int flags ATTRIBUTE_UNUSED;
- bool *no_add_attrs;
-{
- tree decl = *node;
- tree type = TREE_TYPE (decl);
-
- if (TREE_CODE (decl) == FUNCTION_DECL
- && TREE_CODE (type) == FUNCTION_TYPE
- && decl_function_context (decl) == 0)
- {
- DECL_STATIC_CONSTRUCTOR (decl) = 1;
- TREE_USED (decl) = 1;
- }
- else
- {
- warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name));
- *no_add_attrs = true;
- }
-
- return NULL_TREE;
-}
-
-/* Handle a "destructor" attribute; arguments as in
- struct attribute_spec.handler. */
-
-static tree
-handle_destructor_attribute (node, name, args, flags, no_add_attrs)
- tree *node;
- tree name;
- tree args ATTRIBUTE_UNUSED;
- int flags ATTRIBUTE_UNUSED;
- bool *no_add_attrs;
-{
- tree decl = *node;
- tree type = TREE_TYPE (decl);
-
- if (TREE_CODE (decl) == FUNCTION_DECL
- && TREE_CODE (type) == FUNCTION_TYPE
- && decl_function_context (decl) == 0)
- {
- DECL_STATIC_DESTRUCTOR (decl) = 1;
- TREE_USED (decl) = 1;
- }
- else
- {
- warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name));
- *no_add_attrs = true;
- }
-
- return NULL_TREE;
-}
-
-/* Handle a "mode" attribute; arguments as in
- struct attribute_spec.handler. */
-
-static tree
-handle_mode_attribute (node, name, args, flags, no_add_attrs)
- tree *node;
- tree name;
- tree args;
- int flags ATTRIBUTE_UNUSED;
- bool *no_add_attrs;
-{
- tree type = *node;
-
- *no_add_attrs = true;
-
- if (TREE_CODE (TREE_VALUE (args)) != IDENTIFIER_NODE)
- warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name));
- else
- {
- int j;
- const char *p = IDENTIFIER_POINTER (TREE_VALUE (args));
- int len = strlen (p);
- enum machine_mode mode = VOIDmode;
- tree typefm;
-
- if (len > 4 && p[0] == '_' && p[1] == '_'
- && p[len - 1] == '_' && p[len - 2] == '_')
- {
- char *newp = (char *) alloca (len - 1);
-
- strcpy (newp, &p[2]);
- newp[len - 4] = '\0';
- p = newp;
- }
-
- /* Change this type to have a type with the specified mode.
- First check for the special modes. */
- if (! strcmp (p, "byte"))
- mode = byte_mode;
- else if (!strcmp (p, "word"))
- mode = word_mode;
- else if (! strcmp (p, "pointer"))
- mode = ptr_mode;
- else
- for (j = 0; j < NUM_MACHINE_MODES; j++)
- if (!strcmp (p, GET_MODE_NAME (j)))
- mode = (enum machine_mode) j;
-
- if (mode == VOIDmode)
- error ("unknown machine mode `%s'", p);
- else if (0 == (typefm = (*lang_hooks.types.type_for_mode)
- (mode, TREE_UNSIGNED (type))))
- error ("no data type for mode `%s'", p);
- else
- {
- /* If this is a vector, make sure we either have hardware
- support, or we can emulate it. */
- if ((GET_MODE_CLASS (mode) == MODE_VECTOR_INT
- || GET_MODE_CLASS (mode) == MODE_VECTOR_FLOAT)
- && !vector_mode_valid_p (mode))
- {
- error ("unable to emulate '%s'", GET_MODE_NAME (mode));
- return NULL_TREE;
- }
-
- *node = typefm;
- /* No need to layout the type here. The caller should do this. */
- }
- }
-
- return NULL_TREE;
-}
-
-/* Handle a "section" attribute; arguments as in
- struct attribute_spec.handler. */
-
-static tree
-handle_section_attribute (node, name, args, flags, no_add_attrs)
- tree *node;
- tree name ATTRIBUTE_UNUSED;
- tree args;
- int flags ATTRIBUTE_UNUSED;
- bool *no_add_attrs;
-{
- tree decl = *node;
-
- if (targetm.have_named_sections)
- {
- if ((TREE_CODE (decl) == FUNCTION_DECL
- || TREE_CODE (decl) == VAR_DECL)
- && TREE_CODE (TREE_VALUE (args)) == STRING_CST)
- {
- if (TREE_CODE (decl) == VAR_DECL
- && current_function_decl != NULL_TREE
- && ! TREE_STATIC (decl))
- {
- error_with_decl (decl,
- "section attribute cannot be specified for local variables");
- *no_add_attrs = true;
- }
-
- /* The decl may have already been given a section attribute
- from a previous declaration. Ensure they match. */
- else if (DECL_SECTION_NAME (decl) != NULL_TREE
- && strcmp (TREE_STRING_POINTER (DECL_SECTION_NAME (decl)),
- TREE_STRING_POINTER (TREE_VALUE (args))) != 0)
- {
- error_with_decl (*node,
- "section of `%s' conflicts with previous declaration");
- *no_add_attrs = true;
- }
- else
- DECL_SECTION_NAME (decl) = TREE_VALUE (args);
- }
- else
- {
- error_with_decl (*node,
- "section attribute not allowed for `%s'");
- *no_add_attrs = true;
- }
- }
- else
- {
- error_with_decl (*node,
- "section attributes are not supported for this target");
- *no_add_attrs = true;
- }
-
- return NULL_TREE;
-}
-
-/* Handle a "aligned" attribute; arguments as in
- struct attribute_spec.handler. */
-
-static tree
-handle_aligned_attribute (node, name, args, flags, no_add_attrs)
- tree *node;
- tree name ATTRIBUTE_UNUSED;
- tree args;
- int flags;
- bool *no_add_attrs;
-{
- tree decl = NULL_TREE;
- tree *type = NULL;
- int is_type = 0;
- tree align_expr = (args ? TREE_VALUE (args)
- : size_int (BIGGEST_ALIGNMENT / BITS_PER_UNIT));
- int i;
-
- if (DECL_P (*node))
- {
- decl = *node;
- type = &TREE_TYPE (decl);
- is_type = TREE_CODE (*node) == TYPE_DECL;
- }
- else if (TYPE_P (*node))
- type = node, is_type = 1;
-
- /* Strip any NOPs of any kind. */
- while (TREE_CODE (align_expr) == NOP_EXPR
- || TREE_CODE (align_expr) == CONVERT_EXPR
- || TREE_CODE (align_expr) == NON_LVALUE_EXPR)
- align_expr = TREE_OPERAND (align_expr, 0);
-
- if (TREE_CODE (align_expr) != INTEGER_CST)
- {
- error ("requested alignment is not a constant");
- *no_add_attrs = true;
- }
- else if ((i = tree_log2 (align_expr)) == -1)
- {
- error ("requested alignment is not a power of 2");
- *no_add_attrs = true;
- }
- else if (i > HOST_BITS_PER_INT - 2)
- {
- error ("requested alignment is too large");
- *no_add_attrs = true;
- }
- else if (is_type)
- {
- /* If we have a TYPE_DECL, then copy the type, so that we
- don't accidentally modify a builtin type. See pushdecl. */
- if (decl && TREE_TYPE (decl) != error_mark_node
- && DECL_ORIGINAL_TYPE (decl) == NULL_TREE)
- {
- tree tt = TREE_TYPE (decl);
- *type = build_type_copy (*type);
- DECL_ORIGINAL_TYPE (decl) = tt;
- TYPE_NAME (*type) = decl;
- TREE_USED (*type) = TREE_USED (decl);
- TREE_TYPE (decl) = *type;
- }
- else if (!(flags & (int) ATTR_FLAG_TYPE_IN_PLACE))
- *type = build_type_copy (*type);
-
- TYPE_ALIGN (*type) = (1 << i) * BITS_PER_UNIT;
- TYPE_USER_ALIGN (*type) = 1;
- }
- else if (TREE_CODE (decl) != VAR_DECL
- && TREE_CODE (decl) != FIELD_DECL)
- {
- error_with_decl (decl,
- "alignment may not be specified for `%s'");
- *no_add_attrs = true;
- }
- else
- {
- DECL_ALIGN (decl) = (1 << i) * BITS_PER_UNIT;
- DECL_USER_ALIGN (decl) = 1;
- }
-
- return NULL_TREE;
-}
-
-/* Handle a "weak" attribute; arguments as in
- struct attribute_spec.handler. */
-
-static tree
-handle_weak_attribute (node, name, args, flags, no_add_attrs)
- tree *node;
- tree name ATTRIBUTE_UNUSED;
- tree args ATTRIBUTE_UNUSED;
- int flags ATTRIBUTE_UNUSED;
- bool *no_add_attrs ATTRIBUTE_UNUSED;
-{
- declare_weak (*node);
-
- return NULL_TREE;
-}
-
-/* Handle an "alias" attribute; arguments as in
- struct attribute_spec.handler. */
-
-static tree
-handle_alias_attribute (node, name, args, flags, no_add_attrs)
- tree *node;
- tree name;
- tree args;
- int flags ATTRIBUTE_UNUSED;
- bool *no_add_attrs;
-{
- tree decl = *node;
-
- if ((TREE_CODE (decl) == FUNCTION_DECL && DECL_INITIAL (decl))
- || (TREE_CODE (decl) != FUNCTION_DECL && ! DECL_EXTERNAL (decl)))
- {
- error_with_decl (decl,
- "`%s' defined both normally and as an alias");
- *no_add_attrs = true;
- }
- else if (decl_function_context (decl) == 0)
- {
- tree id;
-
- id = TREE_VALUE (args);
- if (TREE_CODE (id) != STRING_CST)
- {
- error ("alias arg not a string");
- *no_add_attrs = true;
- return NULL_TREE;
- }
- id = get_identifier (TREE_STRING_POINTER (id));
- /* This counts as a use of the object pointed to. */
- TREE_USED (id) = 1;
-
- if (TREE_CODE (decl) == FUNCTION_DECL)
- DECL_INITIAL (decl) = error_mark_node;
- else
- DECL_EXTERNAL (decl) = 0;
- }
- else
- {
- warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name));
- *no_add_attrs = true;
- }
-
- return NULL_TREE;
-}
-
-/* Handle an "visibility" attribute; arguments as in
- struct attribute_spec.handler. */
-
-static tree
-handle_visibility_attribute (node, name, args, flags, no_add_attrs)
- tree *node;
- tree name;
- tree args;
- int flags ATTRIBUTE_UNUSED;
- bool *no_add_attrs;
-{
- tree decl = *node;
-
- if (decl_function_context (decl) != 0 || ! TREE_PUBLIC (decl))
- {
- warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name));
- *no_add_attrs = true;
- }
- else
- {
- tree id;
-
- id = TREE_VALUE (args);
- if (TREE_CODE (id) != STRING_CST)
- {
- error ("visibility arg not a string");
- *no_add_attrs = true;
- return NULL_TREE;
- }
- if (strcmp (TREE_STRING_POINTER (id), "hidden")
- && strcmp (TREE_STRING_POINTER (id), "protected")
- && strcmp (TREE_STRING_POINTER (id), "internal")
- && strcmp (TREE_STRING_POINTER (id), "default"))
- {
- error ("visibility arg must be one of \"default\", \"hidden\", \"protected\" or \"internal\"");
- *no_add_attrs = true;
- return NULL_TREE;
- }
- }
-
- return NULL_TREE;
-}
-
-/* Handle an "tls_model" attribute; arguments as in
- struct attribute_spec.handler. */
-
-static tree
-handle_tls_model_attribute (node, name, args, flags, no_add_attrs)
- tree *node;
- tree name;
- tree args;
- int flags ATTRIBUTE_UNUSED;
- bool *no_add_attrs;
-{
- tree decl = *node;
-
- if (! DECL_THREAD_LOCAL (decl))
- {
- warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name));
- *no_add_attrs = true;
- }
- else
- {
- tree id;
-
- id = TREE_VALUE (args);
- if (TREE_CODE (id) != STRING_CST)
- {
- error ("tls_model arg not a string");
- *no_add_attrs = true;
- return NULL_TREE;
- }
- if (strcmp (TREE_STRING_POINTER (id), "local-exec")
- && strcmp (TREE_STRING_POINTER (id), "initial-exec")
- && strcmp (TREE_STRING_POINTER (id), "local-dynamic")
- && strcmp (TREE_STRING_POINTER (id), "global-dynamic"))
- {
- error ("tls_model arg must be one of \"local-exec\", \"initial-exec\", \"local-dynamic\" or \"global-dynamic\"");
- *no_add_attrs = true;
- return NULL_TREE;
- }
- }
-
- return NULL_TREE;
-}
-
-/* Handle a "no_instrument_function" attribute; arguments as in
- struct attribute_spec.handler. */
-
-static tree
-handle_no_instrument_function_attribute (node, name, args, flags, no_add_attrs)
- tree *node;
- tree name;
- tree args ATTRIBUTE_UNUSED;
- int flags ATTRIBUTE_UNUSED;
- bool *no_add_attrs;
-{
- tree decl = *node;
-
- if (TREE_CODE (decl) != FUNCTION_DECL)
- {
- error_with_decl (decl,
- "`%s' attribute applies only to functions",
- IDENTIFIER_POINTER (name));
- *no_add_attrs = true;
- }
- else if (DECL_INITIAL (decl))
- {
- error_with_decl (decl,
- "can't set `%s' attribute after definition",
- IDENTIFIER_POINTER (name));
- *no_add_attrs = true;
- }
- else
- DECL_NO_INSTRUMENT_FUNCTION_ENTRY_EXIT (decl) = 1;
-
- return NULL_TREE;
-}
-
-/* Handle a "malloc" attribute; arguments as in
- struct attribute_spec.handler. */
-
-static tree
-handle_malloc_attribute (node, name, args, flags, no_add_attrs)
- tree *node;
- tree name;
- tree args ATTRIBUTE_UNUSED;
- int flags ATTRIBUTE_UNUSED;
- bool *no_add_attrs;
-{
- if (TREE_CODE (*node) == FUNCTION_DECL)
- DECL_IS_MALLOC (*node) = 1;
- /* ??? TODO: Support types. */
- else
- {
- warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name));
- *no_add_attrs = true;
- }
-
- return NULL_TREE;
-}
-
-/* Handle a "no_limit_stack" attribute; arguments as in
- struct attribute_spec.handler. */
-
-static tree
-handle_no_limit_stack_attribute (node, name, args, flags, no_add_attrs)
- tree *node;
- tree name;
- tree args ATTRIBUTE_UNUSED;
- int flags ATTRIBUTE_UNUSED;
- bool *no_add_attrs;
-{
- tree decl = *node;
-
- if (TREE_CODE (decl) != FUNCTION_DECL)
- {
- error_with_decl (decl,
- "`%s' attribute applies only to functions",
- IDENTIFIER_POINTER (name));
- *no_add_attrs = true;
- }
- else if (DECL_INITIAL (decl))
- {
- error_with_decl (decl,
- "can't set `%s' attribute after definition",
- IDENTIFIER_POINTER (name));
- *no_add_attrs = true;
- }
- else
- DECL_NO_LIMIT_STACK (decl) = 1;
-
- return NULL_TREE;
-}
-
-/* Handle a "pure" attribute; arguments as in
- struct attribute_spec.handler. */
-
-static tree
-handle_pure_attribute (node, name, args, flags, no_add_attrs)
- tree *node;
- tree name;
- tree args ATTRIBUTE_UNUSED;
- int flags ATTRIBUTE_UNUSED;
- bool *no_add_attrs;
-{
- if (TREE_CODE (*node) == FUNCTION_DECL)
- DECL_IS_PURE (*node) = 1;
- /* ??? TODO: Support types. */
- else
- {
- warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name));
- *no_add_attrs = true;
- }
-
- return NULL_TREE;
-}
-
-/* Handle a "cleanup" attribute; arguments as in
- struct attribute_spec.handler. */
-
-static tree
-handle_cleanup_attribute (node, name, args, flags, no_add_attrs)
- tree *node;
- tree name;
- tree args;
- int flags ATTRIBUTE_UNUSED;
- bool *no_add_attrs;
-{
- tree decl = *node;
- tree cleanup_id, cleanup_decl;
-
- /* ??? Could perhaps support cleanups on TREE_STATIC, much like we do
- for global destructors in C++. This requires infrastructure that
- we don't have generically at the moment. It's also not a feature
- we'd be missing too much, since we do have attribute constructor. */
- if (TREE_CODE (decl) != VAR_DECL || TREE_STATIC (decl))
- {
- warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name));
- *no_add_attrs = true;
- return NULL_TREE;
- }
-
- /* Verify that the argument is a function in scope. */
- /* ??? We could support pointers to functions here as well, if
- that was considered desirable. */
- cleanup_id = TREE_VALUE (args);
- if (TREE_CODE (cleanup_id) != IDENTIFIER_NODE)
- {
- error ("cleanup arg not an identifier");
- *no_add_attrs = true;
- return NULL_TREE;
- }
- cleanup_decl = lookup_name (cleanup_id);
- if (!cleanup_decl || TREE_CODE (cleanup_decl) != FUNCTION_DECL)
- {
- error ("cleanup arg not a function");
- *no_add_attrs = true;
- return NULL_TREE;
- }
-
- /* That the function has proper type is checked with the
- eventual call to build_function_call. */
-
- return NULL_TREE;
-}
-
-/* Handle a "deprecated" attribute; arguments as in
- struct attribute_spec.handler. */
-
-static tree
-handle_deprecated_attribute (node, name, args, flags, no_add_attrs)
- tree *node;
- tree name;
- tree args ATTRIBUTE_UNUSED;
- int flags;
- bool *no_add_attrs;
-{
- tree type = NULL_TREE;
- int warn = 0;
- const char *what = NULL;
-
- if (DECL_P (*node))
- {
- tree decl = *node;
- type = TREE_TYPE (decl);
-
- if (TREE_CODE (decl) == TYPE_DECL
- || TREE_CODE (decl) == PARM_DECL
- || TREE_CODE (decl) == VAR_DECL
- || TREE_CODE (decl) == FUNCTION_DECL
- || TREE_CODE (decl) == FIELD_DECL)
- TREE_DEPRECATED (decl) = 1;
- else
- warn = 1;
- }
- else if (TYPE_P (*node))
- {
- if (!(flags & (int) ATTR_FLAG_TYPE_IN_PLACE))
- *node = build_type_copy (*node);
- TREE_DEPRECATED (*node) = 1;
- type = *node;
- }
- else
- warn = 1;
-
- if (warn)
- {
- *no_add_attrs = true;
- if (type && TYPE_NAME (type))
- {
- if (TREE_CODE (TYPE_NAME (type)) == IDENTIFIER_NODE)
- what = IDENTIFIER_POINTER (TYPE_NAME (*node));
- else if (TREE_CODE (TYPE_NAME (type)) == TYPE_DECL
- && DECL_NAME (TYPE_NAME (type)))
- what = IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (type)));
- }
- if (what)
- warning ("`%s' attribute ignored for `%s'",
- IDENTIFIER_POINTER (name), what);
- else
- warning ("`%s' attribute ignored",
- IDENTIFIER_POINTER (name));
- }
-
- return NULL_TREE;
-}
-
-/* Keep a list of vector type nodes we created in handle_vector_size_attribute,
- to prevent us from duplicating type nodes unnecessarily.
- The normal mechanism to prevent duplicates is to use type_hash_canon, but
- since we want to distinguish types that are essentially identical (except
- for their debug representation), we use a local list here. */
-static GTY(()) tree vector_type_node_list = 0;
-
-/* Handle a "vector_size" attribute; arguments as in
- struct attribute_spec.handler. */
-
-static tree
-handle_vector_size_attribute (node, name, args, flags, no_add_attrs)
- tree *node;
- tree name;
- tree args;
- int flags ATTRIBUTE_UNUSED;
- bool *no_add_attrs;
-{
- unsigned HOST_WIDE_INT vecsize, nunits;
- enum machine_mode mode, orig_mode, new_mode;
- tree type = *node, new_type = NULL_TREE;
- tree type_list_node;
-
- *no_add_attrs = true;
-
- if (! host_integerp (TREE_VALUE (args), 1))
- {
- warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name));
- return NULL_TREE;
- }
-
- /* Get the vector size (in bytes). */
- vecsize = tree_low_cst (TREE_VALUE (args), 1);
-
- /* We need to provide for vector pointers, vector arrays, and
- functions returning vectors. For example:
-
- __attribute__((vector_size(16))) short *foo;
-
- In this case, the mode is SI, but the type being modified is
- HI, so we need to look further. */
-
- while (POINTER_TYPE_P (type)
- || TREE_CODE (type) == FUNCTION_TYPE
- || TREE_CODE (type) == ARRAY_TYPE)
- type = TREE_TYPE (type);
-
- /* Get the mode of the type being modified. */
- orig_mode = TYPE_MODE (type);
-
- if (TREE_CODE (type) == RECORD_TYPE
- || (GET_MODE_CLASS (orig_mode) != MODE_FLOAT
- && GET_MODE_CLASS (orig_mode) != MODE_INT)
- || ! host_integerp (TYPE_SIZE_UNIT (type), 1))
- {
- error ("invalid vector type for attribute `%s'",
- IDENTIFIER_POINTER (name));
- return NULL_TREE;
- }
-
- /* Calculate how many units fit in the vector. */
- nunits = vecsize / tree_low_cst (TYPE_SIZE_UNIT (type), 1);
-
- /* Find a suitably sized vector. */
- new_mode = VOIDmode;
- for (mode = GET_CLASS_NARROWEST_MODE (GET_MODE_CLASS (orig_mode) == MODE_INT
- ? MODE_VECTOR_INT
- : MODE_VECTOR_FLOAT);
- mode != VOIDmode;
- mode = GET_MODE_WIDER_MODE (mode))
- if (vecsize == GET_MODE_SIZE (mode)
- && nunits == (unsigned HOST_WIDE_INT) GET_MODE_NUNITS (mode))
- {
- new_mode = mode;
- break;
- }
-
- if (new_mode == VOIDmode)
- {
- error ("no vector mode with the size and type specified could be found");
- return NULL_TREE;
- }
-
- for (type_list_node = vector_type_node_list; type_list_node;
- type_list_node = TREE_CHAIN (type_list_node))
- {
- tree other_type = TREE_VALUE (type_list_node);
- tree record = TYPE_DEBUG_REPRESENTATION_TYPE (other_type);
- tree fields = TYPE_FIELDS (record);
- tree field_type = TREE_TYPE (fields);
- tree array_type = TREE_TYPE (field_type);
- if (TREE_CODE (fields) != FIELD_DECL
- || TREE_CODE (field_type) != ARRAY_TYPE)
- abort ();
-
- if (TYPE_MODE (other_type) == mode && type == array_type)
- {
- new_type = other_type;
- break;
- }
- }
-
- if (new_type == NULL_TREE)
- {
- tree index, array, rt, list_node;
-
- new_type = (*lang_hooks.types.type_for_mode) (new_mode,
- TREE_UNSIGNED (type));
-
- if (!new_type)
- {
- error ("no vector mode with the size and type specified could be found");
- return NULL_TREE;
- }
-
- new_type = build_type_copy (new_type);
-
- /* If this is a vector, make sure we either have hardware
- support, or we can emulate it. */
- if ((GET_MODE_CLASS (mode) == MODE_VECTOR_INT
- || GET_MODE_CLASS (mode) == MODE_VECTOR_FLOAT)
- && !vector_mode_valid_p (mode))
- {
- error ("unable to emulate '%s'", GET_MODE_NAME (mode));
- return NULL_TREE;
- }
-
- /* Set the debug information here, because this is the only
- place where we know the underlying type for a vector made
- with vector_size. For debugging purposes we pretend a vector
- is an array within a structure. */
- index = build_int_2 (TYPE_VECTOR_SUBPARTS (new_type) - 1, 0);
- array = build_array_type (type, build_index_type (index));
- rt = make_node (RECORD_TYPE);
-
- TYPE_FIELDS (rt) = build_decl (FIELD_DECL, get_identifier ("f"), array);
- DECL_CONTEXT (TYPE_FIELDS (rt)) = rt;
- layout_type (rt);
- TYPE_DEBUG_REPRESENTATION_TYPE (new_type) = rt;
-
- list_node = build_tree_list (NULL, new_type);
- TREE_CHAIN (list_node) = vector_type_node_list;
- vector_type_node_list = list_node;
- }
-
- /* Build back pointers if needed. */
- *node = vector_size_helper (*node, new_type);
-
- return NULL_TREE;
-}
-
-/* HACK. GROSS. This is absolutely disgusting. I wish there was a
- better way.
-
- If we requested a pointer to a vector, build up the pointers that
- we stripped off while looking for the inner type. Similarly for
- return values from functions.
-
- The argument "type" is the top of the chain, and "bottom" is the
- new type which we will point to. */
-
-static tree
-vector_size_helper (type, bottom)
- tree type, bottom;
-{
- tree inner, outer;
-
- if (POINTER_TYPE_P (type))
- {
- inner = vector_size_helper (TREE_TYPE (type), bottom);
- outer = build_pointer_type (inner);
- }
- else if (TREE_CODE (type) == ARRAY_TYPE)
- {
- inner = vector_size_helper (TREE_TYPE (type), bottom);
- outer = build_array_type (inner, TYPE_VALUES (type));
- }
- else if (TREE_CODE (type) == FUNCTION_TYPE)
- {
- inner = vector_size_helper (TREE_TYPE (type), bottom);
- outer = build_function_type (inner, TYPE_VALUES (type));
- }
- else
- return bottom;
-
- TREE_READONLY (outer) = TREE_READONLY (type);
- TREE_THIS_VOLATILE (outer) = TREE_THIS_VOLATILE (type);
-
- return outer;
-}
-
-/* Handle the "nonnull" attribute. */
-static tree
-handle_nonnull_attribute (node, name, args, flags, no_add_attrs)
- tree *node;
- tree name ATTRIBUTE_UNUSED;
- tree args;
- int flags ATTRIBUTE_UNUSED;
- bool *no_add_attrs;
-{
- tree type = *node;
- unsigned HOST_WIDE_INT attr_arg_num;
-
- /* If no arguments are specified, all pointer arguments should be
- non-null. Veryify a full prototype is given so that the arguments
- will have the correct types when we actually check them later. */
- if (! args)
- {
- if (! TYPE_ARG_TYPES (type))
- {
- error ("nonnull attribute without arguments on a non-prototype");
- *no_add_attrs = true;
- }
- return NULL_TREE;
- }
-
- /* Argument list specified. Verify that each argument number references
- a pointer argument. */
- for (attr_arg_num = 1; args; args = TREE_CHAIN (args))
- {
- tree argument;
- unsigned HOST_WIDE_INT arg_num, ck_num;
-
- if (! get_nonnull_operand (TREE_VALUE (args), &arg_num))
- {
- error ("nonnull argument has invalid operand number (arg %lu)",
- (unsigned long) attr_arg_num);
- *no_add_attrs = true;
- return NULL_TREE;
- }
-
- argument = TYPE_ARG_TYPES (type);
- if (argument)
- {
- for (ck_num = 1; ; ck_num++)
- {
- if (! argument || ck_num == arg_num)
- break;
- argument = TREE_CHAIN (argument);
- }
-
- if (! argument
- || TREE_CODE (TREE_VALUE (argument)) == VOID_TYPE)
- {
- error ("nonnull argument with out-of-range operand number (arg %lu, operand %lu)",
- (unsigned long) attr_arg_num, (unsigned long) arg_num);
- *no_add_attrs = true;
- return NULL_TREE;
- }
-
- if (TREE_CODE (TREE_VALUE (argument)) != POINTER_TYPE)
- {
- error ("nonnull argument references non-pointer operand (arg %lu, operand %lu)",
- (unsigned long) attr_arg_num, (unsigned long) arg_num);
- *no_add_attrs = true;
- return NULL_TREE;
- }
- }
- }
-
- return NULL_TREE;
-}
-
-/* Check the argument list of a function call for null in argument slots
- that are marked as requiring a non-null pointer argument. */
-
-static void
-check_function_nonnull (attrs, params)
- tree attrs;
- tree params;
-{
- tree a, args, param;
- int param_num;
-
- for (a = attrs; a; a = TREE_CHAIN (a))
- {
- if (is_attribute_p ("nonnull", TREE_PURPOSE (a)))
- {
- args = TREE_VALUE (a);
-
- /* Walk the argument list. If we encounter an argument number we
- should check for non-null, do it. If the attribute has no args,
- then every pointer argument is checked (in which case the check
- for pointer type is done in check_nonnull_arg). */
- for (param = params, param_num = 1; ;
- param_num++, param = TREE_CHAIN (param))
- {
- if (! param)
- break;
- if (! args || nonnull_check_p (args, param_num))
- check_function_arguments_recurse (check_nonnull_arg, NULL,
- TREE_VALUE (param),
- param_num);
- }
- }
- }
-}
-
-/* Helper for check_function_nonnull; given a list of operands which
- must be non-null in ARGS, determine if operand PARAM_NUM should be
- checked. */
-
-static bool
-nonnull_check_p (args, param_num)
- tree args;
- unsigned HOST_WIDE_INT param_num;
-{
- unsigned HOST_WIDE_INT arg_num;
-
- for (; args; args = TREE_CHAIN (args))
- {
- if (! get_nonnull_operand (TREE_VALUE (args), &arg_num))
- abort ();
-
- if (arg_num == param_num)
- return true;
- }
- return false;
-}
-
-/* Check that the function argument PARAM (which is operand number
- PARAM_NUM) is non-null. This is called by check_function_nonnull
- via check_function_arguments_recurse. */
-
-static void
-check_nonnull_arg (ctx, param, param_num)
- void *ctx ATTRIBUTE_UNUSED;
- tree param;
- unsigned HOST_WIDE_INT param_num;
-{
- /* Just skip checking the argument if it's not a pointer. This can
- happen if the "nonnull" attribute was given without an operand
- list (which means to check every pointer argument). */
-
- if (TREE_CODE (TREE_TYPE (param)) != POINTER_TYPE)
- return;
-
- if (integer_zerop (param))
- warning ("null argument where non-null required (arg %lu)",
- (unsigned long) param_num);
-}
-
-/* Helper for nonnull attribute handling; fetch the operand number
- from the attribute argument list. */
-
-static bool
-get_nonnull_operand (arg_num_expr, valp)
- tree arg_num_expr;
- unsigned HOST_WIDE_INT *valp;
-{
- /* Strip any conversions from the arg number and verify they
- are constants. */
- while (TREE_CODE (arg_num_expr) == NOP_EXPR
- || TREE_CODE (arg_num_expr) == CONVERT_EXPR
- || TREE_CODE (arg_num_expr) == NON_LVALUE_EXPR)
- arg_num_expr = TREE_OPERAND (arg_num_expr, 0);
-
- if (TREE_CODE (arg_num_expr) != INTEGER_CST
- || TREE_INT_CST_HIGH (arg_num_expr) != 0)
- return false;
-
- *valp = TREE_INT_CST_LOW (arg_num_expr);
- return true;
-}
-
-/* Handle a "nothrow" attribute; arguments as in
- struct attribute_spec.handler. */
-
-static tree
-handle_nothrow_attribute (node, name, args, flags, no_add_attrs)
- tree *node;
- tree name;
- tree args ATTRIBUTE_UNUSED;
- int flags ATTRIBUTE_UNUSED;
- bool *no_add_attrs;
-{
- if (TREE_CODE (*node) == FUNCTION_DECL)
- TREE_NOTHROW (*node) = 1;
- /* ??? TODO: Support types. */
- else
- {
- warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name));
- *no_add_attrs = true;
- }
-
- return NULL_TREE;
-}
-
-/* Check for valid arguments being passed to a function. */
-void
-check_function_arguments (attrs, params)
- tree attrs;
- tree params;
-{
- /* Check for null being passed in a pointer argument that must be
- non-null. We also need to do this if format checking is enabled. */
-
- if (warn_nonnull)
- check_function_nonnull (attrs, params);
-
- /* Check for errors in format strings. */
-
- if (warn_format)
- check_function_format (NULL, attrs, params);
-}
-
-/* Generic argument checking recursion routine. PARAM is the argument to
- be checked. PARAM_NUM is the number of the argument. CALLBACK is invoked
- once the argument is resolved. CTX is context for the callback. */
-void
-check_function_arguments_recurse (callback, ctx, param, param_num)
- void (*callback) PARAMS ((void *, tree, unsigned HOST_WIDE_INT));
- void *ctx;
- tree param;
- unsigned HOST_WIDE_INT param_num;
-{
- if (TREE_CODE (param) == NOP_EXPR)
- {
- /* Strip coercion. */
- check_function_arguments_recurse (callback, ctx,
- TREE_OPERAND (param, 0), param_num);
- return;
- }
-
- if (TREE_CODE (param) == CALL_EXPR)
- {
- tree type = TREE_TYPE (TREE_TYPE (TREE_OPERAND (param, 0)));
- tree attrs;
- bool found_format_arg = false;
-
- /* See if this is a call to a known internationalization function
- that modifies a format arg. Such a function may have multiple
- format_arg attributes (for example, ngettext). */
-
- for (attrs = TYPE_ATTRIBUTES (type);
- attrs;
- attrs = TREE_CHAIN (attrs))
- if (is_attribute_p ("format_arg", TREE_PURPOSE (attrs)))
- {
- tree inner_args;
- tree format_num_expr;
- int format_num;
- int i;
-
- /* Extract the argument number, which was previously checked
- to be valid. */
- format_num_expr = TREE_VALUE (TREE_VALUE (attrs));
- while (TREE_CODE (format_num_expr) == NOP_EXPR
- || TREE_CODE (format_num_expr) == CONVERT_EXPR
- || TREE_CODE (format_num_expr) == NON_LVALUE_EXPR)
- format_num_expr = TREE_OPERAND (format_num_expr, 0);
-
- if (TREE_CODE (format_num_expr) != INTEGER_CST
- || TREE_INT_CST_HIGH (format_num_expr) != 0)
- abort ();
-
- format_num = TREE_INT_CST_LOW (format_num_expr);
-
- for (inner_args = TREE_OPERAND (param, 1), i = 1;
- inner_args != 0;
- inner_args = TREE_CHAIN (inner_args), i++)
- if (i == format_num)
- {
- check_function_arguments_recurse (callback, ctx,
- TREE_VALUE (inner_args),
- param_num);
- found_format_arg = true;
- break;
- }
- }
-
- /* If we found a format_arg attribute and did a recursive check,
- we are done with checking this argument. Otherwise, we continue
- and this will be considered a non-literal. */
- if (found_format_arg)
- return;
- }
-
- if (TREE_CODE (param) == COND_EXPR)
- {
- /* Check both halves of the conditional expression. */
- check_function_arguments_recurse (callback, ctx,
- TREE_OPERAND (param, 1), param_num);
- check_function_arguments_recurse (callback, ctx,
- TREE_OPERAND (param, 2), param_num);
- return;
- }
-
- (*callback) (ctx, param, param_num);
-}
-
-#include "gt-c-common.h"
diff --git a/contrib/gcc/c-common.h b/contrib/gcc/c-common.h
index 1f59ebd..428a23b 100644
--- a/contrib/gcc/c-common.h
+++ b/contrib/gcc/c-common.h
@@ -19,6 +19,8 @@ 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. */
+/* $FreeBSD$ */
+
#ifndef GCC_C_COMMON_H
#define GCC_C_COMMON_H
@@ -43,7 +45,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
*/
/* Reserved identifiers. This is the union of all the keywords for C,
- C++, and Objective-C. All the type modifiers have to be in one
+ C++, and Objective C. All the type modifiers have to be in one
block at the beginning, because they are used as mask bits. There
are 27 type modifiers; if we add many more we will have to redesign
the mask mechanism. */
@@ -58,7 +60,7 @@ enum rid
RID_VOLATILE, RID_SIGNED, RID_AUTO, RID_RESTRICT,
/* C extensions */
- RID_BOUNDED, RID_UNBOUNDED, RID_COMPLEX, RID_THREAD,
+ RID_BOUNDED, RID_UNBOUNDED, RID_COMPLEX,
/* C++ */
RID_FRIEND, RID_VIRTUAL, RID_EXPLICIT, RID_EXPORT, RID_MUTABLE,
@@ -93,7 +95,12 @@ enum rid
/* casts */
RID_CONSTCAST, RID_DYNCAST, RID_REINTCAST, RID_STATCAST,
- /* Objective-C */
+ /* alternate spellings */
+ RID_AND, RID_AND_EQ, RID_NOT, RID_NOT_EQ,
+ RID_OR, RID_OR_EQ, RID_XOR, RID_XOR_EQ,
+ RID_BITAND, RID_BITOR, RID_COMPL,
+
+ /* Objective C */
RID_ID, RID_AT_ENCODE, RID_AT_END,
RID_AT_CLASS, RID_AT_ALIAS, RID_AT_DEFS,
RID_AT_PRIVATE, RID_AT_PROTECTED, RID_AT_PUBLIC,
@@ -174,10 +181,10 @@ enum c_tree_index
/* Identifier part common to the C front ends. Inherits from
tree_identifier, despite appearances. */
-struct c_common_identifier GTY(())
+struct c_common_identifier
{
struct tree_common common;
- struct cpp_hashnode GTY ((skip (""))) node;
+ struct cpp_hashnode node;
};
#define wchar_type_node c_global_trees[CTI_WCHAR_TYPE]
@@ -221,7 +228,7 @@ struct c_common_identifier GTY(())
/* A node for `((void) 0)'. */
#define void_zero_node c_global_trees[CTI_VOID_ZERO]
-extern GTY(()) tree c_global_trees[CTI_MAX];
+extern tree c_global_trees[CTI_MAX];
/* Mark which labels are explicitly declared.
These may be shadowed, and may be referenced from nested functions. */
@@ -233,14 +240,16 @@ extern GTY(()) tree c_global_trees[CTI_MAX];
typedef enum c_language_kind
{
- clk_c = 0, /* A dialect of C: K&R C, ANSI/ISO C89, C2000, etc. */
- clk_cplusplus /* ANSI/ISO C++ */
+ clk_c, /* A dialect of C: K&R C, ANSI/ISO C89, C2000,
+ etc. */
+ clk_cplusplus, /* ANSI/ISO C++ */
+ clk_objective_c /* Objective C */
}
c_language_kind;
/* Information about a statement tree. */
-struct stmt_tree_s GTY(()) {
+struct stmt_tree_s {
/* The last statement added to the tree. */
tree x_last_stmt;
/* The type of the last expression statement. (This information is
@@ -248,12 +257,12 @@ struct stmt_tree_s GTY(()) {
tree x_last_expr_type;
/* The last filename we recorded. */
const char *x_last_expr_filename;
- /* In C++, Nonzero if we should treat statements as full
+ /* In C++, Non-zero if we should treat statements as full
expressions. In particular, this variable is no-zero if at the
end of a statement we should destroy any temporaries created
during that statement. Similarly, if, at the end of a block, we
should destroy any local variables in this block. Normally, this
- variable is nonzero, since those are the normal semantics of
+ variable is non-zero, since those are the normal semantics of
C++.
However, in order to represent aggregate initialization code as
@@ -270,7 +279,7 @@ typedef struct stmt_tree_s *stmt_tree;
/* Global state pertinent to the current function. Some C dialects
extend this structure with additional fields. */
-struct c_language_function GTY(()) {
+struct language_function {
/* While we are parsing the function, this contains information
about the statement-tree that we are building. */
struct stmt_tree_s x_stmt_tree;
@@ -309,14 +318,11 @@ extern int (*lang_statement_code_p) PARAMS ((enum tree_code));
extern void (*lang_expand_stmt) PARAMS ((tree));
extern void (*lang_expand_decl_stmt) PARAMS ((tree));
extern void (*lang_expand_function_end) PARAMS ((void));
-extern tree gettags PARAMS ((void));
/* Callback that determines if it's ok for a function to have no
noreturn attribute. */
extern int (*lang_missing_noreturn_ok_p) PARAMS ((tree));
-extern int yyparse PARAMS ((void));
-extern void free_parser_stacks PARAMS ((void));
extern stmt_tree current_stmt_tree PARAMS ((void));
extern tree *current_scope_stmt_stack PARAMS ((void));
@@ -332,6 +338,7 @@ extern tree walk_stmt_tree PARAMS ((tree *,
void *));
extern void prep_stmt PARAMS ((tree));
extern void expand_stmt PARAMS ((tree));
+extern void mark_stmt_tree PARAMS ((void *));
extern void shadow_warning PARAMS ((const char *,
tree, tree));
extern tree c_begin_if_stmt PARAMS ((void));
@@ -344,7 +351,7 @@ extern void c_finish_while_stmt_cond PARAMS ((tree, tree));
structure for FUNCTION_DECLs; all other DECLs have a NULL
DECL_LANG_SPECIFIC field. */
-struct c_lang_decl GTY(()) {
+struct c_lang_decl {
unsigned declared_inline : 1;
};
@@ -355,35 +362,17 @@ struct c_lang_decl GTY(()) {
#define DECL_NUM_STMTS(NODE) \
(FUNCTION_DECL_CHECK (NODE)->decl.u1.i)
+extern void c_mark_lang_decl PARAMS ((struct c_lang_decl *));
+
/* The variant of the C language being processed. Each C language
front-end defines this variable. */
extern c_language_kind c_language;
-/* Switches common to the C front ends. */
-
-/* Nonzero if prepreprocessing only. */
-extern int flag_preprocess_only;
-
-/* Nonzero if an ISO standard was selected. It rejects macros in the
- user's namespace. */
-extern int flag_iso;
-
-/* Nonzero whenever Objective-C functionality is being used. */
-extern int flag_objc;
-
-/* Nonzero if -undef was given. It suppresses target built-in macros
- and assertions. */
-extern int flag_undef;
-
-/* Nonzero means don't recognize the non-ANSI builtin functions. */
-
-extern int flag_no_builtin;
-
-/* Nonzero means don't recognize the non-ANSI builtin functions.
- -ansi sets this. */
+/* Nonzero means give string constants the type `const char *', rather
+ than `char *'. */
-extern int flag_no_nonansi_builtin;
+extern int flag_const_strings;
/* Nonzero means give `double' the same size as `float'. */
@@ -393,91 +382,7 @@ extern int flag_short_double;
extern int flag_short_wchar;
-/* Nonzero means allow Microsoft extensions without warnings or errors. */
-extern int flag_ms_extensions;
-
-/* Nonzero means don't recognize the keyword `asm'. */
-
-extern int flag_no_asm;
-
-/* Nonzero means give string constants the type `const char *', as mandated
- by the standard. */
-
-extern int flag_const_strings;
-
-/* Nonzero means `$' can be in an identifier. */
-
-extern int dollars_in_ident;
-
-/* Nonzero means to treat bitfields as signed unless they say `unsigned'. */
-
-extern int flag_signed_bitfields;
-extern int explicit_flag_signed_bitfields;
-
-/* Nonzero means warn about pointer casts that can drop a type qualifier
- from the pointer target type. */
-
-extern int warn_cast_qual;
-
-/* Warn about functions which might be candidates for format attributes. */
-
-extern int warn_missing_format_attribute;
-
-/* Nonzero means warn about sizeof(function) or addition/subtraction
- of function pointers. */
-
-extern int warn_pointer_arith;
-
-/* Nonzero means warn for any global function def
- without separate previous prototype decl. */
-
-extern int warn_missing_prototypes;
-
-/* Warn if adding () is suggested. */
-
-extern int warn_parentheses;
-
-/* Warn if initializer is not completely bracketed. */
-
-extern int warn_missing_braces;
-
-/* Warn about comparison of signed and unsigned values.
- If -1, neither -Wsign-compare nor -Wno-sign-compare has been specified. */
-
-extern int warn_sign_compare;
-
-/* Nonzero means warn about usage of long long when `-pedantic'. */
-
-extern int warn_long_long;
-
-/* Nonzero means warn about deprecated conversion from string constant to
- `char *'. */
-
-extern int warn_write_strings;
-
-/* Nonzero means warn about multiple (redundant) decls for the same single
- variable or function. */
-
-extern int warn_redundant_decls;
-
-/* Warn about testing equality of floating point numbers. */
-
-extern int warn_float_equal;
-
-/* Warn about a subscript that has type char. */
-
-extern int warn_char_subscripts;
-
-/* Warn if a type conversion is done that might have confusing results. */
-
-extern int warn_conversion;
-
-/* Warn about #pragma directives that are not recognized. */
-
-extern int warn_unknown_pragmas; /* Tri state variable. */
-
-/* Warn about format/argument anomalies in calls to formatted I/O functions
- (*printf, *scanf, strftime, strfmon, etc.). */
+/* Warn about *printf or *scanf format/argument anomalies. */
extern int warn_format;
@@ -489,10 +394,6 @@ extern int warn_format_y2k;
extern int warn_format_extra_args;
-/* Warn about zero-length formats. */
-
-extern int warn_format_zero_length;
-
/* Warn about non-literal format arguments. */
extern int warn_format_nonliteral;
@@ -501,317 +402,72 @@ extern int warn_format_nonliteral;
extern int warn_format_security;
+/* Warn about possible violations of sequence point rules. */
-/* C/ObjC language option variables. */
-
-
-/* Nonzero means message about use of implicit function declarations;
- 1 means warning; 2 means error. */
-
-extern int mesg_implicit_function_declaration;
-
-/* Nonzero means allow type mismatches in conditional expressions;
- just make their values `void'. */
-
-extern int flag_cond_mismatch;
-
-/* Nonzero means enable C89 Amendment 1 features. */
-
-extern int flag_isoc94;
-
-/* Nonzero means use the ISO C99 dialect of C. */
-
-extern int flag_isoc99;
-
-/* Nonzero means that we have builtin functions, and main is an int */
-
-extern int flag_hosted;
-
-/* Nonzero means add default format_arg attributes for functions not
- in ISO C. */
-
-extern int flag_noniso_default_format_attributes;
-
-/* Nonzero means warn when casting a function call to a type that does
- not match the return type (e.g. (float)sqrt() or (anything*)malloc()
- when there is no previous declaration of sqrt or malloc. */
-
-extern int warn_bad_function_cast;
-
-/* Warn about traditional constructs whose meanings changed in ANSI C. */
-
-extern int warn_traditional;
-
-/* Nonzero means warn for non-prototype function decls
- or non-prototyped defs without previous prototype. */
-
-extern int warn_strict_prototypes;
-
-/* Nonzero means warn for any global function def
- without separate previous decl. */
-
-extern int warn_missing_declarations;
+extern int warn_sequence_point;
-/* Nonzero means warn about extern declarations of objects not at
- file-scope level and about *all* declarations of functions (whether
- extern or static) not at file-scope level. Note that we exclude
- implicit function declarations. To get warnings about those, use
- -Wimplicit. */
+/* Warn about functions which might be candidates for format attributes. */
-extern int warn_nested_externs;
+extern int warn_missing_format_attribute;
-/* Warn if main is suspicious. */
+/* Nonzero means do not warn that K&R style main() is not a function prototype. */
-extern int warn_main;
+extern int flag_bsd_no_warn_kr_main;
-/* Nonzero means warn about possible violations of sequence point rules. */
+/* Nonzero means warn about sizeof (function) or addition/subtraction
+ of function pointers. */
-extern int warn_sequence_point;
+extern int warn_pointer_arith;
/* Nonzero means to warn about compile-time division by zero. */
extern int warn_div_by_zero;
-/* Nonzero means warn about use of implicit int. */
+/* Nonzero means do some things the same way PCC does. */
-extern int warn_implicit_int;
+extern int flag_traditional;
-/* Warn about NULL being passed to argument slots marked as requiring
- non-NULL. */
-
-extern int warn_nonnull;
-
-
-/* ObjC language option variables. */
-
-
-/* Open and close the file for outputting class declarations, if
- requested (ObjC). */
-
-extern int flag_gen_declaration;
-
-/* Generate code for GNU or NeXT runtime environment. */
-
-extern int flag_next_runtime;
-
-/* Tells the compiler that this is a special run. Do not perform any
- compiling, instead we are to test some platform dependent features
- and output a C header file with appropriate definitions. */
-
-extern int print_struct_values;
-
-/* ???. Undocumented. */
-
-extern const char *constant_string_class_name;
-
-/* Warn if multiple methods are seen for the same selector, but with
- different argument types. Performs the check on the whole selector
- table at the end of compilation. */
-
-extern int warn_selector;
-
-/* Warn if a @selector() is found, and no method with that selector
- has been previously declared. The check is done on each
- @selector() as soon as it is found - so it warns about forward
- declarations. */
-
-extern int warn_undeclared_selector;
-
-/* Warn if methods required by a protocol are not implemented in the
- class adopting it. When turned off, methods inherited to that
- class are also considered implemented. */
-
-extern int warn_protocol;
-
-
-/* C++ language option variables. */
-
-
-/* Nonzero means don't recognize any extension keywords. */
-
-extern int flag_no_gnu_keywords;
-
-/* Nonzero means do emit exported implementations of functions even if
- they can be inlined. */
-
-extern int flag_implement_inlines;
-
-/* Nonzero means do emit exported implementations of templates, instead of
- multiple static copies in each file that needs a definition. */
-
-extern int flag_external_templates;
-
-/* Nonzero means that the decision to emit or not emit the implementation of a
- template depends on where the template is instantiated, rather than where
- it is defined. */
-
-extern int flag_alt_external_templates;
-
-/* Nonzero means that implicit instantiations will be emitted if needed. */
-
-extern int flag_implicit_templates;
-
-/* Nonzero means that implicit instantiations of inline templates will be
- emitted if needed, even if instantiations of non-inline templates
- aren't. */
-
-extern int flag_implicit_inline_templates;
-
-/* Nonzero means generate separate instantiation control files and
- juggle them at link time. */
-
-extern int flag_use_repository;
-
-/* Nonzero if we want to issue diagnostics that the standard says are not
- required. */
-
-extern int flag_optional_diags;
-
-/* Nonzero means we should attempt to elide constructors when possible. */
-
-extern int flag_elide_constructors;
-
-/* Nonzero means that member functions defined in class scope are
- inline by default. */
-
-extern int flag_default_inline;
-
-/* Controls whether compiler generates 'type descriptor' that give
- run-time type information. */
-
-extern int flag_rtti;
-
-/* Nonzero if we want to conserve space in the .o files. We do this
- by putting uninitialized data and runtime initialized data into
- .common instead of .data at the expense of not flagging multiple
- definitions. */
-
-extern int flag_conserve_space;
-
-/* Nonzero if we want to obey access control semantics. */
-
-extern int flag_access_control;
-
-/* Nonzero if we want to check the return value of new and avoid calling
- constructors if it is a null pointer. */
-
-extern int flag_check_new;
-
-/* Nonzero if we want the new ISO rules for pushing a new scope for `for'
- initialization variables.
- 0: Old rules, set by -fno-for-scope.
- 2: New ISO rules, set by -ffor-scope.
- 1: Try to implement new ISO rules, but with backup compatibility
- (and warnings). This is the default, for now. */
-
-extern int flag_new_for_scope;
-
-/* Nonzero if we want to emit defined symbols with common-like linkage as
- weak symbols where possible, in order to conform to C++ semantics.
- Otherwise, emit them as local symbols. */
-
-extern int flag_weak;
-
-/* Nonzero to use __cxa_atexit, rather than atexit, to register
- destructors for local statics and global objects. */
-
-extern int flag_use_cxa_atexit;
-
-/* Nonzero means output .vtable_{entry,inherit} for use in doing vtable gc. */
-
-extern int flag_vtable_gc;
-
-/* Nonzero means make the default pedwarns warnings instead of errors.
- The value of this flag is ignored if -pedantic is specified. */
-
-extern int flag_permissive;
-
-/* Nonzero means to implement standard semantics for exception
- specifications, calling unexpected if an exception is thrown that
- doesn't match the specification. Zero means to treat them as
- assertions and optimize accordingly, but not check them. */
-
-extern int flag_enforce_eh_specs;
-
-/* The version of the C++ ABI in use. The following values are
- allowed:
-
- 0: The version of the ABI believed most conformant with the
- C++ ABI specification. This ABI may change as bugs are
- discovered and fixed. Therefore, 0 will not necessarily
- indicate the same ABI in different versions of G++.
-
- 1: The version of the ABI first used in G++ 3.2.
-
- Additional positive integers will be assigned as new versions of
- the ABI become the default version of the ABI. */
-
-extern int flag_abi_version;
-
-/* Nonzero means warn about things that will change when compiling
- with an ABI-compliant compiler. */
-
-extern int warn_abi;
-
-/* Nonzero means warn about implicit declarations. */
-
-extern int warn_implicit;
-
-/* Nonzero means warn when all ctors or dtors are private, and the class
- has no friends. */
-
-extern int warn_ctor_dtor_privacy;
-
-/* Nonzero means warn in function declared in derived class has the
- same name as a virtual in the base class, but fails to match the
- type signature of any virtual function in the base class. */
-
-extern int warn_overloaded_virtual;
-
-/* Nonzero means warn when declaring a class that has a non virtual
- destructor, when it really ought to have a virtual one. */
+/* Nonzero means enable C89 Amendment 1 features. */
-extern int warn_nonvdtor;
+extern int flag_isoc94;
-/* Nonzero means warn when the compiler will reorder code. */
+/* Nonzero means use the ISO C99 dialect of C. */
-extern int warn_reorder;
+extern int flag_isoc99;
-/* Nonzero means warn when synthesis behavior differs from Cfront's. */
+/* Nonzero means allow the BSD kernel printf enhancments. */
-extern int warn_synth;
+extern int flag_bsd_format;
-/* Nonzero means warn when we convert a pointer to member function
- into a pointer to (void or function). */
+/* Nonzero means environment is hosted (i.e., not freestanding) */
-extern int warn_pmf2ptr;
+extern int flag_hosted;
-/* Nonzero means warn about violation of some Effective C++ style rules. */
+/* Nonzero means add default format_arg attributes for functions not
+ in ISO C. */
-extern int warn_ecpp;
+extern int flag_noniso_default_format_attributes;
-/* Nonzero means warn where overload resolution chooses a promotion from
- unsigned to signed over a conversion to an unsigned of the same size. */
+/* Nonzero means don't recognize any builtin functions. */
-extern int warn_sign_promo;
+extern int flag_no_builtin;
-/* Nonzero means warn when an old-style cast is used. */
+/* Nonzero means don't recognize the non-ANSI builtin functions.
+ -ansi sets this. */
-extern int warn_old_style_cast;
+extern int flag_no_nonansi_builtin;
-/* Nonzero means warn when non-templatized friend functions are
- declared within a template */
+/* Nonzero means warn about suggesting putting in ()'s. */
-extern int warn_nontemplate_friend;
+extern int warn_parentheses;
-/* Nonzero means complain about deprecated features. */
+/* Warn if a type conversion is done that might have confusing results. */
-extern int warn_deprecated;
+extern int warn_conversion;
-/* Maximum template instantiation depth. This limit is rather
- arbitrary, but it exists to limit the time it takes to notice
- infinite template instantiations. */
+/* Nonzero means warn about usage of long long,
+ when `-pedantic' and not C99. */
-extern int max_tinst_depth;
+extern int warn_long_long;
/* Nonzero means the expression being parsed will never be evaluated.
This is a count, since unevaluated expressions can nest. */
@@ -838,10 +494,6 @@ extern int skip_evaluation;
what operator was specified for it. */
#define C_EXP_ORIGINAL_CODE(exp) ((enum tree_code) TREE_COMPLEXITY (exp))
-/* Attribute table common to the C front ends. */
-extern const struct attribute_spec c_common_attribute_table[];
-extern const struct attribute_spec c_common_format_attribute_table[];
-
/* Pointer to function to lazily generate the VAR_DECL for __FUNCTION__ etc.
ID is the identifier to use, NAME is the string.
TYPE_DEP indicates whether it depends on type of the function or not
@@ -859,12 +511,6 @@ extern const char *fname_as_string PARAMS ((int));
extern tree fname_decl PARAMS ((unsigned, tree));
extern const char *fname_string PARAMS ((unsigned));
-extern void check_function_arguments PARAMS ((tree, tree));
-extern void check_function_arguments_recurse PARAMS ((void (*) (void *,
- tree,
- unsigned HOST_WIDE_INT),
- void *, tree,
- unsigned HOST_WIDE_INT));
extern void check_function_format PARAMS ((int *, tree, tree));
extern void set_Wformat PARAMS ((int));
extern tree handle_format_attribute PARAMS ((tree *, tree, tree,
@@ -872,34 +518,23 @@ extern tree handle_format_attribute PARAMS ((tree *, tree, tree,
extern tree handle_format_arg_attribute PARAMS ((tree *, tree, tree,
int, bool *));
extern void c_common_insert_default_attributes PARAMS ((tree));
-extern int c_common_decode_option PARAMS ((int, char **));
-extern tree c_common_type_for_mode PARAMS ((enum machine_mode,
- int));
-extern tree c_common_type_for_size PARAMS ((unsigned int, int));
-extern tree c_common_unsigned_type PARAMS ((tree));
-extern tree c_common_signed_type PARAMS ((tree));
-extern tree c_common_signed_or_unsigned_type PARAMS ((int, tree));
-extern tree c_common_truthvalue_conversion PARAMS ((tree));
extern void c_apply_type_quals_to_decl PARAMS ((int, tree));
-extern tree c_sizeof_or_alignof_type PARAMS ((tree, enum tree_code, int));
+extern tree c_sizeof PARAMS ((tree));
+extern tree c_alignof PARAMS ((tree));
extern tree c_alignof_expr PARAMS ((tree));
/* Print an error message for invalid operands to arith operation CODE.
NOP_EXPR is used as a special case (see truthvalue_conversion). */
extern void binary_op_error PARAMS ((enum tree_code));
-#define my_friendly_assert(EXP, N) (void) \
- (((EXP) == 0) ? (fancy_abort (__FILE__, __LINE__, __FUNCTION__), 0) : 0)
-
extern tree c_expand_expr_stmt PARAMS ((tree));
extern void c_expand_start_cond PARAMS ((tree, int, tree));
extern void c_finish_then PARAMS ((void));
extern void c_expand_start_else PARAMS ((void));
-extern void c_finish_else PARAMS ((void));
+extern void c_finish_else PARAMS ((void));
extern void c_expand_end_cond PARAMS ((void));
/* Validate the expression after `case' and apply default promotions. */
extern tree check_case_value PARAMS ((tree));
-extern tree fix_string_type PARAMS ((tree));
-struct varray_head_tag;
-extern tree combine_strings PARAMS ((struct varray_head_tag *));
+/* Concatenate a list of STRING_CST nodes into one STRING_CST. */
+extern tree combine_strings PARAMS ((tree));
extern void constant_expression_warning PARAMS ((tree));
extern tree convert_and_check PARAMS ((tree, tree));
extern void overflow_warning PARAMS ((tree));
@@ -908,8 +543,6 @@ extern void unsigned_conversion_warning PARAMS ((tree, tree));
/* Read the rest of the current #-directive line. */
extern char *get_directive_line PARAMS ((void));
#define GET_DIRECTIVE_LINE() get_directive_line ()
-#define c_sizeof(T) c_sizeof_or_alignof_type (T, SIZEOF_EXPR, 1)
-#define c_alignof(T) c_sizeof_or_alignof_type (T, ALIGNOF_EXPR, 1)
/* Subroutine of build_binary_op, used for comparison operations.
See if the operands have both been converted from subword integer types
@@ -931,13 +564,13 @@ extern void disable_builtin_function PARAMS ((const char *));
extern tree build_va_arg PARAMS ((tree, tree));
extern void c_common_init_options PARAMS ((enum c_language_kind));
-extern bool c_common_post_options PARAMS ((void));
+extern void c_common_post_options PARAMS ((void));
extern const char *c_common_init PARAMS ((const char *));
extern void c_common_finish PARAMS ((void));
-extern void c_common_parse_file PARAMS ((int));
extern HOST_WIDE_INT c_common_get_alias_set PARAMS ((tree));
extern bool c_promoting_integer_type_p PARAMS ((tree));
extern int self_promoting_args_p PARAMS ((tree));
+extern tree simple_type_promotes_to PARAMS ((tree));
extern tree strip_array_types PARAMS ((tree));
/* These macros provide convenient access to the various _STMT nodes. */
@@ -968,7 +601,7 @@ extern tree strip_array_types PARAMS ((tree));
/* RETURN_STMT accessors. These give the expression associated with a
return statement, and whether it should be ignored when expanding
(as opposed to inlining). */
-#define RETURN_STMT_EXPR(NODE) TREE_OPERAND (RETURN_STMT_CHECK (NODE), 0)
+#define RETURN_EXPR(NODE) TREE_OPERAND (RETURN_STMT_CHECK (NODE), 0)
/* EXPR_STMT accessor. This gives the expression associated with an
expression statement. */
@@ -1098,7 +731,7 @@ extern tree strip_array_types PARAMS ((tree));
#define STMT_LINENO(NODE) \
(TREE_COMPLEXITY ((NODE)))
-/* If nonzero, the STMT_LINENO for NODE is the line at which the
+/* If non-zero, the STMT_LINENO for NODE is the line at which the
function ended. */
#define STMT_LINENO_FOR_FN_P(NODE) \
(TREE_LANG_FLAG_2 ((NODE)))
@@ -1121,6 +754,7 @@ enum c_tree_code {
#undef DEFTREECODE
+extern void add_c_tree_codes PARAMS ((void));
extern void genrtl_do_pushlevel PARAMS ((void));
extern void genrtl_goto_stmt PARAMS ((tree));
extern void genrtl_expr_stmt PARAMS ((tree));
@@ -1206,6 +840,8 @@ extern tree boolean_increment PARAMS ((enum tree_code,
after entering or leaving a header file. */
extern void extract_interface_info PARAMS ((void));
+extern void mark_c_language_function PARAMS ((struct language_function *));
+
extern int case_compare PARAMS ((splay_tree_key,
splay_tree_key));
@@ -1221,19 +857,18 @@ extern tree finish_label_address_expr PARAMS ((tree));
different implementations. Used in c-common.c. */
extern tree lookup_label PARAMS ((tree));
-extern rtx c_expand_expr PARAMS ((tree, rtx,
- enum machine_mode,
- int));
+/* enum expand_modified is in expr.h, as is the macro below. */
+
+#ifdef QUEUED_VAR
+extern rtx c_expand_expr PARAMS ((tree, rtx, enum machine_mode,
+ enum expand_modifier));
+#endif
extern int c_safe_from_p PARAMS ((rtx, tree));
extern int c_staticp PARAMS ((tree));
-extern int c_common_unsafe_for_reeval PARAMS ((tree));
-
-extern const char *init_c_lex PARAMS ((const char *));
-
-extern void cb_register_builtins PARAMS ((cpp_reader *));
+extern int c_unsafe_for_reeval PARAMS ((tree));
/* Information recorded about each file examined during compilation. */
@@ -1247,6 +882,4 @@ struct c_fileinfo
struct c_fileinfo *get_fileinfo PARAMS ((const char *));
extern void dump_time_statistics PARAMS ((void));
-extern int c_dump_tree PARAMS ((void *, tree));
-
#endif /* ! GCC_C_COMMON_H */
diff --git a/contrib/gcc/c-decl.c b/contrib/gcc/c-decl.c
index 37b22a7..636f272 100644
--- a/contrib/gcc/c-decl.c
+++ b/contrib/gcc/c-decl.c
@@ -19,6 +19,8 @@ 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. */
+/* $FreeBSD$ */
+
/* Process declarations and symbol lookup for C front end.
Also constructs types; the standard scalar types at initialization,
and structure, union, array and enum types when they are declared. */
@@ -37,6 +39,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "output.h"
#include "expr.h"
#include "c-tree.h"
+#include "c-lex.h"
#include "toplev.h"
#include "ggc.h"
#include "tm_p.h"
@@ -46,8 +49,6 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "timevar.h"
#include "c-common.h"
#include "c-pragma.h"
-#include "libfuncs.h"
-#include "except.h"
/* In grokdeclarator, distinguish syntactic contexts of declarators. */
enum decl_context
@@ -105,21 +106,26 @@ static int current_function_prototype_line;
/* The current statement tree. */
-static GTY(()) struct stmt_tree_s c_stmt_tree;
+static struct stmt_tree_s c_stmt_tree;
/* The current scope statement stack. */
-static GTY(()) tree c_scope_stmt_stack;
+static tree c_scope_stmt_stack;
/* A list (chain of TREE_LIST nodes) of all LABEL_DECLs in the function
that have names. Here so we can clear out their names' definitions
at the end of the function. */
-static GTY(()) tree named_labels;
+static tree named_labels;
/* A list of LABEL_DECLs from outer contexts that are currently shadowed. */
-static GTY(()) tree shadowed_labels;
+static tree shadowed_labels;
+
+/* Nonzero when store_parm_decls is called indicates a varargs function.
+ Value not meaningful after store_parm_decls. */
+
+static int c_function_varargs;
/* Set to 0 at beginning of a function definition, set to 1 if
a return statement that specifies a return value is seen. */
@@ -161,7 +167,7 @@ static int current_extern_inline;
/* Note that the information in the `names' component of the global contour
is duplicated in the IDENTIFIER_GLOBAL_VALUEs of all identifiers. */
-struct binding_level GTY(())
+struct binding_level
{
/* A chain of _DECL nodes for all variables, constants, functions,
and typedef types. These are in the reverse of the order supplied.
@@ -212,9 +218,9 @@ struct binding_level GTY(())
/* Nonzero means make a BLOCK if this level has any subblocks. */
char keep_if_subblocks;
- /* List of decls in `names' that have incomplete structure or
- union types. */
- tree incomplete_list;
+ /* Number of decls in `names' that have incomplete
+ structure or union types. */
+ int n_incomplete;
/* A list of decls giving the (reversed) specified order of parms,
not including any forward-decls in the parmlist.
@@ -226,22 +232,22 @@ struct binding_level GTY(())
/* The binding level currently in effect. */
-static GTY(()) struct binding_level *current_binding_level;
+static struct binding_level *current_binding_level;
/* A chain of binding_level structures awaiting reuse. */
-static GTY((deletable (""))) struct binding_level *free_binding_level;
+static struct binding_level *free_binding_level;
/* The outermost binding level, for names of file scope.
This is created when the compiler is started and exists
through the entire run. */
-static GTY(()) struct binding_level *global_binding_level;
+static struct binding_level *global_binding_level;
/* Binding level structures are initialized by copying this one. */
static struct binding_level clear_binding_level
- = {NULL, NULL, NULL, NULL, NULL, NULL_BINDING_LEVEL, 0, 0, 0, 0, 0, NULL,
+ = {NULL, NULL, NULL, NULL, NULL, NULL_BINDING_LEVEL, 0, 0, 0, 0, 0, 0,
NULL};
/* Nonzero means unconditionally make a BLOCK for the next level pushed. */
@@ -259,7 +265,7 @@ static int keep_next_if_subblocks;
saved values of named_labels and shadowed_labels for
a label binding level outside the current one. */
-static GTY(()) struct binding_level *label_level_chain;
+static struct binding_level *label_level_chain;
/* Functions called automatically at the beginning and end of execution. */
@@ -268,7 +274,7 @@ tree static_ctors, static_dtors;
/* Forward declarations. */
static struct binding_level * make_binding_level PARAMS ((void));
-static void pop_binding_level PARAMS ((struct binding_level **));
+static void mark_binding_level PARAMS ((void *));
static void clear_limbo_values PARAMS ((tree));
static int duplicate_decls PARAMS ((tree, tree, int));
static int redeclaration_error_message PARAMS ((tree, tree));
@@ -284,9 +290,172 @@ static void layout_array_type PARAMS ((tree));
static tree c_make_fname_decl PARAMS ((tree, int));
static void c_expand_body PARAMS ((tree, int, int));
static void warn_if_shadowing PARAMS ((tree, tree));
-static bool flexible_array_type_p PARAMS ((tree));
-static tree set_save_expr_context PARAMS ((tree *, int *, void *));
+/* C-specific option variables. */
+
+/* Nonzero means allow type mismatches in conditional expressions;
+ just make their values `void'. */
+
+int flag_cond_mismatch;
+
+/* Nonzero means don't recognize the keyword `asm'. */
+
+int flag_no_asm;
+
+/* Nonzero means do some things the same way PCC does. */
+
+int flag_traditional;
+
+/* Nonzero means enable C89 Amendment 1 features. */
+
+int flag_isoc94 = 0;
+
+/* Nonzero means use the ISO C99 dialect of C. */
+
+int flag_isoc99 = 0;
+
+/* Nonzero means allow the BSD kernel printf enhancments. */
+
+int flag_bsd_format = 0;
+
+/* Nonzero means that we have builtin functions, and main is an int */
+
+int flag_hosted = 1;
+
+/* Nonzero means add default format_arg attributes for functions not
+ in ISO C. */
+
+int flag_noniso_default_format_attributes = 1;
+
+/* Nonzero means to allow single precision math even if we're generally
+ being traditional. */
+int flag_allow_single_precision = 0;
+
+/* Nonzero means to treat bitfields as signed unless they say `unsigned'. */
+
+int flag_signed_bitfields = 1;
+int explicit_flag_signed_bitfields = 0;
+
+/* Nonzero means warn about use of implicit int. */
+
+int warn_implicit_int;
+
+/* Nonzero means warn about usage of long long when `-pedantic'. */
+
+int warn_long_long = 1;
+
+/* Nonzero means message about use of implicit function declarations;
+ 1 means warning; 2 means error. */
+
+int mesg_implicit_function_declaration = -1;
+
+/* Nonzero means give string constants the type `const char *'
+ to get extra warnings from them. These warnings will be too numerous
+ to be useful, except in thoroughly ANSIfied programs. */
+
+int flag_const_strings;
+
+/* Nonzero means warn about pointer casts that can drop a type qualifier
+ from the pointer target type. */
+
+int warn_cast_qual;
+
+/* Nonzero means warn when casting a function call to a type that does
+ not match the return type (e.g. (float)sqrt() or (anything*)malloc()
+ when there is no previous declaration of sqrt or malloc. */
+
+int warn_bad_function_cast;
+
+/* Warn about functions which might be candidates for format attributes. */
+
+int warn_missing_format_attribute;
+
+/* Warn about traditional constructs whose meanings changed in ANSI C. */
+
+int warn_traditional;
+
+/* Nonzero means warn about sizeof(function) or addition/subtraction
+ of function pointers. */
+
+int warn_pointer_arith;
+
+
+/* Nonzero means do not warn that K&R style main() is not a function prototype. */
+
+int flag_bsd_no_warn_kr_main;
+
+/* Nonzero means warn for non-prototype function decls
+ or non-prototyped defs without previous prototype. */
+
+int warn_strict_prototypes;
+
+/* Nonzero means warn for any global function def
+ without separate previous prototype decl. */
+
+int warn_missing_prototypes;
+
+/* Nonzero means warn for any global function def
+ without separate previous decl. */
+
+int warn_missing_declarations;
+
+/* Nonzero means warn about multiple (redundant) decls for the same single
+ variable or function. */
+
+int warn_redundant_decls = 0;
+
+/* Nonzero means warn about extern declarations of objects not at
+ file-scope level and about *all* declarations of functions (whether
+ extern or static) not at file-scope level. Note that we exclude
+ implicit function declarations. To get warnings about those, use
+ -Wimplicit. */
+
+int warn_nested_externs = 0;
+
+/* Warn about a subscript that has type char. */
+
+int warn_char_subscripts = 0;
+
+/* Warn if a type conversion is done that might have confusing results. */
+
+int warn_conversion;
+
+/* Warn if adding () is suggested. */
+
+int warn_parentheses;
+
+/* Warn if initializer is not completely bracketed. */
+
+int warn_missing_braces;
+
+/* Warn if main is suspicious. */
+
+int warn_main;
+
+/* Warn about #pragma directives that are not recognised. */
+
+int warn_unknown_pragmas = 0; /* Tri state variable. */
+
+/* Warn about comparison of signed and unsigned values.
+ If -1, neither -Wsign-compare nor -Wno-sign-compare has been specified. */
+
+int warn_sign_compare = -1;
+
+/* Warn about testing equality of floating point numbers. */
+
+int warn_float_equal = 0;
+
+/* Nonzero means warn about use of multicharacter literals. */
+
+int warn_multichar = 1;
+
+/* Nonzero means `$' can be in an identifier. */
+
+#ifndef DOLLARS_IN_IDENTIFIERS
+#define DOLLARS_IN_IDENTIFIERS 1
+#endif
+int dollars_in_ident = DOLLARS_IN_IDENTIFIERS;
+
/* States indicating how grokdeclarator() should handle declspecs marked
with __attribute__((deprecated)). An object declared as
__attribute__((deprecated)) suppresses warnings of uses of other
@@ -299,6 +468,379 @@ enum deprecated_states {
static enum deprecated_states deprecated_state = DEPRECATED_NORMAL;
+/* Decode the string P as a language-specific option for C.
+ Return the number of strings consumed. Should not complain
+ if it does not recognise the option. */
+
+int
+c_decode_option (argc, argv)
+ int argc ATTRIBUTE_UNUSED;
+ char **argv;
+{
+ int strings_processed;
+ char *p = argv[0];
+
+ strings_processed = cpp_handle_option (parse_in, argc, argv, 0);
+
+ if (!strcmp (p, "-ftraditional") || !strcmp (p, "-traditional"))
+ {
+ warning ("-traditional is deprecated and may be removed");
+ flag_traditional = 1;
+ flag_writable_strings = 1;
+ }
+ else if (!strcmp (p, "-fallow-single-precision"))
+ flag_allow_single_precision = 1;
+ else if (!strcmp (p, "-fhosted") || !strcmp (p, "-fno-freestanding"))
+ {
+ flag_hosted = 1;
+ flag_no_builtin = 0;
+ }
+ else if (!strcmp (p, "-ffreestanding") || !strcmp (p, "-fno-hosted"))
+ {
+ flag_hosted = 0;
+ flag_no_builtin = 1;
+ /* warn_main will be 2 if set by -Wall, 1 if set by -Wmain */
+ if (warn_main == 2)
+ warn_main = 0;
+ }
+ else if (!strcmp (p, "-fnotraditional") || !strcmp (p, "-fno-traditional"))
+ {
+ flag_traditional = 0;
+ flag_writable_strings = 0;
+ }
+ else if (!strncmp (p, "-std=", 5))
+ {
+ /* Select the appropriate language standard. We currently
+ recognize:
+ -std=iso9899:1990 same as -ansi
+ -std=iso9899:199409 ISO C as modified in amend. 1
+ -std=iso9899:1999 ISO C 99
+ -std=c89 same as -std=iso9899:1990
+ -std=c99 same as -std=iso9899:1999
+ -std=gnu89 default, iso9899:1990 + gnu extensions
+ -std=gnu99 iso9899:1999 + gnu extensions
+ -std=bsd iso9899:1999 + BSD kernel printf extensions
+ */
+ const char *const argstart = &p[5];
+
+ if (!strcmp (argstart, "iso9899:1990")
+ || !strcmp (argstart, "c89"))
+ {
+ iso_1990:
+ flag_isoc94 = 0;
+ iso_1994:
+ flag_traditional = 0;
+ flag_writable_strings = 0;
+ flag_no_asm = 1;
+ flag_no_nonansi_builtin = 1;
+ flag_noniso_default_format_attributes = 0;
+ flag_isoc99 = 0;
+ flag_bsd_format = 0;
+ flag_bsd_no_warn_kr_main = 0;
+ }
+ else if (!strcmp (argstart, "iso9899:199409"))
+ {
+ flag_isoc94 = 1;
+ goto iso_1994;
+ }
+ else if (!strcmp (argstart, "iso9899:199x")
+ || !strcmp (argstart, "iso9899:1999")
+ || !strcmp (argstart, "c9x")
+ || !strcmp (argstart, "c99"))
+ {
+ flag_traditional = 0;
+ flag_writable_strings = 0;
+ flag_no_asm = 1;
+ flag_no_nonansi_builtin = 1;
+ flag_noniso_default_format_attributes = 0;
+ flag_isoc99 = 1;
+ flag_isoc94 = 1;
+ flag_bsd_format = 0;
+ flag_bsd_no_warn_kr_main = 0;
+ }
+ else if (!strcmp (argstart, "gnu89"))
+ {
+ flag_traditional = 0;
+ flag_writable_strings = 0;
+ flag_no_asm = 0;
+ flag_no_nonansi_builtin = 0;
+ flag_noniso_default_format_attributes = 1;
+ flag_isoc99 = 0;
+ flag_isoc94 = 0;
+ flag_bsd_format = 0;
+ flag_bsd_no_warn_kr_main = 0;
+ }
+ else if (!strcmp (argstart, "gnu9x") || !strcmp (argstart, "gnu99"))
+ {
+ flag_traditional = 0;
+ flag_writable_strings = 0;
+ flag_no_asm = 0;
+ flag_no_nonansi_builtin = 0;
+ flag_noniso_default_format_attributes = 1;
+ flag_isoc99 = 1;
+ flag_isoc94 = 1;
+ flag_bsd_format = 0;
+ flag_bsd_no_warn_kr_main = 0;
+ }
+ else if (!strcmp (argstart, "bsd"))
+ {
+ flag_traditional = 0;
+ flag_writable_strings = 0;
+ flag_no_asm = 0;
+ flag_no_nonansi_builtin = 0;
+ flag_noniso_default_format_attributes = 1;
+ flag_isoc99 = 0;
+ flag_isoc94 = 0;
+ flag_isoc94 = 0;
+ flag_bsd_format = 1;
+ flag_bsd_no_warn_kr_main = 1;
+ }
+ else
+ error ("unknown C standard `%s'", argstart);
+ }
+ else if (!strcmp (p, "-fdollars-in-identifiers"))
+ dollars_in_ident = 1;
+ else if (!strcmp (p, "-fno-dollars-in-identifiers"))
+ dollars_in_ident = 0;
+ else if (!strcmp (p, "-fsigned-char"))
+ flag_signed_char = 1;
+ else if (!strcmp (p, "-funsigned-char"))
+ flag_signed_char = 0;
+ else if (!strcmp (p, "-fno-signed-char"))
+ flag_signed_char = 0;
+ else if (!strcmp (p, "-fno-unsigned-char"))
+ flag_signed_char = 1;
+ else if (!strcmp (p, "-fsigned-bitfields")
+ || !strcmp (p, "-fno-unsigned-bitfields"))
+ {
+ flag_signed_bitfields = 1;
+ explicit_flag_signed_bitfields = 1;
+ }
+ else if (!strcmp (p, "-funsigned-bitfields")
+ || !strcmp (p, "-fno-signed-bitfields"))
+ {
+ flag_signed_bitfields = 0;
+ explicit_flag_signed_bitfields = 1;
+ }
+ else if (!strcmp (p, "-fshort-enums"))
+ flag_short_enums = 1;
+ else if (!strcmp (p, "-fno-short-enums"))
+ flag_short_enums = 0;
+ else if (!strcmp (p, "-fshort-wchar"))
+ flag_short_wchar = 1;
+ else if (!strcmp (p, "-fno-short-wchar"))
+ flag_short_wchar = 0;
+ else if (!strcmp (p, "-fcond-mismatch"))
+ flag_cond_mismatch = 1;
+ else if (!strcmp (p, "-fno-cond-mismatch"))
+ flag_cond_mismatch = 0;
+ else if (!strcmp (p, "-fshort-double"))
+ flag_short_double = 1;
+ else if (!strcmp (p, "-fno-short-double"))
+ flag_short_double = 0;
+ else if (!strcmp (p, "-fasm"))
+ flag_no_asm = 0;
+ else if (!strcmp (p, "-fno-asm"))
+ flag_no_asm = 1;
+ else if (!strcmp (p, "-fbuiltin"))
+ flag_no_builtin = 0;
+ else if (!strcmp (p, "-fno-builtin"))
+ flag_no_builtin = 1;
+ else if (!strncmp (p, "-fno-builtin-", strlen ("-fno-builtin-")))
+ disable_builtin_function (p + strlen ("-fno-builtin-"));
+ else if (p[0] == '-' && p[1] == 'f' && dump_switch_p (p + 2))
+ ;
+ else if (!strcmp (p, "-ansi"))
+ goto iso_1990;
+ else if (!strcmp (p, "-Werror-implicit-function-declaration"))
+ mesg_implicit_function_declaration = 2;
+ else if (!strcmp (p, "-Wimplicit-function-declaration"))
+ mesg_implicit_function_declaration = 1;
+ else if (!strcmp (p, "-Wno-implicit-function-declaration"))
+ mesg_implicit_function_declaration = 0;
+ else if (!strcmp (p, "-Wimplicit-int"))
+ warn_implicit_int = 1;
+ else if (!strcmp (p, "-Wno-implicit-int"))
+ warn_implicit_int = 0;
+ else if (!strcmp (p, "-Wimplicit"))
+ {
+ warn_implicit_int = 1;
+ if (mesg_implicit_function_declaration != 2)
+ mesg_implicit_function_declaration = 1;
+ }
+ else if (!strcmp (p, "-Wno-implicit"))
+ warn_implicit_int = 0, mesg_implicit_function_declaration = 0;
+ else if (!strcmp (p, "-Wlong-long"))
+ warn_long_long = 1;
+ else if (!strcmp (p, "-Wno-long-long"))
+ warn_long_long = 0;
+ else if (!strcmp (p, "-Wwrite-strings"))
+ flag_const_strings = 1;
+ else if (!strcmp (p, "-Wno-write-strings"))
+ flag_const_strings = 0;
+ else if (!strcmp (p, "-Wcast-qual"))
+ warn_cast_qual = 1;
+ else if (!strcmp (p, "-Wno-cast-qual"))
+ warn_cast_qual = 0;
+ else if (!strcmp (p, "-Wbad-function-cast"))
+ warn_bad_function_cast = 1;
+ else if (!strcmp (p, "-Wno-bad-function-cast"))
+ warn_bad_function_cast = 0;
+ else if (!strcmp (p, "-Wno-missing-noreturn"))
+ warn_missing_noreturn = 0;
+ else if (!strcmp (p, "-Wmissing-format-attribute"))
+ warn_missing_format_attribute = 1;
+ else if (!strcmp (p, "-Wno-missing-format-attribute"))
+ warn_missing_format_attribute = 0;
+ else if (!strcmp (p, "-Wpointer-arith"))
+ warn_pointer_arith = 1;
+ else if (!strcmp (p, "-Wno-pointer-arith"))
+ warn_pointer_arith = 0;
+ else if (!strcmp (p, "-Wstrict-prototypes"))
+ warn_strict_prototypes = 1;
+ else if (!strcmp (p, "-Wno-strict-prototypes"))
+ warn_strict_prototypes = 0;
+ else if (!strcmp (p, "-Wmissing-prototypes"))
+ warn_missing_prototypes = 1;
+ else if (!strcmp (p, "-Wno-missing-prototypes"))
+ warn_missing_prototypes = 0;
+ else if (!strcmp (p, "-Wmissing-declarations"))
+ warn_missing_declarations = 1;
+ else if (!strcmp (p, "-Wno-missing-declarations"))
+ warn_missing_declarations = 0;
+ else if (!strcmp (p, "-Wredundant-decls"))
+ warn_redundant_decls = 1;
+ else if (!strcmp (p, "-Wno-redundant-decls"))
+ warn_redundant_decls = 0;
+ else if (!strcmp (p, "-Wnested-externs"))
+ warn_nested_externs = 1;
+ else if (!strcmp (p, "-Wno-nested-externs"))
+ warn_nested_externs = 0;
+ else if (!strcmp (p, "-Wtraditional"))
+ warn_traditional = 1;
+ else if (!strcmp (p, "-Wno-traditional"))
+ warn_traditional = 0;
+ else if (!strncmp (p, "-Wformat=", 9))
+ set_Wformat (atoi (p + 9));
+ else if (!strcmp (p, "-Wformat"))
+ set_Wformat (1);
+ else if (!strcmp (p, "-Wno-format"))
+ set_Wformat (0);
+ else if (!strcmp (p, "-Wformat-y2k"))
+ warn_format_y2k = 1;
+ else if (!strcmp (p, "-Wno-format-y2k"))
+ warn_format_y2k = 0;
+ else if (!strcmp (p, "-Wformat-extra-args"))
+ warn_format_extra_args = 1;
+ else if (!strcmp (p, "-Wno-format-extra-args"))
+ warn_format_extra_args = 0;
+ else if (!strcmp (p, "-Wformat-nonliteral"))
+ warn_format_nonliteral = 1;
+ else if (!strcmp (p, "-Wno-format-nonliteral"))
+ warn_format_nonliteral = 0;
+ else if (!strcmp (p, "-Wformat-security"))
+ warn_format_security = 1;
+ else if (!strcmp (p, "-Wno-format-security"))
+ warn_format_security = 0;
+ else if (!strcmp (p, "-Wchar-subscripts"))
+ warn_char_subscripts = 1;
+ else if (!strcmp (p, "-Wno-char-subscripts"))
+ warn_char_subscripts = 0;
+ else if (!strcmp (p, "-Wconversion"))
+ warn_conversion = 1;
+ else if (!strcmp (p, "-Wno-conversion"))
+ warn_conversion = 0;
+ else if (!strcmp (p, "-Wparentheses"))
+ warn_parentheses = 1;
+ else if (!strcmp (p, "-Wno-parentheses"))
+ warn_parentheses = 0;
+ else if (!strcmp (p, "-Wreturn-type"))
+ warn_return_type = 1;
+ else if (!strcmp (p, "-Wno-return-type"))
+ warn_return_type = 0;
+ else if (!strcmp (p, "-Wsequence-point"))
+ warn_sequence_point = 1;
+ else if (!strcmp (p, "-Wno-sequence-point"))
+ warn_sequence_point = 0;
+ else if (!strcmp (p, "-Wcomment"))
+ ; /* cpp handles this one. */
+ else if (!strcmp (p, "-Wno-comment"))
+ ; /* cpp handles this one. */
+ else if (!strcmp (p, "-Wcomments"))
+ ; /* cpp handles this one. */
+ else if (!strcmp (p, "-Wno-comments"))
+ ; /* cpp handles this one. */
+ else if (!strcmp (p, "-Wtrigraphs"))
+ ; /* cpp handles this one. */
+ else if (!strcmp (p, "-Wno-trigraphs"))
+ ; /* cpp handles this one. */
+ else if (!strcmp (p, "-Wundef"))
+ ; /* cpp handles this one. */
+ else if (!strcmp (p, "-Wno-undef"))
+ ; /* cpp handles this one. */
+ else if (!strcmp (p, "-Wimport"))
+ ; /* cpp handles this one. */
+ else if (!strcmp (p, "-Wno-import"))
+ ; /* cpp handles this one. */
+ else if (!strcmp (p, "-Wmissing-braces"))
+ warn_missing_braces = 1;
+ else if (!strcmp (p, "-Wno-missing-braces"))
+ warn_missing_braces = 0;
+ else if (!strcmp (p, "-Wmain"))
+ warn_main = 1;
+ else if (!strcmp (p, "-Wno-main"))
+ warn_main = -1;
+ else if (!strcmp (p, "-Wsign-compare"))
+ warn_sign_compare = 1;
+ else if (!strcmp (p, "-Wno-sign-compare"))
+ warn_sign_compare = 0;
+ else if (!strcmp (p, "-Wfloat-equal"))
+ warn_float_equal = 1;
+ else if (!strcmp (p, "-Wno-float-equal"))
+ warn_float_equal = 0;
+ else if (!strcmp (p, "-Wmultichar"))
+ warn_multichar = 1;
+ else if (!strcmp (p, "-Wno-multichar"))
+ warn_multichar = 0;
+ else if (!strcmp (p, "-Wdiv-by-zero"))
+ warn_div_by_zero = 1;
+ else if (!strcmp (p, "-Wno-div-by-zero"))
+ warn_div_by_zero = 0;
+ else if (!strcmp (p, "-Wunknown-pragmas"))
+ /* Set to greater than 1, so that even unknown pragmas in system
+ headers will be warned about. */
+ warn_unknown_pragmas = 2;
+ else if (!strcmp (p, "-Wno-unknown-pragmas"))
+ warn_unknown_pragmas = 0;
+ else if (!strcmp (p, "-Wall"))
+ {
+ /* We save the value of warn_uninitialized, since if they put
+ -Wuninitialized on the command line, we need to generate a
+ warning about not using it without also specifying -O. */
+ if (warn_uninitialized != 1)
+ warn_uninitialized = 2;
+ warn_implicit_int = 1;
+ mesg_implicit_function_declaration = 1;
+ warn_return_type = 1;
+ set_Wunused (1);
+ warn_switch = 1;
+ set_Wformat (1);
+ warn_char_subscripts = 1;
+ warn_parentheses = 1;
+ warn_sequence_point = 1;
+ warn_missing_braces = 1;
+ /* We set this to 2 here, but 1 in -Wmain, so -ffreestanding can turn
+ it off only if it's not explicit. */
+ warn_main = 2;
+ /* Only warn about unknown pragmas that are not in system headers. */
+ warn_unknown_pragmas = 1;
+ }
+ else
+ return strings_processed;
+
+ return 1;
+}
+
void
c_print_identifier (file, node, indent)
FILE *file;
@@ -325,7 +867,7 @@ c_print_identifier (file, node, indent)
for a top-level tentative array defn that wasn't complete before. */
void
-c_finish_incomplete_decl (decl)
+finish_incomplete_decl (decl)
tree decl;
{
if (TREE_CODE (decl) == VAR_DECL)
@@ -345,33 +887,13 @@ c_finish_incomplete_decl (decl)
}
}
-/* Reuse or create a struct for this binding level. */
+/* Create a new `struct binding_level'. */
static struct binding_level *
make_binding_level ()
{
- if (free_binding_level)
- {
- struct binding_level *result = free_binding_level;
- free_binding_level = result->level_chain;
- return result;
- }
- else
- return (struct binding_level *) ggc_alloc (sizeof (struct binding_level));
-}
-
-/* Remove a binding level from a list and add it to the level chain. */
-
-static void
-pop_binding_level (lp)
- struct binding_level **lp;
-{
- struct binding_level *l = *lp;
- *lp = l->level_chain;
-
- memset (l, 0, sizeof (struct binding_level));
- l->level_chain = free_binding_level;
- free_binding_level = l;
+ /* NOSTRICT */
+ return (struct binding_level *) xmalloc (sizeof (struct binding_level));
}
/* Nonzero if we are currently in the global binding level. */
@@ -439,7 +961,17 @@ pushlevel (tag_transparent)
named_labels = 0;
}
- newlevel = make_binding_level ();
+ /* Reuse or create a struct for this binding level. */
+
+ if (free_binding_level)
+ {
+ newlevel = free_binding_level;
+ free_binding_level = free_binding_level->level_chain;
+ }
+ else
+ {
+ newlevel = make_binding_level ();
+ }
/* Add this level to the front of the chain (stack) of levels that
are active. */
@@ -660,7 +1192,13 @@ poplevel (keep, reverse, functionbody)
/* Pop the current level, and free the structure for reuse. */
- pop_binding_level (&current_binding_level);
+ {
+ struct binding_level *level = current_binding_level;
+ current_binding_level = current_binding_level->level_chain;
+
+ level->level_chain = free_binding_level;
+ free_binding_level = level;
+ }
/* Dispose of the block that we just made inside some higher level. */
if (functionbody)
@@ -739,7 +1277,17 @@ push_label_level ()
{
struct binding_level *newlevel;
- newlevel = make_binding_level ();
+ /* Reuse or create a struct for this binding level. */
+
+ if (free_binding_level)
+ {
+ newlevel = free_binding_level;
+ free_binding_level = free_binding_level->level_chain;
+ }
+ else
+ {
+ newlevel = make_binding_level ();
+ }
/* Add this level to the front of the chain (stack) of label levels. */
@@ -801,7 +1349,9 @@ pop_label_level ()
shadowed_labels = level->shadowed;
/* Pop the current level, and free the structure for reuse. */
- pop_binding_level (&label_level_chain);
+ label_level_chain = label_level_chain->level_chain;
+ level->level_chain = free_binding_level;
+ free_binding_level = level;
}
/* Push a definition or a declaration of struct, union or enum tag "name".
@@ -966,7 +1516,14 @@ duplicate_decls (newdecl, olddecl, different_binding_level)
match enough. Ultimately, copy most of the information from the new
decl to the old one, and keep using the old one. */
- if (TREE_CODE (olddecl) == FUNCTION_DECL && DECL_BUILT_IN (olddecl))
+ if (flag_traditional && TREE_CODE (newdecl) == FUNCTION_DECL
+ && IDENTIFIER_IMPLICIT_DECL (DECL_NAME (newdecl)) == olddecl
+ && DECL_INITIAL (olddecl) == 0)
+ /* If -traditional, avoid error for redeclaring fcn
+ after implicit decl. */
+ ;
+ else if (TREE_CODE (olddecl) == FUNCTION_DECL
+ && DECL_BUILT_IN (olddecl))
{
/* A function declaration for a built-in function. */
if (!TREE_PUBLIC (newdecl))
@@ -1133,7 +1690,7 @@ duplicate_decls (newdecl, olddecl, different_binding_level)
break;
}
- if (c_type_promotes_to (type) != type)
+ if (simple_type_promotes_to (type) != NULL_TREE)
{
error ("an argument type that has a default promotion can't match an empty parameter name list declaration");
break;
@@ -1141,27 +1698,6 @@ duplicate_decls (newdecl, olddecl, different_binding_level)
}
}
error_with_decl (olddecl, "previous declaration of `%s'");
-
- /* This is safer because the initializer might contain references
- to variables that were declared between olddecl and newdecl. This
- will make the initializer invalid for olddecl in case it gets
- assigned to olddecl below. */
- if (TREE_CODE (newdecl) == VAR_DECL)
- DECL_INITIAL (newdecl) = 0;
- }
- /* TLS cannot follow non-TLS declaration. */
- else if (TREE_CODE (olddecl) == VAR_DECL && TREE_CODE (newdecl) == VAR_DECL
- && !DECL_THREAD_LOCAL (olddecl) && DECL_THREAD_LOCAL (newdecl))
- {
- error_with_decl (newdecl, "thread-local declaration of `%s' follows non thread-local declaration");
- error_with_decl (olddecl, "previous declaration of `%s'");
- }
- /* non-TLS declaration cannot follow TLS declaration. */
- else if (TREE_CODE (olddecl) == VAR_DECL && TREE_CODE (newdecl) == VAR_DECL
- && DECL_THREAD_LOCAL (olddecl) && !DECL_THREAD_LOCAL (newdecl))
- {
- error_with_decl (newdecl, "non thread-local declaration of `%s' follows thread-local declaration");
- error_with_decl (olddecl, "previous declaration of `%s'");
}
else
{
@@ -1236,7 +1772,12 @@ duplicate_decls (newdecl, olddecl, different_binding_level)
}
/* Type for passing arg must be consistent
with that declared for the arg. */
- if (! comptypes (TREE_VALUE (parm), TREE_VALUE (type)))
+ if (! comptypes (TREE_VALUE (parm), TREE_VALUE (type))
+ /* If -traditional, allow `unsigned int' instead of `int'
+ in the prototype. */
+ && (! (flag_traditional
+ && TYPE_MAIN_VARIANT (TREE_VALUE (parm)) == integer_type_node
+ && TYPE_MAIN_VARIANT (TREE_VALUE (type)) == unsigned_type_node)))
{
error_with_decl (newdecl,
"prototype for `%s' follows and argument %d doesn't match",
@@ -1371,6 +1912,11 @@ duplicate_decls (newdecl, olddecl, different_binding_level)
COPY_DECL_RTL (olddecl, newdecl);
/* Merge the type qualifiers. */
+ if (TREE_CODE (olddecl) == FUNCTION_DECL
+ && DECL_BUILT_IN_NONANSI (olddecl) && TREE_THIS_VOLATILE (olddecl)
+ && ! TREE_THIS_VOLATILE (newdecl))
+ TREE_THIS_VOLATILE (write_olddecl) = 0;
+
if (TREE_READONLY (newdecl))
TREE_READONLY (write_olddecl) = 1;
@@ -1684,7 +2230,10 @@ pushdecl (x)
IDENTIFIER_POINTER (name));
t = lookup_name_current_level (name);
- if (! t && DECL_EXTERNAL (x) && TREE_PUBLIC (x))
+ /* Don't type check externs here when -traditional. This is so that
+ code with conflicting declarations inside blocks will get warnings
+ not errors. X11 for instance depends on this. */
+ if (! t && DECL_EXTERNAL (x) && TREE_PUBLIC (x) && ! flag_traditional)
{
t = IDENTIFIER_GLOBAL_VALUE (name);
/* Type decls at global scope don't conflict with externs declared
@@ -1703,8 +2252,9 @@ pushdecl (x)
}
/* If this decl is `static' and an implicit decl was seen previously,
- warn. */
- if (TREE_PUBLIC (name)
+ warn. But don't complain if -traditional,
+ since traditional compilers don't complain. */
+ if (! flag_traditional && TREE_PUBLIC (name)
/* Don't test for DECL_EXTERNAL, because grokdeclarator
sets this for all functions. */
&& ! TREE_PUBLIC (x)
@@ -1736,7 +2286,7 @@ pushdecl (x)
}
/* If we are processing a typedef statement, generate a whole new
- ..._TYPE node (which will be just a variant of the existing
+ ..._TYPE node (which will be just an variant of the existing
..._TYPE node with identical properties) and then install the
TYPE_DECL node generated to represent the typedef name as the
TYPE_NAME of this brand new (duplicate) ..._TYPE node.
@@ -1798,6 +2348,9 @@ pushdecl (x)
}
/* Multiple external decls of the same identifier ought to match.
+ Check against both global declarations (when traditional) and out of
+ scope (limbo) block level declarations.
+
We get warnings about inline functions where they are defined.
Avoid duplicate warnings where they are used. */
if (TREE_PUBLIC (x)
@@ -1805,7 +2358,11 @@ pushdecl (x)
{
tree decl;
- if (IDENTIFIER_LIMBO_VALUE (name) != 0)
+ if (flag_traditional && IDENTIFIER_GLOBAL_VALUE (name) != 0
+ && (DECL_EXTERNAL (IDENTIFIER_GLOBAL_VALUE (name))
+ || TREE_PUBLIC (IDENTIFIER_GLOBAL_VALUE (name))))
+ decl = IDENTIFIER_GLOBAL_VALUE (name);
+ else if (IDENTIFIER_LIMBO_VALUE (name) != 0)
/* Decls in limbo are always extern, so no need to check that. */
decl = IDENTIFIER_LIMBO_VALUE (name);
else
@@ -1835,6 +2392,39 @@ pushdecl (x)
"previous implicit declaration of `%s'");
}
+ /* In PCC-compatibility mode, extern decls of vars with no current decl
+ take effect at top level no matter where they are. */
+ if (flag_traditional && DECL_EXTERNAL (x)
+ && lookup_name (name) == 0)
+ {
+ tree type = TREE_TYPE (x);
+
+ /* But don't do this if the type contains temporary nodes. */
+ while (type)
+ {
+ if (type == error_mark_node)
+ break;
+ if (TYPE_CONTEXT (type))
+ {
+ warning_with_decl (x, "type of external `%s' is not global");
+ /* By exiting the loop early, we leave TYPE nonzero,
+ and thus prevent globalization of the decl. */
+ break;
+ }
+ else if (TREE_CODE (type) == FUNCTION_TYPE
+ && TYPE_ARG_TYPES (type) != 0)
+ /* The types might not be truly local,
+ but the list of arg types certainly is temporary.
+ Since prototypes are nontraditional,
+ ok not to do the traditional thing. */
+ break;
+ type = TREE_TYPE (type);
+ }
+
+ if (type == 0)
+ b = global_binding_level;
+ }
+
/* This name is new in its binding level.
Install the new declaration and return it. */
if (b == global_binding_level)
@@ -1991,7 +2581,7 @@ pushdecl (x)
b->shadowed = tree_cons (name, oldlocal, b->shadowed);
}
- /* Keep list of variables in this level with incomplete type.
+ /* Keep count of variables in this level with incomplete type.
If the input is erroneous, we can have error_mark in the type
slot (e.g. "f(void a, ...)") - that doesn't count as an
incomplete type. */
@@ -2004,7 +2594,7 @@ pushdecl (x)
element = TREE_TYPE (element);
if (TREE_CODE (element) == RECORD_TYPE
|| TREE_CODE (element) == UNION_TYPE)
- b->incomplete_list = tree_cons (NULL_TREE, x, b->incomplete_list);
+ ++b->n_incomplete;
}
}
@@ -2068,12 +2658,12 @@ implicitly_declare (functionid)
IDENTIFIER_IMPLICIT_DECL (functionid) = decl;
/* ANSI standard says implicit declarations are in the innermost block.
- So we record the decl in the standard fashion. */
+ So we record the decl in the standard fashion.
+ If flag_traditional is set, pushdecl does it top-level. */
pushdecl (decl);
- /* This is a no-op in c-lang.c or something real in objc-act.c. */
- if (flag_objc)
- objc_check_decl (decl);
+ /* This is a no-op in c-lang.c or something real in objc-actions.c. */
+ maybe_objc_check_decl (decl);
rest_of_decl_compilation (decl, NULL, 0, 0);
@@ -2117,8 +2707,17 @@ redeclaration_error_message (newdecl, olddecl)
{
if (TREE_CODE (newdecl) == TYPE_DECL)
{
- /* Do not complain about type redeclarations where at least one
- declaration was in a system header. */
+ if (flag_traditional && TREE_TYPE (newdecl) == TREE_TYPE (olddecl))
+ return 0;
+ /* pushdecl creates distinct types for TYPE_DECLs by calling
+ build_type_copy, so the above comparison generally fails. We do
+ another test against the TYPE_MAIN_VARIANT of the olddecl, which
+ is equivalent to what this code used to do before the build_type_copy
+ call. The variant type distinction should not matter for traditional
+ code, because it doesn't have type qualifiers. */
+ if (flag_traditional
+ && TYPE_MAIN_VARIANT (TREE_TYPE (olddecl)) == TREE_TYPE (newdecl))
+ return 0;
if (DECL_IN_SYSTEM_HEADER (olddecl) || DECL_IN_SYSTEM_HEADER (newdecl))
return 0;
return 1;
@@ -2464,6 +3063,25 @@ lookup_name_current_level (name)
return t;
}
+/* Mark ARG for GC. */
+
+static void
+mark_binding_level (arg)
+ void *arg;
+{
+ struct binding_level *level = *(struct binding_level **) arg;
+
+ for (; level != 0; level = level->level_chain)
+ {
+ ggc_mark_tree (level->names);
+ ggc_mark_tree (level->tags);
+ ggc_mark_tree (level->shadowed);
+ ggc_mark_tree (level->blocks);
+ ggc_mark_tree (level->this_block);
+ ggc_mark_tree (level->parm_order);
+ }
+}
+
/* Create the predefined scalar types of C,
and some nodes representing standard constants (0, 1, (void *) 0).
Initialize the global binding level.
@@ -2517,6 +3135,22 @@ c_init_decl_processing ()
make_fname_decl = c_make_fname_decl;
start_fname_decls ();
+
+ incomplete_decl_finalize_hook = finish_incomplete_decl;
+
+ /* Record our roots. */
+
+ ggc_add_tree_root (c_global_trees, CTI_MAX);
+ ggc_add_root (&c_stmt_tree, 1, sizeof c_stmt_tree, mark_stmt_tree);
+ ggc_add_tree_root (&c_scope_stmt_stack, 1);
+ ggc_add_tree_root (&named_labels, 1);
+ ggc_add_tree_root (&shadowed_labels, 1);
+ ggc_add_root (&current_binding_level, 1, sizeof current_binding_level,
+ mark_binding_level);
+ ggc_add_root (&label_level_chain, 1, sizeof label_level_chain,
+ mark_binding_level);
+ ggc_add_tree_root (&static_ctors, 1);
+ ggc_add_tree_root (&static_dtors, 1);
}
/* Create the VAR_DECL for __FUNCTION__ etc. ID is the name to give the
@@ -2565,21 +3199,24 @@ c_make_fname_decl (id, type_dep)
See tree.h for its possible values.
If LIBRARY_NAME is nonzero, use that for DECL_ASSEMBLER_NAME,
- the name to be called if we can't opencode the function. If
- ATTRS is nonzero, use that for the function's attribute list. */
+ the name to be called if we can't opencode the function. */
tree
-builtin_function (name, type, function_code, class, library_name, attrs)
+builtin_function (name, type, function_code, class, library_name)
const char *name;
tree type;
int function_code;
enum built_in_class class;
const char *library_name;
- tree attrs;
{
tree decl = build_decl (FUNCTION_DECL, get_identifier (name), type);
DECL_EXTERNAL (decl) = 1;
TREE_PUBLIC (decl) = 1;
+ /* If -traditional, permit redefining a builtin function any way you like.
+ (Though really, if the program redefines these functions,
+ it probably won't work right unless compiled with -fno-builtin.) */
+ if (flag_traditional && name[0] != '_')
+ DECL_BUILT_IN_NONANSI (decl) = 1;
if (library_name)
SET_DECL_ASSEMBLER_NAME (decl, get_identifier (library_name));
make_decl_rtl (decl, NULL);
@@ -2587,16 +3224,17 @@ builtin_function (name, type, function_code, class, library_name, attrs)
DECL_BUILT_IN_CLASS (decl) = class;
DECL_FUNCTION_CODE (decl) = function_code;
+ /* The return builtins leave the current function. */
+ if (function_code == BUILT_IN_RETURN || function_code == BUILT_IN_EH_RETURN)
+ TREE_THIS_VOLATILE (decl) = 1;
+
/* Warn if a function in the namespace for users
is used without an occasion to consider it declared. */
if (name[0] != '_' || name[1] != '_')
C_DECL_ANTICIPATED (decl) = 1;
/* Possibly apply some default attributes to this built-in function. */
- if (attrs)
- decl_attributes (&decl, attrs, ATTR_FLAG_BUILT_IN);
- else
- decl_attributes (&decl, NULL_TREE, 0);
+ decl_attributes (&decl, NULL_TREE, 0);
return decl;
}
@@ -2605,7 +3243,7 @@ builtin_function (name, type, function_code, class, library_name, attrs)
attributes. */
void
-c_insert_default_attributes (decl)
+insert_default_attributes (decl)
tree decl;
{
if (!TREE_PUBLIC (decl))
@@ -2702,8 +3340,8 @@ shadow_tag_warned (declspecs, warned)
/* Construct an array declarator. EXPR is the expression inside [], or
NULL_TREE. QUALS are the type qualifiers inside the [] (to be applied
to the pointer to which a parameter array is converted). STATIC_P is
- nonzero if "static" is inside the [], zero otherwise. VLA_UNSPEC_P
- is nonzero is the array is [*], a VLA of unspecified length which is
+ non-zero if "static" is inside the [], zero otherwise. VLA_UNSPEC_P
+ is non-zero is the array is [*], a VLA of unspecified length which is
nevertheless a complete type (not currently implemented by GCC),
zero otherwise. The declarator is constructed as an ARRAY_REF
(to be decoded by grokdeclarator), whose operand 0 is what's on the
@@ -2725,9 +3363,9 @@ build_array_declarator (expr, quals, static_p, vla_unspec_p)
if (pedantic && !flag_isoc99)
{
if (static_p || quals != NULL_TREE)
- pedwarn ("ISO C90 does not support `static' or type qualifiers in parameter array declarators");
+ pedwarn ("ISO C89 does not support `static' or type qualifiers in parameter array declarators");
if (vla_unspec_p)
- pedwarn ("ISO C90 does not support `[*]' array declarators");
+ pedwarn ("ISO C89 does not support `[*]' array declarators");
}
if (vla_unspec_p)
warning ("GCC does not yet properly implement `[*]' array declarators");
@@ -2736,7 +3374,7 @@ build_array_declarator (expr, quals, static_p, vla_unspec_p)
/* Set the type of an array declarator. DECL is the declarator, as
constructed by build_array_declarator; TYPE is what appears on the left
- of the [] and goes in operand 0. ABSTRACT_P is nonzero if it is an
+ of the [] and goes in operand 0. ABSTRACT_P is non-zero if it is an
abstract declarator, zero otherwise; this is used to reject static and
type qualifiers in abstract declarators, where they are not in the
C99 grammar. */
@@ -2912,19 +3550,9 @@ start_decl (declarator, declspecs, initialized, attributes)
/* ANSI specifies that a tentative definition which is not merged with
a non-tentative definition behaves exactly like a definition with an
initializer equal to zero. (Section 3.7.2)
-
- -fno-common gives strict ANSI behavior, though this tends to break
- a large body of code that grew up without this rule.
-
- Thread-local variables are never common, since there's no entrenched
- body of code to break, and it allows more efficient variable references
- in the presense of dynamic linking. */
-
- if (TREE_CODE (decl) == VAR_DECL
- && !initialized
- && TREE_PUBLIC (decl)
- && !DECL_THREAD_LOCAL (decl)
- && !flag_no_common)
+ -fno-common gives strict ANSI behavior. Usually you don't want it.
+ This matters only for variables with external linkage. */
+ if (! flag_no_common || ! TREE_PUBLIC (decl))
DECL_COMMON (decl) = 1;
/* Set attributes here so if duplicate decl, will have proper attributes. */
@@ -3095,9 +3723,8 @@ finish_decl (decl, init, asmspec_tree)
if (TREE_CODE (decl) == VAR_DECL || TREE_CODE (decl) == FUNCTION_DECL)
{
- /* This is a no-op in c-lang.c or something real in objc-act.c. */
- if (flag_objc)
- objc_check_decl (decl);
+ /* This is a no-op in c-lang.c or something real in objc-actions.c. */
+ maybe_objc_check_decl (decl);
if (!DECL_CONTEXT (decl))
{
@@ -3159,9 +3786,8 @@ finish_decl (decl, init, asmspec_tree)
if (TREE_CODE (decl) == TYPE_DECL)
{
- /* This is a no-op in c-lang.c or something real in objc-act.c. */
- if (flag_objc)
- objc_check_decl (decl);
+ /* This is a no-op in c-lang.c or something real in objc-actions.c. */
+ maybe_objc_check_decl (decl);
rest_of_decl_compilation (decl, NULL, DECL_CONTEXT (decl) == 0, 0);
}
@@ -3170,41 +3796,17 @@ finish_decl (decl, init, asmspec_tree)
computing them in the following function definition. */
if (current_binding_level == global_binding_level)
get_pending_sizes ();
+}
- /* Install a cleanup (aka destructor) if one was given. */
- if (TREE_CODE (decl) == VAR_DECL && !TREE_STATIC (decl))
- {
- tree attr = lookup_attribute ("cleanup", DECL_ATTRIBUTES (decl));
- if (attr)
- {
- static bool eh_initialized_p;
-
- tree cleanup_id = TREE_VALUE (TREE_VALUE (attr));
- tree cleanup_decl = lookup_name (cleanup_id);
- tree cleanup;
-
- /* Build "cleanup(&decl)" for the destructor. */
- cleanup = build_unary_op (ADDR_EXPR, decl, 0);
- cleanup = build_tree_list (NULL_TREE, cleanup);
- cleanup = build_function_call (cleanup_decl, cleanup);
-
- /* Don't warn about decl unused; the cleanup uses it. */
- TREE_USED (decl) = 1;
-
- /* Initialize EH, if we've been told to do so. */
- if (flag_exceptions && !eh_initialized_p)
- {
- eh_initialized_p = true;
- eh_personality_libfunc
- = init_one_libfunc (USING_SJLJ_EXCEPTIONS
- ? "__gcc_personality_sj0"
- : "__gcc_personality_v0");
- using_eh_for_cleanups ();
- }
+/* If DECL has a cleanup, build and return that cleanup here.
+ This is a callback called by expand_expr. */
- add_stmt (build_stmt (CLEANUP_STMT, decl, cleanup));
- }
- }
+tree
+maybe_build_cleanup (decl)
+ tree decl ATTRIBUTE_UNUSED;
+{
+ /* There are no cleanups in C. */
+ return NULL_TREE;
}
/* Given a parsed parameter declaration,
@@ -3389,40 +3991,6 @@ complete_array_type (type, initial_value, do_default)
return value;
}
-/* Determine whether TYPE is a structure with a flexible array member,
- or a union containing such a structure (possibly recursively). */
-
-static bool
-flexible_array_type_p (type)
- tree type;
-{
- tree x;
- switch (TREE_CODE (type))
- {
- case RECORD_TYPE:
- x = TYPE_FIELDS (type);
- if (x == NULL_TREE)
- return false;
- while (TREE_CHAIN (x) != NULL_TREE)
- x = TREE_CHAIN (x);
- if (TREE_CODE (TREE_TYPE (x)) == ARRAY_TYPE
- && TYPE_SIZE (TREE_TYPE (x)) == NULL_TREE
- && TYPE_DOMAIN (TREE_TYPE (x)) != NULL_TREE
- && TYPE_MAX_VALUE (TYPE_DOMAIN (TREE_TYPE (x))) == NULL_TREE)
- return true;
- return false;
- case UNION_TYPE:
- for (x = TYPE_FIELDS (type); x != NULL_TREE; x = TREE_CHAIN (x))
- {
- if (flexible_array_type_p (TREE_TYPE (x)))
- return true;
- }
- return false;
- default:
- return false;
- }
-}
-
/* Given declspecs and a declarator,
determine the name and type of the object declared
and construct a ..._DECL node for it.
@@ -3574,7 +4142,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized)
enum rid i = C_RID_CODE (id);
if ((int) i <= (int) RID_LAST_MODIFIER)
{
- if (i == RID_LONG && (specbits & (1 << (int) RID_LONG)))
+ if (i == RID_LONG && (specbits & (1 << (int) i)))
{
if (longlong)
error ("`long long long' is too long for GCC");
@@ -3582,33 +4150,12 @@ grokdeclarator (declarator, declspecs, decl_context, initialized)
{
if (pedantic && !flag_isoc99 && ! in_system_header
&& warn_long_long)
- pedwarn ("ISO C90 does not support `long long'");
+ pedwarn ("ISO C89 does not support `long long'");
longlong = 1;
}
}
else if (specbits & (1 << (int) i))
- {
- if (i == RID_CONST || i == RID_VOLATILE || i == RID_RESTRICT)
- {
- if (!flag_isoc99)
- pedwarn ("duplicate `%s'", IDENTIFIER_POINTER (id));
- }
- else
- error ("duplicate `%s'", IDENTIFIER_POINTER (id));
- }
-
- /* Diagnose "__thread extern". Recall that this list
- is in the reverse order seen in the text. */
- if (i == RID_THREAD
- && (specbits & (1 << (int) RID_EXTERN
- | 1 << (int) RID_STATIC)))
- {
- if (specbits & 1 << (int) RID_EXTERN)
- error ("`__thread' before `extern'");
- else
- error ("`__thread' before `static'");
- }
-
+ pedwarn ("duplicate `%s'", IDENTIFIER_POINTER (id));
specbits |= 1 << (int) i;
goto found;
}
@@ -3728,11 +4275,12 @@ grokdeclarator (declarator, declspecs, decl_context, initialized)
else
{
ok = 1;
- if (!explicit_int && !defaulted_int && !explicit_char)
+ if (!explicit_int && !defaulted_int && !explicit_char && pedantic)
{
- error ("long, short, signed or unsigned used invalidly for `%s'",
- name);
- ok = 0;
+ pedwarn ("long, short, signed or unsigned used invalidly for `%s'",
+ name);
+ if (flag_pedantic_errors)
+ ok = 0;
}
}
@@ -3755,6 +4303,9 @@ grokdeclarator (declarator, declspecs, decl_context, initialized)
/* Decide whether an integer type is signed or not.
Optionally treat bitfields as signed by default. */
if (specbits & 1 << (int) RID_UNSIGNED
+ /* Traditionally, all bitfields are unsigned. */
+ || (bitfield && flag_traditional
+ && (! explicit_flag_signed_bitfields || !flag_signed_bitfields))
|| (bitfield && ! flag_signed_bitfields
&& (explicit_int || defaulted_int || explicit_char
/* A typedef for plain `int' without `signed'
@@ -3773,7 +4324,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized)
else if (type == char_type_node)
type = unsigned_char_type_node;
else if (typedef_decl)
- type = c_common_unsigned_type (type);
+ type = unsigned_type (type);
else
type = unsigned_type_node;
}
@@ -3790,7 +4341,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized)
if (specbits & 1 << (int) RID_COMPLEX)
{
if (pedantic && !flag_isoc99)
- pedwarn ("ISO C90 does not support complex types");
+ pedwarn ("ISO C89 does not support complex types");
/* If we just have "complex", it is equivalent to
"complex double", but if any modifiers at all are specified it is
the complex form of TYPE. E.g, "complex short" is
@@ -3857,12 +4408,6 @@ grokdeclarator (declarator, declspecs, decl_context, initialized)
if (specbits & 1 << (int) RID_REGISTER) nclasses++;
if (specbits & 1 << (int) RID_TYPEDEF) nclasses++;
- /* "static __thread" and "extern __thread" are allowed. */
- if ((specbits & (1 << (int) RID_THREAD
- | 1 << (int) RID_STATIC
- | 1 << (int) RID_EXTERN)) == (1 << (int) RID_THREAD))
- nclasses++;
-
/* Warn about storage classes that are invalid for certain
kinds of declarations (parameters, typenames, etc.). */
@@ -3872,8 +4417,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized)
&& (specbits
& ((1 << (int) RID_REGISTER)
| (1 << (int) RID_AUTO)
- | (1 << (int) RID_TYPEDEF)
- | (1 << (int) RID_THREAD))))
+ | (1 << (int) RID_TYPEDEF))))
{
if (specbits & 1 << (int) RID_AUTO
&& (pedantic || current_binding_level == global_binding_level))
@@ -3882,10 +4426,8 @@ grokdeclarator (declarator, declspecs, decl_context, initialized)
error ("function definition declared `register'");
if (specbits & 1 << (int) RID_TYPEDEF)
error ("function definition declared `typedef'");
- if (specbits & 1 << (int) RID_THREAD)
- error ("function definition declared `__thread'");
specbits &= ~((1 << (int) RID_TYPEDEF) | (1 << (int) RID_REGISTER)
- | (1 << (int) RID_AUTO) | (1 << (int) RID_THREAD));
+ | (1 << (int) RID_AUTO));
}
else if (decl_context != NORMAL && nclasses > 0)
{
@@ -3908,7 +4450,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized)
}
specbits &= ~((1 << (int) RID_TYPEDEF) | (1 << (int) RID_REGISTER)
| (1 << (int) RID_AUTO) | (1 << (int) RID_STATIC)
- | (1 << (int) RID_EXTERN) | (1 << (int) RID_THREAD));
+ | (1 << (int) RID_EXTERN));
}
}
else if (specbits & 1 << (int) RID_EXTERN && initialized && ! funcdef_flag)
@@ -3919,25 +4461,12 @@ grokdeclarator (declarator, declspecs, decl_context, initialized)
else
error ("`%s' has both `extern' and initializer", name);
}
- else if (current_binding_level == global_binding_level)
- {
- if (specbits & 1 << (int) RID_AUTO)
- error ("top-level declaration of `%s' specifies `auto'", name);
- }
- else
- {
- if (specbits & 1 << (int) RID_EXTERN && funcdef_flag)
- error ("nested function `%s' declared `extern'", name);
- else if ((specbits & (1 << (int) RID_THREAD
- | 1 << (int) RID_EXTERN
- | 1 << (int) RID_STATIC))
- == (1 << (int) RID_THREAD))
- {
- error ("function-scope `%s' implicitly auto and declared `__thread'",
- name);
- specbits &= ~(1 << (int) RID_THREAD);
- }
- }
+ else if (specbits & 1 << (int) RID_EXTERN && funcdef_flag
+ && current_binding_level != global_binding_level)
+ error ("nested function `%s' declared `extern'", name);
+ else if (current_binding_level == global_binding_level
+ && specbits & (1 << (int) RID_AUTO))
+ error ("top-level declaration of `%s' specifies `auto'", name);
}
/* Now figure out the structure of the declarator proper.
@@ -4005,7 +4534,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized)
tree itype = NULL_TREE;
tree size = TREE_OPERAND (declarator, 1);
/* The index is a signed object `sizetype' bits wide. */
- tree index_type = c_common_signed_type (sizetype);
+ tree index_type = signed_type (sizetype);
array_ptr_quals = TREE_TYPE (declarator);
array_parm_static = TREE_STATIC (declarator);
@@ -4026,9 +4555,6 @@ grokdeclarator (declarator, declspecs, decl_context, initialized)
type = error_mark_node;
}
- if (pedantic && flexible_array_type_p (type))
- pedwarn ("invalid use of structure with flexible array member");
-
if (size == error_mark_node)
type = error_mark_node;
@@ -4071,10 +4597,10 @@ grokdeclarator (declarator, declspecs, decl_context, initialized)
if (!flag_isoc99 && pedantic)
{
if (TREE_CONSTANT (size))
- pedwarn ("ISO C90 forbids array `%s' whose size can't be evaluated",
+ pedwarn ("ISO C89 forbids array `%s' whose size can't be evaluated",
name);
else
- pedwarn ("ISO C90 forbids variable-size array `%s'",
+ pedwarn ("ISO C89 forbids variable-size array `%s'",
name);
}
}
@@ -4110,27 +4636,14 @@ grokdeclarator (declarator, declspecs, decl_context, initialized)
}
if (size_varies)
- {
- /* We must be able to distinguish the
- SAVE_EXPR_CONTEXT for the variably-sized type
- so that we can set it correctly in
- set_save_expr_context. The convention is
- that all SAVE_EXPRs that need to be reset
- have NULL_TREE for their SAVE_EXPR_CONTEXT. */
- tree cfd = current_function_decl;
- if (decl_context == PARM)
- current_function_decl = NULL_TREE;
- itype = variable_size (itype);
- if (decl_context == PARM)
- current_function_decl = cfd;
- }
+ itype = variable_size (itype);
itype = build_index_type (itype);
}
}
else if (decl_context == FIELD)
{
if (pedantic && !flag_isoc99 && !in_system_header)
- pedwarn ("ISO C90 does not support flexible array members");
+ pedwarn ("ISO C89 does not support flexible array members");
/* ISO C99 Flexible array members are effectively identical
to GCC's zero-length array extension. */
@@ -4202,6 +4715,13 @@ grokdeclarator (declarator, declspecs, decl_context, initialized)
type = integer_type_node;
}
+#ifndef TRADITIONAL_RETURN_FLOAT
+ /* Traditionally, declaring return type float means double. */
+
+ if (flag_traditional && TYPE_MAIN_VARIANT (type) == float_type_node)
+ type = double_type_node;
+#endif /* TRADITIONAL_RETURN_FLOAT */
+
/* Construct the function type and go to the next
inner layer of declarator. */
@@ -4489,7 +5009,11 @@ grokdeclarator (declarator, declspecs, decl_context, initialized)
if (type == error_mark_node)
promoted_type = type;
else
- promoted_type = c_type_promotes_to (type);
+ {
+ promoted_type = simple_type_promotes_to (type);
+ if (! promoted_type)
+ promoted_type = type;
+ }
DECL_ARG_TYPE (decl) = promoted_type;
DECL_ARG_TYPE_AS_WRITTEN (decl) = type_as_written;
@@ -4541,8 +5065,6 @@ grokdeclarator (declarator, declspecs, decl_context, initialized)
pedwarn ("invalid storage class for function `%s'", name);
if (specbits & (1 << (int) RID_REGISTER))
error ("invalid storage class for function `%s'", name);
- if (specbits & (1 << (int) RID_THREAD))
- error ("invalid storage class for function `%s'", name);
/* Function declaration not at top level.
Storage classes other than `extern' are not allowed
and `extern' makes no difference. */
@@ -4602,8 +5124,6 @@ grokdeclarator (declarator, declspecs, decl_context, initialized)
needed, and let dwarf2 know that the function is inlinable. */
else if (flag_inline_trees == 2 && initialized)
{
- if (!DECL_INLINE (decl))
- DID_INLINE_FUNC (decl) = 1;
DECL_INLINE (decl) = 1;
DECL_DECLARED_INLINE_P (decl) = 0;
}
@@ -4637,32 +5157,22 @@ grokdeclarator (declarator, declspecs, decl_context, initialized)
pedwarn_with_decl (decl, "variable `%s' declared `inline'");
DECL_EXTERNAL (decl) = extern_ref;
-
/* At top level, the presence of a `static' or `register' storage
class specifier, or the absence of all storage class specifiers
makes this declaration a definition (perhaps tentative). Also,
the absence of both `static' and `register' makes it public. */
if (current_binding_level == global_binding_level)
{
- TREE_PUBLIC (decl) = !(specbits & ((1 << (int) RID_STATIC)
- | (1 << (int) RID_REGISTER)));
- TREE_STATIC (decl) = !extern_ref;
+ TREE_PUBLIC (decl)
+ = !(specbits
+ & ((1 << (int) RID_STATIC) | (1 << (int) RID_REGISTER)));
+ TREE_STATIC (decl) = ! DECL_EXTERNAL (decl);
}
/* Not at top level, only `static' makes a static definition. */
else
{
TREE_STATIC (decl) = (specbits & (1 << (int) RID_STATIC)) != 0;
- TREE_PUBLIC (decl) = extern_ref;
- }
-
- if (specbits & 1 << (int) RID_THREAD)
- {
- if (targetm.have_tls)
- DECL_THREAD_LOCAL (decl) = 1;
- else
- /* A mere warning is sure to result in improper semantics
- at runtime. Don't bother to allow this to compile. */
- error ("thread-local storage not supported for this target");
+ TREE_PUBLIC (decl) = DECL_EXTERNAL (decl);
}
}
@@ -4679,7 +5189,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized)
Otherwise, the fact that those components are volatile
will be ignored, and would even crash the compiler. */
if (C_TYPE_FIELDS_VOLATILE (TREE_TYPE (decl)))
- c_mark_addressable (decl);
+ mark_addressable (decl);
decl_attributes (&decl, returned_attrs, 0);
@@ -5014,22 +5524,25 @@ start_struct (code, name)
ref = lookup_tag (code, name, current_binding_level, 1);
if (ref && TREE_CODE (ref) == code)
{
+ C_TYPE_BEING_DEFINED (ref) = 1;
+ TYPE_PACKED (ref) = flag_pack_struct;
if (TYPE_FIELDS (ref))
{
if (code == UNION_TYPE)
- error ("redefinition of `union %s'", IDENTIFIER_POINTER (name));
+ error ("redefinition of `union %s'",
+ IDENTIFIER_POINTER (name));
else
- error ("redefinition of `struct %s'", IDENTIFIER_POINTER (name));
+ error ("redefinition of `struct %s'",
+ IDENTIFIER_POINTER (name));
}
- }
- else
- {
- /* Otherwise create a forward-reference just so the tag is in scope. */
- ref = make_node (code);
- pushtag (name, ref);
+ return ref;
}
-
+
+ /* Otherwise create a forward-reference just so the tag is in scope. */
+
+ ref = make_node (code);
+ pushtag (name, ref);
C_TYPE_BEING_DEFINED (ref) = 1;
TYPE_PACKED (ref) = flag_pack_struct;
return ref;
@@ -5053,44 +5566,15 @@ grokfield (filename, line, declarator, declspecs, width)
if (declarator == NULL_TREE && width == NULL_TREE)
{
- /* This is an unnamed decl.
-
- If we have something of the form "union { list } ;" then this
- is the anonymous union extension. Similarly for struct.
-
- If this is something of the form "struct foo;", then
- If MS extensions are enabled, this is handled as an
- anonymous struct.
- Otherwise this is a forward declaration of a structure tag.
-
- If this is something of the form "foo;" and foo is a TYPE_DECL, then
- If MS extensions are enabled and foo names a structure, then
- again this is an anonymous struct.
- Otherwise this is an error.
-
- Oh what a horrid tangled web we weave. I wonder if MS consiously
- took this from Plan 9 or if it was an accident of implementation
- that took root before someone noticed the bug... */
-
+ /* This is an unnamed decl. We only support unnamed
+ structs/unions, so check for other things and refuse them. */
tree type = TREE_VALUE (declspecs);
- if (flag_ms_extensions && TREE_CODE (type) == TYPE_DECL)
+ if (TREE_CODE (type) == TYPE_DECL)
type = TREE_TYPE (type);
- if (TREE_CODE (type) == RECORD_TYPE || TREE_CODE (type) == UNION_TYPE)
+ if (TREE_CODE (type) != RECORD_TYPE && TREE_CODE (type) != UNION_TYPE)
{
- if (flag_ms_extensions)
- ; /* ok */
- else if (flag_iso)
- goto warn_unnamed_field;
- else if (TYPE_NAME (type) == NULL)
- ; /* ok */
- else
- goto warn_unnamed_field;
- }
- else
- {
- warn_unnamed_field:
- warning ("declaration does not declare anything");
+ error ("unnamed fields of type other than struct or union are not allowed");
return NULL_TREE;
}
}
@@ -5100,8 +5584,7 @@ grokfield (filename, line, declarator, declspecs, width)
finish_decl (value, NULL_TREE, NULL_TREE);
DECL_INITIAL (value) = width;
- if (flag_objc)
- objc_check_decl (value);
+ maybe_objc_check_decl (value);
return value;
}
@@ -5134,7 +5617,7 @@ finish_struct (t, fieldlist, attributes)
if (pedantic)
pedwarn ("%s defined inside parms",
TREE_CODE (t) == UNION_TYPE ? _("union") : _("structure"));
- else
+ else if (! flag_traditional)
warning ("%s defined inside parms",
TREE_CODE (t) == UNION_TYPE ? _("union") : _("structure"));
}
@@ -5277,6 +5760,18 @@ finish_struct (t, fieldlist, attributes)
}
}
+ else if (TREE_TYPE (x) != error_mark_node)
+ {
+ unsigned int min_align = (DECL_PACKED (x) ? BITS_PER_UNIT
+ : TYPE_ALIGN (TREE_TYPE (x)));
+
+ /* Non-bit-fields are aligned for their type, except packed
+ fields which require only BITS_PER_UNIT alignment. */
+ DECL_ALIGN (x) = MAX (DECL_ALIGN (x), min_align);
+ if (! DECL_PACKED (x))
+ DECL_USER_ALIGN (x) |= TYPE_USER_ALIGN (TREE_TYPE (x));
+ }
+
DECL_INITIAL (x) = 0;
/* Detect flexible array member in an invalid context. */
@@ -5292,11 +5787,6 @@ finish_struct (t, fieldlist, attributes)
else if (! saw_named_field)
error_with_decl (x, "flexible array member in otherwise empty struct");
}
-
- if (pedantic && TREE_CODE (t) == RECORD_TYPE
- && flexible_array_type_p (TREE_TYPE (x)))
- pedwarn_with_decl (x, "invalid use of structure with flexible array member");
-
if (DECL_NAME (x))
saw_named_field = 1;
}
@@ -5370,29 +5860,22 @@ finish_struct (t, fieldlist, attributes)
/* If this structure or union completes the type of any previous
variable declaration, lay it out and output its rtl. */
- if (current_binding_level->incomplete_list != NULL_TREE)
+ if (current_binding_level->n_incomplete != 0)
{
- tree prev = NULL_TREE;
-
- for (x = current_binding_level->incomplete_list; x; x = TREE_CHAIN (x))
- {
- tree decl = TREE_VALUE (x);
-
+ tree decl;
+ for (decl = current_binding_level->names; decl; decl = TREE_CHAIN (decl))
+ {
if (TYPE_MAIN_VARIANT (TREE_TYPE (decl)) == TYPE_MAIN_VARIANT (t)
&& TREE_CODE (decl) != TYPE_DECL)
{
layout_decl (decl, 0);
- /* This is a no-op in c-lang.c or something real in objc-act.c. */
- if (flag_objc)
- objc_check_decl (decl);
+ /* This is a no-op in c-lang.c or something real in objc-actions.c. */
+ maybe_objc_check_decl (decl);
rest_of_decl_compilation (decl, NULL, toplevel, 0);
if (! toplevel)
expand_decl (decl);
- /* Unlink X from the incomplete list. */
- if (prev)
- TREE_CHAIN (prev) = TREE_CHAIN (x);
- else
- current_binding_level->incomplete_list = TREE_CHAIN (x);
+ if (--current_binding_level->n_incomplete == 0)
+ break;
}
else if (!COMPLETE_TYPE_P (TREE_TYPE (decl))
&& TREE_CODE (TREE_TYPE (decl)) == ARRAY_TYPE)
@@ -5406,17 +5889,13 @@ finish_struct (t, fieldlist, attributes)
if (TREE_CODE (decl) != TYPE_DECL)
{
layout_decl (decl, 0);
- if (flag_objc)
- objc_check_decl (decl);
+ maybe_objc_check_decl (decl);
rest_of_decl_compilation (decl, NULL, toplevel, 0);
if (! toplevel)
expand_decl (decl);
}
- /* Unlink X from the incomplete list. */
- if (prev)
- TREE_CHAIN (prev) = TREE_CHAIN (x);
- else
- current_binding_level->incomplete_list = TREE_CHAIN (x);
+ if (--current_binding_level->n_incomplete == 0)
+ break;
}
}
}
@@ -5533,7 +6012,7 @@ finish_enum (enumtype, values, attributes)
min_precision (maxnode, unsign));
if (TYPE_PACKED (enumtype) || precision > TYPE_PRECISION (integer_type_node))
{
- tree narrowest = c_common_type_for_size (precision, unsign);
+ tree narrowest = type_for_size (precision, unsign);
if (narrowest == 0)
{
warning ("enumeration values exceed range of largest integer");
@@ -5546,7 +6025,7 @@ finish_enum (enumtype, values, attributes)
precision = TYPE_PRECISION (integer_type_node);
if (precision == TYPE_PRECISION (integer_type_node))
- enum_value_type = c_common_type_for_size (precision, 0);
+ enum_value_type = type_for_size (precision, 0);
else
enum_value_type = enumtype;
@@ -5674,11 +6153,11 @@ build_enumerator (name, value)
/* Now create a declaration for the enum value name. */
type = TREE_TYPE (value);
- type = c_common_type_for_size (MAX (TYPE_PRECISION (type),
- TYPE_PRECISION (integer_type_node)),
- (TYPE_PRECISION (type)
- >= TYPE_PRECISION (integer_type_node)
- && TREE_UNSIGNED (type)));
+ type = type_for_size (MAX (TYPE_PRECISION (type),
+ TYPE_PRECISION (integer_type_node)),
+ ((flag_traditional
+ || TYPE_PRECISION (type) >= TYPE_PRECISION (integer_type_node))
+ && TREE_UNSIGNED (type)));
decl = build_decl (CONST_DECL, name, type);
DECL_INITIAL (decl) = convert (type, value);
@@ -5713,6 +6192,7 @@ start_function (declspecs, declarator, attributes)
current_function_returns_abnormally = 0;
warn_about_return_type = 0;
current_extern_inline = 0;
+ c_function_varargs = 0;
named_labels = 0;
shadowed_labels = 0;
@@ -5790,7 +6270,9 @@ start_function (declspecs, declarator, attributes)
&& !(old_decl != 0
&& (TYPE_ARG_TYPES (TREE_TYPE (old_decl)) != 0
|| (DECL_BUILT_IN (old_decl)
- && ! C_DECL_ANTICIPATED (old_decl)))))
+ && ! C_DECL_ANTICIPATED (old_decl))))
+ && !(flag_bsd_no_warn_kr_main && 0 ==
+ strcmp ("main", IDENTIFIER_POINTER (DECL_NAME (decl1)))))
warning ("function declaration isn't a prototype");
/* Optionally warn of any global def with no previous prototype. */
else if (warn_missing_prototypes
@@ -5909,10 +6391,12 @@ start_function (declspecs, declarator, attributes)
/* Promote the value to int before returning it. */
if (c_promoting_integer_type_p (restype))
{
- /* It retains unsignedness if not really getting wider. */
+ /* It retains unsignedness if traditional
+ or if not really getting wider. */
if (TREE_UNSIGNED (restype)
- && (TYPE_PRECISION (restype)
- == TYPE_PRECISION (integer_type_node)))
+ && (flag_traditional
+ || (TYPE_PRECISION (restype)
+ == TYPE_PRECISION (integer_type_node))))
restype = unsigned_type_node;
else
restype = integer_type_node;
@@ -5931,6 +6415,16 @@ start_function (declspecs, declarator, attributes)
return 1;
}
+
+/* Record that this function is going to be a varargs function.
+ This is called before store_parm_decls, which is too early
+ to call mark_varargs directly. */
+
+void
+c_mark_varargs ()
+{
+ c_function_varargs = 1;
+}
/* Store the parameter declarations into the current function declaration.
This is called after parsing the parameter declarations, before
@@ -6121,6 +6615,15 @@ store_parm_decls ()
layout_decl (found, 0);
}
+ /* Traditionally, a parm declared float is actually a double. */
+ if (found && flag_traditional
+ && TYPE_MAIN_VARIANT (TREE_TYPE (found)) == float_type_node)
+ {
+ TREE_TYPE (found) = double_type_node;
+ DECL_ARG_TYPE (found) = double_type_node;
+ layout_decl (found, 0);
+ }
+
/* If no declaration found, default to int. */
if (!found)
{
@@ -6254,7 +6757,11 @@ store_parm_decls ()
"prototype declaration");
}
}
- else
+ /* If -traditional, allow `int' argument to match
+ `unsigned' prototype. */
+ else if (! (flag_traditional
+ && TYPE_MAIN_VARIANT (TREE_TYPE (parm)) == integer_type_node
+ && TYPE_MAIN_VARIANT (TREE_VALUE (type)) == unsigned_type_node))
{
error ("argument `%s' doesn't match prototype",
IDENTIFIER_POINTER (DECL_NAME (parm)));
@@ -6389,6 +6896,13 @@ finish_function (nested, can_defer_p)
DECL_CONTEXT (DECL_RESULT (fndecl)) = fndecl;
+ /* Obey `register' declarations if `setjmp' is called in this fn. */
+ if (flag_traditional && current_function_calls_setjmp)
+ {
+ setjmp_protect (DECL_INITIAL (fndecl));
+ setjmp_protect_args ();
+ }
+
if (MAIN_NAME_P (DECL_NAME (fndecl)) && flag_hosted)
{
if (TYPE_MAIN_VARIANT (TREE_TYPE (TREE_TYPE (fndecl)))
@@ -6445,7 +6959,7 @@ finish_function (nested, can_defer_p)
/* Let the error reporting routines know that we're outside a
function. For a nested function, this value is used in
- c_pop_function_context and then reset via pop_function_context. */
+ pop_c_function_context and then reset via pop_function_context. */
current_function_decl = NULL;
}
}
@@ -6465,27 +6979,7 @@ c_expand_deferred_function (fndecl)
}
}
-/* Called to move the SAVE_EXPRs for parameter declarations in a
- nested function into the nested function. DATA is really the
- nested FUNCTION_DECL. */
-
-static tree
-set_save_expr_context (tp, walk_subtrees, data)
- tree *tp;
- int *walk_subtrees;
- void *data;
-{
- if (TREE_CODE (*tp) == SAVE_EXPR && !SAVE_EXPR_CONTEXT (*tp))
- SAVE_EXPR_CONTEXT (*tp) = (tree) data;
- /* Do not walk back into the SAVE_EXPR_CONTEXT; that will cause
- circularity. */
- else if (DECL_P (*tp))
- *walk_subtrees = 0;
-
- return NULL_TREE;
-}
-
-/* Generate the RTL for the body of FNDECL. If NESTED_P is nonzero,
+/* Generate the RTL for the body of FNDECL. If NESTED_P is non-zero,
then we are already in the process of generating RTL for another
function. If can_defer_p is zero, we won't attempt to defer the
generation of RTL. */
@@ -6496,19 +6990,12 @@ c_expand_body (fndecl, nested_p, can_defer_p)
int nested_p, can_defer_p;
{
int uninlinable = 1;
- int saved_lineno;
- const char *saved_input_filename;
/* There's no reason to do any of the work here if we're only doing
semantic analysis; this code just generates RTL. */
if (flag_syntax_only)
return;
- saved_lineno = lineno;
- saved_input_filename = input_filename;
- lineno = DECL_SOURCE_LINE (fndecl);
- input_filename = DECL_SOURCE_FILE (fndecl);
-
if (flag_inline_trees)
{
/* First, cache whether the current function is inlinable. Some
@@ -6526,8 +7013,6 @@ c_expand_body (fndecl, nested_p, can_defer_p)
/* Let the back-end know that this function exists. */
(*debug_hooks->deferred_inline_function) (fndecl);
timevar_pop (TV_INTEGRATION);
- lineno = saved_lineno;
- input_filename = saved_input_filename;
return;
}
@@ -6549,6 +7034,7 @@ c_expand_body (fndecl, nested_p, can_defer_p)
/* Initialize the RTL code for the function. */
current_function_decl = fndecl;
+ input_filename = DECL_SOURCE_FILE (fndecl);
init_function_start (fndecl, input_filename, DECL_SOURCE_LINE (fndecl));
/* This function is being processed in whole-function mode. */
@@ -6561,18 +7047,13 @@ c_expand_body (fndecl, nested_p, can_defer_p)
immediate_size_expand = 0;
cfun->x_dont_save_pending_sizes_p = 1;
+ /* If this is a varargs function, inform function.c. */
+ if (c_function_varargs)
+ mark_varargs ();
+
/* Set up parameters and prepare for return, for the function. */
expand_function_start (fndecl, 0);
- /* If the function has a variably modified type, there may be
- SAVE_EXPRs in the parameter types. Their context must be set to
- refer to this function; they cannot be expanded in the containing
- function. */
- if (decl_function_context (fndecl)
- && variably_modified_type_p (TREE_TYPE (fndecl)))
- walk_tree (&TREE_TYPE (fndecl), set_save_expr_context, fndecl,
- NULL);
-
/* If this function is `main', emit a call to `__main'
to run global initializers, etc. */
if (DECL_NAME (fndecl)
@@ -6582,9 +7063,7 @@ c_expand_body (fndecl, nested_p, can_defer_p)
/* Generate the RTL for this function. */
expand_stmt (DECL_SAVED_TREE (fndecl));
-
- /* Keep the function body if it's needed for inlining or dumping. */
- if (uninlinable && !dump_enabled_p (TDI_all))
+ if (uninlinable)
{
/* Allow the body of the function to be garbage collected. */
DECL_SAVED_TREE (fndecl) = NULL_TREE;
@@ -6655,7 +7134,7 @@ c_expand_body (fndecl, nested_p, can_defer_p)
/* Stop pointing to the local nodes about to be freed.
But DECL_INITIAL must remain nonzero so we know this
was an actual function definition.
- For a nested function, this is done in c_pop_function_context.
+ For a nested function, this is done in pop_c_function_context.
If rest_of_compilation set this to 0, leave it 0. */
if (DECL_INITIAL (fndecl) != 0)
DECL_INITIAL (fndecl) = error_mark_node;
@@ -6685,9 +7164,6 @@ c_expand_body (fndecl, nested_p, can_defer_p)
/* Return to the enclosing function. */
pop_function_context ();
timevar_pop (TV_EXPAND);
-
- lineno = saved_lineno;
- input_filename = saved_input_filename;
}
/* Check the declarations given in a for-loop for satisfying the C99
@@ -6752,9 +7228,9 @@ check_for_loop_decls ()
that keep track of the progress of compilation of the current function.
Used for nested functions. */
-struct language_function GTY(())
+struct c_language_function
{
- struct c_language_function base;
+ struct language_function base;
tree named_labels;
tree shadowed_labels;
int returns_value;
@@ -6769,13 +7245,13 @@ struct language_function GTY(())
used during compilation of a C function. */
void
-c_push_function_context (f)
+push_c_function_context (f)
struct function *f;
{
- struct language_function *p;
- p = ((struct language_function *)
- ggc_alloc (sizeof (struct language_function)));
- f->language = p;
+ struct c_language_function *p;
+ p = ((struct c_language_function *)
+ xmalloc (sizeof (struct c_language_function)));
+ f->language = (struct language_function *) p;
p->base.x_stmt_tree = c_stmt_tree;
p->base.x_scope_stmt_stack = c_scope_stmt_stack;
@@ -6792,10 +7268,11 @@ c_push_function_context (f)
/* Restore the variables used during compilation of a C function. */
void
-c_pop_function_context (f)
+pop_c_function_context (f)
struct function *f;
{
- struct language_function *p = f->language;
+ struct c_language_function *p
+ = (struct c_language_function *) f->language;
tree link;
/* Bring back all the labels that were shadowed. */
@@ -6825,13 +7302,32 @@ c_pop_function_context (f)
current_extern_inline = p->extern_inline;
current_binding_level = p->binding_level;
- f->language = NULL;
+ free (p);
+ f->language = 0;
+}
+
+/* Mark the language specific parts of F for GC. */
+
+void
+mark_c_function_context (f)
+ struct function *f;
+{
+ struct c_language_function *p
+ = (struct c_language_function *) f->language;
+
+ if (p == 0)
+ return;
+
+ mark_c_language_function (&p->base);
+ ggc_mark_tree (p->shadowed_labels);
+ ggc_mark_tree (p->named_labels);
+ mark_binding_level (&p->binding_level);
}
-/* Copy the DECL_LANG_SPECIFIC data associated with DECL. */
+/* Copy the DECL_LANG_SPECIFIC data associated with NODE. */
void
-c_dup_lang_specific_decl (decl)
+copy_lang_decl (decl)
tree decl;
{
struct lang_decl *ld;
@@ -6845,12 +7341,38 @@ c_dup_lang_specific_decl (decl)
DECL_LANG_SPECIFIC (decl) = ld;
}
+/* Mark the language specific bits in T for GC. */
+
+void
+lang_mark_tree (t)
+ tree t;
+{
+ if (TREE_CODE (t) == IDENTIFIER_NODE)
+ {
+ struct lang_identifier *i = (struct lang_identifier *) t;
+ ggc_mark_tree (i->global_value);
+ ggc_mark_tree (i->local_value);
+ ggc_mark_tree (i->label_value);
+ ggc_mark_tree (i->implicit_decl);
+ ggc_mark_tree (i->error_locus);
+ ggc_mark_tree (i->limbo_value);
+ }
+ else if (TYPE_P (t) && TYPE_LANG_SPECIFIC (t))
+ ggc_mark (TYPE_LANG_SPECIFIC (t));
+ else if (DECL_P (t) && DECL_LANG_SPECIFIC (t))
+ {
+ ggc_mark (DECL_LANG_SPECIFIC (t));
+ c_mark_lang_decl (&DECL_LANG_SPECIFIC (t)->base);
+ ggc_mark_tree (DECL_LANG_SPECIFIC (t)->pending_sizes);
+ }
+}
+
/* The functions below are required for functionality of doing
function at once processing in the C front end. Currently these
functions are not called from anywhere in the C front end, but as
these changes continue, that will change. */
-/* Returns nonzero if the current statement is a full expression,
+/* Returns non-zero if the current statement is a full expression,
i.e. temporaries created during that statement should be destroyed
at the end of the statement. */
@@ -6959,26 +7481,3 @@ build_void_list_node ()
tree t = build_tree_list (NULL_TREE, void_type_node);
return t;
}
-
-/* Return something to represent absolute declarators containing a *.
- TARGET is the absolute declarator that the * contains.
- TYPE_QUALS_ATTRS is a list of modifiers such as const or volatile
- to apply to the pointer type, represented as identifiers, possible mixed
- with attributes.
-
- We return an INDIRECT_REF whose "contents" are TARGET (inside a TREE_LIST,
- if attributes are present) and whose type is the modifier list. */
-
-tree
-make_pointer_declarator (type_quals_attrs, target)
- tree type_quals_attrs, target;
-{
- tree quals, attrs;
- tree itarget = target;
- split_specs_attrs (type_quals_attrs, &quals, &attrs);
- if (attrs != NULL_TREE)
- itarget = tree_cons (attrs, target, NULL_TREE);
- return build1 (INDIRECT_REF, quals, itarget);
-}
-
-#include "gt-c-decl.h"
diff --git a/contrib/gcc/c-format.c b/contrib/gcc/c-format.c
index 083e912..3834c55 100644
--- a/contrib/gcc/c-format.c
+++ b/contrib/gcc/c-format.c
@@ -19,6 +19,8 @@ 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. */
+/* $FreeBSD$ */
+
#include "config.h"
#include "system.h"
#include "tree.h"
@@ -27,8 +29,31 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "c-common.h"
#include "intl.h"
#include "diagnostic.h"
-#include "langhooks.h"
+
+/* Command line options and their associated flags. */
+
+/* Warn about format/argument anomalies in calls to formatted I/O functions
+ (*printf, *scanf, strftime, strfmon, etc.). */
+
+int warn_format;
+
+/* Warn about Y2K problems with strftime formats. */
+
+int warn_format_y2k;
+
+/* Warn about excess arguments to formats. */
+
+int warn_format_extra_args;
+
+/* Warn about non-literal format arguments. */
+
+int warn_format_nonliteral;
+
+/* Warn about possible security problems with calls to format functions. */
+
+int warn_format_security;
+
/* Set format warning options according to a -Wformat=n option. */
void
@@ -38,15 +63,11 @@ set_Wformat (setting)
warn_format = setting;
warn_format_y2k = setting;
warn_format_extra_args = setting;
- warn_format_zero_length = setting;
if (setting != 1)
{
warn_format_nonliteral = setting;
warn_format_security = setting;
}
- /* Make sure not to disable -Wnonnull if -Wformat=0 is specified. */
- if (setting)
- warn_nonnull = setting;
}
@@ -56,6 +77,7 @@ set_Wformat (setting)
last. */
enum format_type { printf_format_type, scanf_format_type,
strftime_format_type, strfmon_format_type,
+ printf0_format_type,
format_type_error };
typedef struct function_format_info
@@ -230,7 +252,7 @@ decode_format_attr (args, info, validated_p)
{
if (validated_p)
abort ();
- error ("unrecognized format specifier");
+ error_with_decl (getdecls (), "unrecognized format specifier");
return false;
}
else
@@ -286,7 +308,7 @@ decode_format_attr (args, info, validated_p)
/* Check a call to a format function against a parameter list. */
-/* The meaningfully distinct length modifiers for format checking recognized
+/* The meaningfully distinct length modifiers for format checking recognised
by GCC. */
enum format_lengths
{
@@ -329,7 +351,7 @@ enum format_std_version
? "ISO C++" \
: ((FEATURE_VER) == STD_EXT \
? "ISO C" \
- : "ISO C90"))
+ : "ISO C89"))
/* Adjust a C standard version, which may be STD_C9L, to account for
-Wno-long-long. Returns other standard versions unchanged. */
#define ADJ_STD(VER) ((int)((VER) == STD_C9L \
@@ -439,7 +461,7 @@ typedef struct
/* The flag character in question (0 for end of array). */
const int flag_char;
/* Zero if this entry describes the flag character in general, or a
- nonzero character that may be found in flags2 if it describes the
+ non-zero character that may be found in flags2 if it describes the
flag when used with certain formats only. If the latter, only
the first such entry found that applies to the current conversion
specifier is used; the values of `name' and `long_name' it supplies
@@ -469,11 +491,11 @@ typedef struct
const int flag_char1;
/* The second flag character. */
const int flag_char2;
- /* Nonzero if the message should say that the first flag is ignored with
+ /* Non-zero if the message should say that the first flag is ignored with
the second, zero if the combination should simply be objected to. */
const int ignored;
/* Zero if this entry applies whenever this flag combination occurs,
- a nonzero character from flags2 if it only applies in some
+ a non-zero character from flags2 if it only applies in some
circumstances (e.g. 'i' for printf formats ignoring 0 with precision). */
const int predicate;
} format_flag_pair;
@@ -521,6 +543,7 @@ typedef struct
/* Pointer to type of argument expected if '*' is used for a precision,
or NULL if '*' not used for precisions. */
tree *const precision_type;
+ const int null_format_ok;
} format_kind_info;
@@ -690,6 +713,7 @@ static const format_flag_pair strfmon_flag_pairs[] =
#define T_I &integer_type_node
#define T89_I { STD_C89, NULL, T_I }
+#define T99_I { STD_C99, NULL, T_I }
#define T_L &long_integer_type_node
#define T89_L { STD_C89, NULL, T_L }
#define T_LL &long_long_integer_type_node
@@ -699,6 +723,7 @@ static const format_flag_pair strfmon_flag_pairs[] =
#define T89_S { STD_C89, NULL, T_S }
#define T_UI &unsigned_type_node
#define T89_UI { STD_C89, NULL, T_UI }
+#define T99_UI { STD_C99, NULL, T_UI }
#define T_UL &long_unsigned_type_node
#define T89_UL { STD_C89, NULL, T_UL }
#define T_ULL &long_long_unsigned_type_node
@@ -762,6 +787,18 @@ static const format_char_info print_char_table[] =
{ "S", 1, STD_EXT, { TEX_W, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "-wp", "R" },
/* GNU conversion specifiers. */
{ "m", 0, STD_EXT, { T89_V, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "-wp", "" },
+ /* BSD conversion specifiers. */
+ /* FreeBSD kernel extensions (src/sys/kern/subr_prf.c).
+ The format %b is supported to decode error registers.
+ Its usage is: printf("reg=%b\n", regval, "<base><arg>*");
+ which produces: reg=3<BITTWO,BITONE>
+ The format %D provides a hexdump given a pointer and separator string:
+ ("%6D", ptr, ":") -> XX:XX:XX:XX:XX:XX
+ ("%*D", len, ptr, " ") -> XX XX XX XX ...
+ */
+ { "D", 1, STD_EXT, { T89_C, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "-wp", "cR" },
+ { "b", 1, STD_EXT, { T89_C, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "-wp", "" },
+ { "ry", 0, STD_EXT, { T89_I, BADLEN, BADLEN, T89_L, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "-wp0 +#", "i" },
{ NULL, 0, 0, NOLENGTHS, NULL, NULL }
};
@@ -826,23 +863,29 @@ static const format_kind_info format_types[] =
printf_flag_specs, printf_flag_pairs,
FMT_FLAG_ARG_CONVERT|FMT_FLAG_DOLLAR_MULTIPLE|FMT_FLAG_USE_DOLLAR|FMT_FLAG_EMPTY_PREC_OK,
'w', 0, 'p', 0, 'L',
- &integer_type_node, &integer_type_node
+ &integer_type_node, &integer_type_node, 0
},
{ "scanf", scanf_length_specs, scan_char_table, "*'I", NULL,
scanf_flag_specs, scanf_flag_pairs,
FMT_FLAG_ARG_CONVERT|FMT_FLAG_SCANF_A_KLUDGE|FMT_FLAG_USE_DOLLAR|FMT_FLAG_ZERO_WIDTH_BAD|FMT_FLAG_DOLLAR_GAP_POINTER_OK,
'w', 0, 0, '*', 'L',
- NULL, NULL
+ NULL, NULL, 0
},
{ "strftime", NULL, time_char_table, "_-0^#", "EO",
strftime_flag_specs, strftime_flag_pairs,
FMT_FLAG_FANCY_PERCENT_OK, 'w', 0, 0, 0, 0,
- NULL, NULL
+ NULL, NULL, 0
},
{ "strfmon", strfmon_length_specs, monetary_char_table, "=^+(!-", NULL,
strfmon_flag_specs, strfmon_flag_pairs,
FMT_FLAG_ARG_CONVERT, 'w', '#', 'p', 0, 'L',
- NULL, NULL
+ NULL, NULL, 0
+ },
+ { "printf0", printf_length_specs, print_char_table, " +#0-'I", NULL,
+ printf_flag_specs, printf_flag_pairs,
+ FMT_FLAG_ARG_CONVERT|FMT_FLAG_DOLLAR_MULTIPLE|FMT_FLAG_USE_DOLLAR|FMT_FLAG_EMPTY_PREC_OK,
+ 'w', 0, 'p', 0, 'L',
+ &integer_type_node, &integer_type_node, 1
}
};
@@ -874,16 +917,10 @@ typedef struct
int number_other;
} format_check_results;
-typedef struct
-{
- format_check_results *res;
- function_format_info *info;
- tree params;
- int *status;
-} format_check_context;
-
static void check_format_info PARAMS ((int *, function_format_info *, tree));
-static void check_format_arg PARAMS ((void *, tree, unsigned HOST_WIDE_INT));
+static void check_format_info_recurse PARAMS ((int *, format_check_results *,
+ function_format_info *, tree,
+ tree, unsigned HOST_WIDE_INT));
static void check_format_info_main PARAMS ((int *, format_check_results *,
function_format_info *,
const char *, int, tree,
@@ -996,7 +1033,7 @@ check_function_format (status, attrs, params)
static void
status_warning VPARAMS ((int *status, const char *msgid, ...))
{
- diagnostic_info diagnostic ;
+ diagnostic_context dc;
VA_OPEN (ap, msgid);
VA_FIXEDARG (ap, int *, status);
@@ -1007,9 +1044,9 @@ status_warning VPARAMS ((int *status, const char *msgid, ...))
else
{
/* This duplicates the warning function behavior. */
- diagnostic_set_info (&diagnostic, _(msgid), &ap, input_filename, lineno,
- DK_WARNING);
- report_diagnostic (&diagnostic);
+ set_diagnostic_context
+ (&dc, msgid, &ap, input_filename, lineno, /* warn = */ 1);
+ report_diagnostic (&dc);
}
VA_CLOSE (ap);
@@ -1274,7 +1311,6 @@ check_format_info (status, info, params)
function_format_info *info;
tree params;
{
- format_check_context format_ctx;
unsigned HOST_WIDE_INT arg_num;
tree format_tree;
format_check_results res;
@@ -1301,13 +1337,7 @@ check_format_info (status, info, params)
res.number_unterminated = 0;
res.number_other = 0;
- format_ctx.res = &res;
- format_ctx.info = info;
- format_ctx.params = params;
- format_ctx.status = status;
-
- check_function_arguments_recurse (check_format_arg, &format_ctx,
- format_tree, arg_num);
+ check_format_info_recurse (status, &res, info, format_tree, params, arg_num);
if (res.number_non_literal > 0)
{
@@ -1353,9 +1383,8 @@ check_format_info (status, info, params)
&& res.number_other == 0 && warn_format_extra_args)
status_warning (status, "unused arguments in $-style format");
if (res.number_empty > 0 && res.number_non_literal == 0
- && res.number_other == 0 && warn_format_zero_length)
- status_warning (status, "zero-length %s format string",
- format_types[info->format_type].name);
+ && res.number_other == 0)
+ status_warning (status, "zero-length format string");
if (res.number_wide > 0)
status_warning (status, "format is a wide character string");
@@ -1364,31 +1393,113 @@ check_format_info (status, info, params)
status_warning (status, "unterminated format string");
}
-/* Callback from check_function_arguments_recurse to check a
- format string. FORMAT_TREE is the format parameter. ARG_NUM
- is the number of the format argument. CTX points to a
- format_check_context. */
+
+/* Recursively check a call to a format function. FORMAT_TREE is the
+ format parameter, which may be a conditional expression in which
+ both halves should be checked. ARG_NUM is the number of the
+ format argument; PARAMS points just after it in the argument list. */
static void
-check_format_arg (ctx, format_tree, arg_num)
- void *ctx;
+check_format_info_recurse (status, res, info, format_tree, params, arg_num)
+ int *status;
+ format_check_results *res;
+ function_format_info *info;
tree format_tree;
+ tree params;
unsigned HOST_WIDE_INT arg_num;
{
- format_check_context *format_ctx = ctx;
- format_check_results *res = format_ctx->res;
- function_format_info *info = format_ctx->info;
- tree params = format_ctx->params;
- int *status = format_ctx->status;
-
int format_length;
HOST_WIDE_INT offset;
const char *format_chars;
tree array_size = 0;
tree array_init;
+ if (TREE_CODE (format_tree) == NOP_EXPR)
+ {
+ /* Strip coercion. */
+ check_format_info_recurse (status, res, info,
+ TREE_OPERAND (format_tree, 0), params,
+ arg_num);
+ return;
+ }
+
+ if (TREE_CODE (format_tree) == CALL_EXPR)
+ {
+ tree type = TREE_TYPE (TREE_TYPE (TREE_OPERAND (format_tree, 0)));
+ tree attrs;
+ bool found_format_arg = false;
+
+ /* See if this is a call to a known internationalization function
+ that modifies the format arg. Such a function may have multiple
+ format_arg attributes (for example, ngettext). */
+
+ for (attrs = TYPE_ATTRIBUTES (type);
+ attrs;
+ attrs = TREE_CHAIN (attrs))
+ if (is_attribute_p ("format_arg", TREE_PURPOSE (attrs)))
+ {
+ tree inner_args;
+ tree format_num_expr;
+ int format_num;
+ int i;
+
+ /* Extract the argument number, which was previously checked
+ to be valid. */
+ format_num_expr = TREE_VALUE (TREE_VALUE (attrs));
+ while (TREE_CODE (format_num_expr) == NOP_EXPR
+ || TREE_CODE (format_num_expr) == CONVERT_EXPR
+ || TREE_CODE (format_num_expr) == NON_LVALUE_EXPR)
+ format_num_expr = TREE_OPERAND (format_num_expr, 0);
+
+ if (TREE_CODE (format_num_expr) != INTEGER_CST
+ || TREE_INT_CST_HIGH (format_num_expr) != 0)
+ abort ();
+
+ format_num = TREE_INT_CST_LOW (format_num_expr);
+
+ for (inner_args = TREE_OPERAND (format_tree, 1), i = 1;
+ inner_args != 0;
+ inner_args = TREE_CHAIN (inner_args), i++)
+ if (i == format_num)
+ {
+ check_format_info_recurse (status, res, info,
+ TREE_VALUE (inner_args), params,
+ arg_num);
+ found_format_arg = true;
+ break;
+ }
+ }
+
+ /* If we found a format_arg attribute and did a recursive check,
+ we are done with checking this format string. Otherwise, we
+ continue and this will count as a non-literal format string. */
+ if (found_format_arg)
+ return;
+ }
+
+ if (TREE_CODE (format_tree) == COND_EXPR)
+ {
+ /* Check both halves of the conditional expression. */
+ check_format_info_recurse (status, res, info,
+ TREE_OPERAND (format_tree, 1), params,
+ arg_num);
+ check_format_info_recurse (status, res, info,
+ TREE_OPERAND (format_tree, 2), params,
+ arg_num);
+ return;
+ }
+
if (integer_zerop (format_tree))
{
+ /* FIXME: this warning should go away once Marc Espie's
+ __attribute__((nonnull)) patch is in. Instead, checking for
+ nonnull attributes should probably change this function to act
+ specially if info == NULL and add a res->number_null entry for
+ that case, or maybe add a function pointer to be called at
+ the end instead of hardcoding check_format_info_main. */
+ if (!format_types[info->format_type].null_format_ok)
+ status_warning (status, "null format string");
+
/* Skip to first argument to check, so we can see if this format
has any arguments (it shouldn't). */
while (arg_num + 1 < info->first_arg_num)
@@ -1663,6 +1774,11 @@ check_format_info_main (status, res, info, format_chars, format_length,
/* "...a field width...may be indicated by an asterisk.
In this case, an int argument supplies the field width..." */
++format_chars;
+ if (params == 0)
+ {
+ status_warning (status, "too few arguments for format");
+ return;
+ }
if (has_operand_number != 0)
{
int opnum;
@@ -1682,11 +1798,6 @@ check_format_info_main (status, res, info, format_chars, format_length,
}
if (info->first_arg_num != 0)
{
- if (params == 0)
- {
- status_warning (status, "too few arguments for format");
- return;
- }
cur_param = TREE_VALUE (params);
if (has_operand_number <= 0)
{
@@ -1898,6 +2009,57 @@ check_format_info_main (status, res, info, format_chars, format_length,
}
}
+ if (*format_chars == 'b')
+ {
+ /* There should be an int arg to control the string arg. */
+ if (params == 0)
+ {
+ status_warning (status, "too few arguments for format");
+ return;
+ }
+ if (info->first_arg_num != 0)
+ {
+ cur_param = TREE_VALUE (params);
+ params = TREE_CHAIN (params);
+ ++arg_num;
+ if ((TYPE_MAIN_VARIANT (TREE_TYPE (cur_param))
+ != integer_type_node)
+ &&
+ (TYPE_MAIN_VARIANT (TREE_TYPE (cur_param))
+ != unsigned_type_node))
+ {
+ status_warning (status, "bitmap is not type int (arg %d)",
+ arg_num);
+ }
+ }
+ }
+ if (*format_chars == 'D')
+ {
+ /* There should be an unsigned char * arg before the string arg. */
+ if (params == 0)
+ {
+ status_warning (status, "too few arguments for format");
+ return;
+ }
+ if (info->first_arg_num != 0)
+ {
+ tree cur_type;
+
+ cur_param = TREE_VALUE (params);
+ params = TREE_CHAIN (params);
+ ++arg_num;
+ cur_type = TREE_TYPE (cur_param);
+ if (TREE_CODE (cur_type) != POINTER_TYPE
+ || TYPE_MAIN_VARIANT (TREE_TYPE (cur_type))
+ != unsigned_char_type_node)
+ {
+ status_warning (status,
+ "ethernet address is not type unsigned char * (arg %d)",
+ arg_num);
+ }
+ }
+ }
+
format_char = *format_chars;
if (format_char == 0
|| (!(fki->flags & (int) FMT_FLAG_FANCY_PERCENT_OK)
@@ -2024,7 +2186,7 @@ check_format_info_main (status, res, info, format_chars, format_length,
else if (strchr (fci->flags2, '2') != 0)
y2k_level = 2;
if (y2k_level == 3)
- status_warning (status, "`%%%c' yields only last 2 digits of year in some locales",
+ status_warning (status, "`%%%c' yields only last 2 digits of year in some locales on non-BSD systems",
format_char);
else if (y2k_level == 2)
status_warning (status, "`%%%c' yields only last 2 digits of year", format_char);
@@ -2170,6 +2332,7 @@ check_format_types (status, types)
tree cur_type;
tree orig_cur_type;
tree wanted_type;
+ tree promoted_type;
int arg_num;
int i;
int char_type_flag;
@@ -2188,7 +2351,11 @@ check_format_types (status, types)
abort ();
if (types->pointer_count == 0)
- wanted_type = (*lang_hooks.types.type_promotes_to) (wanted_type);
+ {
+ promoted_type = simple_type_promotes_to (wanted_type);
+ if (promoted_type != NULL_TREE)
+ wanted_type = promoted_type;
+ }
STRIP_NOPS (cur_param);
@@ -2293,8 +2460,8 @@ check_format_types (status, types)
&& TREE_CODE (cur_type) == INTEGER_TYPE
&& (! pedantic || i == 0 || (i == 1 && char_type_flag))
&& (TREE_UNSIGNED (wanted_type)
- ? wanted_type == c_common_unsigned_type (cur_type)
- : wanted_type == c_common_signed_type (cur_type)))
+ ? wanted_type == unsigned_type (cur_type)
+ : wanted_type == signed_type (cur_type)))
continue;
/* Likewise, "signed char", "unsigned char" and "char" are
equivalent but the above test won't consider them equivalent. */
diff --git a/contrib/gcc/c-lex.c b/contrib/gcc/c-lex.c
index a60fbb0..3659872 100644
--- a/contrib/gcc/c-lex.c
+++ b/contrib/gcc/c-lex.c
@@ -1,6 +1,6 @@
-/* Mainly the interface between cpplib and the C front ends.
+/* Lexical analyzer for C and Objective C.
Copyright (C) 1987, 1988, 1989, 1992, 1994, 1995, 1996, 1997
- 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+ 1998, 1999, 2000 Free Software Foundation, Inc.
This file is part of GCC.
@@ -19,17 +19,18 @@ 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. */
+/* $FreeBSD$ */
+
#include "config.h"
#include "system.h"
-#include "real.h"
#include "rtl.h"
#include "tree.h"
#include "expr.h"
#include "input.h"
#include "output.h"
+#include "c-lex.h"
#include "c-tree.h"
-#include "c-common.h"
#include "flags.h"
#include "timevar.h"
#include "cpplib.h"
@@ -40,10 +41,20 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "splay-tree.h"
#include "debug.h"
+/* MULTIBYTE_CHARS support only works for native compilers.
+ ??? Ideally what we want is to model widechar support after
+ the current floating point support. */
+#ifdef CROSS_COMPILE
+#undef MULTIBYTE_CHARS
+#endif
+
#ifdef MULTIBYTE_CHARS
#include "mbchar.h"
#include <locale.h>
#endif /* MULTIBYTE_CHARS */
+#ifndef GET_ENVIRONMENT
+#define GET_ENVIRONMENT(ENV_VALUE,ENV_NAME) ((ENV_VALUE) = getenv (ENV_NAME))
+#endif
/* The current line map. */
static const struct line_map *map;
@@ -55,6 +66,9 @@ static unsigned int src_lineno;
static int header_time, body_time;
static splay_tree file_info_tree;
+/* Cause the `yydebug' variable to be defined. */
+#define YYDEBUG 1
+
/* File used for outputting assembler code. */
extern FILE *asm_out_file;
@@ -64,18 +78,15 @@ extern FILE *asm_out_file;
/* Number of bytes in a wide character. */
#define WCHAR_BYTES (WCHAR_TYPE_SIZE / BITS_PER_UNIT)
+int indent_level; /* Number of { minus number of }. */
int pending_lang_change; /* If we need to switch languages - C++ only */
int c_header_level; /* depth in C headers - C++ only */
/* Nonzero tells yylex to ignore \ in string constants. */
static int ignore_escape_flag;
-static tree interpret_integer PARAMS ((const cpp_token *, unsigned int));
-static tree interpret_float PARAMS ((const cpp_token *, unsigned int));
-static enum integer_type_kind
- narrowest_unsigned_type PARAMS ((tree, unsigned int));
-static enum integer_type_kind
- narrowest_signed_type PARAMS ((tree, unsigned int));
+static void parse_float PARAMS ((PTR));
+static tree lex_number PARAMS ((const char *, unsigned int));
static tree lex_string PARAMS ((const unsigned char *, unsigned int,
int));
static tree lex_charconst PARAMS ((const cpp_token *));
@@ -135,6 +146,9 @@ init_c_lex (filename)
/* Start it at 0. */
lineno = 0;
+ if (filename == NULL || !strcmp (filename, "-"))
+ filename = "";
+
return cpp_read_main_file (parse_in, filename, ident_hash);
}
@@ -143,21 +157,13 @@ init_c_lex (filename)
Also, make sure the start_source_file debug hook gets called for
the primary source file. */
-void
-c_common_parse_file (set_yydebug)
- int set_yydebug ATTRIBUTE_UNUSED;
+int
+yyparse()
{
-#if YYDEBUG != 0
- yydebug = set_yydebug;
-#else
- warning ("YYDEBUG not defined");
-#endif
-
(*debug_hooks->start_source_file) (lineno, input_filename);
cpp_finish_options (parse_in);
- yyparse ();
- free_parser_stacks ();
+ return yyparse_1();
}
struct c_fileinfo *
@@ -223,6 +229,9 @@ dump_time_statistics ()
splay_tree_foreach (file_info_tree, dump_one_header, 0);
}
+/* Not yet handled: #pragma, #define, #undef.
+ No need to deal with linemarkers under normal conditions. */
+
static void
cb_ident (pfile, line, str)
cpp_reader *pfile ATTRIBUTE_UNUSED;
@@ -269,6 +278,7 @@ cb_file_change (pfile, new_map)
lineno = included_at;
push_srcloc (new_map->to_file, 1);
+ input_file_stack->indent_level = indent_level;
(*debug_hooks->start_source_file) (included_at, new_map->to_file);
#ifndef NO_IMPLICIT_EXTERN_C
if (c_header_level)
@@ -291,13 +301,27 @@ cb_file_change (pfile, new_map)
--pending_lang_change;
}
#endif
+#if 0
+ if (indent_level != input_file_stack->indent_level)
+ {
+ warning_with_file_and_line
+ (input_filename, lineno,
+ "this file contains more '%c's than '%c's",
+ indent_level > input_file_stack->indent_level ? '{' : '}',
+ indent_level > input_file_stack->indent_level ? '}' : '{');
+ }
+#endif
pop_srcloc ();
(*debug_hooks->end_source_file) (to_line);
}
update_header_times (new_map->to_file);
+#ifndef FREEBSD_NATIVE
in_system_header = new_map->sysp != 0;
+#else /* FREEBSD_NATIVE */
+ in_system_header = 0;
+#endif /* FREEBSD_NATIVE */
input_filename = new_map->to_file;
lineno = to_line;
map = new_map;
@@ -664,7 +688,88 @@ utf8_extend_token (c)
while (shift);
}
#endif
+
+#if 0
+struct try_type
+{
+ tree *const node_var;
+ const char unsigned_flag;
+ const char long_flag;
+ const char long_long_flag;
+};
+
+struct try_type type_sequence[] =
+{
+ { &integer_type_node, 0, 0, 0},
+ { &unsigned_type_node, 1, 0, 0},
+ { &long_integer_type_node, 0, 1, 0},
+ { &long_unsigned_type_node, 1, 1, 0},
+ { &long_long_integer_type_node, 0, 1, 1},
+ { &long_long_unsigned_type_node, 1, 1, 1}
+};
+#endif /* 0 */
+struct pf_args
+{
+ /* Input */
+ const char *str;
+ int fflag;
+ int lflag;
+ int base;
+ /* Output */
+ int conversion_errno;
+ REAL_VALUE_TYPE value;
+ tree type;
+};
+
+static void
+parse_float (data)
+ PTR data;
+{
+ struct pf_args * args = (struct pf_args *) data;
+ const char *typename;
+
+ args->conversion_errno = 0;
+ args->type = double_type_node;
+ typename = "double";
+
+ /* The second argument, machine_mode, of REAL_VALUE_ATOF
+ tells the desired precision of the binary result
+ of decimal-to-binary conversion. */
+
+ if (args->fflag)
+ {
+ if (args->lflag)
+ error ("both 'f' and 'l' suffixes on floating constant");
+
+ args->type = float_type_node;
+ typename = "float";
+ }
+ else if (args->lflag)
+ {
+ args->type = long_double_type_node;
+ typename = "long double";
+ }
+ else if (flag_single_precision_constant)
+ {
+ args->type = float_type_node;
+ typename = "float";
+ }
+
+ errno = 0;
+ if (args->base == 16)
+ args->value = REAL_VALUE_HTOF (args->str, TYPE_MODE (args->type));
+ else
+ args->value = REAL_VALUE_ATOF (args->str, TYPE_MODE (args->type));
+
+ args->conversion_errno = errno;
+ /* A diagnostic is required here by some ISO C testsuites.
+ This is not pedwarn, because some people don't want
+ an error for this. */
+ if (REAL_VALUE_ISINF (args->value) && pedantic)
+ warning ("floating point number exceeds range of '%s'", typename);
+}
+
int
c_lex (value)
tree *value;
@@ -686,6 +791,9 @@ c_lex (value)
*value = NULL_TREE;
switch (tok->type)
{
+ case CPP_OPEN_BRACE: indent_level++; break;
+ case CPP_CLOSE_BRACE: indent_level--; break;
+
/* Issue this error here, where we can get at tok->val.c. */
case CPP_OTHER:
if (ISGRAPH (tok->val.c))
@@ -699,28 +807,7 @@ c_lex (value)
break;
case CPP_NUMBER:
- {
- unsigned int flags = cpp_classify_number (parse_in, tok);
-
- switch (flags & CPP_N_CATEGORY)
- {
- case CPP_N_INVALID:
- /* cpplib has issued an error. */
- *value = error_mark_node;
- break;
-
- case CPP_N_INTEGER:
- *value = interpret_integer (tok, flags);
- break;
-
- case CPP_N_FLOATING:
- *value = interpret_float (tok, flags);
- break;
-
- default:
- abort ();
- }
- }
+ *value = lex_number ((const char *)tok->val.str.text, tok->val.str.len);
break;
case CPP_CHAR:
@@ -746,203 +833,476 @@ c_lex (value)
return tok->type;
}
-/* Returns the narrowest C-visible unsigned type, starting with the
- minimum specified by FLAGS, that can fit VALUE, or itk_none if
- there isn't one. */
-static enum integer_type_kind
-narrowest_unsigned_type (value, flags)
- tree value;
- unsigned int flags;
+#define ERROR(msgid) do { error(msgid); goto syntax_error; } while(0)
+
+static tree
+lex_number (str, len)
+ const char *str;
+ unsigned int len;
{
- enum integer_type_kind itk;
+ int base = 10;
+ int count = 0;
+ int largest_digit = 0;
+ int numdigits = 0;
+ int overflow = 0;
+ int c;
+ tree value;
+ const char *p;
+ enum anon1 { NOT_FLOAT = 0, AFTER_POINT, AFTER_EXPON } floatflag = NOT_FLOAT;
+
+ /* We actually store only HOST_BITS_PER_CHAR bits in each part.
+ The code below which fills the parts array assumes that a host
+ int is at least twice as wide as a host char, and that
+ HOST_BITS_PER_WIDE_INT is an even multiple of HOST_BITS_PER_CHAR.
+ Two HOST_WIDE_INTs is the largest int literal we can store.
+ In order to detect overflow below, the number of parts (TOTAL_PARTS)
+ must be exactly the number of parts needed to hold the bits
+ of two HOST_WIDE_INTs. */
+#define TOTAL_PARTS ((HOST_BITS_PER_WIDE_INT / HOST_BITS_PER_CHAR) * 2)
+ unsigned int parts[TOTAL_PARTS];
+
+ /* Optimize for most frequent case. */
+ if (len == 1)
+ {
+ if (*str == '0')
+ return integer_zero_node;
+ else if (*str == '1')
+ return integer_one_node;
+ else
+ return build_int_2 (*str - '0', 0);
+ }
- if ((flags & CPP_N_WIDTH) == CPP_N_SMALL)
- itk = itk_unsigned_int;
- else if ((flags & CPP_N_WIDTH) == CPP_N_MEDIUM)
- itk = itk_unsigned_long;
- else
- itk = itk_unsigned_long_long;
+ for (count = 0; count < TOTAL_PARTS; count++)
+ parts[count] = 0;
- /* int_fits_type_p must think the type of its first argument is
- wider than its second argument, or it won't do the proper check. */
- TREE_TYPE (value) = widest_unsigned_literal_type_node;
+ /* len is known to be >1 at this point. */
+ p = str;
- for (; itk < itk_none; itk += 2 /* skip unsigned types */)
- if (int_fits_type_p (value, integer_types[itk]))
- return itk;
+ if (len > 2 && str[0] == '0' && (str[1] == 'x' || str[1] == 'X'))
+ {
+ base = 16;
+ p = str + 2;
+ }
+ /* The ISDIGIT check is so we are not confused by a suffix on 0. */
+ else if (str[0] == '0' && ISDIGIT (str[1]))
+ {
+ base = 8;
+ p = str + 1;
+ }
- return itk_none;
-}
+ do
+ {
+ c = *p++;
-/* Ditto, but narrowest signed type. */
-static enum integer_type_kind
-narrowest_signed_type (value, flags)
- tree value;
- unsigned int flags;
-{
- enum integer_type_kind itk;
+ if (c == '.')
+ {
+ if (floatflag == AFTER_POINT)
+ ERROR ("too many decimal points in floating constant");
+ else if (floatflag == AFTER_EXPON)
+ ERROR ("decimal point in exponent - impossible!");
+ else
+ floatflag = AFTER_POINT;
+
+ if (base == 8)
+ base = 10;
+ }
+ else if (c == '_')
+ /* Possible future extension: silently ignore _ in numbers,
+ permitting cosmetic grouping - e.g. 0x8000_0000 == 0x80000000
+ but somewhat easier to read. Ada has this? */
+ ERROR ("underscore in number");
+ else
+ {
+ int n;
+ /* It is not a decimal point.
+ It should be a digit (perhaps a hex digit). */
- if ((flags & CPP_N_WIDTH) == CPP_N_SMALL)
- itk = itk_int;
- else if ((flags & CPP_N_WIDTH) == CPP_N_MEDIUM)
- itk = itk_long;
- else
- itk = itk_long_long;
+ if (ISDIGIT (c)
+ || (base == 16 && ISXDIGIT (c)))
+ {
+ n = hex_value (c);
+ }
+ else if (base <= 10 && (c == 'e' || c == 'E'))
+ {
+ base = 10;
+ floatflag = AFTER_EXPON;
+ break;
+ }
+ else if (base == 16 && (c == 'p' || c == 'P'))
+ {
+ floatflag = AFTER_EXPON;
+ break; /* start of exponent */
+ }
+ else
+ {
+ p--;
+ break; /* start of suffix */
+ }
- /* int_fits_type_p must think the type of its first argument is
- wider than its second argument, or it won't do the proper check. */
- TREE_TYPE (value) = widest_unsigned_literal_type_node;
+ if (n >= largest_digit)
+ largest_digit = n;
+ numdigits++;
- for (; itk < itk_none; itk += 2 /* skip signed types */)
- if (int_fits_type_p (value, integer_types[itk]))
- return itk;
+ for (count = 0; count < TOTAL_PARTS; count++)
+ {
+ parts[count] *= base;
+ if (count)
+ {
+ parts[count]
+ += (parts[count-1] >> HOST_BITS_PER_CHAR);
+ parts[count-1]
+ &= (1 << HOST_BITS_PER_CHAR) - 1;
+ }
+ else
+ parts[0] += n;
+ }
- return itk_none;
-}
+ /* If the highest-order part overflows (gets larger than
+ a host char will hold) then the whole number has
+ overflowed. Record this and truncate the highest-order
+ part. */
+ if (parts[TOTAL_PARTS - 1] >> HOST_BITS_PER_CHAR)
+ {
+ overflow = 1;
+ parts[TOTAL_PARTS - 1] &= (1 << HOST_BITS_PER_CHAR) - 1;
+ }
+ }
+ }
+ while (p < str + len);
-/* Interpret TOKEN, an integer with FLAGS as classified by cpplib. */
-static tree
-interpret_integer (token, flags)
- const cpp_token *token;
- unsigned int flags;
-{
- tree value, type;
- enum integer_type_kind itk;
- cpp_num integer;
- cpp_options *options = cpp_get_options (parse_in);
-
- integer = cpp_interpret_integer (parse_in, token, flags);
- integer = cpp_num_sign_extend (integer, options->precision);
- value = build_int_2_wide (integer.low, integer.high);
-
- /* The type of a constant with a U suffix is straightforward. */
- if (flags & CPP_N_UNSIGNED)
- itk = narrowest_unsigned_type (value, flags);
- else
+ /* This can happen on input like `int i = 0x;' */
+ if (numdigits == 0)
+ ERROR ("numeric constant with no digits");
+
+ if (largest_digit >= base)
+ ERROR ("numeric constant contains digits beyond the radix");
+
+ if (floatflag != NOT_FLOAT)
{
- /* The type of a potentially-signed integer constant varies
- depending on the base it's in, the standard in use, and the
- length suffixes. */
- enum integer_type_kind itk_u = narrowest_unsigned_type (value, flags);
- enum integer_type_kind itk_s = narrowest_signed_type (value, flags);
-
- /* In both C89 and C99, octal and hex constants may be signed or
- unsigned, whichever fits tighter. We do not warn about this
- choice differing from the traditional choice, as the constant
- is probably a bit pattern and either way will work. */
- if ((flags & CPP_N_RADIX) != CPP_N_DECIMAL)
- itk = MIN (itk_u, itk_s);
+ tree type;
+ int imag, fflag, lflag, conversion_errno;
+ REAL_VALUE_TYPE real;
+ struct pf_args args;
+ char *copy;
+
+ if (base == 16 && pedantic && !flag_isoc99)
+ pedwarn ("floating constant may not be in radix 16");
+
+ if (base == 16 && floatflag != AFTER_EXPON)
+ ERROR ("hexadecimal floating constant has no exponent");
+
+ /* Read explicit exponent if any, and put it in tokenbuf. */
+ if ((base == 10 && ((c == 'e') || (c == 'E')))
+ || (base == 16 && (c == 'p' || c == 'P')))
+ {
+ if (p < str + len)
+ c = *p++;
+ if (p < str + len && (c == '+' || c == '-'))
+ c = *p++;
+ /* Exponent is decimal, even if string is a hex float. */
+ if (! ISDIGIT (c))
+ ERROR ("floating constant exponent has no digits");
+ while (p < str + len && ISDIGIT (c))
+ c = *p++;
+ if (! ISDIGIT (c))
+ p--;
+ }
+
+ /* Copy the float constant now; we don't want any suffixes in the
+ string passed to parse_float. */
+ copy = alloca (p - str + 1);
+ memcpy (copy, str, p - str);
+ copy[p - str] = '\0';
+
+ /* Now parse suffixes. */
+ fflag = lflag = imag = 0;
+ while (p < str + len)
+ switch (*p++)
+ {
+ case 'f': case 'F':
+ if (fflag)
+ ERROR ("more than one 'f' suffix on floating constant");
+ else if (warn_traditional && !in_system_header
+ && ! cpp_sys_macro_p (parse_in))
+ warning ("traditional C rejects the 'f' suffix");
+
+ fflag = 1;
+ break;
+
+ case 'l': case 'L':
+ if (lflag)
+ ERROR ("more than one 'l' suffix on floating constant");
+ else if (warn_traditional && !in_system_header
+ && ! cpp_sys_macro_p (parse_in))
+ warning ("traditional C rejects the 'l' suffix");
+
+ lflag = 1;
+ break;
+
+ case 'i': case 'I':
+ case 'j': case 'J':
+ if (imag)
+ ERROR ("more than one 'i' or 'j' suffix on floating constant");
+ else if (pedantic)
+ pedwarn ("ISO C forbids imaginary numeric constants");
+ imag = 1;
+ break;
+
+ default:
+ ERROR ("invalid suffix on floating constant");
+ }
+
+ /* Setup input for parse_float() */
+ args.str = copy;
+ args.fflag = fflag;
+ args.lflag = lflag;
+ args.base = base;
+
+ /* Convert string to a double, checking for overflow. */
+ if (do_float_handler (parse_float, (PTR) &args))
+ {
+ /* Receive output from parse_float() */
+ real = args.value;
+ }
+ else
+ /* We got an exception from parse_float() */
+ ERROR ("floating constant out of range");
+
+ /* Receive output from parse_float() */
+ conversion_errno = args.conversion_errno;
+ type = args.type;
+
+#ifdef ERANGE
+ /* ERANGE is also reported for underflow,
+ so test the value to distinguish overflow from that. */
+ if (conversion_errno == ERANGE && !flag_traditional && pedantic
+ && (REAL_VALUES_LESS (dconst1, real)
+ || REAL_VALUES_LESS (real, dconstm1)))
+ warning ("floating point number exceeds range of 'double'");
+#endif
+
+ /* Create a node with determined type and value. */
+ if (imag)
+ value = build_complex (NULL_TREE, convert (type, integer_zero_node),
+ build_real (type, real));
else
+ value = build_real (type, real);
+ }
+ else
+ {
+ tree trad_type, ansi_type, type;
+ HOST_WIDE_INT high, low;
+ int spec_unsigned = 0;
+ int spec_long = 0;
+ int spec_long_long = 0;
+ int spec_imag = 0;
+ int suffix_lu = 0;
+ int warn = 0, i;
+
+ trad_type = ansi_type = type = NULL_TREE;
+ while (p < str + len)
{
- /* In C99, decimal constants are always signed.
- In C89, decimal constants that don't fit in long have
- undefined behavior; we try to make them unsigned long.
- In GCC's extended C89, that last is true of decimal
- constants that don't fit in long long, too. */
-
- itk = itk_s;
- if (itk_s > itk_u && itk_s > itk_long)
+ c = *p++;
+ switch (c)
{
- if (!flag_isoc99)
+ case 'u': case 'U':
+ if (spec_unsigned)
+ error ("two 'u' suffixes on integer constant");
+ else if (warn_traditional && !in_system_header
+ && ! cpp_sys_macro_p (parse_in))
+ warning ("traditional C rejects the 'u' suffix");
+
+ spec_unsigned = 1;
+ if (spec_long)
+ suffix_lu = 1;
+ break;
+
+ case 'l': case 'L':
+ if (spec_long)
{
- if (itk_u < itk_unsigned_long)
- itk_u = itk_unsigned_long;
- itk = itk_u;
- warning ("this decimal constant is unsigned only in ISO C90");
+ if (spec_long_long)
+ error ("three 'l' suffixes on integer constant");
+ else if (suffix_lu)
+ error ("'lul' is not a valid integer suffix");
+ else if (c != spec_long)
+ error ("'Ll' and 'lL' are not valid integer suffixes");
+ else if (pedantic && ! flag_isoc99
+ && ! in_system_header && warn_long_long)
+ pedwarn ("ISO C89 forbids long long integer constants");
+ spec_long_long = 1;
}
- else if (warn_traditional)
- warning ("this decimal constant would be unsigned in ISO C90");
+ spec_long = c;
+ break;
+
+ case 'i': case 'I': case 'j': case 'J':
+ if (spec_imag)
+ error ("more than one 'i' or 'j' suffix on integer constant");
+ else if (pedantic)
+ pedwarn ("ISO C forbids imaginary numeric constants");
+ spec_imag = 1;
+ break;
+
+ default:
+ ERROR ("invalid suffix on integer constant");
}
}
- }
- if (itk == itk_none)
- /* cpplib has already issued a warning for overflow. */
- type = ((flags & CPP_N_UNSIGNED)
- ? widest_unsigned_literal_type_node
- : widest_integer_literal_type_node);
- else
- type = integer_types[itk];
+ /* If the literal overflowed, pedwarn about it now. */
+ if (overflow)
+ {
+ warn = 1;
+ pedwarn ("integer constant is too large for this configuration of the compiler - truncated to %d bits", HOST_BITS_PER_WIDE_INT * 2);
+ }
- if (itk > itk_unsigned_long
- && (flags & CPP_N_WIDTH) != CPP_N_LARGE
- && ! in_system_header && ! flag_isoc99)
- pedwarn ("integer constant is too large for \"%s\" type",
- (flags & CPP_N_UNSIGNED) ? "unsigned long" : "long");
+ /* This is simplified by the fact that our constant
+ is always positive. */
- TREE_TYPE (value) = type;
+ high = low = 0;
- /* Convert imaginary to a complex type. */
- if (flags & CPP_N_IMAGINARY)
- value = build_complex (NULL_TREE, convert (type, integer_zero_node), value);
+ for (i = 0; i < HOST_BITS_PER_WIDE_INT / HOST_BITS_PER_CHAR; i++)
+ {
+ high |= ((HOST_WIDE_INT) parts[i + (HOST_BITS_PER_WIDE_INT
+ / HOST_BITS_PER_CHAR)]
+ << (i * HOST_BITS_PER_CHAR));
+ low |= (HOST_WIDE_INT) parts[i] << (i * HOST_BITS_PER_CHAR);
+ }
- return value;
-}
+ value = build_int_2 (low, high);
+ TREE_TYPE (value) = long_long_unsigned_type_node;
-/* Interpret TOKEN, a floating point number with FLAGS as classified
- by cpplib. */
-static tree
-interpret_float (token, flags)
- const cpp_token *token;
- unsigned int flags;
-{
- tree type;
- tree value;
- REAL_VALUE_TYPE real;
- char *copy;
- size_t copylen;
- const char *typename;
+ /* If warn_traditional, calculate both the ISO type and the
+ traditional type, then see if they disagree.
+ Otherwise, calculate only the type for the dialect in use. */
+ if (warn_traditional || flag_traditional)
+ {
+ /* Calculate the traditional type. */
+ /* Traditionally, any constant is signed; but if unsigned is
+ specified explicitly, obey that. Use the smallest size
+ with the right number of bits, except for one special
+ case with decimal constants. */
+ if (! spec_long && base != 10
+ && int_fits_type_p (value, unsigned_type_node))
+ trad_type = spec_unsigned ? unsigned_type_node : integer_type_node;
+ /* A decimal constant must be long if it does not fit in
+ type int. I think this is independent of whether the
+ constant is signed. */
+ else if (! spec_long && base == 10
+ && int_fits_type_p (value, integer_type_node))
+ trad_type = spec_unsigned ? unsigned_type_node : integer_type_node;
+ else if (! spec_long_long)
+ trad_type = (spec_unsigned
+ ? long_unsigned_type_node
+ : long_integer_type_node);
+ else if (int_fits_type_p (value,
+ spec_unsigned
+ ? long_long_unsigned_type_node
+ : long_long_integer_type_node))
+ trad_type = (spec_unsigned
+ ? long_long_unsigned_type_node
+ : long_long_integer_type_node);
+ else
+ trad_type = (spec_unsigned
+ ? widest_unsigned_literal_type_node
+ : widest_integer_literal_type_node);
+ }
+ if (warn_traditional || ! flag_traditional)
+ {
+ /* Calculate the ISO type. */
+ if (! spec_long && ! spec_unsigned
+ && int_fits_type_p (value, integer_type_node))
+ ansi_type = integer_type_node;
+ else if (! spec_long && (base != 10 || spec_unsigned)
+ && int_fits_type_p (value, unsigned_type_node))
+ ansi_type = unsigned_type_node;
+ else if (! spec_unsigned && !spec_long_long
+ && int_fits_type_p (value, long_integer_type_node))
+ ansi_type = long_integer_type_node;
+ else if (! spec_long_long
+ && int_fits_type_p (value, long_unsigned_type_node))
+ ansi_type = long_unsigned_type_node;
+ else if (! spec_unsigned
+ && int_fits_type_p (value, long_long_integer_type_node))
+ ansi_type = long_long_integer_type_node;
+ else if (int_fits_type_p (value, long_long_unsigned_type_node))
+ ansi_type = long_long_unsigned_type_node;
+ else if (! spec_unsigned
+ && int_fits_type_p (value, widest_integer_literal_type_node))
+ ansi_type = widest_integer_literal_type_node;
+ else
+ ansi_type = widest_unsigned_literal_type_node;
+ }
- /* FIXME: make %T work in error/warning, then we don't need typename. */
- if ((flags & CPP_N_WIDTH) == CPP_N_LARGE)
- {
- type = long_double_type_node;
- typename = "long double";
- }
- else if ((flags & CPP_N_WIDTH) == CPP_N_SMALL
- || flag_single_precision_constant)
- {
- type = float_type_node;
- typename = "float";
- }
- else
- {
- type = double_type_node;
- typename = "double";
+ type = flag_traditional ? trad_type : ansi_type;
+
+ /* We assume that constants specified in a non-decimal
+ base are bit patterns, and that the programmer really
+ meant what they wrote. */
+ if (warn_traditional && !in_system_header
+ && base == 10 && trad_type != ansi_type)
+ {
+ if (TYPE_PRECISION (trad_type) != TYPE_PRECISION (ansi_type))
+ warning ("width of integer constant changes with -traditional");
+ else if (TREE_UNSIGNED (trad_type) != TREE_UNSIGNED (ansi_type))
+ warning ("integer constant is unsigned in ISO C, signed with -traditional");
+ else
+ warning ("width of integer constant may change on other systems with -traditional");
+ }
+
+ if (pedantic && !flag_traditional && (flag_isoc99 || !spec_long_long)
+ && !warn
+ && ((flag_isoc99
+ ? TYPE_PRECISION (long_long_integer_type_node)
+ : TYPE_PRECISION (long_integer_type_node)) < TYPE_PRECISION (type)))
+ {
+ warn = 1;
+ pedwarn ("integer constant larger than the maximum value of %s",
+ (flag_isoc99
+ ? (TREE_UNSIGNED (type)
+ ? _("an unsigned long long int")
+ : _("a long long int"))
+ : _("an unsigned long int")));
+ }
+
+ if (base == 10 && ! spec_unsigned && TREE_UNSIGNED (type))
+ warning ("decimal constant is so large that it is unsigned");
+
+ if (spec_imag)
+ {
+ if (TYPE_PRECISION (type)
+ <= TYPE_PRECISION (integer_type_node))
+ value = build_complex (NULL_TREE, integer_zero_node,
+ convert (integer_type_node, value));
+ else
+ ERROR ("complex integer constant is too wide for 'complex int'");
+ }
+ else if (flag_traditional && !int_fits_type_p (value, type))
+ /* The traditional constant 0x80000000 is signed
+ but doesn't fit in the range of int.
+ This will change it to -0x80000000, which does fit. */
+ {
+ TREE_TYPE (value) = unsigned_type (type);
+ value = convert (type, value);
+ TREE_OVERFLOW (value) = TREE_CONSTANT_OVERFLOW (value) = 0;
+ }
+ else
+ TREE_TYPE (value) = type;
+
+ /* If it's still an integer (not a complex), and it doesn't
+ fit in the type we choose for it, then pedwarn. */
+
+ if (! warn
+ && TREE_CODE (TREE_TYPE (value)) == INTEGER_TYPE
+ && ! int_fits_type_p (value, TREE_TYPE (value)))
+ pedwarn ("integer constant is larger than the maximum value for its type");
}
- /* Copy the constant to a nul-terminated buffer. If the constant
- has any suffixes, cut them off; REAL_VALUE_ATOF/ REAL_VALUE_HTOF
- can't handle them. */
- copylen = token->val.str.len;
- if ((flags & CPP_N_WIDTH) != CPP_N_MEDIUM)
- /* Must be an F or L suffix. */
- copylen--;
- if (flags & CPP_N_IMAGINARY)
- /* I or J suffix. */
- copylen--;
-
- copy = alloca (copylen + 1);
- memcpy (copy, token->val.str.text, copylen);
- copy[copylen] = '\0';
-
- real_from_string (&real, copy);
- real_convert (&real, TYPE_MODE (type), &real);
-
- /* A diagnostic is required for "soft" overflow by some ISO C
- testsuites. This is not pedwarn, because some people don't want
- an error for this.
- ??? That's a dubious reason... is this a mandatory diagnostic or
- isn't it? -- zw, 2001-08-21. */
- if (REAL_VALUE_ISINF (real) && pedantic)
- warning ("floating constant exceeds range of \"%s\"", typename);
-
- /* Create a node with determined type and value. */
- value = build_real (type, real);
- if (flags & CPP_N_IMAGINARY)
- value = build_complex (NULL_TREE, convert (type, integer_zero_node), value);
+ if (p < str + len)
+ error ("missing white space after number '%.*s'", (int) (p - str), str);
return value;
+
+ syntax_error:
+ return integer_zero_node;
}
static tree
@@ -955,7 +1315,9 @@ lex_string (str, len, wide)
char *buf = alloca ((len + 1) * (wide ? WCHAR_BYTES : 1));
char *q = buf;
const unsigned char *p = str, *limit = str + len;
- cppchar_t c;
+ unsigned int c;
+ unsigned width = wide ? WCHAR_TYPE_SIZE
+ : TYPE_PRECISION (char_type_node);
#ifdef MULTIBYTE_CHARS
/* Reset multibyte conversion state. */
@@ -985,10 +1347,19 @@ lex_string (str, len, wide)
#endif
if (c == '\\' && !ignore_escape_flag)
- c = cpp_parse_escape (parse_in, &p, limit, wide);
+ {
+ unsigned int mask;
+
+ if (width < HOST_BITS_PER_INT)
+ mask = ((unsigned int) 1 << width) - 1;
+ else
+ mask = ~0;
+ c = cpp_parse_escape (parse_in, &p, limit,
+ mask, flag_traditional);
+ }
- /* Add this single character into the buffer either as a wchar_t,
- a multibyte sequence, or as a single byte. */
+ /* Add this single character into the buffer either as a wchar_t
+ or as a single byte. */
if (wide)
{
unsigned charwidth = TYPE_PRECISION (char_type_node);
@@ -1009,16 +1380,6 @@ lex_string (str, len, wide)
}
q += WCHAR_BYTES;
}
-#ifdef MULTIBYTE_CHARS
- else if (char_len > 1)
- {
- /* We're dealing with a multibyte character. */
- for ( ; char_len >0; --char_len)
- {
- *q++ = *(p - char_len);
- }
- }
-#endif
else
{
*q++ = c;
@@ -1052,30 +1413,45 @@ static tree
lex_charconst (token)
const cpp_token *token;
{
- cppchar_t result;
+ HOST_WIDE_INT result;
tree type, value;
unsigned int chars_seen;
- int unsignedp;
+
+ result = cpp_interpret_charconst (parse_in, token, warn_multichar,
+ flag_traditional, &chars_seen);
+ if (token->type == CPP_WCHAR)
+ {
+ value = build_int_2 (result, 0);
+ type = wchar_type_node;
+ }
+ else
+ {
+ if (result < 0)
+ value = build_int_2 (result, -1);
+ else
+ value = build_int_2 (result, 0);
+
+ /* In C, a character constant has type 'int'.
+ In C++ 'char', but multi-char charconsts have type 'int'. */
+ if (c_language == clk_cplusplus && chars_seen <= 1)
+ type = char_type_node;
+ else
+ type = integer_type_node;
+ }
- result = cpp_interpret_charconst (parse_in, token,
- &chars_seen, &unsignedp);
+ /* cpp_interpret_charconst issues a warning if the constant
+ overflows, but if the number fits in HOST_WIDE_INT anyway, it
+ will return it un-truncated, which may cause problems down the
+ line. So set the type to widest_integer_literal_type, call
+ convert to truncate it to the proper type, then clear
+ TREE_OVERFLOW so we don't get a second warning.
- /* Cast to cppchar_signed_t to get correct sign-extension of RESULT
- before possibly widening to HOST_WIDE_INT for build_int_2. */
- if (unsignedp || (cppchar_signed_t) result >= 0)
- value = build_int_2 (result, 0);
- else
- value = build_int_2 ((cppchar_signed_t) result, -1);
+ FIXME: cpplib's assessment of overflow may not be accurate on a
+ platform where the final type can change at (compiler's) runtime. */
- if (token->type == CPP_WCHAR)
- type = wchar_type_node;
- /* In C, a character constant has type 'int'.
- In C++ 'char', but multi-char charconsts have type 'int'. */
- else if ((c_language == clk_c) || chars_seen > 1)
- type = integer_type_node;
- else
- type = char_type_node;
+ TREE_TYPE (value) = widest_integer_literal_type_node;
+ value = convert (type, value);
+ TREE_OVERFLOW (value) = 0;
- TREE_TYPE (value) = type;
return value;
}
diff --git a/contrib/gcc/c-tree.h b/contrib/gcc/c-tree.h
index 159c235..54208db 100644
--- a/contrib/gcc/c-tree.h
+++ b/contrib/gcc/c-tree.h
@@ -34,32 +34,16 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
lang_identifier nodes, because some keywords are only special in a
particular context. */
-struct lang_identifier GTY(())
+struct lang_identifier
{
- struct c_common_identifier common_id;
- tree global_value;
- tree local_value;
- tree label_value;
- tree implicit_decl;
- tree error_locus;
- tree limbo_value;
-};
-
-/* The resulting tree type. */
-
-union lang_tree_node
- GTY((desc ("TREE_CODE (&%h.generic) == IDENTIFIER_NODE"),
- chain_next ("(union lang_tree_node *)TREE_CHAIN (&%h.generic)")))
-{
- union tree_node GTY ((tag ("0"),
- desc ("tree_node_structure (&%h)")))
- generic;
- struct lang_identifier GTY ((tag ("1"))) identifier;
+ struct c_common_identifier ignore;
+ tree global_value, local_value, label_value, implicit_decl;
+ tree error_locus, limbo_value;
};
/* Language-specific declaration information. */
-struct lang_decl GTY(())
+struct lang_decl
{
struct c_lang_decl base;
/* The return types and parameter types may have variable size.
@@ -123,10 +107,10 @@ struct lang_decl GTY(())
(DECL_LANG_SPECIFIC (NODE)->base.declared_inline)
/* In a RECORD_TYPE, a sorted array of the fields of the type. */
-struct lang_type GTY(())
+struct lang_type
{
int len;
- tree GTY((length ("%h.len"))) elts[1];
+ tree elts[1];
};
/* Record whether a type or decl was written with nonconstant size.
@@ -166,36 +150,29 @@ struct lang_type GTY(())
/* in c-lang.c and objc-act.c */
extern tree lookup_interface PARAMS ((tree));
extern tree is_class_name PARAMS ((tree));
-extern tree objc_is_id PARAMS ((tree));
-extern void objc_check_decl PARAMS ((tree));
+extern void maybe_objc_check_decl PARAMS ((tree));
extern void finish_file PARAMS ((void));
-extern int objc_comptypes PARAMS ((tree, tree, int));
-extern tree objc_message_selector PARAMS ((void));
+extern int maybe_objc_comptypes PARAMS ((tree, tree, int));
+extern tree maybe_building_objc_message_expr PARAMS ((void));
+extern int recognize_objc_keyword PARAMS ((void));
extern tree lookup_objc_ivar PARAMS ((tree));
/* in c-parse.in */
extern void c_parse_init PARAMS ((void));
+extern void c_set_yydebug PARAMS ((int));
+extern int yyparse_1 PARAMS ((void));
/* in c-aux-info.c */
extern void gen_aux_info_record PARAMS ((tree, int, int, int));
/* in c-decl.c */
-extern int global_bindings_p PARAMS ((void));
-extern int kept_level_p PARAMS ((void));
-extern tree getdecls PARAMS ((void));
-extern void pushlevel PARAMS ((int));
-extern tree poplevel PARAMS ((int,int, int));
-extern void insert_block PARAMS ((tree));
-extern void set_block PARAMS ((tree));
-extern tree pushdecl PARAMS ((tree));
-
-extern void c_insert_default_attributes PARAMS ((tree));
extern void c_init_decl_processing PARAMS ((void));
-extern void c_dup_lang_specific_decl PARAMS ((tree));
extern void c_print_identifier PARAMS ((FILE *, tree, int));
extern tree build_array_declarator PARAMS ((tree, tree, int, int));
extern tree build_enumerator PARAMS ((tree, tree));
+extern int c_decode_option PARAMS ((int, char **));
+extern void c_mark_varargs PARAMS ((void));
extern void check_for_loop_decls PARAMS ((void));
extern void clear_parm_order PARAMS ((void));
extern int complete_array_type PARAMS ((tree, tree, int));
@@ -214,12 +191,14 @@ extern tree implicitly_declare PARAMS ((tree));
extern void implicit_decl_warning PARAMS ((tree));
extern int in_parm_level_p PARAMS ((void));
extern void keep_next_level PARAMS ((void));
+extern int kept_level_p PARAMS ((void));
extern tree lookup_name PARAMS ((tree));
extern tree lookup_name_current_level PARAMS ((tree));
extern void parmlist_tags_warning PARAMS ((void));
extern void pending_xref_error PARAMS ((void));
-extern void c_push_function_context PARAMS ((struct function *));
-extern void c_pop_function_context PARAMS ((struct function *));
+extern void mark_c_function_context PARAMS ((struct function *));
+extern void push_c_function_context PARAMS ((struct function *));
+extern void pop_c_function_context PARAMS ((struct function *));
extern void pop_label_level PARAMS ((void));
extern void push_label_level PARAMS ((void));
extern void push_parm_decl PARAMS ((tree));
@@ -239,7 +218,7 @@ extern tree xref_tag PARAMS ((enum tree_code, tree));
extern tree c_begin_compound_stmt PARAMS ((void));
extern void c_expand_deferred_function PARAMS ((tree));
extern void c_expand_decl_stmt PARAMS ((tree));
-extern tree make_pointer_declarator PARAMS ((tree, tree));
+
/* in c-objc-common.c */
extern int c_disregard_inline_limits PARAMS ((tree));
@@ -248,28 +227,23 @@ extern const char *c_objc_common_init PARAMS ((const char *));
extern int c_missing_noreturn_ok_p PARAMS ((tree));
extern void c_objc_common_finish_file PARAMS ((void));
extern int defer_fn PARAMS ((tree));
-extern bool c_warn_unused_global_decl PARAMS ((tree));
#define c_build_type_variant(TYPE, CONST_P, VOLATILE_P) \
c_build_qualified_type ((TYPE), \
((CONST_P) ? TYPE_QUAL_CONST : 0) | \
((VOLATILE_P) ? TYPE_QUAL_VOLATILE : 0))
-#define c_sizeof_nowarn(T) c_sizeof_or_alignof_type (T, SIZEOF_EXPR, 0)
/* in c-typeck.c */
extern tree require_complete_type PARAMS ((tree));
extern int comptypes PARAMS ((tree, tree));
+extern tree c_sizeof_nowarn PARAMS ((tree));
extern tree c_size_in_bytes PARAMS ((tree));
-extern bool c_mark_addressable PARAMS ((tree));
-extern void c_incomplete_type_error PARAMS ((tree, tree));
-extern tree c_type_promotes_to PARAMS ((tree));
extern tree build_component_ref PARAMS ((tree, tree));
extern tree build_indirect_ref PARAMS ((tree, const char *));
extern tree build_array_ref PARAMS ((tree, tree));
extern tree build_external_ref PARAMS ((tree, int));
extern tree parser_build_binary_op PARAMS ((enum tree_code,
tree, tree));
-extern int c_tree_expr_nonnegative_p PARAMS ((tree));
extern void readonly_warning PARAMS ((tree, const char *));
extern tree build_conditional_expr PARAMS ((tree, tree, tree));
extern tree build_compound_expr PARAMS ((tree));
@@ -313,14 +287,94 @@ extern int current_function_returns_null;
extern int current_function_returns_abnormally;
+/* Nonzero means `$' can be in an identifier. */
+
+extern int dollars_in_ident;
+
+/* Nonzero means allow type mismatches in conditional expressions;
+ just make their values `void'. */
+
+extern int flag_cond_mismatch;
+
+/* Nonzero means don't recognize the keyword `asm'. */
+
+extern int flag_no_asm;
+
+/* Nonzero means warn about implicit declarations. */
+
+extern int warn_implicit;
+
+/* Nonzero means warn for all old-style non-prototype function decls. */
+
+extern int warn_strict_prototypes;
+
+/* Nonzero means warn about multiple (redundant) decls for the same single
+ variable or function. */
+
+extern int warn_redundant_decls;
+
+/* Nonzero means warn about extern declarations of objects not at
+ file-scope level and about *all* declarations of functions (whether
+ extern or static) not at file-scope level. Note that we exclude
+ implicit function declarations. To get warnings about those, use
+ -Wimplicit. */
+
+extern int warn_nested_externs;
+
+/* Nonzero means warn about pointer casts that can drop a type qualifier
+ from the pointer target type. */
+
+extern int warn_cast_qual;
+
+/* Nonzero means warn when casting a function call to a type that does
+ not match the return type (e.g. (float)sqrt() or (anything*)malloc()
+ when there is no previous declaration of sqrt or malloc. */
+
+extern int warn_bad_function_cast;
+
+/* Warn about traditional constructs whose meanings changed in ANSI C. */
+
+extern int warn_traditional;
+
+/* Warn about a subscript that has type char. */
+
+extern int warn_char_subscripts;
+
+/* Warn if main is suspicious. */
+
+extern int warn_main;
+
+/* Nonzero means to allow single precision math even if we're generally
+ being traditional. */
+extern int flag_allow_single_precision;
+
+/* Warn if initializer is not completely bracketed. */
+
+extern int warn_missing_braces;
+
+/* Warn about comparison of signed and unsigned values. */
+
+extern int warn_sign_compare;
+
+/* Warn about testing equality of floating point numbers. */
+
+extern int warn_float_equal;
+
+/* Warn about multicharacter constants. */
+
+extern int warn_multichar;
+
/* Nonzero means we are reading code that came from a system header file. */
extern int system_header_p;
+/* Warn about implicit declarations. 1 = warning, 2 = error. */
+extern int mesg_implicit_function_declaration;
+
/* In c-decl.c */
-extern void c_finish_incomplete_decl PARAMS ((tree));
+extern void finish_incomplete_decl PARAMS ((tree));
-extern GTY(()) tree static_ctors;
-extern GTY(()) tree static_dtors;
+extern tree static_ctors;
+extern tree static_dtors;
#endif /* ! GCC_C_TREE_H */
diff --git a/contrib/gcc/cccp.1 b/contrib/gcc/cccp.1
index 84eb19e..442f0ab 100644
--- a/contrib/gcc/cccp.1
+++ b/contrib/gcc/cccp.1
@@ -1,13 +1,14 @@
+.\" $FreeBSD$
.\" Copyright (c) 1991, 1992, 1993 Free Software Foundation \-*-Text-*-
.\" See section COPYING for conditions for redistribution
-.TH cpp 1 "30apr1993" "GNU Tools" "GNU Tools"
+.TH cpp 1 "April 30, 1993" "FreeBSD" "GNU Tools"
.SH NAME
-cccp, cpp \- The GNU C-Compatible Compiler Preprocessor.
+cpp \- The GNU C-Compatible Compiler Preprocessor.
.SH SYNOPSIS
.hy 0
.na
.TP
-.B cccp
+.B cpp
.RB "[\|" \-$ "\|]"
.RB "[\|" \-A \c
.I predicate\c
@@ -143,13 +144,6 @@ 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
diff --git a/contrib/gcc/choose-temp.c b/contrib/gcc/choose-temp.c
index 5c2c614..7f33f83 100644
--- a/contrib/gcc/choose-temp.c
+++ b/contrib/gcc/choose-temp.c
@@ -17,6 +17,8 @@ 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. */
+/* $FreeBSD$ */
+
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
diff --git a/contrib/gcc/config/alpha/alpha.c b/contrib/gcc/config/alpha/alpha.c
index 9657e56..3bc8e4d 100644
--- a/contrib/gcc/config/alpha/alpha.c
+++ b/contrib/gcc/config/alpha/alpha.c
@@ -1,6 +1,6 @@
/* Subroutines used for code generation on the DEC Alpha.
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
- 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 2000, 2001 Free Software Foundation, Inc.
Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
This file is part of GNU CC.
@@ -47,7 +47,6 @@ Boston, MA 02111-1307, USA. */
#include "target.h"
#include "target-def.h"
#include "debug.h"
-#include "langhooks.h"
/* Specify which cpu to schedule for. */
@@ -69,10 +68,6 @@ enum alpha_fp_rounding_mode alpha_fprm;
enum alpha_fp_trap_mode alpha_fptm;
-/* Specify bit size of immediate TLS offsets. */
-
-int alpha_tls_size = 32;
-
/* Strings decoded into the above options. */
const char *alpha_cpu_string; /* -mcpu= */
@@ -81,14 +76,13 @@ const char *alpha_tp_string; /* -mtrap-precision=[p|s|i] */
const char *alpha_fprm_string; /* -mfp-rounding-mode=[n|m|c|d] */
const char *alpha_fptm_string; /* -mfp-trap-mode=[n|u|su|sui] */
const char *alpha_mlat_string; /* -mmemory-latency= */
-const char *alpha_tls_size_string; /* -mtls-size=[16|32|64] */
/* Save information from a "cmpxx" operation until the branch or scc is
emitted. */
struct alpha_compare alpha_compare;
-/* Nonzero if inside of a function, because the Alpha asm can't
+/* Non-zero if inside of a function, because the Alpha asm can't
handle .files inside of functions. */
static int inside_function = FALSE;
@@ -118,22 +112,14 @@ int alpha_this_literal_sequence_number;
int alpha_this_gpdisp_sequence_number;
/* Declarations of static functions. */
-static int tls_symbolic_operand_1
- PARAMS ((rtx, enum machine_mode, int, int));
-static enum tls_model tls_symbolic_operand_type
- PARAMS ((rtx));
static bool decl_in_text_section
PARAMS ((tree));
-static bool alpha_in_small_data_p
- PARAMS ((tree));
-static void alpha_encode_section_info
- PARAMS ((tree, int));
-static const char *alpha_strip_name_encoding
- PARAMS ((const char *));
static int some_small_symbolic_operand_1
PARAMS ((rtx *, void *));
static int split_small_symbolic_operand_1
PARAMS ((rtx *, void *));
+static bool local_symbol_p
+ PARAMS ((rtx));
static void alpha_set_memflags_1
PARAMS ((rtx, int, int, int));
static rtx alpha_emit_set_const_1
@@ -142,13 +128,9 @@ static void alpha_expand_unaligned_load_words
PARAMS ((rtx *out_regs, rtx smem, HOST_WIDE_INT words, HOST_WIDE_INT ofs));
static void alpha_expand_unaligned_store_words
PARAMS ((rtx *out_regs, rtx smem, HOST_WIDE_INT words, HOST_WIDE_INT ofs));
-static void alpha_init_builtins
- PARAMS ((void));
-static rtx alpha_expand_builtin
- PARAMS ((tree, rtx, rtx, enum machine_mode, int));
static void alpha_sa_mask
PARAMS ((unsigned long *imaskP, unsigned long *fmaskP));
-static int find_lo_sum_using_gp
+static int find_lo_sum
PARAMS ((rtx *, void *));
static int alpha_does_function_need_gp
PARAMS ((void));
@@ -158,10 +140,6 @@ static const char *get_trap_mode_suffix
PARAMS ((void));
static const char *get_round_mode_suffix
PARAMS ((void));
-static const char *get_some_local_dynamic_name
- PARAMS ((void));
-static int get_some_local_dynamic_name_1
- PARAMS ((rtx *, void *));
static rtx set_frame_related_p
PARAMS ((void));
static const char *alpha_lookup_xfloating_lib_func
@@ -178,31 +156,18 @@ static int alpha_adjust_cost
PARAMS ((rtx, rtx, rtx, int));
static int alpha_issue_rate
PARAMS ((void));
-static int alpha_use_dfa_pipeline_interface
- PARAMS ((void));
-static int alpha_multipass_dfa_lookahead
- PARAMS ((void));
-
-#ifdef OBJECT_FORMAT_ELF
-static void alpha_elf_select_rtx_section
- PARAMS ((enum machine_mode, rtx, unsigned HOST_WIDE_INT));
-#endif
+static int alpha_variable_issue
+ PARAMS ((FILE *, int, rtx, int));
-#if TARGET_ABI_OPEN_VMS
-static bool alpha_linkage_symbol_p
- PARAMS ((const char *symname));
-static void alpha_write_linkage
- PARAMS ((FILE *, const char *, tree));
-#endif
-
-#if TARGET_ABI_OSF
-static void alpha_output_mi_thunk_osf
- PARAMS ((FILE *, tree, HOST_WIDE_INT, HOST_WIDE_INT, tree));
+#if TARGET_ABI_UNICOSMK
+static void alpha_init_machine_status
+ PARAMS ((struct function *p));
+static void alpha_mark_machine_status
+ PARAMS ((struct function *p));
+static void alpha_free_machine_status
+ PARAMS ((struct function *p));
#endif
-static struct machine_function * alpha_init_machine_status
- PARAMS ((void));
-
static void unicosmk_output_deferred_case_vectors PARAMS ((FILE *));
static void unicosmk_gen_dsib PARAMS ((unsigned long *imaskP));
static void unicosmk_output_ssib PARAMS ((FILE *, const char *));
@@ -231,27 +196,15 @@ static void vms_asm_out_destructor PARAMS ((rtx, int));
# define TARGET_SECTION_TYPE_FLAGS vms_section_type_flags
#endif
-#undef TARGET_IN_SMALL_DATA_P
-#define TARGET_IN_SMALL_DATA_P alpha_in_small_data_p
-#undef TARGET_ENCODE_SECTION_INFO
-#define TARGET_ENCODE_SECTION_INFO alpha_encode_section_info
-#undef TARGET_STRIP_NAME_ENCODING
-#define TARGET_STRIP_NAME_ENCODING alpha_strip_name_encoding
-
#if TARGET_ABI_UNICOSMK
static void unicosmk_asm_named_section PARAMS ((const char *, unsigned int));
static void unicosmk_insert_attributes PARAMS ((tree, tree *));
static unsigned int unicosmk_section_type_flags PARAMS ((tree, const char *,
int));
-static void unicosmk_unique_section PARAMS ((tree, int));
# undef TARGET_INSERT_ATTRIBUTES
# define TARGET_INSERT_ATTRIBUTES unicosmk_insert_attributes
# undef TARGET_SECTION_TYPE_FLAGS
# define TARGET_SECTION_TYPE_FLAGS unicosmk_section_type_flags
-# undef TARGET_ASM_UNIQUE_SECTION
-# define TARGET_ASM_UNIQUE_SECTION unicosmk_unique_section
-# undef TARGET_ASM_GLOBALIZE_LABEL
-# define TARGET_ASM_GLOBALIZE_LABEL hook_FILEptr_constcharptr_void
#endif
#undef TARGET_ASM_ALIGNED_HI_OP
@@ -270,11 +223,6 @@ static void unicosmk_unique_section PARAMS ((tree, int));
#define TARGET_ASM_UNALIGNED_DI_OP "\t.align 0\n\t.quad\t"
#endif
-#ifdef OBJECT_FORMAT_ELF
-#undef TARGET_ASM_SELECT_RTX_SECTION
-#define TARGET_ASM_SELECT_RTX_SECTION alpha_elf_select_rtx_section
-#endif
-
#undef TARGET_ASM_FUNCTION_END_PROLOGUE
#define TARGET_ASM_FUNCTION_END_PROLOGUE alpha_output_function_end_prologue
@@ -282,27 +230,8 @@ static void unicosmk_unique_section PARAMS ((tree, int));
#define TARGET_SCHED_ADJUST_COST alpha_adjust_cost
#undef TARGET_SCHED_ISSUE_RATE
#define TARGET_SCHED_ISSUE_RATE alpha_issue_rate
-#undef TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE
-#define TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE \
- alpha_use_dfa_pipeline_interface
-#undef TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD
-#define TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD \
- alpha_multipass_dfa_lookahead
-
-#undef TARGET_HAVE_TLS
-#define TARGET_HAVE_TLS HAVE_AS_TLS
-
-#undef TARGET_INIT_BUILTINS
-#define TARGET_INIT_BUILTINS alpha_init_builtins
-#undef TARGET_EXPAND_BUILTIN
-#define TARGET_EXPAND_BUILTIN alpha_expand_builtin
-
-#if TARGET_ABI_OSF
-#undef TARGET_ASM_OUTPUT_MI_THUNK
-#define TARGET_ASM_OUTPUT_MI_THUNK alpha_output_mi_thunk_osf
-#undef TARGET_ASM_CAN_OUTPUT_MI_THUNK
-#define TARGET_ASM_CAN_OUTPUT_MI_THUNK hook_bool_tree_hwi_hwi_tree_true
-#endif
+#undef TARGET_SCHED_VARIABLE_ISSUE
+#define TARGET_SCHED_VARIABLE_ISSUE alpha_variable_issue
struct gcc_target targetm = TARGET_INITIALIZER;
@@ -423,18 +352,6 @@ override_options ()
error ("bad value `%s' for -mfp-trap-mode switch", alpha_fptm_string);
}
- if (alpha_tls_size_string)
- {
- if (strcmp (alpha_tls_size_string, "16") == 0)
- alpha_tls_size = 16;
- else if (strcmp (alpha_tls_size_string, "32") == 0)
- alpha_tls_size = 32;
- else if (strcmp (alpha_tls_size_string, "64") == 0)
- alpha_tls_size = 64;
- else
- error ("bad value `%s' for -mtls-size switch", alpha_tls_size_string);
- }
-
alpha_cpu
= TARGET_CPU_DEFAULT & MASK_CPU_EV6 ? PROCESSOR_EV6
: (TARGET_CPU_DEFAULT & MASK_CPU_EV5 ? PROCESSOR_EV5 : PROCESSOR_EV4);
@@ -577,16 +494,12 @@ override_options ()
/* Register variables and functions with the garbage collector. */
+#if TARGET_ABI_UNICOSMK
/* Set up function hooks. */
init_machine_status = alpha_init_machine_status;
-
- /* Tell the compiler when we're using VAX floating point. */
- if (TARGET_FLOAT_VAX)
- {
- real_format_for_mode[SFmode - QFmode] = &vax_f_format;
- real_format_for_mode[DFmode - QFmode] = &vax_g_format;
- real_format_for_mode[TFmode - QFmode] = NULL;
- }
+ mark_machine_status = alpha_mark_machine_status;
+ free_machine_status = alpha_free_machine_status;
+#endif
}
/* Returns 1 if VALUE is a mask that contains full bytes of zero or ones. */
@@ -613,7 +526,7 @@ reg_or_0_operand (op, mode)
register rtx op;
enum machine_mode mode;
{
- return op == CONST0_RTX (mode) || register_operand (op, mode);
+ return op == const0_rtx || register_operand (op, mode);
}
/* Return 1 if OP is a constant in the range of 0-63 (for a shift) or
@@ -642,16 +555,6 @@ reg_or_8bit_operand (op, mode)
|| register_operand (op, mode));
}
-/* Return 1 if OP is a constant or any register. */
-
-int
-reg_or_const_int_operand (op, mode)
- register rtx op;
- enum machine_mode mode;
-{
- return GET_CODE (op) == CONST_INT || register_operand (op, mode);
-}
-
/* Return 1 if OP is an 8-bit constant. */
int
@@ -758,26 +661,24 @@ mode_mask_operand (op, mode)
register rtx op;
enum machine_mode mode ATTRIBUTE_UNUSED;
{
- if (GET_CODE (op) == CONST_INT)
- {
- HOST_WIDE_INT value = INTVAL (op);
-
- if (value == 0xff)
- return 1;
- if (value == 0xffff)
- return 1;
- if (value == 0xffffffff)
- return 1;
- if (value == -1)
- return 1;
- }
- else if (HOST_BITS_PER_WIDE_INT == 32 && GET_CODE (op) == CONST_DOUBLE)
- {
- if (CONST_DOUBLE_LOW (op) == 0xffffffff && CONST_DOUBLE_HIGH (op) == 0)
- return 1;
- }
+#if HOST_BITS_PER_WIDE_INT == 32
+ if (GET_CODE (op) == CONST_DOUBLE)
+ return (CONST_DOUBLE_LOW (op) == -1
+ && (CONST_DOUBLE_HIGH (op) == -1
+ || CONST_DOUBLE_HIGH (op) == 0));
+#else
+ if (GET_CODE (op) == CONST_DOUBLE)
+ return (CONST_DOUBLE_LOW (op) == -1 && CONST_DOUBLE_HIGH (op) == 0);
+#endif
- return 0;
+ return (GET_CODE (op) == CONST_INT
+ && (INTVAL (op) == 0xff
+ || INTVAL (op) == 0xffff
+ || INTVAL (op) == (HOST_WIDE_INT)0xffffffff
+#if HOST_BITS_PER_WIDE_INT == 64
+ || INTVAL (op) == -1
+#endif
+ ));
}
/* Return 1 if OP is a multiple of 8 less than 64. */
@@ -792,14 +693,25 @@ mul8_operand (op, mode)
&& (INTVAL (op) & 7) == 0);
}
-/* Return 1 if OP is the zero constant for MODE. */
+/* Return 1 if OP is the constant zero in floating-point. */
+
+int
+fp0_operand (op, mode)
+ register rtx op;
+ enum machine_mode mode;
+{
+ return (GET_MODE (op) == mode
+ && GET_MODE_CLASS (mode) == MODE_FLOAT && op == CONST0_RTX (mode));
+}
+
+/* Return 1 if OP is the floating-point constant zero or a register. */
int
-const0_operand (op, mode)
+reg_or_fp0_operand (op, mode)
register rtx op;
enum machine_mode mode;
{
- return op == CONST0_RTX (mode);
+ return fp0_operand (op, mode) || register_operand (op, mode);
}
/* Return 1 if OP is a hard floating-point register. */
@@ -857,15 +769,8 @@ some_operand (op, mode)
switch (GET_CODE (op))
{
- case REG:
- case MEM:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_VECTOR:
- case LABEL_REF:
- case SYMBOL_REF:
- case CONST:
- case HIGH:
+ case REG: case MEM: case CONST_DOUBLE: case CONST_INT: case LABEL_REF:
+ case SYMBOL_REF: case CONST: case HIGH:
return 1;
case SUBREG:
@@ -919,9 +824,7 @@ input_operand (op, mode)
symbolic operands to be reconstructed from their high/lo_sum
form. */
return (small_symbolic_operand (op, mode)
- || global_symbolic_operand (op, mode)
- || gotdtp_symbolic_operand (op, mode)
- || gottp_symbolic_operand (op, mode));
+ || global_symbolic_operand (op, mode));
}
/* This handles both the Windows/NT and OSF cases. */
@@ -944,8 +847,7 @@ input_operand (op, mode)
&& general_operand (op, mode));
case CONST_DOUBLE:
- case CONST_VECTOR:
- return op == CONST0_RTX (mode);
+ return GET_MODE_CLASS (mode) == MODE_FLOAT && op == CONST0_RTX (mode);
case CONST_INT:
return mode == QImode || mode == HImode || add_operand (op, mode);
@@ -1009,15 +911,31 @@ direct_call_operand (op, mode)
}
/* Return true if OP is a LABEL_REF, or SYMBOL_REF or CONST referencing
- a (non-tls) variable known to be defined in this file. */
+ a variable known to be defined in this file. */
+
+static bool
+local_symbol_p (op)
+ rtx op;
+{
+ const char *str = XSTR (op, 0);
+
+ /* ??? SYMBOL_REF_FLAG is set for local function symbols, but we
+ run into problems with the rtl inliner in that the symbol was
+ once external, but is local after inlining, which results in
+ unrecognizable insns. */
+
+ return (CONSTANT_POOL_ADDRESS_P (op)
+ /* If @, then ENCODE_SECTION_INFO sez it's local. */
+ || str[0] == '@'
+ /* If *$, then ASM_GENERATE_INTERNAL_LABEL sez it's local. */
+ || (str[0] == '*' && str[1] == '$'));
+}
int
local_symbolic_operand (op, mode)
rtx op;
enum machine_mode mode;
{
- const char *str;
-
if (mode != VOIDmode && GET_MODE (op) != VOIDmode && mode != GET_MODE (op))
return 0;
@@ -1032,26 +950,7 @@ local_symbolic_operand (op, mode)
if (GET_CODE (op) != SYMBOL_REF)
return 0;
- /* Easy pickings. */
- if (CONSTANT_POOL_ADDRESS_P (op) || STRING_POOL_ADDRESS_P (op))
- return 1;
-
- /* ??? SYMBOL_REF_FLAG is set for local function symbols, but we
- run into problems with the rtl inliner in that the symbol was
- once external, but is local after inlining, which results in
- unrecognizable insns. */
-
- str = XSTR (op, 0);
-
- /* If @[LS], then alpha_encode_section_info sez it's local. */
- if (str[0] == '@' && (str[1] == 'L' || str[1] == 'S'))
- return 1;
-
- /* If *$, then ASM_GENERATE_INTERNAL_LABEL sez it's local. */
- if (str[0] == '*' && str[1] == '$')
- return 1;
-
- return 0;
+ return local_symbol_p (op);
}
/* Return true if OP is a SYMBOL_REF or CONST referencing a variable
@@ -1083,7 +982,7 @@ small_symbolic_operand (op, mode)
else
{
str = XSTR (op, 0);
- return str[0] == '@' && str[1] == 'S';
+ return str[0] == '@' && str[1] == 's';
}
}
@@ -1095,8 +994,6 @@ global_symbolic_operand (op, mode)
rtx op;
enum machine_mode mode;
{
- const char *str;
-
if (mode != VOIDmode && GET_MODE (op) != VOIDmode && mode != GET_MODE (op))
return 0;
@@ -1108,12 +1005,7 @@ global_symbolic_operand (op, mode)
if (GET_CODE (op) != SYMBOL_REF)
return 0;
- if (local_symbolic_operand (op, mode))
- return 0;
-
- /* Also verify that it's not a TLS symbol. */
- str = XSTR (op, 0);
- return str[0] != '%' && str[0] != '@';
+ return ! local_symbol_p (op);
}
/* Return 1 if OP is a valid operand for the MEM of a CALL insn. */
@@ -1166,110 +1058,6 @@ symbolic_operand (op, mode)
return 0;
}
-/* Return true if OP is valid for a particular TLS relocation. */
-
-static int
-tls_symbolic_operand_1 (op, mode, size, unspec)
- rtx op;
- enum machine_mode mode;
- int size, unspec;
-{
- const char *str;
- int letter;
-
- if (mode != VOIDmode && GET_MODE (op) != VOIDmode && mode != GET_MODE (op))
- return 0;
-
- if (GET_CODE (op) != CONST)
- return 0;
- op = XEXP (op, 0);
-
- if (GET_CODE (op) != UNSPEC || XINT (op, 1) != unspec)
- return 0;
- op = XVECEXP (op, 0, 0);
-
- if (GET_CODE (op) != SYMBOL_REF)
- return 0;
- str = XSTR (op, 0);
-
- if (str[0] == '%')
- {
- if (size != 64)
- return 0;
- }
- else if (str[0] == '@')
- {
- if (alpha_tls_size > size)
- return 0;
- }
- else
- return 0;
-
- letter = (unspec == UNSPEC_DTPREL ? 'D' : 'T');
-
- return str[1] == letter;
-}
-
-/* Return true if OP is valid for 16-bit DTP relative relocations. */
-
-int
-dtp16_symbolic_operand (op, mode)
- rtx op;
- enum machine_mode mode;
-{
- return tls_symbolic_operand_1 (op, mode, 16, UNSPEC_DTPREL);
-}
-
-/* Return true if OP is valid for 32-bit DTP relative relocations. */
-
-int
-dtp32_symbolic_operand (op, mode)
- rtx op;
- enum machine_mode mode;
-{
- return tls_symbolic_operand_1 (op, mode, 32, UNSPEC_DTPREL);
-}
-
-/* Return true if OP is valid for 64-bit DTP relative relocations. */
-
-int
-gotdtp_symbolic_operand (op, mode)
- rtx op;
- enum machine_mode mode;
-{
- return tls_symbolic_operand_1 (op, mode, 64, UNSPEC_DTPREL);
-}
-
-/* Return true if OP is valid for 16-bit TP relative relocations. */
-
-int
-tp16_symbolic_operand (op, mode)
- rtx op;
- enum machine_mode mode;
-{
- return tls_symbolic_operand_1 (op, mode, 16, UNSPEC_TPREL);
-}
-
-/* Return true if OP is valid for 32-bit TP relative relocations. */
-
-int
-tp32_symbolic_operand (op, mode)
- rtx op;
- enum machine_mode mode;
-{
- return tls_symbolic_operand_1 (op, mode, 32, UNSPEC_TPREL);
-}
-
-/* Return true if OP is valid for 64-bit TP relative relocations. */
-
-int
-gottp_symbolic_operand (op, mode)
- rtx op;
- enum machine_mode mode;
-{
- return tls_symbolic_operand_1 (op, mode, 64, UNSPEC_TPREL);
-}
-
/* Return 1 if OP is a valid Alpha comparison operator. Here we know which
comparisons are valid in which insn. */
@@ -1667,9 +1455,7 @@ alpha_extra_constraint (value, c)
return GET_CODE (value) == HIGH;
case 'U':
return TARGET_ABI_UNICOSMK && symbolic_operand (value, VOIDmode);
- case 'W':
- return (GET_CODE (value) == CONST_VECTOR
- && value == CONST0_RTX (GET_MODE (value)));
+
default:
return false;
}
@@ -1742,54 +1528,6 @@ alpha_tablejump_best_label (insn)
return best_label ? best_label : const0_rtx;
}
-
-/* Return the TLS model to use for SYMBOL. */
-
-static enum tls_model
-tls_symbolic_operand_type (symbol)
- rtx symbol;
-{
- const char *str;
-
- if (GET_CODE (symbol) != SYMBOL_REF)
- return 0;
- str = XSTR (symbol, 0);
-
- if (str[0] == '%')
- {
- /* ??? Be prepared for -ftls-model=local-dynamic. Perhaps we shouldn't
- have separately encoded local-ness. On well, maybe the user will use
- attribute visibility next time. At least we don't crash... */
- if (str[1] == 'G' || str[1] == 'D')
- return TLS_MODEL_GLOBAL_DYNAMIC;
- if (str[1] == 'T')
- return TLS_MODEL_INITIAL_EXEC;
- }
- else if (str[0] == '@')
- {
- if (str[1] == 'D')
- {
- /* Local dynamic is a waste if we're not going to combine
- the __tls_get_addr calls. So avoid it if not optimizing. */
- if (optimize)
- return TLS_MODEL_LOCAL_DYNAMIC;
- else
- return TLS_MODEL_GLOBAL_DYNAMIC;
- }
- if (str[1] == 'T')
- {
- /* 64-bit local exec is the same as initial exec except without
- the dynamic relocation. In either case we use a got entry. */
- if (alpha_tls_size == 64)
- return TLS_MODEL_INITIAL_EXEC;
- else
- return TLS_MODEL_LOCAL_EXEC;
- }
- }
-
- return 0;
-}
-
/* Return true if the function DECL will be placed in the default text
section. */
@@ -1807,36 +1545,6 @@ decl_in_text_section (decl)
&& DECL_ONE_ONLY (decl))));
}
-/* Return true if EXP should be placed in the small data section. */
-
-static bool
-alpha_in_small_data_p (exp)
- tree exp;
-{
- /* We want to merge strings, so we never consider them small data. */
- if (TREE_CODE (exp) == STRING_CST)
- return false;
-
- if (TREE_CODE (exp) == VAR_DECL && DECL_SECTION_NAME (exp))
- {
- const char *section = TREE_STRING_POINTER (DECL_SECTION_NAME (exp));
- if (strcmp (section, ".sdata") == 0
- || strcmp (section, ".sbss") == 0)
- return true;
- }
- else
- {
- HOST_WIDE_INT size = int_size_in_bytes (TREE_TYPE (exp));
-
- /* If this is an incomplete type with size 0, then we can't put it
- in sdata because it might be too big when completed. */
- if (size > 0 && size <= g_switch_value)
- return true;
- }
-
- return false;
-}
-
/* If we are referencing a function that is static, make the SYMBOL_REF
special. We use this to see indicate we can branch to this function
without setting PV or restoring GP.
@@ -1845,38 +1553,25 @@ alpha_in_small_data_p (exp)
to the name. If in addition the variable is to go in .sdata/.sbss,
then add "@s" instead. */
-static void
-alpha_encode_section_info (decl, first)
+void
+alpha_encode_section_info (decl)
tree decl;
- int first ATTRIBUTE_UNUSED;
{
const char *symbol_str;
- bool is_local;
- char encoding = 0;
- rtx rtl, symbol;
-
- rtl = DECL_P (decl) ? DECL_RTL (decl) : TREE_CST_RTL (decl);
+ bool is_local, is_small;
- /* Careful not to prod global register variables. */
- if (GET_CODE (rtl) != MEM)
- return;
- symbol = XEXP (rtl, 0);
- if (GET_CODE (symbol) != SYMBOL_REF)
- return;
-
if (TREE_CODE (decl) == FUNCTION_DECL)
{
/* We mark public functions once they are emitted; otherwise we
don't know that they exist in this unit of translation. */
if (TREE_PUBLIC (decl))
return;
-
/* Do not mark functions that are not in .text; otherwise we
don't know that they are near enough for a direct branch. */
if (! decl_in_text_section (decl))
return;
- SYMBOL_REF_FLAG (symbol) = 1;
+ SYMBOL_REF_FLAG (XEXP (DECL_RTL (decl), 0)) = 1;
return;
}
@@ -1884,100 +1579,98 @@ alpha_encode_section_info (decl, first)
if (! TARGET_EXPLICIT_RELOCS)
return;
- symbol_str = XSTR (symbol, 0);
+ /* Careful not to prod global register variables. */
+ if (TREE_CODE (decl) != VAR_DECL
+ || GET_CODE (DECL_RTL (decl)) != MEM
+ || GET_CODE (XEXP (DECL_RTL (decl), 0)) != SYMBOL_REF)
+ return;
+
+ symbol_str = XSTR (XEXP (DECL_RTL (decl), 0), 0);
/* A variable is considered "local" if it is defined in this module. */
- is_local = (*targetm.binds_local_p) (decl);
- /* Care for TLS variables. */
- if (TREE_CODE (decl) == VAR_DECL && DECL_THREAD_LOCAL (decl))
+ if (DECL_EXTERNAL (decl))
+ is_local = false;
+ /* Linkonce and weak data is never local. */
+ else if (DECL_ONE_ONLY (decl) || DECL_WEAK (decl))
+ is_local = false;
+ else if (! TREE_PUBLIC (decl))
+ is_local = true;
+ /* If PIC, then assume that any global name can be overridden by
+ symbols resolved from other modules. */
+ else if (flag_pic)
+ is_local = false;
+ /* Uninitialized COMMON variable may be unified with symbols
+ resolved from other modules. */
+ else if (DECL_COMMON (decl)
+ && (DECL_INITIAL (decl) == NULL
+ || DECL_INITIAL (decl) == error_mark_node))
+ is_local = false;
+ /* Otherwise we're left with initialized (or non-common) global data
+ which is of necessity defined locally. */
+ else
+ is_local = true;
+
+ /* Determine if DECL will wind up in .sdata/.sbss. */
+
+ is_small = false;
+ if (DECL_SECTION_NAME (decl))
{
- switch (decl_tls_model (decl))
- {
- case TLS_MODEL_GLOBAL_DYNAMIC:
- encoding = 'G';
- break;
- case TLS_MODEL_LOCAL_DYNAMIC:
- encoding = 'D';
- break;
- case TLS_MODEL_INITIAL_EXEC:
- case TLS_MODEL_LOCAL_EXEC:
- encoding = 'T';
- break;
- }
+ const char *section = TREE_STRING_POINTER (DECL_SECTION_NAME (decl));
+ if (strcmp (section, ".sdata") == 0
+ || strcmp (section, ".sbss") == 0)
+ is_small = true;
}
- else if (is_local)
+ else
{
- /* Determine if DECL will wind up in .sdata/.sbss. */
- if (alpha_in_small_data_p (decl))
- encoding = 'S';
- else
- encoding = 'L';
+ HOST_WIDE_INT size = int_size_in_bytes (TREE_TYPE (decl));
+
+ /* If the variable has already been defined in the output file, then it
+ is too late to put it in sdata if it wasn't put there in the first
+ place. The test is here rather than above, because if it is already
+ in sdata, then it can stay there. */
+
+ if (TREE_ASM_WRITTEN (decl))
+ ;
+
+ /* If this is an incomplete type with size 0, then we can't put it in
+ sdata because it might be too big when completed. */
+ else if (size > 0 && size <= g_switch_value)
+ is_small = true;
}
/* Finally, encode this into the symbol string. */
- if (encoding)
+ if (is_local)
{
+ const char *string;
char *newstr;
size_t len;
- char want_prefix = (is_local ? '@' : '%');
- char other_prefix = (is_local ? '%' : '@');
- if (symbol_str[0] == want_prefix)
+ if (symbol_str[0] == '@')
{
- if (symbol_str[1] == encoding)
+ if (symbol_str[1] == (is_small ? 's' : 'v'))
return;
symbol_str += 2;
}
- else if (symbol_str[0] == other_prefix)
- symbol_str += 2;
len = strlen (symbol_str) + 1;
newstr = alloca (len + 2);
- newstr[0] = want_prefix;
- newstr[1] = encoding;
+ newstr[0] = '@';
+ newstr[1] = (is_small ? 's' : 'v');
memcpy (newstr + 2, symbol_str, len);
- XSTR (symbol, 0) = ggc_alloc_string (newstr, len + 2 - 1);
+ string = ggc_alloc_string (newstr, len + 2 - 1);
+ XSTR (XEXP (DECL_RTL (decl), 0), 0) = string;
+ }
+ else if (symbol_str[0] == '@')
+ {
+ /* We're hosed. This can happen when the user adds a weak
+ attribute after rtl generation. They should have gotten
+ a warning about unspecified behaviour from varasm.c. */
}
}
-/* Undo the effects of the above. */
-
-static const char *
-alpha_strip_name_encoding (str)
- const char *str;
-{
- if (str[0] == '@' || str[0] == '%')
- str += 2;
- if (str[0] == '*')
- str++;
- return str;
-}
-
-#if TARGET_ABI_OPEN_VMS
-static bool
-alpha_linkage_symbol_p (symname)
- const char *symname;
-{
- int symlen = strlen (symname);
-
- if (symlen > 4)
- return strcmp (&symname [symlen - 4], "..lk") == 0;
-
- return false;
-}
-
-#define LINKAGE_SYMBOL_REF_P(X) \
- ((GET_CODE (X) == SYMBOL_REF \
- && alpha_linkage_symbol_p (XSTR (X, 0))) \
- || (GET_CODE (X) == CONST \
- && GET_CODE (XEXP (X, 0)) == PLUS \
- && GET_CODE (XEXP (XEXP (X, 0), 0)) == SYMBOL_REF \
- && alpha_linkage_symbol_p (XSTR (XEXP (XEXP (X, 0), 0), 0))))
-#endif
-
/* legitimate_address_p recognizes an RTL expression that is a valid
memory address for an instruction. The MODE argument is the
machine mode for the MEM expression that wants to use this address.
@@ -2017,11 +1710,6 @@ alpha_legitimate_address_p (mode, x, strict)
if (CONSTANT_ADDRESS_P (x))
return true;
-#if TARGET_ABI_OPEN_VMS
- if (LINKAGE_SYMBOL_REF_P (x))
- return true;
-#endif
-
/* Register plus a small constant offset is valid. */
if (GET_CODE (x) == PLUS)
{
@@ -2077,9 +1765,7 @@ alpha_legitimate_address_p (mode, x, strict)
return false;
/* The symbol must be local. */
- if (local_symbolic_operand (ofs, Pmode)
- || dtp32_symbolic_operand (ofs, Pmode)
- || tp32_symbolic_operand (ofs, Pmode))
+ if (local_symbolic_operand (ofs, Pmode))
return true;
}
}
@@ -2145,100 +1831,6 @@ alpha_legitimize_address (x, scratch, mode)
/* If this is a local symbol, split the address into HIGH/LO_SUM parts. */
if (TARGET_EXPLICIT_RELOCS && symbolic_operand (x, Pmode))
{
- rtx r0, r16, eqv, tga, tp, insn, dest, seq;
-
- switch (tls_symbolic_operand_type (x))
- {
- case TLS_MODEL_GLOBAL_DYNAMIC:
- start_sequence ();
-
- r0 = gen_rtx_REG (Pmode, 0);
- r16 = gen_rtx_REG (Pmode, 16);
- tga = gen_rtx_SYMBOL_REF (Pmode, "__tls_get_addr");
- dest = gen_reg_rtx (Pmode);
- seq = GEN_INT (alpha_next_sequence_number++);
-
- emit_insn (gen_movdi_er_tlsgd (r16, pic_offset_table_rtx, x, seq));
- insn = gen_call_value_osf_tlsgd (r0, tga, seq);
- insn = emit_call_insn (insn);
- CONST_OR_PURE_CALL_P (insn) = 1;
- use_reg (&CALL_INSN_FUNCTION_USAGE (insn), r16);
-
- insn = get_insns ();
- end_sequence ();
-
- emit_libcall_block (insn, dest, r0, x);
- return dest;
-
- case TLS_MODEL_LOCAL_DYNAMIC:
- start_sequence ();
-
- r0 = gen_rtx_REG (Pmode, 0);
- r16 = gen_rtx_REG (Pmode, 16);
- tga = gen_rtx_SYMBOL_REF (Pmode, "__tls_get_addr");
- scratch = gen_reg_rtx (Pmode);
- seq = GEN_INT (alpha_next_sequence_number++);
-
- emit_insn (gen_movdi_er_tlsldm (r16, pic_offset_table_rtx, seq));
- insn = gen_call_value_osf_tlsldm (r0, tga, seq);
- insn = emit_call_insn (insn);
- CONST_OR_PURE_CALL_P (insn) = 1;
- use_reg (&CALL_INSN_FUNCTION_USAGE (insn), r16);
-
- insn = get_insns ();
- end_sequence ();
-
- eqv = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, const0_rtx),
- UNSPEC_TLSLDM_CALL);
- emit_libcall_block (insn, scratch, r0, eqv);
-
- eqv = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, x), UNSPEC_DTPREL);
- eqv = gen_rtx_CONST (Pmode, eqv);
-
- if (alpha_tls_size == 64)
- {
- dest = gen_reg_rtx (Pmode);
- emit_insn (gen_rtx_SET (VOIDmode, dest, eqv));
- emit_insn (gen_adddi3 (dest, dest, scratch));
- return dest;
- }
- if (alpha_tls_size == 32)
- {
- insn = gen_rtx_HIGH (Pmode, eqv);
- insn = gen_rtx_PLUS (Pmode, scratch, insn);
- scratch = gen_reg_rtx (Pmode);
- emit_insn (gen_rtx_SET (VOIDmode, scratch, insn));
- }
- return gen_rtx_LO_SUM (Pmode, scratch, eqv);
-
- case TLS_MODEL_INITIAL_EXEC:
- eqv = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, x), UNSPEC_TPREL);
- eqv = gen_rtx_CONST (Pmode, eqv);
- tp = gen_reg_rtx (Pmode);
- scratch = gen_reg_rtx (Pmode);
- dest = gen_reg_rtx (Pmode);
-
- emit_insn (gen_load_tp (tp));
- emit_insn (gen_rtx_SET (VOIDmode, scratch, eqv));
- emit_insn (gen_adddi3 (dest, tp, scratch));
- return dest;
-
- case TLS_MODEL_LOCAL_EXEC:
- eqv = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, x), UNSPEC_TPREL);
- eqv = gen_rtx_CONST (Pmode, eqv);
- tp = gen_reg_rtx (Pmode);
-
- emit_insn (gen_load_tp (tp));
- if (alpha_tls_size == 32)
- {
- insn = gen_rtx_HIGH (Pmode, eqv);
- insn = gen_rtx_PLUS (Pmode, tp, insn);
- tp = gen_reg_rtx (Pmode);
- emit_insn (gen_rtx_SET (VOIDmode, tp, insn));
- }
- return gen_rtx_LO_SUM (Pmode, tp, eqv);
- }
-
if (local_symbolic_operand (x, Pmode))
{
if (small_symbolic_operand (x, Pmode))
@@ -2564,8 +2156,6 @@ alpha_set_memflags_1 (x, in_struct_p, volatile_p, unchanging_p)
switch (GET_CODE (x))
{
case SEQUENCE:
- abort ();
-
case PARALLEL:
for (i = XVECLEN (x, 0) - 1; i >= 0; i--)
alpha_set_memflags_1 (XVECEXP (x, 0, i), in_struct_p, volatile_p,
@@ -2600,11 +2190,11 @@ alpha_set_memflags_1 (x, in_struct_p, volatile_p, unchanging_p)
}
}
-/* Given INSN, which is an INSN list or the PATTERN of a single insn
- generated to perform a memory operation, look for any MEMs in either
- a SET_DEST or a SET_SRC and copy the in-struct, unchanging, and
- volatile flags from REF into each of the MEMs found. If REF is not
- a MEM, don't do anything. */
+/* Given INSN, which is either an INSN or a SEQUENCE generated to
+ perform a memory operation, look for any MEMs in either a SET_DEST or
+ a SET_SRC and copy the in-struct, unchanging, and volatile flags from
+ REF into each of the MEMs found. If REF is not a MEM, don't do
+ anything. */
void
alpha_set_memflags (insn, ref)
@@ -2965,8 +2555,6 @@ alpha_expand_mov (mode, operands)
tmp = alpha_legitimize_address (operands[1], operands[0], mode);
if (tmp)
{
- if (tmp == operands[0])
- return true;
operands[1] = tmp;
return false;
}
@@ -3015,7 +2603,7 @@ alpha_expand_mov (mode, operands)
}
/* Otherwise we've nothing left but to drop the thing to memory. */
- operands[1] = force_const_mem (mode, operands[1]);
+ operands[1] = force_const_mem (DImode, operands[1]);
if (reload_in_progress)
{
emit_move_insn (operands[0], XEXP (operands[1], 0));
@@ -3319,7 +2907,7 @@ alpha_emit_conditional_branch (code)
}
else
{
- /* ??? We mark the branch mode to be CCmode to prevent the
+ /* ??? We mark the the branch mode to be CCmode to prevent the
compare and branch from being combined, since the compare
insn follows IEEE rules that the branch does not. */
branch_mode = CCmode;
@@ -3487,7 +3075,7 @@ alpha_emit_setcc (code)
/* Rewrite a comparison against zero CMP of the form
(CODE (cc0) (const_int 0)) so it can be written validly in
a conditional move (if_then_else CMP ...).
- If both of the operands that set cc0 are nonzero we must emit
+ If both of the operands that set cc0 are non-zero we must emit
an insn to perform the compare (it can't be done within
the conditional move). */
rtx
@@ -3519,7 +3107,7 @@ alpha_emit_conditional_move (cmp, mode)
/* If we have fp<->int register move instructions, do a cmov by
performing the comparison in fp registers, and move the
- zero/nonzero value to integer registers, where we can then
+ zero/non-zero value to integer registers, where we can then
use a normal cmov, or vice-versa. */
switch (code)
@@ -4051,7 +3639,7 @@ alpha_split_tfmode_frobsign (operands, operation)
alpha_split_tfmode_pair (operands);
- /* Detect three flavors of operand overlap. */
+ /* Detect three flavours of operand overlap. */
move = 1;
if (rtx_equal_p (operands[0], operands[2]))
move = 0;
@@ -4297,13 +3885,17 @@ alpha_expand_unaligned_store (dst, src, size, ofs)
emit_insn (gen_mskxl_be (dsth, dsth, GEN_INT (0xffff), addr));
break;
case 4:
+ emit_insn (gen_mskxl_be (dsth, dsth, GEN_INT (0xffffffff), addr));
+ break;
+ case 8:
{
- rtx msk = immed_double_const (0xffffffff, 0, DImode);
+#if HOST_BITS_PER_WIDE_INT == 32
+ rtx msk = immed_double_const (0xffffffff, 0xffffffff, DImode);
+#else
+ rtx msk = constm1_rtx;
+#endif
emit_insn (gen_mskxl_be (dsth, dsth, msk, addr));
- break;
}
- case 8:
- emit_insn (gen_mskxl_be (dsth, dsth, constm1_rtx, addr));
break;
}
@@ -4340,13 +3932,17 @@ alpha_expand_unaligned_store (dst, src, size, ofs)
emit_insn (gen_mskxl_le (dstl, dstl, GEN_INT (0xffff), addr));
break;
case 4:
+ emit_insn (gen_mskxl_le (dstl, dstl, GEN_INT (0xffffffff), addr));
+ break;
+ case 8:
{
- rtx msk = immed_double_const (0xffffffff, 0, DImode);
+#if HOST_BITS_PER_WIDE_INT == 32
+ rtx msk = immed_double_const (0xffffffff, 0xffffffff, DImode);
+#else
+ rtx msk = constm1_rtx;
+#endif
emit_insn (gen_mskxl_le (dstl, dstl, msk, addr));
- break;
}
- case 8:
- emit_insn (gen_mskxl_le (dstl, dstl, constm1_rtx, addr));
break;
}
}
@@ -4472,6 +4068,11 @@ alpha_expand_unaligned_store_words (data_regs, dmem, words, ofs)
{
rtx const im8 = GEN_INT (-8);
rtx const i64 = GEN_INT (64);
+#if HOST_BITS_PER_WIDE_INT == 32
+ rtx const im1 = immed_double_const (0xffffffff, 0xffffffff, DImode);
+#else
+ rtx const im1 = constm1_rtx;
+#endif
rtx ins_tmps[MAX_MOVE_WORDS];
rtx st_tmp_1, st_tmp_2, dreg;
rtx st_addr_1, st_addr_2, dmema;
@@ -4535,13 +4136,13 @@ alpha_expand_unaligned_store_words (data_regs, dmem, words, ofs)
/* Split and merge the ends with the destination data. */
if (WORDS_BIG_ENDIAN)
{
- emit_insn (gen_mskxl_be (st_tmp_2, st_tmp_2, constm1_rtx, dreg));
+ emit_insn (gen_mskxl_be (st_tmp_2, st_tmp_2, im1, dreg));
emit_insn (gen_mskxh (st_tmp_1, st_tmp_1, i64, dreg));
}
else
{
emit_insn (gen_mskxh (st_tmp_2, st_tmp_2, i64, dreg));
- emit_insn (gen_mskxl_le (st_tmp_1, st_tmp_1, constm1_rtx, dreg));
+ emit_insn (gen_mskxl_le (st_tmp_1, st_tmp_1, im1, dreg));
}
if (data_regs != NULL)
@@ -5206,75 +4807,6 @@ alpha_expand_block_clear (operands)
return 1;
}
-
-/* Returns a mask so that zap(x, value) == x & mask. */
-
-rtx
-alpha_expand_zap_mask (value)
- HOST_WIDE_INT value;
-{
- rtx result;
- int i;
-
- if (HOST_BITS_PER_WIDE_INT >= 64)
- {
- HOST_WIDE_INT mask = 0;
-
- for (i = 7; i >= 0; --i)
- {
- mask <<= 8;
- if (!((value >> i) & 1))
- mask |= 0xff;
- }
-
- result = gen_int_mode (mask, DImode);
- }
- else if (HOST_BITS_PER_WIDE_INT == 32)
- {
- HOST_WIDE_INT mask_lo = 0, mask_hi = 0;
-
- for (i = 7; i >= 4; --i)
- {
- mask_hi <<= 8;
- if (!((value >> i) & 1))
- mask_hi |= 0xff;
- }
-
- for (i = 3; i >= 0; --i)
- {
- mask_lo <<= 8;
- if (!((value >> i) & 1))
- mask_lo |= 0xff;
- }
-
- result = immed_double_const (mask_lo, mask_hi, DImode);
- }
- else
- abort ();
-
- return result;
-}
-
-void
-alpha_expand_builtin_vector_binop (gen, mode, op0, op1, op2)
- rtx (*gen) PARAMS ((rtx, rtx, rtx));
- enum machine_mode mode;
- rtx op0, op1, op2;
-{
- op0 = gen_lowpart (mode, op0);
-
- if (op1 == const0_rtx)
- op1 = CONST0_RTX (mode);
- else
- op1 = gen_lowpart (mode, op1);
-
- if (op2 == const0_rtx)
- op2 = CONST0_RTX (mode);
- else
- op2 = gen_lowpart (mode, op2);
-
- emit_insn ((*gen) (op0, op1, op2));
-}
/* Adjust the cost of a scheduling dependency. Return the new cost of
a dependency LINK or INSN on DEP_INSN. COST is the current cost. */
@@ -5286,13 +4818,15 @@ alpha_adjust_cost (insn, link, dep_insn, cost)
rtx dep_insn;
int cost;
{
+ rtx set, set_src;
enum attr_type insn_type, dep_insn_type;
/* If the dependence is an anti-dependence, there is no cost. For an
output dependence, there is sometimes a cost, but it doesn't seem
worth handling those few cases. */
+
if (REG_NOTE_KIND (link) != 0)
- return cost;
+ return 0;
/* If we can't recognize the insns, we can't really do anything. */
if (recog_memoized (insn) < 0 || recog_memoized (dep_insn) < 0)
@@ -5307,13 +4841,122 @@ alpha_adjust_cost (insn, link, dep_insn, cost)
|| dep_insn_type == TYPE_LDSYM)
cost += alpha_memory_latency-1;
- /* Everything else handled in DFA bypasses now. */
+ switch (alpha_cpu)
+ {
+ case PROCESSOR_EV4:
+ /* On EV4, if INSN is a store insn and DEP_INSN is setting the data
+ being stored, we can sometimes lower the cost. */
+
+ if ((insn_type == TYPE_IST || insn_type == TYPE_FST)
+ && (set = single_set (dep_insn)) != 0
+ && GET_CODE (PATTERN (insn)) == SET
+ && rtx_equal_p (SET_DEST (set), SET_SRC (PATTERN (insn))))
+ {
+ switch (dep_insn_type)
+ {
+ case TYPE_ILD:
+ case TYPE_FLD:
+ /* No savings here. */
+ return cost;
+
+ case TYPE_IMUL:
+ /* In these cases, we save one cycle. */
+ return cost - 1;
+
+ default:
+ /* In all other cases, we save two cycles. */
+ return MAX (0, cost - 2);
+ }
+ }
+
+ /* Another case that needs adjustment is an arithmetic or logical
+ operation. It's cost is usually one cycle, but we default it to
+ two in the MD file. The only case that it is actually two is
+ for the address in loads, stores, and jumps. */
+
+ if (dep_insn_type == TYPE_IADD || dep_insn_type == TYPE_ILOG)
+ {
+ switch (insn_type)
+ {
+ case TYPE_ILD:
+ case TYPE_IST:
+ case TYPE_FLD:
+ case TYPE_FST:
+ case TYPE_JSR:
+ return cost;
+ default:
+ return 1;
+ }
+ }
+
+ /* The final case is when a compare feeds into an integer branch;
+ the cost is only one cycle in that case. */
+
+ if (dep_insn_type == TYPE_ICMP && insn_type == TYPE_IBR)
+ return 1;
+ break;
+
+ case PROCESSOR_EV5:
+ /* And the lord DEC saith: "A special bypass provides an effective
+ latency of 0 cycles for an ICMP or ILOG insn producing the test
+ operand of an IBR or ICMOV insn." */
+
+ if ((dep_insn_type == TYPE_ICMP || dep_insn_type == TYPE_ILOG)
+ && (set = single_set (dep_insn)) != 0)
+ {
+ /* A branch only has one input. This must be it. */
+ if (insn_type == TYPE_IBR)
+ return 0;
+ /* A conditional move has three, make sure it is the test. */
+ if (insn_type == TYPE_ICMOV
+ && GET_CODE (set_src = PATTERN (insn)) == SET
+ && GET_CODE (set_src = SET_SRC (set_src)) == IF_THEN_ELSE
+ && rtx_equal_p (SET_DEST (set), XEXP (set_src, 0)))
+ return 0;
+ }
+
+ /* "The multiplier is unable to receive data from IEU bypass paths.
+ The instruction issues at the expected time, but its latency is
+ increased by the time it takes for the input data to become
+ available to the multiplier" -- which happens in pipeline stage
+ six, when results are comitted to the register file. */
+
+ if (insn_type == TYPE_IMUL)
+ {
+ switch (dep_insn_type)
+ {
+ /* These insns produce their results in pipeline stage five. */
+ case TYPE_ILD:
+ case TYPE_ICMOV:
+ case TYPE_IMUL:
+ case TYPE_MVI:
+ return cost + 1;
+
+ /* Other integer insns produce results in pipeline stage four. */
+ default:
+ return cost + 2;
+ }
+ }
+ break;
+
+ case PROCESSOR_EV6:
+ /* There is additional latency to move the result of (most) FP
+ operations anywhere but the FP register file. */
+ if ((insn_type == TYPE_FST || insn_type == TYPE_FTOI)
+ && (dep_insn_type == TYPE_FADD ||
+ dep_insn_type == TYPE_FMUL ||
+ dep_insn_type == TYPE_FCMOV))
+ return cost + 2;
+
+ break;
+ }
+
+ /* Otherwise, return the default cost. */
return cost;
}
-/* The number of instructions that can be issued per cycle. */
-
+/* Function to initialize the issue rate used by the scheduler. */
static int
alpha_issue_rate ()
{
@@ -5321,50 +4964,57 @@ alpha_issue_rate ()
}
static int
-alpha_use_dfa_pipeline_interface ()
+alpha_variable_issue (dump, verbose, insn, cim)
+ FILE *dump ATTRIBUTE_UNUSED;
+ int verbose ATTRIBUTE_UNUSED;
+ rtx insn;
+ int cim;
{
- return true;
-}
-
-/* How many alternative schedules to try. This should be as wide as the
- scheduling freedom in the DFA, but no wider. Making this value too
- large results extra work for the scheduler.
-
- For EV4, loads can be issued to either IB0 or IB1, thus we have 2
- alternative schedules. For EV5, we can choose between E0/E1 and
- FA/FM. For EV6, an arithmatic insn can be issued to U0/U1/L0/L1. */
+ if (recog_memoized (insn) < 0 || get_attr_type (insn) == TYPE_MULTI)
+ return 0;
-static int
-alpha_multipass_dfa_lookahead ()
-{
- return (alpha_cpu == PROCESSOR_EV6 ? 4 : 2);
+ return cim - 1;
}
+
-/* Machine-specific function data. */
+/* Register global variables and machine-specific functions with the
+ garbage collector. */
-struct machine_function GTY(())
+#if TARGET_ABI_UNICOSMK
+static void
+alpha_init_machine_status (p)
+ struct function *p;
{
- /* For unicosmk. */
- /* List of call information words for calls from this function. */
- struct rtx_def *first_ciw;
- struct rtx_def *last_ciw;
- int ciw_count;
+ p->machine =
+ (struct machine_function *) xcalloc (1, sizeof (struct machine_function));
- /* List of deferred case vectors. */
- struct rtx_def *addr_list;
+ p->machine->first_ciw = NULL_RTX;
+ p->machine->last_ciw = NULL_RTX;
+ p->machine->ciw_count = 0;
+ p->machine->addr_list = NULL_RTX;
+}
- /* For OSF. */
- const char *some_ld_name;
-};
+static void
+alpha_mark_machine_status (p)
+ struct function *p;
+{
+ struct machine_function *machine = p->machine;
-/* How to allocate a 'struct machine_function'. */
+ if (machine)
+ {
+ ggc_mark_rtx (machine->first_ciw);
+ ggc_mark_rtx (machine->addr_list);
+ }
+}
-static struct machine_function *
-alpha_init_machine_status ()
+static void
+alpha_free_machine_status (p)
+ struct function *p;
{
- return ((struct machine_function *)
- ggc_alloc_cleared (sizeof (struct machine_function)));
+ free (p->machine);
+ p->machine = NULL;
}
+#endif /* TARGET_ABI_UNICOSMK */
/* Functions to save and restore alpha_return_addr_rtx. */
@@ -5389,7 +5039,7 @@ alpha_gp_save_rtx ()
{
rtx r = get_hard_reg_initial_val (DImode, 29);
if (GET_CODE (r) != MEM)
- r = gen_mem_addressof (r, NULL_TREE, /*rescan=*/true);
+ r = gen_mem_addressof (r, NULL_TREE);
return r;
}
@@ -5508,45 +5158,6 @@ get_round_mode_suffix ()
abort ();
}
-/* Locate some local-dynamic symbol still in use by this function
- so that we can print its name in some movdi_er_tlsldm pattern. */
-
-static const char *
-get_some_local_dynamic_name ()
-{
- rtx insn;
-
- if (cfun->machine->some_ld_name)
- return cfun->machine->some_ld_name;
-
- for (insn = get_insns (); insn ; insn = NEXT_INSN (insn))
- if (INSN_P (insn)
- && for_each_rtx (&PATTERN (insn), get_some_local_dynamic_name_1, 0))
- return cfun->machine->some_ld_name;
-
- abort ();
-}
-
-static int
-get_some_local_dynamic_name_1 (px, data)
- rtx *px;
- void *data ATTRIBUTE_UNUSED;
-{
- rtx x = *px;
-
- if (GET_CODE (x) == SYMBOL_REF)
- {
- const char *str = XSTR (x, 0);
- if (str[0] == '@' && str[1] == 'D')
- {
- cfun->machine->some_ld_name = str;
- return 1;
- }
- }
-
- return 0;
-}
-
/* Print an operand. Recognize special options, documented below. */
void
@@ -5564,10 +5175,6 @@ print_operand (file, x, code)
assemble_name (file, alpha_fnname);
break;
- case '&':
- assemble_name (file, get_some_local_dynamic_name ());
- break;
-
case '/':
{
const char *trap = get_trap_mode_suffix ();
@@ -5609,30 +5216,13 @@ print_operand (file, x, code)
break;
case 'J':
- {
- const char *lituse;
-
- if (GET_CODE (x) == UNSPEC && XINT (x, 1) == UNSPEC_TLSGD_CALL)
- {
- x = XVECEXP (x, 0, 0);
- lituse = "lituse_tlsgd";
- }
- else if (GET_CODE (x) == UNSPEC && XINT (x, 1) == UNSPEC_TLSLDM_CALL)
- {
- x = XVECEXP (x, 0, 0);
- lituse = "lituse_tlsldm";
- }
- else if (GET_CODE (x) == CONST_INT)
- lituse = "lituse_jsr";
- else
- {
- output_operand_lossage ("invalid %%J value");
- break;
- }
-
- if (x != const0_rtx)
- fprintf (file, "\t\t!%s!%d", lituse, (int) INTVAL (x));
- }
+ if (GET_CODE (x) == CONST_INT)
+ {
+ if (INTVAL (x) != 0)
+ fprintf (file, "\t\t!lituse_jsr!%d", (int) INTVAL (x));
+ }
+ else
+ output_operand_lossage ("invalid %%J value");
break;
case 'r':
@@ -5740,40 +5330,31 @@ print_operand (file, x, code)
case 'U':
/* Similar, except do it from the mask. */
- if (GET_CODE (x) == CONST_INT)
- {
- HOST_WIDE_INT value = INTVAL (x);
-
- if (value == 0xff)
- {
- fputc ('b', file);
- break;
- }
- if (value == 0xffff)
- {
- fputc ('w', file);
- break;
- }
- if (value == 0xffffffff)
- {
- fputc ('l', file);
- break;
- }
- if (value == -1)
- {
- fputc ('q', file);
- break;
- }
- }
- else if (HOST_BITS_PER_WIDE_INT == 32
- && GET_CODE (x) == CONST_DOUBLE
- && CONST_DOUBLE_LOW (x) == 0xffffffff
- && CONST_DOUBLE_HIGH (x) == 0)
- {
- fputc ('l', file);
- break;
- }
- output_operand_lossage ("invalid %%U value");
+ if (GET_CODE (x) == CONST_INT && INTVAL (x) == 0xff)
+ fprintf (file, "b");
+ else if (GET_CODE (x) == CONST_INT && INTVAL (x) == 0xffff)
+ fprintf (file, "w");
+ else if (GET_CODE (x) == CONST_INT && INTVAL (x) == 0xffffffff)
+ fprintf (file, "l");
+#if HOST_BITS_PER_WIDE_INT == 32
+ else if (GET_CODE (x) == CONST_DOUBLE
+ && CONST_DOUBLE_HIGH (x) == 0
+ && CONST_DOUBLE_LOW (x) == -1)
+ fprintf (file, "l");
+ else if (GET_CODE (x) == CONST_DOUBLE
+ && CONST_DOUBLE_HIGH (x) == -1
+ && CONST_DOUBLE_LOW (x) == -1)
+ fprintf (file, "q");
+#else
+ else if (GET_CODE (x) == CONST_INT && INTVAL (x) == -1)
+ fprintf (file, "q");
+ else if (GET_CODE (x) == CONST_DOUBLE
+ && CONST_DOUBLE_HIGH (x) == 0
+ && CONST_DOUBLE_LOW (x) == -1)
+ fprintf (file, "q");
+#endif
+ else
+ output_operand_lossage ("invalid %%U value");
break;
case 's':
@@ -5875,19 +5456,6 @@ print_operand (file, x, code)
fprintf (file, "%s", reg_names[REGNO (x)]);
else if (GET_CODE (x) == MEM)
output_address (XEXP (x, 0));
- else if (GET_CODE (x) == CONST && GET_CODE (XEXP (x, 0)) == UNSPEC)
- {
- switch (XINT (XEXP (x, 0), 1))
- {
- case UNSPEC_DTPREL:
- case UNSPEC_TPREL:
- output_addr_const (file, XVECEXP (XEXP (x, 0), 0, 0));
- break;
- default:
- output_operand_lossage ("unknown relocation unspec");
- break;
- }
- }
else
output_addr_const (file, x);
break;
@@ -5917,36 +5485,7 @@ print_operand_address (file, addr)
if (GET_CODE (addr) == LO_SUM)
{
- const char *reloc16, *reloclo;
- rtx op1 = XEXP (addr, 1);
-
- if (GET_CODE (op1) == CONST && GET_CODE (XEXP (op1, 0)) == UNSPEC)
- {
- op1 = XEXP (op1, 0);
- switch (XINT (op1, 1))
- {
- case UNSPEC_DTPREL:
- reloc16 = NULL;
- reloclo = (alpha_tls_size == 16 ? "dtprel" : "dtprello");
- break;
- case UNSPEC_TPREL:
- reloc16 = NULL;
- reloclo = (alpha_tls_size == 16 ? "tprel" : "tprello");
- break;
- default:
- output_operand_lossage ("unknown relocation unspec");
- return;
- }
-
- output_addr_const (file, XVECEXP (op1, 0, 0));
- }
- else
- {
- reloc16 = "gprel";
- reloclo = "gprellow";
- output_addr_const (file, op1);
- }
-
+ output_addr_const (file, XEXP (addr, 1));
if (offset)
{
fputc ('+', file);
@@ -5963,7 +5502,7 @@ print_operand_address (file, addr)
abort ();
fprintf (file, "($%d)\t\t!%s", basereg,
- (basereg == 29 ? reloc16 : reloclo));
+ (basereg == 29 ? "gprel" : "gprellow"));
return;
}
@@ -5974,24 +5513,6 @@ print_operand_address (file, addr)
basereg = subreg_regno (addr);
else if (GET_CODE (addr) == CONST_INT)
offset = INTVAL (addr);
-
-#if TARGET_ABI_OPEN_VMS
- else if (GET_CODE (addr) == SYMBOL_REF)
- {
- fprintf (file, "%s", XSTR (addr, 0));
- return;
- }
- else if (GET_CODE (addr) == CONST
- && GET_CODE (XEXP (addr, 0)) == PLUS
- && GET_CODE (XEXP (XEXP (addr, 0), 0)) == SYMBOL_REF)
- {
- fprintf (file, "%s+%d",
- XSTR (XEXP (XEXP (addr, 0), 0), 0),
- INTVAL (XEXP (XEXP (addr, 0), 1)));
- return;
- }
-#endif
-
else
abort ();
@@ -6056,7 +5577,7 @@ alpha_initialize_trampoline (tramp, fnaddr, cxt, fnofs, cxtofs, jmpofs)
#ifdef TRANSFER_FROM_TRAMPOLINE
emit_library_call (gen_rtx_SYMBOL_REF (Pmode, "__enable_execute_stack"),
- 0, VOIDmode, 1, tramp, Pmode);
+ 0, VOIDmode, 1, addr, Pmode);
#endif
if (jmpofs >= 0)
@@ -6202,7 +5723,7 @@ alpha_build_va_list ()
if (TARGET_ABI_OPEN_VMS || TARGET_ABI_UNICOSMK)
return ptr_type_node;
- record = (*lang_hooks.types.make_type) (RECORD_TYPE);
+ record = make_lang_type (RECORD_TYPE);
type_decl = build_decl (TYPE_DECL, get_identifier ("__va_list_tag"), record);
TREE_CHAIN (record) = type_decl;
TYPE_NAME (record) = type_decl;
@@ -6225,7 +5746,8 @@ alpha_build_va_list ()
}
void
-alpha_va_start (valist, nextarg)
+alpha_va_start (stdarg_p, valist, nextarg)
+ int stdarg_p;
tree valist;
rtx nextarg ATTRIBUTE_UNUSED;
{
@@ -6236,7 +5758,7 @@ alpha_va_start (valist, nextarg)
return;
if (TARGET_ABI_UNICOSMK)
- std_expand_builtin_va_start (valist, nextarg);
+ std_expand_builtin_va_start (stdarg_p, valist, nextarg);
/* For Unix, SETUP_INCOMING_VARARGS moves the starting address base
up by 48, storing fp arg registers in the first 48 bytes, and the
@@ -6245,15 +5767,12 @@ alpha_va_start (valist, nextarg)
If no integer registers need be stored, then we must subtract 48
in order to account for the integer arg registers which are counted
- in argsize above, but which are not actually stored on the stack.
- Must further be careful here about structures straddling the last
- integer argument register; that futzes with pretend_args_size,
- which changes the meaning of AP. */
+ in argsize above, but which are not actually stored on the stack. */
- if (NUM_ARGS <= 6)
+ if (NUM_ARGS <= 5 + stdarg_p)
offset = TARGET_ABI_OPEN_VMS ? UNITS_PER_WORD : 6 * UNITS_PER_WORD;
else
- offset = -6 * UNITS_PER_WORD + current_function_pretend_args_size;
+ offset = -6 * UNITS_PER_WORD;
if (TARGET_ABI_OPEN_VMS)
{
@@ -6378,310 +5897,6 @@ alpha_va_arg (valist, type)
return addr;
}
-/* Builtins. */
-
-enum alpha_builtin
-{
- ALPHA_BUILTIN_CMPBGE,
- ALPHA_BUILTIN_EXTBL,
- ALPHA_BUILTIN_EXTWL,
- ALPHA_BUILTIN_EXTLL,
- ALPHA_BUILTIN_EXTQL,
- ALPHA_BUILTIN_EXTWH,
- ALPHA_BUILTIN_EXTLH,
- ALPHA_BUILTIN_EXTQH,
- ALPHA_BUILTIN_INSBL,
- ALPHA_BUILTIN_INSWL,
- ALPHA_BUILTIN_INSLL,
- ALPHA_BUILTIN_INSQL,
- ALPHA_BUILTIN_INSWH,
- ALPHA_BUILTIN_INSLH,
- ALPHA_BUILTIN_INSQH,
- ALPHA_BUILTIN_MSKBL,
- ALPHA_BUILTIN_MSKWL,
- ALPHA_BUILTIN_MSKLL,
- ALPHA_BUILTIN_MSKQL,
- ALPHA_BUILTIN_MSKWH,
- ALPHA_BUILTIN_MSKLH,
- ALPHA_BUILTIN_MSKQH,
- ALPHA_BUILTIN_UMULH,
- ALPHA_BUILTIN_ZAP,
- ALPHA_BUILTIN_ZAPNOT,
- ALPHA_BUILTIN_AMASK,
- ALPHA_BUILTIN_IMPLVER,
- ALPHA_BUILTIN_RPCC,
- ALPHA_BUILTIN_THREAD_POINTER,
- ALPHA_BUILTIN_SET_THREAD_POINTER,
-
- /* TARGET_MAX */
- ALPHA_BUILTIN_MINUB8,
- ALPHA_BUILTIN_MINSB8,
- ALPHA_BUILTIN_MINUW4,
- ALPHA_BUILTIN_MINSW4,
- ALPHA_BUILTIN_MAXUB8,
- ALPHA_BUILTIN_MAXSB8,
- ALPHA_BUILTIN_MAXUW4,
- ALPHA_BUILTIN_MAXSW4,
- ALPHA_BUILTIN_PERR,
- ALPHA_BUILTIN_PKLB,
- ALPHA_BUILTIN_PKWB,
- ALPHA_BUILTIN_UNPKBL,
- ALPHA_BUILTIN_UNPKBW,
-
- /* TARGET_CIX */
- ALPHA_BUILTIN_CTTZ,
- ALPHA_BUILTIN_CTLZ,
- ALPHA_BUILTIN_CTPOP,
-
- ALPHA_BUILTIN_max
-};
-
-static unsigned int const code_for_builtin[ALPHA_BUILTIN_max] = {
- CODE_FOR_builtin_cmpbge,
- CODE_FOR_builtin_extbl,
- CODE_FOR_builtin_extwl,
- CODE_FOR_builtin_extll,
- CODE_FOR_builtin_extql,
- CODE_FOR_builtin_extwh,
- CODE_FOR_builtin_extlh,
- CODE_FOR_builtin_extqh,
- CODE_FOR_builtin_insbl,
- CODE_FOR_builtin_inswl,
- CODE_FOR_builtin_insll,
- CODE_FOR_builtin_insql,
- CODE_FOR_builtin_inswh,
- CODE_FOR_builtin_inslh,
- CODE_FOR_builtin_insqh,
- CODE_FOR_builtin_mskbl,
- CODE_FOR_builtin_mskwl,
- CODE_FOR_builtin_mskll,
- CODE_FOR_builtin_mskql,
- CODE_FOR_builtin_mskwh,
- CODE_FOR_builtin_msklh,
- CODE_FOR_builtin_mskqh,
- CODE_FOR_umuldi3_highpart,
- CODE_FOR_builtin_zap,
- CODE_FOR_builtin_zapnot,
- CODE_FOR_builtin_amask,
- CODE_FOR_builtin_implver,
- CODE_FOR_builtin_rpcc,
- CODE_FOR_load_tp,
- CODE_FOR_set_tp,
-
- /* TARGET_MAX */
- CODE_FOR_builtin_minub8,
- CODE_FOR_builtin_minsb8,
- CODE_FOR_builtin_minuw4,
- CODE_FOR_builtin_minsw4,
- CODE_FOR_builtin_maxub8,
- CODE_FOR_builtin_maxsb8,
- CODE_FOR_builtin_maxuw4,
- CODE_FOR_builtin_maxsw4,
- CODE_FOR_builtin_perr,
- CODE_FOR_builtin_pklb,
- CODE_FOR_builtin_pkwb,
- CODE_FOR_builtin_unpkbl,
- CODE_FOR_builtin_unpkbw,
-
- /* TARGET_CIX */
- CODE_FOR_builtin_cttz,
- CODE_FOR_builtin_ctlz,
- CODE_FOR_builtin_ctpop
-};
-
-struct alpha_builtin_def
-{
- const char *name;
- enum alpha_builtin code;
- unsigned int target_mask;
-};
-
-static struct alpha_builtin_def const zero_arg_builtins[] = {
- { "__builtin_alpha_implver", ALPHA_BUILTIN_IMPLVER, 0 },
- { "__builtin_alpha_rpcc", ALPHA_BUILTIN_RPCC, 0 }
-};
-
-static struct alpha_builtin_def const one_arg_builtins[] = {
- { "__builtin_alpha_amask", ALPHA_BUILTIN_AMASK, 0 },
- { "__builtin_alpha_pklb", ALPHA_BUILTIN_PKLB, MASK_MAX },
- { "__builtin_alpha_pkwb", ALPHA_BUILTIN_PKWB, MASK_MAX },
- { "__builtin_alpha_unpkbl", ALPHA_BUILTIN_UNPKBL, MASK_MAX },
- { "__builtin_alpha_unpkbw", ALPHA_BUILTIN_UNPKBW, MASK_MAX },
- { "__builtin_alpha_cttz", ALPHA_BUILTIN_CTTZ, MASK_CIX },
- { "__builtin_alpha_ctlz", ALPHA_BUILTIN_CTLZ, MASK_CIX },
- { "__builtin_alpha_ctpop", ALPHA_BUILTIN_CTPOP, MASK_CIX }
-};
-
-static struct alpha_builtin_def const two_arg_builtins[] = {
- { "__builtin_alpha_cmpbge", ALPHA_BUILTIN_CMPBGE, 0 },
- { "__builtin_alpha_extbl", ALPHA_BUILTIN_EXTBL, 0 },
- { "__builtin_alpha_extwl", ALPHA_BUILTIN_EXTWL, 0 },
- { "__builtin_alpha_extll", ALPHA_BUILTIN_EXTLL, 0 },
- { "__builtin_alpha_extql", ALPHA_BUILTIN_EXTQL, 0 },
- { "__builtin_alpha_extwh", ALPHA_BUILTIN_EXTWH, 0 },
- { "__builtin_alpha_extlh", ALPHA_BUILTIN_EXTLH, 0 },
- { "__builtin_alpha_extqh", ALPHA_BUILTIN_EXTQH, 0 },
- { "__builtin_alpha_insbl", ALPHA_BUILTIN_INSBL, 0 },
- { "__builtin_alpha_inswl", ALPHA_BUILTIN_INSWL, 0 },
- { "__builtin_alpha_insll", ALPHA_BUILTIN_INSLL, 0 },
- { "__builtin_alpha_insql", ALPHA_BUILTIN_INSQL, 0 },
- { "__builtin_alpha_inswh", ALPHA_BUILTIN_INSWH, 0 },
- { "__builtin_alpha_inslh", ALPHA_BUILTIN_INSLH, 0 },
- { "__builtin_alpha_insqh", ALPHA_BUILTIN_INSQH, 0 },
- { "__builtin_alpha_mskbl", ALPHA_BUILTIN_MSKBL, 0 },
- { "__builtin_alpha_mskwl", ALPHA_BUILTIN_MSKWL, 0 },
- { "__builtin_alpha_mskll", ALPHA_BUILTIN_MSKLL, 0 },
- { "__builtin_alpha_mskql", ALPHA_BUILTIN_MSKQL, 0 },
- { "__builtin_alpha_mskwh", ALPHA_BUILTIN_MSKWH, 0 },
- { "__builtin_alpha_msklh", ALPHA_BUILTIN_MSKLH, 0 },
- { "__builtin_alpha_mskqh", ALPHA_BUILTIN_MSKQH, 0 },
- { "__builtin_alpha_umulh", ALPHA_BUILTIN_UMULH, 0 },
- { "__builtin_alpha_zap", ALPHA_BUILTIN_ZAP, 0 },
- { "__builtin_alpha_zapnot", ALPHA_BUILTIN_ZAPNOT, 0 },
- { "__builtin_alpha_minub8", ALPHA_BUILTIN_MINUB8, MASK_MAX },
- { "__builtin_alpha_minsb8", ALPHA_BUILTIN_MINSB8, MASK_MAX },
- { "__builtin_alpha_minuw4", ALPHA_BUILTIN_MINUW4, MASK_MAX },
- { "__builtin_alpha_minsw4", ALPHA_BUILTIN_MINSW4, MASK_MAX },
- { "__builtin_alpha_maxub8", ALPHA_BUILTIN_MAXUB8, MASK_MAX },
- { "__builtin_alpha_maxsb8", ALPHA_BUILTIN_MAXSB8, MASK_MAX },
- { "__builtin_alpha_maxuw4", ALPHA_BUILTIN_MAXUW4, MASK_MAX },
- { "__builtin_alpha_maxsw4", ALPHA_BUILTIN_MAXSW4, MASK_MAX },
- { "__builtin_alpha_perr", ALPHA_BUILTIN_PERR, MASK_MAX }
-};
-
-static void
-alpha_init_builtins ()
-{
- const struct alpha_builtin_def *p;
- tree ftype;
- size_t i;
-
- ftype = build_function_type (long_integer_type_node, void_list_node);
-
- p = zero_arg_builtins;
- for (i = 0; i < ARRAY_SIZE (zero_arg_builtins); ++i, ++p)
- if ((target_flags & p->target_mask) == p->target_mask)
- builtin_function (p->name, ftype, p->code, BUILT_IN_MD,
- NULL, NULL_TREE);
-
- ftype = build_function_type_list (long_integer_type_node,
- long_integer_type_node, NULL_TREE);
-
- p = one_arg_builtins;
- for (i = 0; i < ARRAY_SIZE (one_arg_builtins); ++i, ++p)
- if ((target_flags & p->target_mask) == p->target_mask)
- builtin_function (p->name, ftype, p->code, BUILT_IN_MD,
- NULL, NULL_TREE);
-
- ftype = build_function_type_list (long_integer_type_node,
- long_integer_type_node,
- long_integer_type_node, NULL_TREE);
-
- p = two_arg_builtins;
- for (i = 0; i < ARRAY_SIZE (two_arg_builtins); ++i, ++p)
- if ((target_flags & p->target_mask) == p->target_mask)
- builtin_function (p->name, ftype, p->code, BUILT_IN_MD,
- NULL, NULL_TREE);
-
- ftype = build_function_type (ptr_type_node, void_list_node);
- builtin_function ("__builtin_thread_pointer", ftype,
- ALPHA_BUILTIN_THREAD_POINTER, BUILT_IN_MD,
- NULL, NULL_TREE);
-
- ftype = build_function_type_list (void_type_node, ptr_type_node, NULL_TREE);
- builtin_function ("__builtin_set_thread_pointer", ftype,
- ALPHA_BUILTIN_SET_THREAD_POINTER, BUILT_IN_MD,
- NULL, NULL_TREE);
-}
-
-/* Expand an expression EXP that calls a built-in function,
- with result going to TARGET if that's convenient
- (and in mode MODE if that's convenient).
- SUBTARGET may be used as the target for computing one of EXP's operands.
- IGNORE is nonzero if the value is to be ignored. */
-
-static rtx
-alpha_expand_builtin (exp, target, subtarget, mode, ignore)
- tree exp;
- rtx target;
- rtx subtarget ATTRIBUTE_UNUSED;
- enum machine_mode mode ATTRIBUTE_UNUSED;
- int ignore ATTRIBUTE_UNUSED;
-{
-#define MAX_ARGS 2
-
- tree fndecl = TREE_OPERAND (TREE_OPERAND (exp, 0), 0);
- unsigned int fcode = DECL_FUNCTION_CODE (fndecl);
- tree arglist = TREE_OPERAND (exp, 1);
- enum insn_code icode;
- rtx op[MAX_ARGS], pat;
- int arity;
- bool nonvoid;
-
- if (fcode >= ALPHA_BUILTIN_max)
- internal_error ("bad builtin fcode");
- icode = code_for_builtin[fcode];
- if (icode == 0)
- internal_error ("bad builtin fcode");
-
- nonvoid = TREE_TYPE (TREE_TYPE (fndecl)) != void_type_node;
-
- for (arglist = TREE_OPERAND (exp, 1), arity = 0;
- arglist;
- arglist = TREE_CHAIN (arglist), arity++)
- {
- const struct insn_operand_data *insn_op;
-
- tree arg = TREE_VALUE (arglist);
- if (arg == error_mark_node)
- return NULL_RTX;
- if (arity > MAX_ARGS)
- return NULL_RTX;
-
- insn_op = &insn_data[icode].operand[arity + nonvoid];
-
- op[arity] = expand_expr (arg, NULL_RTX, insn_op->mode, 0);
-
- if (!(*insn_op->predicate) (op[arity], insn_op->mode))
- op[arity] = copy_to_mode_reg (insn_op->mode, op[arity]);
- }
-
- if (nonvoid)
- {
- enum machine_mode tmode = insn_data[icode].operand[0].mode;
- if (!target
- || GET_MODE (target) != tmode
- || !(*insn_data[icode].operand[0].predicate) (target, tmode))
- target = gen_reg_rtx (tmode);
- }
-
- switch (arity)
- {
- case 0:
- pat = GEN_FCN (icode) (target);
- break;
- case 1:
- if (nonvoid)
- pat = GEN_FCN (icode) (target, op[0]);
- else
- pat = GEN_FCN (icode) (op[0]);
- break;
- case 2:
- pat = GEN_FCN (icode) (target, op[0], op[1]);
- break;
- default:
- abort ();
- }
- if (!pat)
- return NULL_RTX;
- emit_insn (pat);
-
- if (nonvoid)
- return target;
- else
- return const0_rtx;
-}
-
/* This page contains routines that are used to determine what the function
prologue and epilogue code will do and write them out. */
@@ -6719,11 +5934,10 @@ alpha_sa_mask (imaskP, fmaskP)
unsigned int i;
/* Irritatingly, there are two kinds of thunks -- those created with
- TARGET_ASM_OUTPUT_MI_THUNK and those with DECL_THUNK_P that go
- through the regular part of the compiler. In the
- TARGET_ASM_OUTPUT_MI_THUNK case we don't have valid register life
- info, but assemble_start_function wants to output .frame and
- .mask directives. */
+ ASM_OUTPUT_MI_THUNK and those with DECL_THUNK_P that go through
+ the regular part of the compiler. In the ASM_OUTPUT_MI_THUNK case
+ we don't have valid register life info, but assemble_start_function
+ wants to output .frame and .mask directives. */
if (current_function_is_thunk && !no_new_pseudos)
{
*imaskP = 0;
@@ -6798,7 +6012,7 @@ alpha_sa_size ()
alpha_procedure_type
= (sa_size || get_frame_size() != 0
- || current_function_outgoing_args_size
+ || current_function_outgoing_args_size || current_function_varargs
|| current_function_stdarg || current_function_calls_alloca
|| frame_pointer_needed)
? PT_STACK : PT_REGISTER;
@@ -6897,18 +6111,11 @@ const struct attribute_spec vms_attribute_table[] =
#endif
static int
-find_lo_sum_using_gp (px, data)
+find_lo_sum (px, data)
rtx *px;
void *data ATTRIBUTE_UNUSED;
{
- return GET_CODE (*px) == LO_SUM && XEXP (*px, 0) == pic_offset_table_rtx;
-}
-
-int
-alpha_find_lo_sum_using_gp (insn)
- rtx insn;
-{
- return for_each_rtx (&PATTERN (insn), find_lo_sum_using_gp, NULL) > 0;
+ return GET_CODE (*px) == LO_SUM;
}
static int
@@ -6937,9 +6144,15 @@ alpha_does_function_need_gp ()
for (; insn; insn = NEXT_INSN (insn))
if (INSN_P (insn)
&& GET_CODE (PATTERN (insn)) != USE
- && GET_CODE (PATTERN (insn)) != CLOBBER
- && get_attr_usegp (insn))
- return 1;
+ && GET_CODE (PATTERN (insn)) != CLOBBER)
+ {
+ enum attr_type type = get_attr_type (insn);
+ if (type == TYPE_LDSYM || type == TYPE_JSR)
+ return 1;
+ if (TARGET_EXPLICIT_RELOCS
+ && for_each_rtx (&PATTERN (insn), find_lo_sum, NULL) > 0)
+ return 1;
+ }
return 0;
}
@@ -6966,30 +6179,22 @@ alpha_write_verstamp (file)
static rtx
set_frame_related_p ()
{
- rtx seq = get_insns ();
- rtx insn;
-
+ rtx seq = gen_sequence ();
end_sequence ();
- if (!seq)
- return NULL_RTX;
-
- if (INSN_P (seq))
+ if (GET_CODE (seq) == SEQUENCE)
{
- insn = seq;
- while (insn != NULL_RTX)
- {
- RTX_FRAME_RELATED_P (insn) = 1;
- insn = NEXT_INSN (insn);
- }
- seq = emit_insn (seq);
+ int i = XVECLEN (seq, 0);
+ while (--i >= 0)
+ RTX_FRAME_RELATED_P (XVECEXP (seq, 0, i)) = 1;
+ return emit_insn (seq);
}
else
{
seq = emit_insn (seq);
RTX_FRAME_RELATED_P (seq) = 1;
+ return seq;
}
- return seq;
}
#define FRP(exp) (start_sequence (), exp, set_frame_related_p ())
@@ -7493,13 +6698,26 @@ alpha_start_function (file, fnname, decl)
}
#if TARGET_ABI_OPEN_VMS
- /* Ifdef'ed cause link_section are only available then. */
- readonly_data_section ();
+ /* Ifdef'ed cause readonly_section and link_section are only
+ available then. */
+ readonly_section ();
fprintf (file, "\t.align 3\n");
assemble_name (file, fnname); fputs ("..na:\n", file);
fputs ("\t.ascii \"", file);
assemble_name (file, fnname);
fputs ("\\0\"\n", file);
+
+ link_section ();
+ fprintf (file, "\t.align 3\n");
+ fputs ("\t.name ", file);
+ assemble_name (file, fnname);
+ fputs ("..na\n", file);
+ ASM_OUTPUT_LABEL (file, fnname);
+ fprintf (file, "\t.pdesc ");
+ assemble_name (file, fnname);
+ fprintf (file, "..en,%s\n",
+ alpha_procedure_type == PT_STACK ? "stack"
+ : alpha_procedure_type == PT_REGISTER ? "reg" : "null");
alpha_need_linkage (fnname, 1);
text_section ();
#endif
@@ -7785,39 +7003,6 @@ alpha_expand_epilogue ()
}
}
}
-
-#if TARGET_ABI_OPEN_VMS
-#include <splay-tree.h>
-
-/* Structure to collect function names for final output
- in link section. */
-
-enum links_kind {KIND_UNUSED, KIND_LOCAL, KIND_EXTERN};
-enum reloc_kind {KIND_LINKAGE, KIND_CODEADDR};
-
-struct alpha_funcs
-{
- int num;
- splay_tree links;
-};
-
-struct alpha_links
-{
- int num;
- rtx linkage;
- enum links_kind lkind;
- enum reloc_kind rkind;
-};
-
-static splay_tree alpha_funcs_tree;
-static splay_tree alpha_links_tree;
-
-static int mark_alpha_links_node PARAMS ((splay_tree_node, void *));
-static void mark_alpha_links PARAMS ((void *));
-static int alpha_write_one_linkage PARAMS ((splay_tree_node, void *));
-
-static int alpha_funcs_num;
-#endif
/* Output the rest of the textual info surrounding the epilogue. */
@@ -7825,7 +7010,7 @@ void
alpha_end_function (file, fnname, decl)
FILE *file;
const char *fnname;
- tree decl;
+ tree decl ATTRIBUTE_UNUSED;
{
/* End the function. */
if (!TARGET_ABI_UNICOSMK && !flag_inhibit_size_directive)
@@ -7836,20 +7021,20 @@ alpha_end_function (file, fnname, decl)
}
inside_function = FALSE;
-#if TARGET_ABI_OPEN_VMS
- alpha_write_linkage (file, fnname, decl);
-#endif
-
- /* Show that we know this function if it is called again.
+ /* Show that we know this function if it is called again.
- Do this only for functions whose symbols bind locally.
+ Don't do this for global functions in object files destined for a
+ shared library because the function may be overridden by the application
+ or other libraries. Similarly, don't do this for weak functions.
Don't do this for functions not defined in the .text section, as
otherwise it's not unlikely that the destination is out of range
for a direct branch. */
- if ((*targetm.binds_local_p) (decl) && decl_in_text_section (decl))
- SYMBOL_REF_FLAG (XEXP (DECL_RTL (decl), 0)) = 1;
+ if (!DECL_WEAK (current_function_decl)
+ && (!flag_pic || !TREE_PUBLIC (current_function_decl))
+ && decl_in_text_section (current_function_decl))
+ SYMBOL_REF_FLAG (XEXP (DECL_RTL (current_function_decl), 0)) = 1;
/* Output jump tables and the static subroutine information block. */
if (TARGET_ABI_UNICOSMK)
@@ -7859,8 +7044,7 @@ alpha_end_function (file, fnname, decl)
}
}
-#if TARGET_ABI_OSF
-/* Emit a tail call to FUNCTION after adjusting THIS by DELTA.
+/* Emit a tail call to FUNCTION after adjusting THIS by DELTA.
In order to avoid the hordes of differences between generated code
with and without TARGET_EXPLICIT_RELOCS, and to avoid duplicating
@@ -7869,12 +7053,11 @@ alpha_end_function (file, fnname, decl)
Not sure why this idea hasn't been explored before... */
-static void
-alpha_output_mi_thunk_osf (file, thunk_fndecl, delta, vcall_offset, function)
+void
+alpha_output_mi_thunk_osf (file, thunk_fndecl, delta, function)
FILE *file;
tree thunk_fndecl ATTRIBUTE_UNUSED;
HOST_WIDE_INT delta;
- HOST_WIDE_INT vcall_offset;
tree function;
{
HOST_WIDE_INT hi, lo;
@@ -7909,37 +7092,6 @@ alpha_output_mi_thunk_osf (file, thunk_fndecl, delta, vcall_offset, function)
emit_insn (gen_adddi3 (this, this, tmp));
}
- /* Add a delta stored in the vtable at VCALL_OFFSET. */
- if (vcall_offset)
- {
- rtx tmp, tmp2;
-
- tmp = gen_rtx_REG (Pmode, 0);
- emit_move_insn (tmp, gen_rtx_MEM (Pmode, this));
-
- lo = ((vcall_offset & 0xffff) ^ 0x8000) - 0x8000;
- hi = (((vcall_offset - lo) & 0xffffffff) ^ 0x80000000) - 0x80000000;
- if (hi + lo == vcall_offset)
- {
- if (hi)
- emit_insn (gen_adddi3 (tmp, tmp, GEN_INT (hi)));
- }
- else
- {
- tmp2 = alpha_emit_set_long_const (gen_rtx_REG (Pmode, 1),
- vcall_offset, -(vcall_offset < 0));
- emit_insn (gen_adddi3 (tmp, tmp, tmp2));
- lo = 0;
- }
- if (lo)
- tmp2 = gen_rtx_PLUS (Pmode, tmp, GEN_INT (lo));
- else
- tmp2 = tmp;
- emit_move_insn (tmp, gen_rtx_MEM (Pmode, tmp2));
-
- emit_insn (gen_adddi3 (this, this, tmp));
- }
-
/* Generate a tail call to the target function. */
if (! TREE_USED (function))
{
@@ -7961,7 +7113,6 @@ alpha_output_mi_thunk_osf (file, thunk_fndecl, delta, vcall_offset, function)
final (insn, file, 1, 0);
final_end_function ();
}
-#endif /* TARGET_ABI_OSF */
/* Debugging support. */
@@ -8424,7 +7575,6 @@ alphaev4_insn_pipe (insn)
case TYPE_MISC:
case TYPE_IBR:
case TYPE_JSR:
- case TYPE_CALLPAL:
case TYPE_FCPYS:
case TYPE_FCMOV:
case TYPE_FADD:
@@ -8467,7 +7617,6 @@ alphaev5_insn_pipe (insn)
case TYPE_IBR:
case TYPE_JSR:
- case TYPE_CALLPAL:
return EV5_E1;
case TYPE_FCPYS:
@@ -8928,25 +8077,82 @@ alpha_reorg (insns)
}
}
-#ifdef OBJECT_FORMAT_ELF
+/* Check a floating-point value for validity for a particular machine mode. */
+
+static const char * const float_strings[] =
+{
+ /* These are for FLOAT_VAX. */
+ "1.70141173319264430e+38", /* 2^127 (2^24 - 1) / 2^24 */
+ "-1.70141173319264430e+38",
+ "2.93873587705571877e-39", /* 2^-128 */
+ "-2.93873587705571877e-39",
+ /* These are for the default broken IEEE mode, which traps
+ on infinity or denormal numbers. */
+ "3.402823466385288598117e+38", /* 2^128 (1 - 2^-24) */
+ "-3.402823466385288598117e+38",
+ "1.1754943508222875079687e-38", /* 2^-126 */
+ "-1.1754943508222875079687e-38",
+};
-/* Switch to the section to which we should output X. The only thing
- special we do here is to honor small data. */
+static REAL_VALUE_TYPE float_values[8];
+static int inited_float_values = 0;
-static void
-alpha_elf_select_rtx_section (mode, x, align)
+int
+check_float_value (mode, d, overflow)
enum machine_mode mode;
- rtx x;
- unsigned HOST_WIDE_INT align;
+ REAL_VALUE_TYPE *d;
+ int overflow ATTRIBUTE_UNUSED;
{
- if (TARGET_SMALL_DATA && GET_MODE_SIZE (mode) <= g_switch_value)
- /* ??? Consider using mergable sdata sections. */
- sdata_section ();
- else
- default_elf_select_rtx_section (mode, x, align);
-}
-#endif /* OBJECT_FORMAT_ELF */
+ if (TARGET_IEEE || TARGET_IEEE_CONFORMANT || TARGET_IEEE_WITH_INEXACT)
+ return 0;
+
+ if (inited_float_values == 0)
+ {
+ int i;
+ for (i = 0; i < 8; i++)
+ float_values[i] = REAL_VALUE_ATOF (float_strings[i], DFmode);
+
+ inited_float_values = 1;
+ }
+
+ if (mode == SFmode)
+ {
+ REAL_VALUE_TYPE r;
+ REAL_VALUE_TYPE *fvptr;
+
+ if (TARGET_FLOAT_VAX)
+ fvptr = &float_values[0];
+ else
+ fvptr = &float_values[4];
+
+ memcpy (&r, d, sizeof (REAL_VALUE_TYPE));
+ if (REAL_VALUES_LESS (fvptr[0], r))
+ {
+ memcpy (d, &fvptr[0], sizeof (REAL_VALUE_TYPE));
+ return 1;
+ }
+ else if (REAL_VALUES_LESS (r, fvptr[1]))
+ {
+ memcpy (d, &fvptr[1], sizeof (REAL_VALUE_TYPE));
+ return 1;
+ }
+ else if (REAL_VALUES_LESS (dconst0, r)
+ && REAL_VALUES_LESS (r, fvptr[2]))
+ {
+ memcpy (d, &dconst0, sizeof (REAL_VALUE_TYPE));
+ return 1;
+ }
+ else if (REAL_VALUES_LESS (r, dconst0)
+ && REAL_VALUES_LESS (fvptr[3], r))
+ {
+ memcpy (d, &dconst0, sizeof (REAL_VALUE_TYPE));
+ return 1;
+ }
+ }
+
+ return 0;
+}
#if TARGET_ABI_OPEN_VMS
@@ -8983,6 +8189,25 @@ alpha_arg_info_reg_val (cum)
return GEN_INT (regval);
}
+#include <splay-tree.h>
+
+/* Structure to collect function names for final output
+ in link section. */
+
+enum links_kind {KIND_UNUSED, KIND_LOCAL, KIND_EXTERN};
+
+struct alpha_links
+{
+ rtx linkage;
+ enum links_kind kind;
+};
+
+static splay_tree alpha_links;
+
+static int mark_alpha_links_node PARAMS ((splay_tree_node, void *));
+static void mark_alpha_links PARAMS ((void *));
+static int alpha_write_one_linkage PARAMS ((splay_tree_node, void *));
+
/* Protect alpha_links from garbage collection. */
static int
@@ -9016,67 +8241,46 @@ alpha_need_linkage (name, is_local)
{
splay_tree_node node;
struct alpha_links *al;
- struct alpha_funcs *cfaf;
if (name[0] == '*')
name++;
- if (is_local)
- {
- alpha_funcs_tree = splay_tree_new
- ((splay_tree_compare_fn) splay_tree_compare_pointers,
- (splay_tree_delete_key_fn) free,
- (splay_tree_delete_key_fn) free);
-
- cfaf = (struct alpha_funcs *) xmalloc (sizeof (struct alpha_funcs));
-
- cfaf->links = 0;
- cfaf->num = ++alpha_funcs_num;
-
- splay_tree_insert (alpha_funcs_tree,
- (splay_tree_key) current_function_decl,
- (splay_tree_value) cfaf);
-
- }
-
- if (alpha_links_tree)
+ if (alpha_links)
{
/* Is this name already defined? */
- node = splay_tree_lookup (alpha_links_tree, (splay_tree_key) name);
+ node = splay_tree_lookup (alpha_links, (splay_tree_key) name);
if (node)
{
al = (struct alpha_links *) node->value;
if (is_local)
{
/* Defined here but external assumed. */
- if (al->lkind == KIND_EXTERN)
- al->lkind = KIND_LOCAL;
+ if (al->kind == KIND_EXTERN)
+ al->kind = KIND_LOCAL;
}
else
{
/* Used here but unused assumed. */
- if (al->lkind == KIND_UNUSED)
- al->lkind = KIND_LOCAL;
+ if (al->kind == KIND_UNUSED)
+ al->kind = KIND_LOCAL;
}
return al->linkage;
}
}
else
{
- alpha_links_tree = splay_tree_new
- ((splay_tree_compare_fn) strcmp,
- (splay_tree_delete_key_fn) free,
- (splay_tree_delete_key_fn) free);
-
- ggc_add_root (&alpha_links_tree, 1, 1, mark_alpha_links);
+ alpha_links = splay_tree_new ((splay_tree_compare_fn) strcmp,
+ (splay_tree_delete_key_fn) free,
+ (splay_tree_delete_key_fn) free);
+ ggc_add_root (&alpha_links, 1, 1, mark_alpha_links);
}
al = (struct alpha_links *) xmalloc (sizeof (struct alpha_links));
name = xstrdup (name);
/* Assume external if no definition. */
- al->lkind = (is_local ? KIND_UNUSED : KIND_EXTERN);
+ al->kind = (is_local ? KIND_UNUSED : KIND_EXTERN);
/* Ensure we have an IDENTIFIER so assemble_name can mark it used. */
get_identifier (name);
@@ -9092,165 +8296,50 @@ alpha_need_linkage (name, is_local)
ggc_alloc_string (linksym, name_len + 5));
}
- splay_tree_insert (alpha_links_tree, (splay_tree_key) name,
+ splay_tree_insert (alpha_links, (splay_tree_key) name,
(splay_tree_value) al);
return al->linkage;
}
-rtx
-alpha_use_linkage (linkage, cfundecl, lflag, rflag)
- rtx linkage;
- tree cfundecl;
- int lflag;
- int rflag;
-{
- splay_tree_node cfunnode;
- struct alpha_funcs *cfaf;
- struct alpha_links *al;
- const char *name = XSTR (linkage, 0);
-
- cfaf = (struct alpha_funcs *) 0;
- al = (struct alpha_links *) 0;
-
- cfunnode = splay_tree_lookup (alpha_funcs_tree, (splay_tree_key) cfundecl);
- cfaf = (struct alpha_funcs *) cfunnode->value;
-
- if (cfaf->links)
- {
- splay_tree_node lnode;
-
- /* Is this name already defined? */
-
- lnode = splay_tree_lookup (cfaf->links, (splay_tree_key) name);
- if (lnode)
- al = (struct alpha_links *) lnode->value;
- }
- else
- {
- cfaf->links = splay_tree_new
- ((splay_tree_compare_fn) strcmp,
- (splay_tree_delete_key_fn) free,
- (splay_tree_delete_key_fn) free);
- ggc_add_root (&cfaf->links, 1, 1, mark_alpha_links);
- }
-
- if (!al)
- {
- size_t name_len;
- size_t buflen;
- char buf [512];
- char *linksym;
- splay_tree_node node = 0;
- struct alpha_links *anl;
-
- if (name[0] == '*')
- name++;
-
- name_len = strlen (name);
-
- al = (struct alpha_links *) xmalloc (sizeof (struct alpha_links));
- al->num = cfaf->num;
-
- node = splay_tree_lookup (alpha_links_tree, (splay_tree_key) name);
- if (node)
- {
- anl = (struct alpha_links *) node->value;
- al->lkind = anl->lkind;
- }
-
- sprintf (buf, "$%d..%s..lk", cfaf->num, name);
- buflen = strlen (buf);
- linksym = alloca (buflen + 1);
- memcpy (linksym, buf, buflen + 1);
-
- al->linkage = gen_rtx_SYMBOL_REF
- (Pmode, ggc_alloc_string (linksym, buflen + 1));
-
- splay_tree_insert (cfaf->links, (splay_tree_key) name,
- (splay_tree_value) al);
- }
-
- if (rflag)
- al->rkind = KIND_CODEADDR;
- else
- al->rkind = KIND_LINKAGE;
-
- if (lflag)
- return gen_rtx_MEM (Pmode, plus_constant (al->linkage, 8));
- else
- return al->linkage;
-}
-
static int
alpha_write_one_linkage (node, data)
splay_tree_node node;
void *data;
{
const char *const name = (const char *) node->key;
- struct alpha_links *link = (struct alpha_links *) node->value;
+ struct alpha_links *links = (struct alpha_links *) node->value;
FILE *stream = (FILE *) data;
- fprintf (stream, "$%d..%s..lk:\n", link->num, name);
- if (link->rkind == KIND_CODEADDR)
+ if (links->kind == KIND_UNUSED
+ || ! TREE_SYMBOL_REFERENCED (get_identifier (name)))
+ return 0;
+
+ fprintf (stream, "$%s..lk:\n", name);
+ if (links->kind == KIND_LOCAL)
{
- if (link->lkind == KIND_LOCAL)
- {
- /* Local and used */
- fprintf (stream, "\t.quad %s..en\n", name);
- }
- else
- {
- /* External and used, request code address. */
- fprintf (stream, "\t.code_address %s\n", name);
- }
+ /* Local and used, build linkage pair. */
+ fprintf (stream, "\t.quad %s..en\n", name);
+ fprintf (stream, "\t.quad %s\n", name);
}
else
{
- if (link->lkind == KIND_LOCAL)
- {
- /* Local and used, build linkage pair. */
- fprintf (stream, "\t.quad %s..en\n", name);
- fprintf (stream, "\t.quad %s\n", name);
- }
- else
- {
- /* External and used, request linkage pair. */
- fprintf (stream, "\t.linkage %s\n", name);
- }
+ /* External and used, request linkage pair. */
+ fprintf (stream, "\t.linkage %s\n", name);
}
return 0;
}
-static void
-alpha_write_linkage (stream, funname, fundecl)
- FILE *stream;
- const char *funname;
- tree fundecl;
+void
+alpha_write_linkage (stream)
+ FILE *stream;
{
- splay_tree_node node;
- struct alpha_funcs *func;
-
- link_section ();
- fprintf (stream, "\t.align 3\n");
- node = splay_tree_lookup (alpha_funcs_tree, (splay_tree_key) fundecl);
- func = (struct alpha_funcs *) node->value;
-
- fputs ("\t.name ", stream);
- assemble_name (stream, funname);
- fputs ("..na\n", stream);
- ASM_OUTPUT_LABEL (stream, funname);
- fprintf (stream, "\t.pdesc ");
- assemble_name (stream, funname);
- fprintf (stream, "..en,%s\n",
- alpha_procedure_type == PT_STACK ? "stack"
- : alpha_procedure_type == PT_REGISTER ? "reg" : "null");
-
- if (func->links)
+ if (alpha_links)
{
- splay_tree_foreach (func->links, alpha_write_one_linkage, stream);
- /* splay_tree_delete (func->links); */
+ readonly_section ();
+ fprintf (stream, "\t.align 3\n");
+ splay_tree_foreach (alpha_links, alpha_write_one_linkage, stream);
}
}
@@ -9343,16 +8432,6 @@ alpha_need_linkage (name, is_local)
return NULL_RTX;
}
-rtx
-alpha_use_linkage (linkage, cfundecl, lflag, rflag)
- rtx linkage ATTRIBUTE_UNUSED;
- tree cfundecl ATTRIBUTE_UNUSED;
- int lflag ATTRIBUTE_UNUSED;
- int rflag ATTRIBUTE_UNUSED;
-{
- return NULL_RTX;
-}
-
#endif /* TARGET_ABI_OPEN_VMS */
#if TARGET_ABI_UNICOSMK
@@ -9416,8 +8495,9 @@ unicosmk_output_module_name (file)
prefix the module name with a '$' if necessary. */
if (!ISALPHA (*name))
- putc ('$', file);
- output_clean_symbol_name (file, name);
+ fprintf (file, "$%s", name);
+ else
+ fputs (name, file);
}
/* Output text that to appear at the beginning of an assembler file. */
@@ -9556,7 +8636,7 @@ unicosmk_section_type_flags (decl, name, reloc)
/* Generate a section name for decl and associate it with the
declaration. */
-static void
+void
unicosmk_unique_section (decl, reloc)
tree decl;
int reloc ATTRIBUTE_UNUSED;
@@ -9568,7 +8648,7 @@ unicosmk_unique_section (decl, reloc)
abort ();
name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl));
- name = alpha_strip_name_encoding (name);
+ STRIP_NAME_ENCODING (name, name);
len = strlen (name);
if (TREE_CODE (decl) == FUNCTION_DECL)
@@ -9636,7 +8716,7 @@ unicosmk_insert_attributes (decl, attr_ptr)
{
if (DECL_P (decl)
&& (TREE_PUBLIC (decl) || TREE_CODE (decl) == FUNCTION_DECL))
- unicosmk_unique_section (decl, 0);
+ UNIQUE_SECTION (decl, 0);
}
/* Output an alignment directive. We have to use the macro 'gcc@code@align'
@@ -9799,7 +8879,8 @@ unicosmk_ssib_name ()
x = XEXP (x, 0);
if (GET_CODE (x) != SYMBOL_REF)
abort ();
- fnname = alpha_strip_name_encoding (XSTR (x, 0));
+ fnname = XSTR (x, 0);
+ STRIP_NAME_ENCODING (fnname, fnname);
len = strlen (fnname);
if (len + SSIB_PREFIX_LEN > 255)
@@ -9974,7 +9055,7 @@ unicosmk_output_externs (file)
/* We have to strip the encoding and possibly remove user_label_prefix
from the identifier in order to handle -fleading-underscore and
explicit asm names correctly (cf. gcc.dg/asm-names-1.c). */
- real_name = alpha_strip_name_encoding (p->name);
+ STRIP_NAME_ENCODING (real_name, p->name);
if (len && p->name[0] == '*'
&& !memcmp (real_name, user_label_prefix, len))
real_name += len;
@@ -9999,7 +9080,7 @@ unicosmk_add_extern (name)
struct unicosmk_extern_list *p;
p = (struct unicosmk_extern_list *)
- xmalloc (sizeof (struct unicosmk_extern_list));
+ permalloc (sizeof (struct unicosmk_extern_list));
p->next = unicosmk_extern_head;
p->name = name;
unicosmk_extern_head = p;
@@ -10081,7 +9162,7 @@ unicosmk_need_dex (x)
--i;
}
- dex = (struct unicosmk_dex *) xmalloc (sizeof (struct unicosmk_dex));
+ dex = (struct unicosmk_dex *) permalloc (sizeof (struct unicosmk_dex));
dex->name = name;
dex->next = unicosmk_dex_list;
unicosmk_dex_list = dex;
@@ -10149,6 +9230,3 @@ unicosmk_need_dex (x)
}
#endif /* TARGET_ABI_UNICOSMK */
-
-#include "gt-alpha.h"
-
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/elf.h b/contrib/gcc/config/alpha/elf.h
index dbe9263..99ea1ea 100644
--- a/contrib/gcc/config/alpha/elf.h
+++ b/contrib/gcc/config/alpha/elf.h
@@ -20,30 +20,39 @@ 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. */
+/* $FreeBSD$ */
+
#undef OBJECT_FORMAT_COFF
#undef EXTENDED_COFF
-#define OBJECT_FORMAT_ELF
+#define OBJECT_FORMAT_ELF 1
/* ??? Move all SDB stuff from alpha.h to osf.h. */
#undef SDB_DEBUGGING_INFO
-#define DBX_DEBUGGING_INFO 1
-#define DWARF2_DEBUGGING_INFO 1
+#define DBX_DEBUGGING_INFO
+#define DWARF2_DEBUGGING_INFO
#undef PREFERRED_DEBUGGING_TYPE
#define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
#undef ASM_FINAL_SPEC
-#undef CPP_SUBTARGET_SPEC
-#define CPP_SUBTARGET_SPEC "-D__ELF__"
-
#undef CC1_SPEC
#define CC1_SPEC "%{G*}"
#undef ASM_SPEC
#define ASM_SPEC "%{G*} %{relax:-relax} %{!gstabs*:-no-mdebug}%{gstabs*:-mdebug}"
+#undef LINK_SPEC
+#define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax} \
+ %{O*:-O3} %{!O*:-O1} \
+ %{shared:-shared} \
+ %{!shared: \
+ %{!static: \
+ %{rdynamic:-export-dynamic} \
+ %{!dynamic-linker:-dynamic-linker %(elf_dynamic_linker)}} \
+ %{static:-static}}"
+
/* Output at beginning of assembler file. */
#undef ASM_FILE_START
#define ASM_FILE_START(FILE) \
@@ -68,6 +77,9 @@ do { \
#undef IDENT_ASM_OP
#define IDENT_ASM_OP "\t.ident\t"
+/* Allow #sccs in preprocessor. */
+#define SCCS_DIRECTIVE 1
+
/* Output #ident as a .ident. */
#undef ASM_OUTPUT_IDENT
#define ASM_OUTPUT_IDENT(FILE, NAME) \
@@ -112,7 +124,7 @@ do { \
#undef ASM_OUTPUT_EXTERNAL_LIBCALL
#define ASM_OUTPUT_EXTERNAL_LIBCALL(FILE, FUN) \
- (*targetm.asm_out.globalize_label) (FILE, XSTR (FUN, 0))
+ ASM_GLOBALIZE_LABEL (FILE, XSTR (FUN, 0))
/* This says how to output assembler code to declare an
uninitialized external linkage data object. Under SVR4,
@@ -142,9 +154,17 @@ do { \
sbss_section(); \
else \
bss_section(); \
- ASM_OUTPUT_TYPE_DIRECTIVE (FILE, NAME, "object"); \
+ fprintf (FILE, "%s", TYPE_ASM_OP); \
+ assemble_name (FILE, NAME); \
+ putc (',', FILE); \
+ fprintf (FILE, TYPE_OPERAND_FMT, "object"); \
+ putc ('\n', FILE); \
if (!flag_inhibit_size_directive) \
- ASM_OUTPUT_SIZE_DIRECTIVE (FILE, NAME, SIZE); \
+ { \
+ fprintf (FILE, "%s", SIZE_ASM_OP); \
+ assemble_name (FILE, NAME); \
+ fprintf (FILE, ",%d\n", (SIZE)); \
+ } \
ASM_OUTPUT_ALIGN ((FILE), exact_log2((ALIGN) / BITS_PER_UNIT)); \
ASM_OUTPUT_LABEL(FILE, NAME); \
ASM_OUTPUT_SKIP((FILE), (SIZE) ? (SIZE) : 1); \
@@ -156,7 +176,7 @@ do { \
#undef ASM_OUTPUT_ALIGNED_BSS
#define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \
do { \
- (*targetm.asm_out.globalize_label) (FILE, NAME); \
+ ASM_GLOBALIZE_LABEL (FILE, NAME); \
ASM_OUTPUT_ALIGNED_LOCAL (FILE, NAME, SIZE, ALIGN); \
} while (0)
@@ -180,8 +200,20 @@ do { \
#undef ASCII_DATA_ASM_OP
#define ASCII_DATA_ASM_OP "\t.ascii\t"
-#undef READONLY_DATA_SECTION_ASM_OP
-#define READONLY_DATA_SECTION_ASM_OP "\t.section\t.rodata"
+/* Support const sections and the ctors and dtors sections for g++.
+ Note that there appears to be two different ways to support const
+ sections at the moment. You can either #define the symbol
+ READONLY_DATA_SECTION (giving it some code which switches to the
+ readonly data section) or else you can #define the symbols
+ EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS, SELECT_SECTION, and
+ SELECT_RTX_SECTION. We do both here just to be on the safe side. */
+
+#undef USE_CONST_SECTION
+#define USE_CONST_SECTION 1
+
+#undef CONST_SECTION_ASM_OP
+#define CONST_SECTION_ASM_OP "\t.section\t.rodata"
+
#undef BSS_SECTION_ASM_OP
#define BSS_SECTION_ASM_OP "\t.section\t.bss"
#undef SBSS_SECTION_ASM_OP
@@ -216,7 +248,7 @@ do { \
includes this file. */
#undef EXTRA_SECTIONS
-#define EXTRA_SECTIONS in_sbss, in_sdata
+#define EXTRA_SECTIONS in_const, in_sbss, in_sdata
/* A default list of extra section function definitions. For targets
that use additional sections (e.g. .tdesc) you should override this
@@ -224,12 +256,30 @@ do { \
#undef EXTRA_SECTION_FUNCTIONS
#define EXTRA_SECTION_FUNCTIONS \
+ CONST_SECTION_FUNCTION \
SECTION_FUNCTION_TEMPLATE(sbss_section, in_sbss, SBSS_SECTION_ASM_OP) \
SECTION_FUNCTION_TEMPLATE(sdata_section, in_sdata, SDATA_SECTION_ASM_OP)
extern void sbss_section PARAMS ((void));
extern void sdata_section PARAMS ((void));
+#undef READONLY_DATA_SECTION
+#define READONLY_DATA_SECTION() const_section ()
+
+#undef CONST_SECTION_FUNCTION
+#define CONST_SECTION_FUNCTION \
+void \
+const_section () \
+{ \
+ if (!USE_CONST_SECTION) \
+ text_section(); \
+ else if (in_section != in_const) \
+ { \
+ fprintf (asm_out_file, "%s\n", CONST_SECTION_ASM_OP); \
+ in_section = in_const; \
+ } \
+}
+
#undef SECTION_FUNCTION_TEMPLATE
#define SECTION_FUNCTION_TEMPLATE(FN, ENUM, OP) \
void FN () \
@@ -243,10 +293,177 @@ void FN () \
/* Switch into a generic section. */
#define TARGET_ASM_NAMED_SECTION default_elf_asm_named_section
-#define TARGET_ASM_SELECT_SECTION default_elf_select_section
+
+/* A C statement or statements to switch to the appropriate
+ section for output of DECL. DECL is either a `VAR_DECL' node
+ or a constant of some sort. RELOC indicates whether forming
+ the initial value of DECL requires link-time relocations.
+
+ Set SECNUM to:
+ 0 .text
+ 1 .rodata
+ 2 .data
+ 3 .sdata
+ 4 .bss
+ 5 .sbss
+*/
+
+#define DO_SELECT_SECTION(SECNUM, DECL, RELOC) \
+ do \
+ { \
+ HOST_WIDE_INT size; \
+ SECNUM = 1; \
+ if (TREE_CODE (DECL) == FUNCTION_DECL) \
+ { \
+ SECNUM = 0; \
+ break; \
+ } \
+ else if (TREE_CODE (DECL) == STRING_CST) \
+ { \
+ if (flag_writable_strings) \
+ SECNUM = 2; \
+ else \
+ SECNUM = 0x101; \
+ break; \
+ } \
+ else if (TREE_CODE (DECL) == VAR_DECL) \
+ { \
+ if (DECL_INITIAL (DECL) == NULL \
+ || DECL_INITIAL (DECL) == error_mark_node) \
+ SECNUM = 4; \
+ else if ((flag_pic && RELOC) \
+ || ! TREE_READONLY (DECL) \
+ || TREE_SIDE_EFFECTS (DECL) \
+ || ! TREE_CONSTANT (DECL_INITIAL (DECL))) \
+ SECNUM = 2; \
+ else if (flag_merge_constants >= 2) \
+ { \
+ /* C and C++ don't allow different variables to \
+ share the same location. -fmerge-all-constants\
+ allows even that (at the expense of not \
+ conforming). */ \
+ if (TREE_CODE (DECL_INITIAL (DECL)) == STRING_CST)\
+ SECNUM = 0x201; \
+ else \
+ SECNUM = 0x301; \
+ } \
+ } \
+ else if (TREE_CODE (DECL) == CONSTRUCTOR) \
+ { \
+ if ((flag_pic && RELOC) \
+ || TREE_SIDE_EFFECTS (DECL) \
+ || ! TREE_CONSTANT (DECL)) \
+ SECNUM = 2; \
+ } \
+ \
+ /* Select small data sections based on size. */ \
+ size = int_size_in_bytes (TREE_TYPE (DECL)); \
+ if (size >= 0 && size <= g_switch_value) \
+ { \
+ if ((SECNUM & 0xff) >= 2) \
+ SECNUM += 1; \
+ /* Move readonly data to .sdata only if -msmall-data. */ \
+ /* ??? Consider .sdata.{lit4,lit8} as \
+ SHF_MERGE|SHF_ALPHA_GPREL. */ \
+ else if (TARGET_SMALL_DATA) \
+ SECNUM = 3; \
+ } \
+ } \
+ while (0)
+
+#undef SELECT_SECTION
+#define SELECT_SECTION(DECL, RELOC, ALIGN) \
+ do \
+ { \
+ typedef void (*sec_fn) PARAMS ((void)); \
+ static sec_fn const sec_functions[6] = \
+ { \
+ text_section, \
+ const_section, \
+ data_section, \
+ sdata_section, \
+ bss_section, \
+ sbss_section \
+ }; \
+ \
+ int sec; \
+ \
+ DO_SELECT_SECTION (sec, DECL, RELOC); \
+ \
+ switch (sec) \
+ { \
+ case 0x101: \
+ mergeable_string_section (DECL, ALIGN, 0); \
+ break; \
+ case 0x201: \
+ mergeable_string_section (DECL_INITIAL (DECL),\
+ ALIGN, 0); \
+ break; \
+ case 0x301: \
+ mergeable_constant_section (DECL_MODE (DECL), \
+ ALIGN, 0); \
+ break; \
+ default: \
+ (*sec_functions[sec]) (); \
+ break; \
+ } \
+ } \
+ while (0)
#define MAKE_DECL_ONE_ONLY(DECL) (DECL_WEAK (DECL) = 1)
+#undef UNIQUE_SECTION
+#define UNIQUE_SECTION(DECL, RELOC) \
+ do \
+ { \
+ static const char * const prefixes[6][2] = \
+ { \
+ { ".text.", ".gnu.linkonce.t." }, \
+ { ".rodata.", ".gnu.linkonce.r." }, \
+ { ".data.", ".gnu.linkonce.d." }, \
+ { ".sdata.", ".gnu.linkonce.s." }, \
+ { ".bss.", ".gnu.linkonce.b." }, \
+ { ".sbss.", ".gnu.linkonce.sb." } \
+ }; \
+ \
+ int nlen, plen, sec; \
+ const char *name, *prefix; \
+ char *string; \
+ \
+ DO_SELECT_SECTION (sec, DECL, RELOC); \
+ \
+ name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (DECL)); \
+ STRIP_NAME_ENCODING (name, name); \
+ nlen = strlen (name); \
+ \
+ prefix = prefixes[sec & 0xff][DECL_ONE_ONLY(DECL)]; \
+ plen = strlen (prefix); \
+ \
+ string = alloca (nlen + plen + 1); \
+ \
+ memcpy (string, prefix, plen); \
+ memcpy (string + plen, name, nlen + 1); \
+ \
+ DECL_SECTION_NAME (DECL) = build_string (nlen + plen, string); \
+ } \
+ while (0)
+
+/* A C statement or statements to switch to the appropriate
+ section for output of RTX in mode MODE. RTX is some kind
+ of constant in RTL. The argument MODE is redundant except
+ in the case of a `const_int' rtx. Currently, these always
+ go into the const section. */
+
+#undef SELECT_RTX_SECTION
+#define SELECT_RTX_SECTION(MODE, RTX, ALIGN) \
+do { \
+ if (TARGET_SMALL_DATA && GET_MODE_SIZE (MODE) <= g_switch_value) \
+ /* ??? Consider .sdata.{lit4,lit8} as SHF_MERGE|SHF_ALPHA_GPREL. */ \
+ sdata_section (); \
+ else \
+ mergeable_constant_section((MODE), (ALIGN), 0); \
+} while (0)
+
/* Define the strings used for the special svr4 .type and .size directives.
These strings generally do not vary from one system running svr4 to
another, but if a given system (e.g. m88k running svr) needs to use
@@ -323,14 +540,22 @@ void FN () \
#define ASM_DECLARE_OBJECT_NAME(FILE, NAME, DECL) \
do { \
HOST_WIDE_INT size; \
- ASM_OUTPUT_TYPE_DIRECTIVE (FILE, NAME, "object"); \
+ fprintf (FILE, "%s", TYPE_ASM_OP); \
+ assemble_name (FILE, NAME); \
+ putc (',', FILE); \
+ fprintf (FILE, TYPE_OPERAND_FMT, "object"); \
+ putc ('\n', FILE); \
size_directive_output = 0; \
if (!flag_inhibit_size_directive \
&& DECL_SIZE (DECL) \
&& (size = int_size_in_bytes (TREE_TYPE (DECL))) > 0) \
{ \
size_directive_output = 1; \
- ASM_OUTPUT_SIZE_DIRECTIVE (FILE, NAME, size); \
+ fprintf (FILE, "%s", SIZE_ASM_OP); \
+ assemble_name (FILE, NAME); \
+ fputc (',', FILE); \
+ fprintf (FILE, HOST_WIDE_INT_PRINT_DEC, size); \
+ fputc ('\n', FILE); \
} \
ASM_OUTPUT_LABEL(FILE, NAME); \
} while (0)
@@ -354,7 +579,11 @@ void FN () \
&& (size = int_size_in_bytes (TREE_TYPE (DECL))) > 0) \
{ \
size_directive_output = 1; \
- ASM_OUTPUT_SIZE_DIRECTIVE (FILE, name, size); \
+ fprintf (FILE, "%s", SIZE_ASM_OP); \
+ assemble_name (FILE, name); \
+ fputc (',', FILE); \
+ fprintf (FILE, HOST_WIDE_INT_PRINT_DEC, size); \
+ fputc ('\n', FILE); \
} \
} while (0)
@@ -426,7 +655,7 @@ void FN () \
%{shared:crtendS.o%s}%{!shared:crtend.o%s} crtn.o%s"
/* We support #pragma. */
-#define HANDLE_SYSV_PRAGMA 1
+#define HANDLE_SYSV_PRAGMA
/* Select a format to encode pointers in exception handling data. CODE
is 0 for data, 1 for code labels, 2 for function pointers. GLOBAL is
diff --git a/contrib/gcc/config/alpha/freebsd.h b/contrib/gcc/config/alpha/freebsd.h
index f809c62..5b88dff 100644
--- a/contrib/gcc/config/alpha/freebsd.h
+++ b/contrib/gcc/config/alpha/freebsd.h
@@ -20,26 +20,21 @@ the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
-/* Provide a FBSD_TARGET_CPU_CPP_BUILTINS and CPP_SPEC appropriate for
- FreeBSD/alpha. Besides the dealing with
+/* $FreeBSD$ */
+
+
+/* Provide a CPP_SPEC appropriate for FreeBSD/alpha. Besides the dealing with
the GCC option `-posix', and PIC issues as on all FreeBSD platforms, we must
deal with the Alpha's FP issues. */
-#undef FBSD_TARGET_CPU_CPP_BUILTINS
-#define FBSD_TARGET_CPU_CPP_BUILTINS() \
- do \
- { \
- if (flag_pic) \
- { \
- builtin_define ("__PIC__"); \
- builtin_define ("__pic__"); \
- } \
- } \
- while (0)
-
#undef CPP_SPEC
-#define CPP_SPEC "%(cpp_subtarget) %{posix:-D_POSIX_SOURCE}"
+#define CPP_SPEC "%(cpp_cpu) %(cpp_subtarget) -D__ELF__ \
+ %{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} \
+ %{posix:-D_POSIX_SOURCE} \
+ %{mieee:-D_IEEE_FP} \
+ %{mieee-with-inexact:-D_IEEE_FP -D_IEEE_FP_INEXACT}"
+#undef LINK_SPEC
#define LINK_SPEC "%{G*} %{relax:-relax} \
%{p:%e`-p' not supported; use `-pg' and gprof(1)} \
%{Wl,*:%*} \
@@ -52,6 +47,15 @@ Boston, MA 02111-1307, USA. */
%{!dynamic-linker:-dynamic-linker /usr/libexec/ld-elf.so.1}} \
%{static:-Bstatic}}"
+/* We now have to provide a STARTFILE_SPEC because of a moronic pigheaded
+ Linuxism(glibc'ism) that was added to alpha/elf.h. */
+
+ #undef STARTFILE_SPEC
+ #define STARTFILE_SPEC \
+ "%{!shared: \
+ %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} %{!p:crt1.o%s}}}\
+ crti.o%s %{shared:crtbeginS.o%s}%{!shared:crtbegin.o%s}"
+
/************************[ Target stuff ]***********************************/
@@ -62,13 +66,34 @@ Boston, MA 02111-1307, USA. */
/* alpha.h gets this wrong for FreeBSD. We use the GCC defaults instead. */
#undef WCHAR_TYPE
+#undef WCHAR_UNSIGNED
+#define WCHAR_UNSIGNED 0
+
#undef WCHAR_TYPE_SIZE
#define WCHAR_TYPE_SIZE 32
+/* Handle cross-compilation on 32-bits machines (such as i386) for 64-bits
+ machines (Alpha in this case). */
+
+#if defined(__i386__)
+#undef HOST_BITS_PER_LONG
+#define HOST_BITS_PER_LONG 32
+#undef HOST_WIDE_INT
+#define HOST_WIDE_INT long long
+#undef HOST_BITS_PER_WIDE_INT
+#define HOST_BITS_PER_WIDE_INT 64
+#endif
+
+/* This is the pseudo-op used to generate a 64-bit word of data with a
+ specific value in some section. */
+
#undef TARGET_VERSION
-#define TARGET_VERSION fprintf (stderr, " (FreeBSD/alpha ELF)");
+#define TARGET_VERSION fprintf (stderr, " (FreeBSD/Alpha ELF)");
+
+#define TARGET_ELF 1
-#define TARGET_ELF 1
+#undef OBJECT_FORMAT_COFF
+#undef EXTENDED_COFF
#undef TARGET_DEFAULT
#define TARGET_DEFAULT (MASK_FP | MASK_FPREGS | MASK_GAS)
@@ -79,6 +104,17 @@ Boston, MA 02111-1307, USA. */
#undef TARGET_PROFILING_NEEDS_GP
#define TARGET_PROFILING_NEEDS_GP 1
+/* We always use gas here, so we don't worry about ECOFF assembler problems. */
+#undef TARGET_GAS
+#define TARGET_GAS 1
+
+
+/************************[ Assembler stuff ]********************************/
+
+
+
+/************************[ Debugger stuff ]*********************************/
+
/* This is the char to use for continuation (in case we need to turn
continuation back on). */
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/freebsd-spec.h b/contrib/gcc/config/freebsd-spec.h
index 4d81d80..6189298 100644
--- a/contrib/gcc/config/freebsd-spec.h
+++ b/contrib/gcc/config/freebsd-spec.h
@@ -18,6 +18,8 @@ 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. */
+/* $FreeBSD$ */
+
/* Common FreeBSD configuration.
All FreeBSD architectures should include this file, which will specify
their commonalities.
@@ -48,44 +50,63 @@ Boston, MA 02111-1307, USA. */
|| !strcmp ((STR), "soname") || !strcmp ((STR), "defsym") \
|| !strcmp ((STR), "assert") || !strcmp ((STR), "dynamic-linker"))
-#define FBSD_TARGET_OS_CPP_BUILTINS() \
- do \
- { \
- if (FBSD_MAJOR == 6) \
- builtin_define ("__FreeBSD__=6"); \
- else if (FBSD_MAJOR == 5) \
- builtin_define ("__FreeBSD__=5"); \
- else if (FBSD_MAJOR == 4) \
- builtin_define ("__FreeBSD__=4"); \
- else if (FBSD_MAJOR == 3) \
- builtin_define ("__FreeBSD__=3"); \
- else \
- builtin_define ("__FreeBSD__"); \
- builtin_define_std ("unix"); \
- builtin_define ("__ELF__"); \
- builtin_define ("__KPRINTF_ATTRIBUTE__"); \
- builtin_assert ("system=unix"); \
- builtin_assert ("system=bsd"); \
- builtin_assert ("system=FreeBSD"); \
- FBSD_TARGET_CPU_CPP_BUILTINS(); \
- } \
- while (0)
-
-/* Define the default FreeBSD-specific per-CPU hook code. */
-#define FBSD_TARGET_CPU_CPP_BUILTINS() do {} while (0)
+
+#ifndef FREEBSD_NATIVE /* these bits are here to reduce merge diffs, but I don't want to acutally use the bits right now */
+
+
+#if FBSD_MAJOR == 6
+#define FBSD_CPP_PREDEFINES \
+ "-D__FreeBSD__=6 -Dunix -D__ELF__ -D__KPRINTF_ATTRIBUTE__ -Asystem=unix -Asystem=bsd -Asystem=FreeBSD"
+#endif
+
+#if FBSD_MAJOR == 5
+#define FBSD_CPP_PREDEFINES \
+ "-D__FreeBSD__=5 -Dunix -D__ELF__ -D__KPRINTF_ATTRIBUTE__ -Asystem=unix -Asystem=bsd -Asystem=FreeBSD"
+#endif
+
+#if FBSD_MAJOR == 4
+#define FBSD_CPP_PREDEFINES \
+ "-D__FreeBSD__=4 -Dunix -D__ELF__ -D__KPRINTF_ATTRIBUTE__ -Asystem=unix -Asystem=bsd -Asystem=FreeBSD"
+#endif
+
+#if FBSD_MAJOR == 3
+#define FBSD_CPP_PREDEFINES \
+ "-D__FreeBSD__=3 -Dunix -D__ELF__ -D__KPRINTF_ATTRIBUTE__ -Asystem=unix -Asystem=bsd -Asystem=FreeBSD"
+#endif
+
+#ifndef FBSD_CPP_PREDEFINES
+#define FBSD_CPP_PREDEFINES \
+ "-D__FreeBSD__ -Dunix -D__ELF__ -D__KPRINTF_ATTRIBUTE__ -Asystem=unix -Asystem=bsd -Asystem=FreeBSD"
+#endif
+
+
+#else /* FREEBSD_NATIVE */
+/* Place spaces around this string. We depend on string splicing to produce
+ the final CPP_PREDEFINES value. */
+
+#define FBSD_CPP_PREDEFINES \
+ "-D__FreeBSD__=5 -D__FreeBSD_cc_version=500005 -Dunix -D__ELF__ -D__KPRINTF_ATTRIBUTE__ -Asystem=unix -Asystem=bsd -Asystem=FreeBSD"
+#endif /* ! FREEBSD_NATIVE */
+
/* Provide a CPP_SPEC appropriate for FreeBSD. We just deal with the GCC
- option `-posix', and PIC issues. */
+ option `-posix', and PIC issues. Try to detect support for the
+ `long long' type. Unfortunately the GCC spec parser will not allow us
+ to properly detect the "iso9899:1990" and "iso9899:199409" forms of
+ -std=c89. Because of the ':' in the -std argument. :-( I have left
+ them in the spec as a place holder in hopes someone knows a way to make
+ the detection of them work. */
#define FBSD_CPP_SPEC " \
%(cpp_cpu) \
%{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} \
+ %{!ansi:%{!std=c89:%{!std=iso9899.1990:%{!std=iso9899.199409:-D_LONGLONG}}}} \
%{posix:-D_POSIX_SOURCE}"
/* 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'. */
+ before entering `main'. */
#define FBSD_STARTFILE_SPEC \
"%{!shared: \
@@ -101,7 +122,7 @@ Boston, MA 02111-1307, USA. */
`crtn.o'. */
#define FBSD_ENDFILE_SPEC \
- "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s"
+ " %{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s "
/* Provide a LIB_SPEC appropriate for FreeBSD as configured and as
required by the user-land thread model. Before __FreeBSD_version
@@ -130,7 +151,8 @@ is built with the --enable-threads configure-time option.} \
%{pg: -lc_p} \
}"
#else
-#if FBSD_MAJOR >= 5
+#include <sys/param.h>
+#if __FreeBSD_version >= 500016
#define FBSD_LIB_SPEC " \
%{!shared: \
%{!pg: %{pthread:-lc_r} -lc} \
diff --git a/contrib/gcc/config/freebsd.h b/contrib/gcc/config/freebsd.h
index f71bd8b..cd9f7eb 100644
--- a/contrib/gcc/config/freebsd.h
+++ b/contrib/gcc/config/freebsd.h
@@ -1,5 +1,5 @@
/* Base configuration file for all FreeBSD targets.
- Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
This file is part of GNU CC.
@@ -26,6 +26,7 @@ Boston, MA 02111-1307, USA. */
Further work by David O'Brien <obrien@FreeBSD.org> and
Loren J. Rittle <ljrittle@acm.org>. */
+/* $FreeBSD$ */
/* In case we need to know. */
#define USING_CONFIG_FREEBSD 1
@@ -42,10 +43,7 @@ Boston, MA 02111-1307, USA. */
#define WORD_SWITCH_TAKES_ARG(STR) (FBSD_WORD_SWITCH_TAKES_ARG(STR))
#undef CPP_PREDEFINES
-/* Obsolete, do not define it. */
-
-#undef TARGET_OS_CPP_BUILTINS
-#define TARGET_OS_CPP_BUILTINS() FBSD_TARGET_OS_CPP_BUILTINS()
+#define CPP_PREDEFINES FBSD_CPP_PREDEFINES
#undef CPP_SPEC
#define CPP_SPEC FBSD_CPP_SPEC
@@ -64,21 +62,36 @@ Boston, MA 02111-1307, USA. */
/* All FreeBSD Architectures support the ELF object file format. */
#undef OBJECT_FORMAT_ELF
-#define OBJECT_FORMAT_ELF
+#define OBJECT_FORMAT_ELF 1
/* Don't assume anything about the header files. */
#undef NO_IMPLICIT_EXTERN_C
#define NO_IMPLICIT_EXTERN_C 1
+/* Allow #sccs in preprocessor. */
+#undef SCCS_DIRECTIVE
+#define SCCS_DIRECTIVE 1
+
/* Make gcc agree with FreeBSD's standard headers (<machine/ansi.h>, etc...) */
#undef WCHAR_TYPE
-#define WCHAR_TYPE "int"
+#define WCHAR_TYPE "int"
+#undef WCHAR_UNSIGNED
+#define WCHAR_UNSIGNED 0
+
+#ifdef FREEBSD_NATIVE
+#define LIBSTDCXX_PROFILE "-lstdc++_p"
+#endif
#define MATH_LIBRARY_PROFILE "-lm_p"
/* Code generation parameters. */
+/* Writing `int' for a bitfield forces int alignment for the structure. */
+/* XXX: ok for Alpha?? */
+#undef PCC_BITFIELD_TYPE_MATTERS
+#define PCC_BITFIELD_TYPE_MATTERS 1
+
/* Use periods rather than dollar signs in special g++ assembler names.
This ensures the configuration knows our system correctly so we can link
with libraries compiled with the native cc. */
@@ -87,4 +100,10 @@ Boston, MA 02111-1307, USA. */
/* Used by libgcc2.c. We support file locking with fcntl / F_SETLKW.
This enables the test coverage code to use file locking when exiting a
program, which avoids race conditions if the program has forked. */
-#define TARGET_HAS_F_SETLKW
+#define TARGET_HAS_F_SETLKW 1
+
+
+/************************[ Assembler stuff ]********************************/
+
+
+/************************[ Debugger stuff ]*********************************/
diff --git a/contrib/gcc/config/i386/freebsd-elf.h b/contrib/gcc/config/i386/freebsd-elf.h
deleted file mode 100644
index e97d4ca..0000000
--- a/contrib/gcc/config/i386/freebsd-elf.h
+++ /dev/null
@@ -1,257 +0,0 @@
-/* Definitions for Intel 386 running FreeBSD with ELF format
- Copyright (C) 1996 Free Software Foundation, Inc.
- Contributed by Eric Youngdale.
- Modified for stabs-in-ELF by H.J. Lu.
- Adapted from GNU/Linux version by John Polstra.
- Continued development by David O'Brien <obrien@freebsd.org>
-
-This file is part of GNU CC.
-
-GNU CC is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU CC is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#undef TARGET_VERSION
-#define TARGET_VERSION fprintf (stderr, " (i386 FreeBSD/ELF)");
-
-/* The svr4 ABI for the i386 says that records and unions are returned
- in memory. */
-/* On FreeBSD, we do not. */
-#undef DEFAULT_PCC_STRUCT_RETURN
-#define DEFAULT_PCC_STRUCT_RETURN 0
-
-/* This gets defined in tm.h->linux.h->svr4.h, and keeps us from using
- libraries compiled with the native cc, so undef it. */
-#undef NO_DOLLAR_IN_LABEL
-
-/* Use more efficient ``thunks'' to implement C++ vtables. */
-#undef DEFAULT_VTABLE_THUNKS
-#define DEFAULT_VTABLE_THUNKS 1
-
-/* Override the default comment-starter of "/". */
-#undef ASM_COMMENT_START
-#define ASM_COMMENT_START "#"
-
-#undef ASM_APP_ON
-#define ASM_APP_ON "#APP\n"
-
-#undef ASM_APP_OFF
-#define ASM_APP_OFF "#NO_APP\n"
-
-#undef SET_ASM_OP
-#define SET_ASM_OP ".set"
-
-/* This is how to output an element of a case-vector that is relative.
- This is only used for PIC code. See comments by the `casesi' insn in
- i386.md for an explanation of the expression this outputs. */
-#undef ASM_OUTPUT_ADDR_DIFF_ELT
-#define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, BODY, VALUE, REL) \
- fprintf (FILE, "\t.long _GLOBAL_OFFSET_TABLE_+[.-%s%d]\n", LPREFIX, VALUE)
-
-/* Indicate that jump tables go in the text section. This is
- necessary when compiling PIC code. */
-#define JUMP_TABLES_IN_TEXT_SECTION (flag_pic)
-
-/* Use stabs instead of DWARF debug format. */
-#undef PREFERRED_DEBUGGING_TYPE
-#define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
-
-/* Copy this from the svr4 specifications... */
-/* Define the register numbers to be used in Dwarf debugging information.
- The SVR4 reference port C compiler uses the following register numbers
- in its Dwarf output code:
- 0 for %eax (gnu regno = 0)
- 1 for %ecx (gnu regno = 2)
- 2 for %edx (gnu regno = 1)
- 3 for %ebx (gnu regno = 3)
- 4 for %esp (gnu regno = 7)
- 5 for %ebp (gnu regno = 6)
- 6 for %esi (gnu regno = 4)
- 7 for %edi (gnu regno = 5)
- The following three DWARF register numbers are never generated by
- the SVR4 C compiler or by the GNU compilers, but SDB on x86/svr4
- believes these numbers have these meanings.
- 8 for %eip (no gnu equivalent)
- 9 for %eflags (no gnu equivalent)
- 10 for %trapno (no gnu equivalent)
- It is not at all clear how we should number the FP stack registers
- for the x86 architecture. If the version of SDB on x86/svr4 were
- a bit less brain dead with respect to floating-point then we would
- have a precedent to follow with respect to DWARF register numbers
- for x86 FP registers, but the SDB on x86/svr4 is so completely
- broken with respect to FP registers that it is hardly worth thinking
- of it as something to strive for compatibility with.
- The version of x86/svr4 SDB I have at the moment does (partially)
- seem to believe that DWARF register number 11 is associated with
- the x86 register %st(0), but that's about all. Higher DWARF
- register numbers don't seem to be associated with anything in
- particular, and even for DWARF regno 11, SDB only seems to under-
- stand that it should say that a variable lives in %st(0) (when
- asked via an `=' command) if we said it was in DWARF regno 11,
- but SDB still prints garbage when asked for the value of the
- variable in question (via a `/' command).
- (Also note that the labels SDB prints for various FP stack regs
- when doing an `x' command are all wrong.)
- Note that these problems generally don't affect the native SVR4
- C compiler because it doesn't allow the use of -O with -g and
- because when it is *not* optimizing, it allocates a memory
- location for each floating-point variable, and the memory
- location is what gets described in the DWARF AT_location
- attribute for the variable in question.
- Regardless of the severe mental illness of the x86/svr4 SDB, we
- do something sensible here and we use the following DWARF
- register numbers. Note that these are all stack-top-relative
- numbers.
- 11 for %st(0) (gnu regno = 8)
- 12 for %st(1) (gnu regno = 9)
- 13 for %st(2) (gnu regno = 10)
- 14 for %st(3) (gnu regno = 11)
- 15 for %st(4) (gnu regno = 12)
- 16 for %st(5) (gnu regno = 13)
- 17 for %st(6) (gnu regno = 14)
- 18 for %st(7) (gnu regno = 15)
-*/
-#undef DBX_REGISTER_NUMBER
-#define DBX_REGISTER_NUMBER(n) \
-((n) == 0 ? 0 \
- : (n) == 1 ? 2 \
- : (n) == 2 ? 1 \
- : (n) == 3 ? 3 \
- : (n) == 4 ? 6 \
- : (n) == 5 ? 7 \
- : (n) == 6 ? 5 \
- : (n) == 7 ? 4 \
- : ((n) >= FIRST_STACK_REG && (n) <= LAST_STACK_REG) ? (n)+3 \
- : (-1))
-
-/* Tell final.c that we don't need a label passed to mcount. */
-
-#undef FUNCTION_PROFILER
-#define FUNCTION_PROFILER(FILE, LABELNO) \
-{ \
- if (flag_pic) \
- fprintf (FILE, "\tcall *.mcount@GOT(%%ebx)\n"); \
- else \
- fprintf (FILE, "\tcall .mcount\n"); \
-}
-
-#undef SIZE_TYPE
-#define SIZE_TYPE "unsigned int"
-
-#undef PTRDIFF_TYPE
-#define PTRDIFF_TYPE "int"
-
-#undef WCHAR_TYPE
-#define WCHAR_TYPE "int"
-
-#undef WCHAR_UNSIGNED
-#define WCHAR_UNSIGNED 0
-
-#undef WCHAR_TYPE_SIZE
-#define WCHAR_TYPE_SIZE BITS_PER_WORD
-
-#undef CPP_PREDEFINES
-#define CPP_PREDEFINES "-Di386 -Dunix -D__ELF__ -D__FreeBSD__ -Asystem(unix) -Asystem(FreeBSD) -Acpu(i386) -Amachine(i386)"
-
-#undef CPP_SPEC
-#define CPP_SPEC "%(cpp_cpu) %{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} %{posix:-D_POSIX_SOURCE}"
-
-/* This defines which switch letters take arguments. On FreeBSD, most of
- the normal cases (defined in gcc.c) apply, and we also have -h* and
- -z* options (for the linker) (comming from svr4).
- We also have -R (alias --rpath), no -z, --soname (-h), --assert etc. */
-
-#undef SWITCH_TAKES_ARG
-#define SWITCH_TAKES_ARG(CHAR) \
- (DEFAULT_SWITCH_TAKES_ARG (CHAR) \
- || (CHAR) == 'h' \
- || (CHAR) == 'z' \
- || (CHAR) == 'R')
-
-/* Provide a STARTFILE_SPEC appropriate for FreeBSD. Here we add
- the magical crtbegin.o file (see crtstuff.c) which provides part
- of the support for getting C++ file-scope static object constructed
- before entering `main'. */
-
-#undef STARTFILE_SPEC
-#define STARTFILE_SPEC \
- "%{!shared: \
- %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} \
- %{!p:%{profile:gcrt1.o%s} \
- %{!profile:crt1.o%s}}}} \
- crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}"
-
-/* Provide a ENDFILE_SPEC appropriate for FreeBSD. Here we tack on
- the magical crtend.o file (see crtstuff.c) which provides part of
- the support for getting C++ file-scope static object constructed
- before entering `main', followed by a normal "finalizer" file,
- `crtn.o'. */
-
-#undef ENDFILE_SPEC
-#define ENDFILE_SPEC \
- "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s"
-
-/* Provide a LIB_SPEC appropriate for FreeBSD. Just select the appropriate
- libc, depending on whether we're doing profiling or need threads support.
- (simular to the default, except no -lg, and no -p. */
-
-#undef LIB_SPEC
-#define LIB_SPEC "%{!shared: \
- %{!pg:%{!pthread:%{!kthread:-lc} \
- %{kthread:-lpthread -lc}} \
- %{pthread:-lc_r}} \
- %{pg:%{!pthread:%{!kthread:-lc_p} \
- %{kthread:-lpthread_p -lc_p}} \
- %{pthread:-lc_r_p}}}"
-
-/* Provide a LINK_SPEC appropriate for FreeBSD. Here we provide support
- for the special GCC options -static and -shared, which allow us to
- link things in one of these three modes by applying the appropriate
- combinations of options at link-time. We like to support here for
- as many of the other GNU linker options as possible. But I don't
- have the time to search for those flags. I am sure how to add
- support for -soname shared_object_name. H.J.
-
- I took out %{v:%{!V:-V}}. It is too much :-(. They can use
- -Wl,-V.
-
- When the -shared link option is used a final link is not being
- done. */
-
-#undef LINK_SPEC
-#define LINK_SPEC "-m elf_i386 \
- %{Wl,*:%*} \
- %{v:-V} \
- %{assert*} %{R*} %{rpath*} %{defsym*} \
- %{shared:-Bshareable %{h*} %{soname*}} \
- %{!shared: \
- %{!static: \
- %{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /usr/libexec/ld-elf.so.1}} \
- %{static:-Bstatic}} \
- %{symbolic:-Bsymbolic}"
-
-/* A C statement to output to the stdio stream FILE an assembler
- command to advance the location counter to a multiple of 1<<LOG
- bytes if it is within MAX_SKIP bytes.
-
- This is used to align code labels according to Intel recommendations. */
-
-#ifdef HAVE_GAS_MAX_SKIP_P2ALIGN
-#define ASM_OUTPUT_MAX_SKIP_ALIGN(FILE,LOG,MAX_SKIP) \
- if ((LOG) != 0) {\
- if ((MAX_SKIP) == 0) fprintf ((FILE), "\t.p2align %d\n", (LOG)); \
- else fprintf ((FILE), "\t.p2align %d,,%d\n", (LOG), (MAX_SKIP)); \
- }
-#endif
diff --git a/contrib/gcc/config/i386/freebsd.h b/contrib/gcc/config/i386/freebsd.h
index 603e3ac..6fda7b8 100644
--- a/contrib/gcc/config/i386/freebsd.h
+++ b/contrib/gcc/config/i386/freebsd.h
@@ -22,67 +22,16 @@ 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. */
+/* $FreeBSD$ */
-#define TARGET_VERSION fprintf (stderr, " (i386 FreeBSD/ELF)");
+#undef CC1_SPEC
+#define CC1_SPEC "%(cc1_cpu) %{profile:-p}"
-/* 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 "\t.set\t"
-
-#undef DBX_REGISTER_NUMBER
-#define DBX_REGISTER_NUMBER(n) \
- (TARGET_64BIT ? dbx64_register_map[n] : svr4_dbx_register_map[n])
-
-#undef NO_PROFILE_COUNTERS
-#define NO_PROFILE_COUNTERS
-
-/* Tell final.c that we don't need a label passed to mcount. */
+#undef ASM_SPEC
+#define ASM_SPEC "%{v*: -v}"
-#undef MCOUNT_NAME
-#define MCOUNT_NAME ".mcount"
-
-/* Make gcc agree with <machine/ansi.h>. */
-
-#undef SIZE_TYPE
-#define SIZE_TYPE "unsigned int"
-
-#undef PTRDIFF_TYPE
-#define PTRDIFF_TYPE "int"
-
-#undef WCHAR_TYPE_SIZE
-#define WCHAR_TYPE_SIZE BITS_PER_WORD
-
-/* 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"
+#undef ASM_FINAL_SPEC
+#define ASM_FINAL_SPEC "%|"
/* Provide a LINK_SPEC appropriate for FreeBSD. Here we provide support
for the special GCC options -static and -shared, which allow us to
@@ -92,38 +41,81 @@ Boston, MA 02111-1307, USA. */
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 "\
- %{Wl,*:%*} \
- %{v:-V} \
- %{assert*} %{R*} %{rpath*} %{defsym*} \
- %{shared:-Bshareable %{h*} %{soname*}} \
+ %{p:%e`-p' not supported; use `-pg' and gprof(1)} \
+ %{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}"
+ %{rdynamic: -export-dynamic} \
+ %{!dynamic-linker: -dynamic-linker /usr/libexec/ld-elf.so.1}} \
+ %{static:-Bstatic}} \
+ %{symbolic:-Bsymbolic}"
-/* A C statement to output to the stdio stream FILE an assembler
- command to advance the location counter to a multiple of 1<<LOG
- bytes if it is within MAX_SKIP bytes.
+/* 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'. */
- This is used to align code labels according to Intel recommendations. */
+#undef STARTFILE_SPEC
+#define STARTFILE_SPEC "\
+ %{!shared: \
+ %{pg:gcrt1.o%s} \
+ %{!pg: \
+ %{p:gcrt1.o%s} \
+ %{!p:crt1.o%s}}} \
+ crti.o%s \
+ %{!shared:crtbegin.o%s} \
+ %{shared:crtbeginS.o%s}"
-#ifdef HAVE_GAS_MAX_SKIP_P2ALIGN
-#define ASM_OUTPUT_MAX_SKIP_ALIGN(FILE, LOG, MAX_SKIP) \
- if ((LOG) != 0) { \
- if ((MAX_SKIP) == 0) fprintf ((FILE), "\t.p2align %d\n", (LOG)); \
- else fprintf ((FILE), "\t.p2align %d,,%d\n", (LOG), (MAX_SKIP)); \
- }
-#endif
+/* Provide an ENDFILE_SPEC appropriate for FreeBSD/i386. Here we tack on our
+ own 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 the normal "finalizer" file, `crtn.o'. */
+
+#undef ENDFILE_SPEC
+#define ENDFILE_SPEC "\
+ %{!shared:crtend.o%s} \
+ %{shared:crtendS.o%s} crtn.o%s"
+
+
+/************************[ Target stuff ]***********************************/
+
+/* Define the actual types of some ANSI-mandated types.
+ Needs to agree with <machine/ansi.h>. GCC defaults come from c-decl.c,
+ c-common.c, and config/<arch>/<arch>.h. */
+
+#undef SIZE_TYPE
+#define SIZE_TYPE (TARGET_64BIT ? "long unsigned int" : "unsigned int")
+
+#undef PTRDIFF_TYPE
+#define PTRDIFF_TYPE (TARGET_64BIT ? "long int" : "int")
+
+#undef WCHAR_TYPE_SIZE
+#define WCHAR_TYPE_SIZE (TARGET_64BIT ? 32 : BITS_PER_WORD)
+
+#undef TARGET_VERSION
+#define TARGET_VERSION fprintf (stderr, " (i386 FreeBSD/ELF)");
+
+#define MASK_PROFILER_EPILOGUE 010000000000
+
+#define TARGET_PROFILER_EPILOGUE (target_flags & MASK_PROFILER_EPILOGUE)
+#define TARGET_ELF 1
+
+#undef SUBTARGET_SWITCHES
+#define SUBTARGET_SWITCHES \
+ { "profiler-epilogue", MASK_PROFILER_EPILOGUE, "Function profiler epilogue"}, \
+ { "no-profiler-epilogue", -MASK_PROFILER_EPILOGUE, "No function profiler epilogue"},
+
+/* This goes away when the math emulator is fixed. */
+#undef TARGET_SUBTARGET_DEFAULT
+#define TARGET_SUBTARGET_DEFAULT \
+ (MASK_80387 | MASK_IEEE_FP | MASK_FLOAT_RETURNS | MASK_NO_FANCY_MATH_387)
/* Don't default to pcc-struct-return, we want to retain compatibility with
older gcc versions AND pcc-struct-return is nonreentrant.
@@ -133,12 +125,152 @@ Boston, MA 02111-1307, USA. */
#undef DEFAULT_PCC_STRUCT_RETURN
#define DEFAULT_PCC_STRUCT_RETURN 0
-/* FreeBSD sets the rounding precision of the FPU to 53 bits. Let the
- compiler get the contents of <float.h> and std::numeric_limits correct. */
-#define SUBTARGET_OVERRIDE_OPTIONS \
- do { \
- real_format_for_mode[XFmode - QFmode] \
- = &ieee_extended_intel_96_round_53_format; \
- real_format_for_mode[TFmode - QFmode] \
- = &ieee_extended_intel_96_round_53_format; \
+/* Tell final.c that we don't need a label passed to mcount. */
+#define NO_PROFILE_COUNTERS 1
+
+/* Output assembler code to FILE to begin profiling of the current function.
+ LABELNO is an optional label. */
+
+#undef FUNCTION_PROFILER
+#define FUNCTION_PROFILER(FILE, LABELNO) \
+ do { \
+ if (flag_pic) \
+ fprintf ((FILE), "\tcall *.mcount@GOT(%%ebx)\n"); \
+ else \
+ fprintf ((FILE), "\tcall .mcount\n"); \
+ } while (0)
+
+/* Output assembler code to FILE to end profiling of the current function. */
+
+#undef FUNCTION_PROFILER_EPILOGUE /* BDE will need to fix this. */
+
+
+/************************[ Assembler stuff ]********************************/
+
+/* Override the default comment-starter of "/" from unix.h. */
+#undef ASM_COMMENT_START
+#define ASM_COMMENT_START "#"
+
+/* Override the default comment-starter of "/APP" from unix.h. */
+#undef ASM_APP_ON
+#define ASM_APP_ON "#APP\n"
+#undef ASM_APP_OFF
+#define ASM_APP_OFF "#NO_APP\n"
+
+/* XXX:DEO do we still need this override to defaults.h ?? */
+/* This is how to output a reference to a user-level label named NAME. */
+#undef ASM_OUTPUT_LABELREF
+#define ASM_OUTPUT_LABELREF(FILE, NAME) \
+ do { \
+ char *_name = (NAME); \
+ /* Hack to avoid writing lots of rtl in \
+ FUNCTION_PROFILER_EPILOGUE (). */ \
+ if (*_name == '.' && strcmp(_name + 1, "mexitcount") == 0) \
+ { \
+ if (flag_pic) \
+ fprintf ((FILE), "*%s@GOT(%%ebx)", _name); \
+ else \
+ fprintf ((FILE), "%s", _name); \
+ } \
+ else \
+ fprintf (FILE, "%s", _name); \
+} while (0)
+
+/* This is how to hack on the symbol code of certain relcalcitrant
+ symbols to modify their output in output_pic_addr_const (). */
+
+#undef ASM_HACK_SYMBOLREF_CODE /* BDE will need to fix this. */
+
+#undef ASM_OUTPUT_ALIGN
+#define ASM_OUTPUT_ALIGN(FILE, LOG) \
+ do { \
+ if ((LOG)!=0) { \
+ if (in_text_section()) \
+ fprintf ((FILE), "\t.p2align %d,0x90\n", (LOG)); \
+ else \
+ fprintf ((FILE), "\t.p2align %d\n", (LOG)); \
+ } \
+ } while (0)
+
+/* A C statement to output to the stdio stream FILE an assembler
+ command to advance the location counter to a multiple of 1<<LOG
+ bytes if it is within MAX_SKIP bytes.
+
+ This is used to align code labels according to Intel recommendations. */
+
+/* XXX configuration of this is broken in the same way as HAVE_GAS_SHF_MERGE,
+ but it is easier to fix in an MD way. */
+
+#ifdef HAVE_GAS_MAX_SKIP_P2ALIGN
+#define ASM_OUTPUT_MAX_SKIP_ALIGN(FILE, LOG, MAX_SKIP) \
+ do { \
+ if ((LOG) != 0) { \
+ if ((MAX_SKIP) == 0) \
+ fprintf ((FILE), "\t.p2align %d\n", (LOG)); \
+ else \
+ fprintf ((FILE), "\t.p2align %d,,%d\n", (LOG), (MAX_SKIP)); \
+ } \
+ } while (0)
+#endif
+
+/* If defined, a C expression whose value is a string containing the
+ assembler operation to identify the following data as
+ uninitialized global data. If not defined, and neither
+ `ASM_OUTPUT_BSS' nor `ASM_OUTPUT_ALIGNED_BSS' are defined,
+ uninitialized global data will be output in the data section if
+ `-fno-common' is passed, otherwise `ASM_OUTPUT_COMMON' will be
+ used. */
+#undef BSS_SECTION_ASM_OP
+#define BSS_SECTION_ASM_OP "\t.section\t.bss"
+
+/* Like `ASM_OUTPUT_BSS' except takes the required alignment as a
+ separate, explicit argument. If you define this macro, it is used
+ in place of `ASM_OUTPUT_BSS', and gives you more flexibility in
+ handling the required alignment of the variable. The alignment is
+ specified as the number of bits.
+
+ Try to use function `asm_output_aligned_bss' defined in file
+ `varasm.c' when defining this macro. */
+#undef ASM_OUTPUT_ALIGNED_BSS
+#define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \
+ asm_output_aligned_bss (FILE, DECL, NAME, SIZE, ALIGN)
+
+/************************[ Debugger stuff ]*********************************/
+
+#undef DBX_REGISTER_NUMBER
+#define DBX_REGISTER_NUMBER(n) (TARGET_64BIT ? dbx64_register_map[n] \
+ : (write_symbols == DWARF2_DEBUG \
+ || write_symbols == DWARF_DEBUG) \
+ ? svr4_dbx_register_map[(n)] \
+ : dbx_register_map[(n)])
+
+/* The same functions are used to creating the DWARF2 debug info and C++
+ unwind info (except.c). Regardless of the debug format requested, the
+ register numbers used in exception unwinding sections still have to be
+ DWARF compatible. IMO the GCC folks may be abusing the DBX_REGISTER_NUMBER
+ macro to mean too much. */
+#define DWARF_FRAME_REGNUM(n) (TARGET_64BIT ? dbx64_register_map[n] \
+ : svr4_dbx_register_map[(n)])
+
+/* stabs-in-elf has offsets relative to function beginning */
+#undef DBX_OUTPUT_LBRAC
+#define DBX_OUTPUT_LBRAC(FILE, NAME) \
+ do { \
+ fprintf (asmfile, "%s %d,0,0,", ASM_STABN_OP, N_LBRAC); \
+ assemble_name (asmfile, buf); \
+ fputc ('-', asmfile); \
+ assemble_name (asmfile, \
+ XSTR (XEXP (DECL_RTL (current_function_decl), 0), 0)); \
+ fprintf (asmfile, "\n"); \
+ } while (0)
+
+#undef DBX_OUTPUT_RBRAC
+#define DBX_OUTPUT_RBRAC(FILE, NAME) \
+ do { \
+ fprintf (asmfile, "%s %d,0,0,", ASM_STABN_OP, N_RBRAC); \
+ assemble_name (asmfile, buf); \
+ fputc ('-', asmfile); \
+ assemble_name (asmfile, \
+ XSTR (XEXP (DECL_RTL (current_function_decl), 0), 0)); \
+ fprintf (asmfile, "\n"); \
} while (0)
diff --git a/contrib/gcc/config/i386/freebsd64.h b/contrib/gcc/config/i386/freebsd64.h
index 12ca062..47981bd 100644
--- a/contrib/gcc/config/i386/freebsd64.h
+++ b/contrib/gcc/config/i386/freebsd64.h
@@ -19,8 +19,10 @@ 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. */
+/* $FreeBSD$ */
-#undef TARGET_VERSION
+
+#undef TARGET_VERSION
#define TARGET_VERSION fprintf (stderr, " (FreeBSD/x86-64 ELF)");
/* Provide a LINK_SPEC appropriate for the FreeBSD/x86-64 ELF target.
@@ -29,7 +31,7 @@ Boston, MA 02111-1307, USA. */
#undef LINK_SPEC
#define LINK_SPEC "\
- %{m32:-m elf_i386_fbsd} \
+ %{m32:-m elf_i386_fbsd -Y P,/usr/lib/i386} \
%{Wl,*:%*} \
%{v:-V} \
%{assert*} %{R*} %{rpath*} %{defsym*} \
diff --git a/contrib/gcc/config/i386/i386.c b/contrib/gcc/config/i386/i386.c
index 8d033b9..4623316 100644
--- a/contrib/gcc/config/i386/i386.c
+++ b/contrib/gcc/config/i386/i386.c
@@ -1,6 +1,6 @@
/* Subroutines used for code generation on IA-32.
Copyright (C) 1988, 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
- 2002, 2003 Free Software Foundation, Inc.
+ 2002 Free Software Foundation, Inc.
This file is part of GNU CC.
@@ -19,6 +19,10 @@ 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. */
+
+/* $FreeBSD$ */
+
+
#include "config.h"
#include "system.h"
#include "rtl.h"
@@ -42,14 +46,13 @@ Boston, MA 02111-1307, USA. */
#include "ggc.h"
#include "target.h"
#include "target-def.h"
-#include "langhooks.h"
#ifndef CHECK_STACK_LIMIT
#define CHECK_STACK_LIMIT (-1)
#endif
/* Processor costs (relative to an add) */
-static const
+static const
struct processor_costs size_cost = { /* costs for tunning for size */
2, /* cost of an add instruction */
3, /* cost of a lea instruction */
@@ -84,16 +87,9 @@ struct processor_costs size_cost = { /* costs for tunning for size */
3, /* MMX or SSE register to integer */
0, /* size of prefetch block */
0, /* number of parallel prefetches */
- 2, /* cost of FADD and FSUB insns. */
- 2, /* cost of FMUL instruction. */
- 2, /* cost of FDIV instruction. */
- 2, /* cost of FABS instruction. */
- 2, /* cost of FCHS instruction. */
- 2, /* cost of FSQRT instruction. */
};
-
/* Processor costs (relative to an add) */
-static const
+static const
struct processor_costs i386_cost = { /* 386 specific costs */
1, /* cost of an add instruction */
1, /* cost of a lea instruction */
@@ -128,15 +124,9 @@ struct processor_costs i386_cost = { /* 386 specific costs */
3, /* MMX or SSE register to integer */
0, /* size of prefetch block */
0, /* number of parallel prefetches */
- 23, /* cost of FADD and FSUB insns. */
- 27, /* cost of FMUL instruction. */
- 88, /* cost of FDIV instruction. */
- 22, /* cost of FABS instruction. */
- 24, /* cost of FCHS instruction. */
- 122, /* cost of FSQRT instruction. */
};
-static const
+static const
struct processor_costs i486_cost = { /* 486 specific costs */
1, /* cost of an add instruction */
1, /* cost of a lea instruction */
@@ -171,15 +161,9 @@ struct processor_costs i486_cost = { /* 486 specific costs */
3, /* MMX or SSE register to integer */
0, /* size of prefetch block */
0, /* number of parallel prefetches */
- 8, /* cost of FADD and FSUB insns. */
- 16, /* cost of FMUL instruction. */
- 73, /* cost of FDIV instruction. */
- 3, /* cost of FABS instruction. */
- 3, /* cost of FCHS instruction. */
- 83, /* cost of FSQRT instruction. */
};
-static const
+static const
struct processor_costs pentium_cost = {
1, /* cost of an add instruction */
1, /* cost of a lea instruction */
@@ -214,15 +198,9 @@ struct processor_costs pentium_cost = {
3, /* MMX or SSE register to integer */
0, /* size of prefetch block */
0, /* number of parallel prefetches */
- 3, /* cost of FADD and FSUB insns. */
- 3, /* cost of FMUL instruction. */
- 39, /* cost of FDIV instruction. */
- 1, /* cost of FABS instruction. */
- 1, /* cost of FCHS instruction. */
- 70, /* cost of FSQRT instruction. */
};
-static const
+static const
struct processor_costs pentiumpro_cost = {
1, /* cost of an add instruction */
1, /* cost of a lea instruction */
@@ -257,15 +235,9 @@ struct processor_costs pentiumpro_cost = {
3, /* MMX or SSE register to integer */
32, /* size of prefetch block */
6, /* number of parallel prefetches */
- 3, /* cost of FADD and FSUB insns. */
- 5, /* cost of FMUL instruction. */
- 56, /* cost of FDIV instruction. */
- 2, /* cost of FABS instruction. */
- 2, /* cost of FCHS instruction. */
- 56, /* cost of FSQRT instruction. */
};
-static const
+static const
struct processor_costs k6_cost = {
1, /* cost of an add instruction */
2, /* cost of a lea instruction */
@@ -300,15 +272,9 @@ struct processor_costs k6_cost = {
6, /* MMX or SSE register to integer */
32, /* size of prefetch block */
1, /* number of parallel prefetches */
- 2, /* cost of FADD and FSUB insns. */
- 2, /* cost of FMUL instruction. */
- 56, /* cost of FDIV instruction. */
- 2, /* cost of FABS instruction. */
- 2, /* cost of FCHS instruction. */
- 56, /* cost of FSQRT instruction. */
};
-static const
+static const
struct processor_costs athlon_cost = {
1, /* cost of an add instruction */
2, /* cost of a lea instruction */
@@ -343,15 +309,9 @@ struct processor_costs athlon_cost = {
5, /* MMX or SSE register to integer */
64, /* size of prefetch block */
6, /* number of parallel prefetches */
- 4, /* cost of FADD and FSUB insns. */
- 4, /* cost of FMUL instruction. */
- 24, /* cost of FDIV instruction. */
- 2, /* cost of FABS instruction. */
- 2, /* cost of FCHS instruction. */
- 35, /* cost of FSQRT instruction. */
};
-static const
+static const
struct processor_costs pentium4_cost = {
1, /* cost of an add instruction */
1, /* cost of a lea instruction */
@@ -386,12 +346,6 @@ struct processor_costs pentium4_cost = {
10, /* MMX or SSE register to integer */
64, /* size of prefetch block */
6, /* number of parallel prefetches */
- 5, /* cost of FADD and FSUB insns. */
- 7, /* cost of FMUL instruction. */
- 43, /* cost of FDIV instruction. */
- 2, /* cost of FABS instruction. */
- 2, /* cost of FCHS instruction. */
- 43, /* cost of FSQRT instruction. */
};
const struct processor_costs *ix86_cost = &pentium_cost;
@@ -425,8 +379,7 @@ const int x86_use_cltd = ~(m_PENT | m_K6);
const int x86_read_modify_write = ~m_PENT;
const int x86_read_modify = ~(m_PENT | m_PPRO);
const int x86_split_long_moves = m_PPRO;
-const int x86_promote_QImode = m_K6 | m_PENT | m_386 | m_486 | m_ATHLON;
-const int x86_fast_prefix = ~(m_PENT | m_486 | m_386);
+const int x86_promote_QImode = m_K6 | m_PENT | m_386 | m_486;
const int x86_single_stringop = m_386 | m_PENT4;
const int x86_qimode_math = ~(0);
const int x86_promote_qi_regs = 0;
@@ -436,29 +389,28 @@ const int x86_sub_esp_4 = m_ATHLON | m_PPRO | m_PENT4;
const int x86_sub_esp_8 = m_ATHLON | m_PPRO | m_386 | m_486 | m_PENT4;
const int x86_add_esp_4 = m_ATHLON | m_K6 | m_PENT4;
const int x86_add_esp_8 = m_ATHLON | m_PPRO | m_K6 | m_386 | m_486 | m_PENT4;
-const int x86_integer_DFmode_moves = ~(m_ATHLON | m_PENT4 | m_PPRO);
+const int x86_integer_DFmode_moves = ~(m_ATHLON | m_PENT4);
const int x86_partial_reg_dependency = m_ATHLON | m_PENT4;
const int x86_memory_mismatch_stall = m_ATHLON | m_PENT4;
const int x86_accumulate_outgoing_args = m_ATHLON | m_PENT4 | m_PPRO;
const int x86_prologue_using_move = m_ATHLON | m_PENT4 | m_PPRO;
const int x86_epilogue_using_move = m_ATHLON | m_PENT4 | m_PPRO;
const int x86_decompose_lea = m_PENT4;
-const int x86_shift1 = ~m_486;
-const int x86_arch_always_fancy_math_387 = m_PENT | m_PPRO | m_ATHLON | m_PENT4;
+const int x86_arch_always_fancy_math_387 = m_PENT|m_PPRO|m_ATHLON|m_PENT4;
/* In case the avreage insn count for single function invocation is
lower than this constant, emit fast (but longer) prologue and
epilogue code. */
#define FAST_PROLOGUE_INSN_COUNT 30
-
/* Set by prologue expander and used by epilogue expander to determine
the style used. */
static int use_fast_prologue_epilogue;
-/* Names for 8 (low), 8 (high), and 16-bit registers, respectively. */
-static const char *const qi_reg_name[] = QI_REGISTER_NAMES;
-static const char *const qi_high_reg_name[] = QI_HIGH_REGISTER_NAMES;
-static const char *const hi_reg_name[] = HI_REGISTER_NAMES;
+#define AT_BP(MODE) (gen_rtx_MEM ((MODE), hard_frame_pointer_rtx))
+
+static const char *const hi_reg_name[] = HI_REGISTER_NAMES; /* names for 16 bit regs */
+static const char *const qi_reg_name[] = QI_REGISTER_NAMES; /* names for 8 bit regs (low) */
+static const char *const qi_high_reg_name[] = QI_HIGH_REGISTER_NAMES; /* names for 8 bit regs (high) */
/* Array of the smallest class containing reg number REGNO, indexed by
REGNO. Used by REGNO_REG_CLASS in i386.h. */
@@ -499,16 +451,11 @@ int const dbx_register_map[FIRST_PSEUDO_REGISTER] =
-1, -1, -1, -1, -1, -1, -1, -1, /* extended SSE registers */
};
-static int const x86_64_int_parameter_registers[6] =
-{
- 5 /*RDI*/, 4 /*RSI*/, 1 /*RDX*/, 2 /*RCX*/,
- FIRST_REX_INT_REG /*R8 */, FIRST_REX_INT_REG + 1 /*R9 */
-};
-
-static int const x86_64_int_return_registers[4] =
-{
- 0 /*RAX*/, 1 /*RDI*/, 5 /*RDI*/, 4 /*RSI*/
-};
+static int const x86_64_int_parameter_registers[6] = {5 /*RDI*/, 4 /*RSI*/,
+ 1 /*RDX*/, 2 /*RCX*/,
+ FIRST_REX_INT_REG /*R8 */,
+ FIRST_REX_INT_REG + 1 /*R9 */};
+static int const x86_64_int_return_registers[4] = {0 /*RAX*/, 1 /*RDI*/, 5, 4};
/* The "default" register map used in 64bit mode. */
int const dbx64_register_map[FIRST_PSEUDO_REGISTER] =
@@ -593,19 +540,14 @@ int const svr4_dbx_register_map[FIRST_PSEUDO_REGISTER] =
rtx ix86_compare_op0 = NULL_RTX;
rtx ix86_compare_op1 = NULL_RTX;
-/* The encoding characters for the four TLS models present in ELF. */
-
-static char const tls_model_chars[] = " GLil";
-
#define MAX_386_STACK_LOCALS 3
/* Size of the register save area. */
#define X86_64_VARARGS_SIZE (REGPARM_MAX * UNITS_PER_WORD + SSE_REGPARM_MAX * 16)
/* Define the structure for the machine field in struct function. */
-struct machine_function GTY(())
+struct machine_function
{
rtx stack_locals[(int) MAX_MACHINE_MODE][MAX_386_STACK_LOCALS];
- const char *some_ld_name;
int save_varrargs_registers;
int accesses_prev_frame;
};
@@ -658,17 +600,15 @@ enum cmodel ix86_cmodel;
/* Asm dialect. */
const char *ix86_asm_string;
enum asm_dialect ix86_asm_dialect = ASM_ATT;
-/* TLS dialext. */
-const char *ix86_tls_dialect_string;
-enum tls_dialect ix86_tls_dialect = TLS_DIALECT_GNU;
-/* Which unit we are generating floating point math for. */
+/* which cpu are we scheduling for */
+enum processor_type ix86_cpu;
+
+/* which unit we are generating floating point math for */
enum fpmath_unit ix86_fpmath;
-/* Which cpu are we scheduling for. */
-enum processor_type ix86_cpu;
-/* Which instruction set architecture to use. */
-enum processor_type ix86_arch;
+/* which instruction set architecture to use. */
+int ix86_arch;
/* Strings to hold which cpu and instruction set architecture to use. */
const char *ix86_cpu_string; /* for -mcpu=<xxx> */
@@ -710,33 +650,35 @@ static char internal_label_prefix[16];
static int internal_label_prefix_len;
static int local_symbolic_operand PARAMS ((rtx, enum machine_mode));
-static int tls_symbolic_operand_1 PARAMS ((rtx, enum tls_model));
static void output_pic_addr_const PARAMS ((FILE *, rtx, int));
static void put_condition_code PARAMS ((enum rtx_code, enum machine_mode,
int, int, FILE *));
-static const char *get_some_local_dynamic_name PARAMS ((void));
-static int get_some_local_dynamic_name_1 PARAMS ((rtx *, void *));
-static rtx maybe_get_pool_constant PARAMS ((rtx));
static rtx ix86_expand_int_compare PARAMS ((enum rtx_code, rtx, rtx));
static enum rtx_code ix86_prepare_fp_compare_args PARAMS ((enum rtx_code,
rtx *, rtx *));
-static rtx get_thread_pointer PARAMS ((void));
-static void get_pc_thunk_name PARAMS ((char [32], unsigned int));
static rtx gen_push PARAMS ((rtx));
static int memory_address_length PARAMS ((rtx addr));
static int ix86_flags_dependant PARAMS ((rtx, rtx, enum attr_type));
static int ix86_agi_dependant PARAMS ((rtx, rtx, enum attr_type));
+static int ix86_safe_length PARAMS ((rtx));
+static enum attr_memory ix86_safe_memory PARAMS ((rtx));
+static enum attr_pent_pair ix86_safe_pent_pair PARAMS ((rtx));
static enum attr_ppro_uops ix86_safe_ppro_uops PARAMS ((rtx));
static void ix86_dump_ppro_packet PARAMS ((FILE *));
static void ix86_reorder_insn PARAMS ((rtx *, rtx *));
-static struct machine_function * ix86_init_machine_status PARAMS ((void));
+static rtx * ix86_pent_find_pair PARAMS ((rtx *, rtx *, enum attr_pent_pair,
+ rtx));
+static void ix86_init_machine_status PARAMS ((struct function *));
+static void ix86_mark_machine_status PARAMS ((struct function *));
+static void ix86_free_machine_status PARAMS ((struct function *));
static int ix86_split_to_parts PARAMS ((rtx, rtx *, enum machine_mode));
+static int ix86_safe_length_prefix PARAMS ((rtx));
static int ix86_nsaved_regs PARAMS ((void));
static void ix86_emit_save_regs PARAMS ((void));
static void ix86_emit_save_regs_using_mov PARAMS ((rtx, HOST_WIDE_INT));
static void ix86_emit_restore_regs_using_mov PARAMS ((rtx, int, int));
-static void ix86_output_function_epilogue PARAMS ((FILE *, HOST_WIDE_INT));
static void ix86_set_move_mem_attrs_1 PARAMS ((rtx, rtx, rtx, rtx, rtx));
+static void ix86_sched_reorder_pentium PARAMS ((rtx *, rtx *));
static void ix86_sched_reorder_ppro PARAMS ((rtx *, rtx *));
static HOST_WIDE_INT ix86_GOT_alias_set PARAMS ((void));
static void ix86_adjust_counter PARAMS ((rtx, HOST_WIDE_INT));
@@ -747,14 +689,7 @@ static int ix86_adjust_cost PARAMS ((rtx, rtx, rtx, int));
static void ix86_sched_init PARAMS ((FILE *, int, int));
static int ix86_sched_reorder PARAMS ((FILE *, int, rtx *, int *, int));
static int ix86_variable_issue PARAMS ((FILE *, int, rtx, int));
-static int ia32_use_dfa_pipeline_interface PARAMS ((void));
-static int ia32_multipass_dfa_lookahead PARAMS ((void));
static void ix86_init_mmx_sse_builtins PARAMS ((void));
-static rtx x86_this_parameter PARAMS ((tree));
-static void x86_output_mi_thunk PARAMS ((FILE *, tree, HOST_WIDE_INT,
- HOST_WIDE_INT, tree));
-static bool x86_can_output_mi_thunk PARAMS ((tree, HOST_WIDE_INT,
- HOST_WIDE_INT, tree));
struct ix86_address
{
@@ -763,11 +698,6 @@ struct ix86_address
};
static int ix86_decompose_address PARAMS ((rtx, struct ix86_address *));
-static bool ix86_cannot_force_const_mem PARAMS ((rtx));
-
-static void ix86_encode_section_info PARAMS ((tree, int)) ATTRIBUTE_UNUSED;
-static const char *ix86_strip_name_encoding PARAMS ((const char *))
- ATTRIBUTE_UNUSED;
struct builtin_description;
static rtx ix86_expand_sse_comi PARAMS ((const struct builtin_description *,
@@ -777,6 +707,8 @@ static rtx ix86_expand_sse_compare PARAMS ((const struct builtin_description *,
static rtx ix86_expand_unop1_builtin PARAMS ((enum insn_code, tree, rtx));
static rtx ix86_expand_unop_builtin PARAMS ((enum insn_code, tree, rtx, int));
static rtx ix86_expand_binop_builtin PARAMS ((enum insn_code, tree, rtx));
+static rtx ix86_expand_timode_binop_builtin PARAMS ((enum insn_code,
+ tree, rtx));
static rtx ix86_expand_store_builtin PARAMS ((enum insn_code, tree));
static rtx safe_vector_operand PARAMS ((rtx, enum machine_mode));
static enum rtx_code ix86_fp_compare_code_to_integer PARAMS ((enum rtx_code));
@@ -790,18 +722,14 @@ static int ix86_fp_comparison_arithmetics_cost PARAMS ((enum rtx_code code));
static int ix86_fp_comparison_fcomi_cost PARAMS ((enum rtx_code code));
static int ix86_fp_comparison_sahf_cost PARAMS ((enum rtx_code code));
static int ix86_fp_comparison_cost PARAMS ((enum rtx_code code));
-static unsigned int ix86_select_alt_pic_regnum PARAMS ((void));
-static int ix86_save_reg PARAMS ((unsigned int, int));
+static int ix86_save_reg PARAMS ((int, int));
static void ix86_compute_frame_layout PARAMS ((struct ix86_frame *));
static int ix86_comp_type_attributes PARAMS ((tree, tree));
-static int ix86_fntype_regparm PARAMS ((tree));
const struct attribute_spec ix86_attribute_table[];
static tree ix86_handle_cdecl_attribute PARAMS ((tree *, tree, tree, int, bool *));
static tree ix86_handle_regparm_attribute PARAMS ((tree *, tree, tree, int, bool *));
-static int ix86_value_regno PARAMS ((enum machine_mode));
-static bool contains_128bit_aligned_vector_p PARAMS ((tree));
-#if defined (DO_GLOBAL_CTORS_BODY) && defined (HAS_INIT_SECTION)
+#ifdef DO_GLOBAL_CTORS_BODY
static void ix86_svr3_asm_out_constructor PARAMS ((rtx, int));
#endif
@@ -857,8 +785,12 @@ static enum x86_64_reg_class merge_classes PARAMS ((enum x86_64_reg_class,
#undef TARGET_EXPAND_BUILTIN
#define TARGET_EXPAND_BUILTIN ix86_expand_builtin
-#undef TARGET_ASM_FUNCTION_EPILOGUE
-#define TARGET_ASM_FUNCTION_EPILOGUE ix86_output_function_epilogue
+#if defined (OSF_OS) || defined (TARGET_OSF1ELF)
+ static void ix86_osf_output_function_prologue PARAMS ((FILE *,
+ HOST_WIDE_INT));
+# undef TARGET_ASM_FUNCTION_PROLOGUE
+# define TARGET_ASM_FUNCTION_PROLOGUE ix86_osf_output_function_prologue
+#endif
#undef TARGET_ASM_OPEN_PAREN
#define TARGET_ASM_OPEN_PAREN ""
@@ -891,33 +823,9 @@ static enum x86_64_reg_class merge_classes PARAMS ((enum x86_64_reg_class,
#define TARGET_SCHED_INIT ix86_sched_init
#undef TARGET_SCHED_REORDER
#define TARGET_SCHED_REORDER ix86_sched_reorder
-#undef TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE
-#define TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE \
- ia32_use_dfa_pipeline_interface
-#undef TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD
-#define TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD \
- ia32_multipass_dfa_lookahead
-
-#ifdef HAVE_AS_TLS
-#undef TARGET_HAVE_TLS
-#define TARGET_HAVE_TLS true
-#endif
-#undef TARGET_CANNOT_FORCE_CONST_MEM
-#define TARGET_CANNOT_FORCE_CONST_MEM ix86_cannot_force_const_mem
-
-#undef TARGET_ASM_OUTPUT_MI_THUNK
-#define TARGET_ASM_OUTPUT_MI_THUNK x86_output_mi_thunk
-#undef TARGET_ASM_CAN_OUTPUT_MI_THUNK
-#define TARGET_ASM_CAN_OUTPUT_MI_THUNK x86_can_output_mi_thunk
struct gcc_target targetm = TARGET_INITIALIZER;
-/* The svr4 ABI for the i386 says that records and unions are returned
- in memory. */
-#ifndef DEFAULT_PCC_STRUCT_RETURN
-#define DEFAULT_PCC_STRUCT_RETURN 1
-#endif
-
/* Sometimes certain combinations of command options do not make
sense on a particular target machine. You can define a macro
`OVERRIDE_OPTIONS' to take account of this. This macro, if
@@ -979,9 +887,6 @@ override_options ()
{"i586", PROCESSOR_PENTIUM, 0},
{"pentium", PROCESSOR_PENTIUM, 0},
{"pentium-mmx", PROCESSOR_PENTIUM, PTA_MMX},
- {"winchip-c6", PROCESSOR_I486, PTA_MMX},
- {"winchip2", PROCESSOR_I486, PTA_MMX | PTA_3DNOW},
- {"c3", PROCESSOR_I486, PTA_MMX | PTA_3DNOW},
{"i686", PROCESSOR_PENTIUMPRO, 0},
{"pentiumpro", PROCESSOR_PENTIUMPRO, 0},
{"pentium2", PROCESSOR_PENTIUMPRO, PTA_MMX},
@@ -1003,12 +908,7 @@ override_options ()
| PTA_3DNOW_A | PTA_SSE},
};
- int const pta_size = ARRAY_SIZE (processor_alias_table);
-
- /* By default our XFmode is the 80-bit extended format. If we have
- use TFmode instead, it's also the 80-bit format, but with padding. */
- real_format_for_mode[XFmode - QFmode] = &ieee_extended_intel_96_format;
- real_format_for_mode[TFmode - QFmode] = &ieee_extended_intel_128_format;
+ int const pta_size = sizeof (processor_alias_table) / sizeof (struct pta);
/* Set the default values for switches whose default depends on TARGET_64BIT
in case they weren't overwriten by command line options. */
@@ -1090,19 +990,19 @@ override_options ()
/* Default cpu tuning to the architecture. */
ix86_cpu = ix86_arch;
if (processor_alias_table[i].flags & PTA_MMX
- && !(target_flags_explicit & MASK_MMX))
+ && !(target_flags & MASK_MMX_SET))
target_flags |= MASK_MMX;
if (processor_alias_table[i].flags & PTA_3DNOW
- && !(target_flags_explicit & MASK_3DNOW))
+ && !(target_flags & MASK_3DNOW_SET))
target_flags |= MASK_3DNOW;
if (processor_alias_table[i].flags & PTA_3DNOW_A
- && !(target_flags_explicit & MASK_3DNOW_A))
+ && !(target_flags & MASK_3DNOW_A_SET))
target_flags |= MASK_3DNOW_A;
if (processor_alias_table[i].flags & PTA_SSE
- && !(target_flags_explicit & MASK_SSE))
+ && !(target_flags & MASK_SSE_SET))
target_flags |= MASK_SSE;
if (processor_alias_table[i].flags & PTA_SSE2
- && !(target_flags_explicit & MASK_SSE2))
+ && !(target_flags & MASK_SSE2_SET))
target_flags |= MASK_SSE2;
if (processor_alias_table[i].flags & PTA_PREFETCH_SSE)
x86_prefetch_sse = true;
@@ -1132,6 +1032,8 @@ override_options ()
/* Arrange to set up i386_stack_locals for all functions. */
init_machine_status = ix86_init_machine_status;
+ mark_machine_status = ix86_mark_machine_status;
+ free_machine_status = ix86_free_machine_status;
/* Validate -mregparm= value. */
if (ix86_regparm_string)
@@ -1232,17 +1134,6 @@ override_options ()
ix86_branch_cost = i;
}
- if (ix86_tls_dialect_string)
- {
- if (strcmp (ix86_tls_dialect_string, "gnu") == 0)
- ix86_tls_dialect = TLS_DIALECT_GNU;
- else if (strcmp (ix86_tls_dialect_string, "sun") == 0)
- ix86_tls_dialect = TLS_DIALECT_SUN;
- else
- error ("bad value (%s) for -mtls-dialect= switch",
- ix86_tls_dialect_string);
- }
-
/* Keep nonleaf frame pointers. */
if (TARGET_OMIT_LEAF_FRAME_POINTER)
flag_omit_frame_pointer = 1;
@@ -1300,7 +1191,7 @@ override_options ()
else
ix86_fpmath = FPMATH_SSE | FPMATH_387;
}
- else
+ else
error ("bad value (%s) for -mfpmath= switch", ix86_fpmath_string);
}
@@ -1322,7 +1213,7 @@ override_options ()
target_flags |= MASK_3DNOW_A;
}
if ((x86_accumulate_outgoing_args & CPUMASK)
- && !(target_flags_explicit & MASK_ACCUMULATE_OUTGOING_ARGS)
+ && !(target_flags & MASK_ACCUMULATE_OUTGOING_ARGS_SET)
&& !optimize_size)
target_flags |= MASK_ACCUMULATE_OUTGOING_ARGS;
@@ -1347,7 +1238,6 @@ optimization_options (level, size)
if (level > 1)
flag_schedule_insns = 0;
#endif
-
/* The default values of these switches depend on the TARGET_64BIT
that is not known at this moment. Mark these values with 2 and
let user the to override these. In case there is no command line option
@@ -1448,6 +1338,105 @@ ix86_handle_regparm_attribute (node, name, args, flags, no_add_attrs)
return NULL_TREE;
}
+#if defined (OSF_OS) || defined (TARGET_OSF1ELF)
+
+/* Generate the assembly code for function entry. FILE is a stdio
+ stream to output the code to. SIZE is an int: how many units of
+ temporary storage to allocate.
+
+ Refer to the array `regs_ever_live' to determine which registers to
+ save; `regs_ever_live[I]' is nonzero if register number I is ever
+ used in the function. This function is responsible for knowing
+ which registers should not be saved even if used.
+
+ We override it here to allow for the new profiling code to go before
+ the prologue and the old mcount code to go after the prologue (and
+ after %ebx has been set up for ELF shared library support). */
+
+static void
+ix86_osf_output_function_prologue (file, size)
+ FILE *file;
+ HOST_WIDE_INT size;
+{
+ const char *prefix = "";
+ const char *const lprefix = LPREFIX;
+ int labelno = current_function_profile_label_no;
+
+#ifdef OSF_OS
+
+ if (TARGET_UNDERSCORES)
+ prefix = "_";
+
+ if (current_function_profile && OSF_PROFILE_BEFORE_PROLOGUE)
+ {
+ if (!flag_pic && !HALF_PIC_P ())
+ {
+ fprintf (file, "\tmovl $%sP%d,%%edx\n", lprefix, labelno);
+ fprintf (file, "\tcall *%s_mcount_ptr\n", prefix);
+ }
+
+ else if (HALF_PIC_P ())
+ {
+ rtx symref;
+
+ HALF_PIC_EXTERNAL ("_mcount_ptr");
+ symref = HALF_PIC_PTR (gen_rtx_SYMBOL_REF (Pmode,
+ "_mcount_ptr"));
+
+ fprintf (file, "\tmovl $%sP%d,%%edx\n", lprefix, labelno);
+ fprintf (file, "\tmovl %s%s,%%eax\n", prefix,
+ XSTR (symref, 0));
+ fprintf (file, "\tcall *(%%eax)\n");
+ }
+
+ else
+ {
+ static int call_no = 0;
+
+ fprintf (file, "\tcall %sPc%d\n", lprefix, call_no);
+ fprintf (file, "%sPc%d:\tpopl %%eax\n", lprefix, call_no);
+ fprintf (file, "\taddl $_GLOBAL_OFFSET_TABLE_+[.-%sPc%d],%%eax\n",
+ lprefix, call_no++);
+ fprintf (file, "\tleal %sP%d@GOTOFF(%%eax),%%edx\n",
+ lprefix, labelno);
+ fprintf (file, "\tmovl %s_mcount_ptr@GOT(%%eax),%%eax\n",
+ prefix);
+ fprintf (file, "\tcall *(%%eax)\n");
+ }
+ }
+
+#else /* !OSF_OS */
+
+ if (current_function_profile && OSF_PROFILE_BEFORE_PROLOGUE)
+ {
+ if (!flag_pic)
+ {
+ fprintf (file, "\tmovl $%sP%d,%%edx\n", lprefix, labelno);
+ fprintf (file, "\tcall *%s_mcount_ptr\n", prefix);
+ }
+
+ else
+ {
+ static int call_no = 0;
+
+ fprintf (file, "\tcall %sPc%d\n", lprefix, call_no);
+ fprintf (file, "%sPc%d:\tpopl %%eax\n", lprefix, call_no);
+ fprintf (file, "\taddl $_GLOBAL_OFFSET_TABLE_+[.-%sPc%d],%%eax\n",
+ lprefix, call_no++);
+ fprintf (file, "\tleal %sP%d@GOTOFF(%%eax),%%edx\n",
+ lprefix, labelno);
+ fprintf (file, "\tmovl %s_mcount_ptr@GOT(%%eax),%%eax\n",
+ prefix);
+ fprintf (file, "\tcall *(%%eax)\n");
+ }
+ }
+#endif /* !OSF_OS */
+
+ function_prologue (file, size);
+}
+
+#endif /* OSF_OS || TARGET_OSF1ELF */
+
/* Return 0 if the attributes for two types are incompatible, 1 if they
are compatible, and 2 if they are nearly compatible (which causes a
warning to be generated). */
@@ -1470,21 +1459,6 @@ ix86_comp_type_attributes (type1, type2)
return 1;
}
-/* Return the regparm value for a fuctio with the indicated TYPE. */
-
-static int
-ix86_fntype_regparm (type)
- tree type;
-{
- tree attr;
-
- attr = lookup_attribute ("regparm", TYPE_ATTRIBUTES (type));
- if (attr)
- return TREE_INT_CST_LOW (TREE_VALUE (TREE_VALUE (attr)));
- else
- return ix86_regparm;
-}
-
/* Value is the number of bytes of arguments automatically
popped when returning from a subroutine call.
FUNDECL is the declaration node of the function (as a tree),
@@ -1528,7 +1502,15 @@ ix86_return_pops_args (fundecl, funtype, size)
if (aggregate_value_p (TREE_TYPE (funtype))
&& !TARGET_64BIT)
{
- int nregs = ix86_fntype_regparm (funtype);
+ int nregs = ix86_regparm;
+
+ if (funtype)
+ {
+ tree attr = lookup_attribute ("regparm", TYPE_ATTRIBUTES (funtype));
+
+ if (attr)
+ nregs = TREE_INT_CST_LOW (TREE_VALUE (TREE_VALUE (attr)));
+ }
if (!nregs)
return GET_MODE_SIZE (Pmode);
@@ -1695,8 +1677,8 @@ classify_argument (mode, type, classes, bit_offset)
(mode == BLKmode) ? int_size_in_bytes (type) : (int) GET_MODE_SIZE (mode);
int words = (bytes + (bit_offset % 64) / 8 + UNITS_PER_WORD - 1) / UNITS_PER_WORD;
- /* Variable sized entities are always passed/returned in memory. */
- if (bytes < 0)
+ /* Variable sized structures are always passed on the stack. */
+ if (mode == BLKmode && type && TREE_CODE (TYPE_SIZE (type)) != INTEGER_CST)
return 0;
if (type && AGGREGATE_TYPE_P (type))
@@ -1744,7 +1726,7 @@ classify_argument (mode, type, classes, bit_offset)
return 0;
for (i = 0; i < num; i++)
{
- int pos = (offset + (bit_offset % 64)) / 8 / 8;
+ int pos = (offset + bit_offset) / 8 / 8;
classes[i + pos] =
merge_classes (subclasses[i], classes[i + pos]);
}
@@ -1781,7 +1763,7 @@ classify_argument (mode, type, classes, bit_offset)
for (i = 0; i < num; i++)
{
int pos =
- (int_bit_position (field) + (bit_offset % 64)) / 8 / 8;
+ (int_bit_position (field) + bit_offset) / 8 / 8;
classes[i + pos] =
merge_classes (subclasses[i], classes[i + pos]);
}
@@ -1827,12 +1809,12 @@ classify_argument (mode, type, classes, bit_offset)
num = classify_argument (TYPE_MODE (type),
type, subclasses,
- (offset + (bit_offset % 64)) % 256);
+ (offset + bit_offset) % 256);
if (!num)
return 0;
for (i = 0; i < num; i++)
{
- int pos = (offset + (bit_offset % 64)) / 8 / 8;
+ int pos = (offset + bit_offset) / 8 / 8;
classes[i + pos] =
merge_classes (subclasses[i], classes[i + pos]);
}
@@ -1944,10 +1926,6 @@ classify_argument (mode, type, classes, bit_offset)
return 1;
case V4SFmode:
case V4SImode:
- case V16QImode:
- case V8HImode:
- case V2DFmode:
- case V2DImode:
classes[0] = X86_64_SSE_CLASS;
classes[1] = X86_64_SSEUP_CLASS;
return 2;
@@ -1955,7 +1933,8 @@ classify_argument (mode, type, classes, bit_offset)
case V2SImode:
case V4HImode:
case V8QImode:
- return 0;
+ classes[0] = X86_64_SSE_CLASS;
+ return 1;
case BLKmode:
case VOIDmode:
return 0;
@@ -2124,15 +2103,13 @@ construct_container (mode, type, in_return, nintregs, nsseregs, intreg, sse_regn
break;
case X86_64_SSE_CLASS:
if (i < n - 1 && class[i + 1] == X86_64_SSEUP_CLASS)
- tmpmode = TImode;
+ tmpmode = TImode, i++;
else
tmpmode = DImode;
exp [nexps++] = gen_rtx_EXPR_LIST (VOIDmode,
gen_rtx_REG (tmpmode,
SSE_REGNO (sse_regno)),
GEN_INT (i*8));
- if (tmpmode == TImode)
- i++;
sse_regno++;
break;
default:
@@ -2259,9 +2236,6 @@ function_arg (cum, mode, type, named)
break;
case BLKmode:
- if (bytes < 0)
- break;
- /* FALLTHRU */
case DImode:
case SImode:
case HImode:
@@ -2278,11 +2252,11 @@ function_arg (cum, mode, type, named)
if (TARGET_DEBUG_ARG)
{
fprintf (stderr,
- "function_arg (size=%d, wds=%2d, nregs=%d, mode=%4s, named=%d, ",
+ "function_arg (size=%d, wds=%2d, nregs=%d, mode=%4s, named=%d",
words, cum->words, cum->nregs, GET_MODE_NAME (mode), named);
if (ret)
- print_simple_rtl (stderr, ret);
+ fprintf (stderr, ", reg=%%e%s", reg_names[ REGNO (ret) ]);
else
fprintf (stderr, ", stack");
@@ -2292,90 +2266,6 @@ function_arg (cum, mode, type, named)
return ret;
}
-/* Return true when TYPE should be 128bit aligned for 32bit argument passing
- ABI */
-static bool
-contains_128bit_aligned_vector_p (type)
- tree type;
-{
- enum machine_mode mode = TYPE_MODE (type);
- if (SSE_REG_MODE_P (mode)
- && (!TYPE_USER_ALIGN (type) || TYPE_ALIGN (type) > 128))
- return true;
- if (TYPE_ALIGN (type) < 128)
- return false;
-
- if (AGGREGATE_TYPE_P (type))
- {
- /* Walk the agregates recursivly. */
- if (TREE_CODE (type) == RECORD_TYPE
- || TREE_CODE (type) == UNION_TYPE
- || TREE_CODE (type) == QUAL_UNION_TYPE)
- {
- tree field;
-
- if (TYPE_BINFO (type) != NULL
- && TYPE_BINFO_BASETYPES (type) != NULL)
- {
- tree bases = TYPE_BINFO_BASETYPES (type);
- int n_bases = TREE_VEC_LENGTH (bases);
- int i;
-
- for (i = 0; i < n_bases; ++i)
- {
- tree binfo = TREE_VEC_ELT (bases, i);
- tree type = BINFO_TYPE (binfo);
-
- if (contains_128bit_aligned_vector_p (type))
- return true;
- }
- }
- /* And now merge the fields of structure. */
- for (field = TYPE_FIELDS (type); field; field = TREE_CHAIN (field))
- {
- if (TREE_CODE (field) == FIELD_DECL
- && contains_128bit_aligned_vector_p (TREE_TYPE (field)))
- return true;
- }
- }
- /* Just for use if some languages passes arrays by value. */
- else if (TREE_CODE (type) == ARRAY_TYPE)
- {
- if (contains_128bit_aligned_vector_p (TREE_TYPE (type)))
- return true;
- }
- else
- abort ();
- }
- return false;
-}
-
-/* A C expression that indicates when an argument must be passed by
- reference. If nonzero for an argument, a copy of that argument is
- made in memory and a pointer to the argument is passed instead of
- the argument itself. The pointer is passed in whatever way is
- appropriate for passing a pointer to that type. */
-
-int
-function_arg_pass_by_reference (cum, mode, type, named)
- CUMULATIVE_ARGS *cum ATTRIBUTE_UNUSED;
- enum machine_mode mode ATTRIBUTE_UNUSED;
- tree type;
- int named ATTRIBUTE_UNUSED;
-{
- if (!TARGET_64BIT)
- return 0;
-
- if (type && int_size_in_bytes (type) == -1)
- {
- if (TARGET_DEBUG_ARG)
- fprintf (stderr, "function_arg_pass_by_reference\n");
- return 1;
- }
-
- return 0;
-}
-
/* Gives the alignment boundary, in bits, of an argument with the specified mode
and type. */
@@ -2385,34 +2275,14 @@ ix86_function_arg_boundary (mode, type)
tree type;
{
int align;
+ if (!TARGET_64BIT)
+ return PARM_BOUNDARY;
if (type)
align = TYPE_ALIGN (type);
else
align = GET_MODE_ALIGNMENT (mode);
if (align < PARM_BOUNDARY)
align = PARM_BOUNDARY;
- if (!TARGET_64BIT)
- {
- /* i386 ABI defines all arguments to be 4 byte aligned. We have to
- make an exception for SSE modes since these require 128bit
- alignment.
-
- The handling here differs from field_alignment. ICC aligns MMX
- arguments to 4 byte boundaries, while structure fields are aligned
- to 8 byte boundaries. */
- if (!type)
- {
- if (!SSE_REG_MODE_P (mode))
- align = PARM_BOUNDARY;
- }
- else
- {
- if (!contains_128bit_aligned_vector_p (type))
- align = PARM_BOUNDARY;
- }
- if (align != PARM_BOUNDARY && !TARGET_SSE)
- abort();
- }
if (align > 128)
align = 128;
return align;
@@ -2454,8 +2324,7 @@ ix86_function_value (valtype)
return ret;
}
else
- return gen_rtx_REG (TYPE_MODE (valtype),
- ix86_value_regno (TYPE_MODE (valtype)));
+ return gen_rtx_REG (TYPE_MODE (valtype), VALUE_REGNO (TYPE_MODE (valtype)));
}
/* Return false iff type is returned in memory. */
@@ -2505,20 +2374,7 @@ ix86_libcall_value (mode)
}
}
else
- return gen_rtx_REG (mode, ix86_value_regno (mode));
-}
-
-/* Given a mode, return the register to use for a return value. */
-
-static int
-ix86_value_regno (mode)
- enum machine_mode mode;
-{
- if (GET_MODE_CLASS (mode) == MODE_FLOAT && TARGET_FLOAT_RETURNS_IN_80387)
- return FIRST_FLOAT_REG;
- if (mode == TImode || VECTOR_MODE_P (mode))
- return FIRST_SSE_REG;
- return 0;
+ return gen_rtx_REG (mode, VALUE_REGNO (mode));
}
/* Create the va_list data type. */
@@ -2532,12 +2388,12 @@ ix86_build_va_list ()
if (!TARGET_64BIT)
return build_pointer_type (char_type_node);
- record = (*lang_hooks.types.make_type) (RECORD_TYPE);
+ record = make_lang_type (RECORD_TYPE);
type_decl = build_decl (TYPE_DECL, get_identifier ("__va_list_tag"), record);
- f_gpr = build_decl (FIELD_DECL, get_identifier ("gp_offset"),
+ f_gpr = build_decl (FIELD_DECL, get_identifier ("gp_offset"),
unsigned_type_node);
- f_fpr = build_decl (FIELD_DECL, get_identifier ("fp_offset"),
+ f_fpr = build_decl (FIELD_DECL, get_identifier ("fp_offset"),
unsigned_type_node);
f_ovf = build_decl (FIELD_DECL, get_identifier ("overflow_arg_area"),
ptr_type_node);
@@ -2563,7 +2419,7 @@ ix86_build_va_list ()
}
/* Perform any needed actions needed for a function that is receiving a
- variable number of arguments.
+ variable number of arguments.
CUM is as above.
@@ -2602,8 +2458,6 @@ ix86_setup_incoming_varargs (cum, mode, type, pretend_size, no_rtl)
/* Indicate to allocate space on the stack for varargs save area. */
ix86_save_varrargs_registers = 1;
- cfun->stack_alignment_needed = 128;
-
fntype = TREE_TYPE (current_function_decl);
stdarg_p = (TYPE_ARG_TYPES (fntype) != 0
&& (TREE_VALUE (tree_last (TYPE_ARG_TYPES (fntype)))
@@ -2679,7 +2533,8 @@ ix86_setup_incoming_varargs (cum, mode, type, pretend_size, no_rtl)
/* Implement va_start. */
void
-ix86_va_start (valist, nextarg)
+ix86_va_start (stdarg_p, valist, nextarg)
+ int stdarg_p;
tree valist;
rtx nextarg;
{
@@ -2690,7 +2545,7 @@ ix86_va_start (valist, nextarg)
/* Only 64bit target needs something special. */
if (!TARGET_64BIT)
{
- std_expand_builtin_va_start (valist, nextarg);
+ std_expand_builtin_va_start (stdarg_p, valist, nextarg);
return;
}
@@ -2739,6 +2594,7 @@ ix86_va_start (valist, nextarg)
t = build (MODIFY_EXPR, TREE_TYPE (sav), sav, t);
TREE_SIDE_EFFECTS (t) = 1;
expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
+ cfun->preferred_stack_boundary = 128;
}
/* Implement va_arg. */
@@ -2746,14 +2602,13 @@ rtx
ix86_va_arg (valist, type)
tree valist, type;
{
- static const int intreg[6] = { 0, 1, 2, 3, 4, 5 };
+ static int intreg[6] = { 0, 1, 2, 3, 4, 5 };
tree f_gpr, f_fpr, f_ovf, f_sav;
tree gpr, fpr, ovf, sav, t;
int size, rsize;
rtx lab_false, lab_over = NULL_RTX;
rtx addr_rtx, r;
rtx container;
- int indirect_p = 0;
/* Only 64bit target needs something special. */
if (!TARGET_64BIT)
@@ -2773,13 +2628,6 @@ ix86_va_arg (valist, type)
sav = build (COMPONENT_REF, TREE_TYPE (f_sav), valist, f_sav);
size = int_size_in_bytes (type);
- if (size == -1)
- {
- /* Passed by reference. */
- indirect_p = 1;
- type = build_pointer_type (type);
- size = int_size_in_bytes (type);
- }
rsize = (size + UNITS_PER_WORD - 1) / UNITS_PER_WORD;
container = construct_container (TYPE_MODE (type), type, 0,
@@ -2884,12 +2732,10 @@ ix86_va_arg (valist, type)
{
int i;
rtx mem;
- rtx x;
/* Never use the memory itself, as it has the alias set. */
- x = XEXP (assign_temp (type, 0, 1, 0), 0);
- mem = gen_rtx_MEM (BLKmode, x);
- force_operand (x, addr_rtx);
+ addr_rtx = XEXP (assign_temp (type, 0, 1, 0), 0);
+ mem = gen_rtx_MEM (BLKmode, addr_rtx);
set_mem_alias_set (mem, get_varargs_alias_set ());
set_mem_align (mem, BITS_PER_UNIT);
@@ -2972,53 +2818,9 @@ ix86_va_arg (valist, type)
if (container)
emit_label (lab_over);
- if (indirect_p)
- {
- r = gen_rtx_MEM (Pmode, addr_rtx);
- set_mem_alias_set (r, get_varargs_alias_set ());
- emit_move_insn (addr_rtx, r);
- }
-
return addr_rtx;
}
-/* Return nonzero if OP is either a i387 or SSE fp register. */
-int
-any_fp_register_operand (op, mode)
- rtx op;
- enum machine_mode mode ATTRIBUTE_UNUSED;
-{
- return ANY_FP_REG_P (op);
-}
-
-/* Return nonzero if OP is an i387 fp register. */
-int
-fp_register_operand (op, mode)
- rtx op;
- enum machine_mode mode ATTRIBUTE_UNUSED;
-{
- return FP_REG_P (op);
-}
-
-/* Return nonzero if OP is a non-fp register_operand. */
-int
-register_and_not_any_fp_reg_operand (op, mode)
- rtx op;
- enum machine_mode mode;
-{
- return register_operand (op, mode) && !ANY_FP_REG_P (op);
-}
-
-/* Return nonzero of OP is a register operand other than an
- i387 fp register. */
-int
-register_and_not_fp_reg_operand (op, mode)
- rtx op;
- enum machine_mode mode;
-{
- return register_operand (op, mode) && !FP_REG_P (op);
-}
-
/* Return nonzero if OP is general operand representable on x86_64. */
int
@@ -3078,29 +2880,6 @@ x86_64_movabs_operand (op, mode)
return 0;
}
-/* Return nonzero if OPNUM's MEM should be matched
- in movabs* patterns. */
-
-int
-ix86_check_movabs (insn, opnum)
- rtx insn;
- int opnum;
-{
- rtx set, mem;
-
- set = PATTERN (insn);
- if (GET_CODE (set) == PARALLEL)
- set = XVECEXP (set, 0, 0);
- if (GET_CODE (set) != SET)
- abort ();
- mem = XEXP (set, opnum);
- while (GET_CODE (mem) == SUBREG)
- mem = SUBREG_REG (mem);
- if (GET_CODE (mem) != MEM)
- abort ();
- return (volatile_ok || !MEM_VOLATILE_P (mem));
-}
-
/* Return nonzero if OP is nonmemory operand representable on x86_64. */
int
@@ -3178,9 +2957,9 @@ symbolic_operand (op, mode)
if (GET_CODE (op) == SYMBOL_REF
|| GET_CODE (op) == LABEL_REF
|| (GET_CODE (op) == UNSPEC
- && (XINT (op, 1) == UNSPEC_GOT
- || XINT (op, 1) == UNSPEC_GOTOFF
- || XINT (op, 1) == UNSPEC_GOTPCREL)))
+ && (XINT (op, 1) == 6
+ || XINT (op, 1) == 7
+ || XINT (op, 1) == 15)))
return 1;
if (GET_CODE (op) != PLUS
|| GET_CODE (XEXP (op, 1)) != CONST_INT)
@@ -3192,7 +2971,7 @@ symbolic_operand (op, mode)
return 1;
/* Only @GOTOFF gets offsets. */
if (GET_CODE (op) != UNSPEC
- || XINT (op, 1) != UNSPEC_GOTOFF)
+ || XINT (op, 1) != 7)
return 0;
op = XVECEXP (op, 0, 0);
@@ -3221,7 +3000,7 @@ pic_symbolic_operand (op, mode)
if (GET_CODE (XEXP (op, 0)) == UNSPEC)
return 1;
}
- else
+ else
{
if (GET_CODE (op) == UNSPEC)
return 1;
@@ -3242,14 +3021,14 @@ local_symbolic_operand (op, mode)
rtx op;
enum machine_mode mode ATTRIBUTE_UNUSED;
{
+ if (GET_CODE (op) == LABEL_REF)
+ return 1;
+
if (GET_CODE (op) == CONST
&& GET_CODE (XEXP (op, 0)) == PLUS
&& GET_CODE (XEXP (XEXP (op, 0), 1)) == CONST_INT)
op = XEXP (XEXP (op, 0), 0);
- if (GET_CODE (op) == LABEL_REF)
- return 1;
-
if (GET_CODE (op) != SYMBOL_REF)
return 0;
@@ -3259,10 +3038,10 @@ local_symbolic_operand (op, mode)
return 1;
/* There is, however, a not insubstantial body of code in the rest of
- the compiler that assumes it can just stick the results of
+ the compiler that assumes it can just stick the results of
ASM_GENERATE_INTERNAL_LABEL in a symbol_ref and have done. */
/* ??? This is a hack. Should update the body of the compiler to
- always create a DECL an invoke targetm.encode_section_info. */
+ always create a DECL an invoke ENCODE_SECTION_INFO. */
if (strncmp (XSTR (op, 0), internal_label_prefix,
internal_label_prefix_len) == 0)
return 1;
@@ -3270,70 +3049,6 @@ local_symbolic_operand (op, mode)
return 0;
}
-/* Test for various thread-local symbols. See ix86_encode_section_info. */
-
-int
-tls_symbolic_operand (op, mode)
- register rtx op;
- enum machine_mode mode ATTRIBUTE_UNUSED;
-{
- const char *symbol_str;
-
- if (GET_CODE (op) != SYMBOL_REF)
- return 0;
- symbol_str = XSTR (op, 0);
-
- if (symbol_str[0] != '%')
- return 0;
- return strchr (tls_model_chars, symbol_str[1]) - tls_model_chars;
-}
-
-static int
-tls_symbolic_operand_1 (op, kind)
- rtx op;
- enum tls_model kind;
-{
- const char *symbol_str;
-
- if (GET_CODE (op) != SYMBOL_REF)
- return 0;
- symbol_str = XSTR (op, 0);
-
- return symbol_str[0] == '%' && symbol_str[1] == tls_model_chars[kind];
-}
-
-int
-global_dynamic_symbolic_operand (op, mode)
- register rtx op;
- enum machine_mode mode ATTRIBUTE_UNUSED;
-{
- return tls_symbolic_operand_1 (op, TLS_MODEL_GLOBAL_DYNAMIC);
-}
-
-int
-local_dynamic_symbolic_operand (op, mode)
- register rtx op;
- enum machine_mode mode ATTRIBUTE_UNUSED;
-{
- return tls_symbolic_operand_1 (op, TLS_MODEL_LOCAL_DYNAMIC);
-}
-
-int
-initial_exec_symbolic_operand (op, mode)
- register rtx op;
- enum machine_mode mode ATTRIBUTE_UNUSED;
-{
- return tls_symbolic_operand_1 (op, TLS_MODEL_INITIAL_EXEC);
-}
-
-int
-local_exec_symbolic_operand (op, mode)
- register rtx op;
- enum machine_mode mode ATTRIBUTE_UNUSED;
-{
- return tls_symbolic_operand_1 (op, TLS_MODEL_LOCAL_EXEC);
-}
-
/* Test for a valid operand for a call instruction. Don't allow the
arg pointer register or virtual regs since they may decay into
reg + const, which the patterns can't handle. */
@@ -3361,6 +3076,11 @@ call_insn_operand (op, mode)
if (GET_CODE (op) == SYMBOL_REF)
return 1;
+ /* Half-pic doesn't allow anything but registers and constants.
+ We've just taken care of the later. */
+ if (HALF_PIC_P ())
+ return register_operand (op, Pmode);
+
/* Otherwise we can allow any general_operand in the address. */
return general_operand (op, Pmode);
}
@@ -3505,30 +3225,6 @@ nonmemory_no_elim_operand (op, mode)
return GET_CODE (op) == CONST_INT || register_operand (op, mode);
}
-/* Return false if this is any eliminable register or stack register,
- otherwise work like register_operand. */
-
-int
-index_register_operand (op, mode)
- register rtx op;
- enum machine_mode mode;
-{
- rtx t = op;
- if (GET_CODE (t) == SUBREG)
- t = SUBREG_REG (t);
- if (!REG_P (t))
- return 0;
- if (t == arg_pointer_rtx
- || t == frame_pointer_rtx
- || t == virtual_incoming_args_rtx
- || t == virtual_stack_vars_rtx
- || t == virtual_stack_dynamic_rtx
- || REGNO (t) == STACK_POINTER_REGNUM)
- return 0;
-
- return general_operand (op, mode);
-}
-
/* Return true if op is a Q_REGS class register. */
int
@@ -3557,19 +3253,6 @@ non_q_regs_operand (op, mode)
return NON_QI_REG_P (op);
}
-/* Return 1 when OP is operand acceptable for standard SSE move. */
-int
-vector_move_operand (op, mode)
- rtx op;
- enum machine_mode mode;
-{
- if (nonimmediate_operand (op, mode))
- return 1;
- if (GET_MODE (op) != mode && mode != VOIDmode)
- return 0;
- return (op == CONST0_RTX (GET_MODE (op)));
-}
-
/* Return 1 if OP is a comparison that can be used in the CMPSS/CMPPS
insns. */
int
@@ -3881,11 +3564,6 @@ aligned_operand (op, mode)
if (! ix86_decompose_address (op, &parts))
abort ();
- if (parts.base && GET_CODE (parts.base) == SUBREG)
- parts.base = SUBREG_REG (parts.base);
- if (parts.index && GET_CODE (parts.index) == SUBREG)
- parts.index = SUBREG_REG (parts.index);
-
/* Look for some component that isn't known to be aligned. */
if (parts.index)
{
@@ -3935,8 +3613,8 @@ int
standard_sse_constant_p (x)
rtx x;
{
- if (x == const0_rtx)
- return 1;
+ if (GET_CODE (x) != CONST_DOUBLE)
+ return -1;
return (x == CONST0_RTX (GET_MODE (x)));
}
@@ -4026,33 +3704,22 @@ x86_64_sign_extended_value (value)
}
break;
- /* For certain code models, the symbolic references are known to fit.
- in CM_SMALL_PIC model we know it fits if it is local to the shared
- library. Don't count TLS SYMBOL_REFs here, since they should fit
- only if inside of UNSPEC handled below. */
+ /* For certain code models, the symbolic references are known to fit. */
case SYMBOL_REF:
- return (ix86_cmodel == CM_SMALL || ix86_cmodel == CM_KERNEL);
+ return ix86_cmodel == CM_SMALL || ix86_cmodel == CM_KERNEL;
/* For certain code models, the code is near as well. */
case LABEL_REF:
- return (ix86_cmodel == CM_SMALL || ix86_cmodel == CM_MEDIUM
- || ix86_cmodel == CM_KERNEL);
+ return ix86_cmodel != CM_LARGE && ix86_cmodel != CM_SMALL_PIC;
/* We also may accept the offsetted memory references in certain special
cases. */
case CONST:
- if (GET_CODE (XEXP (value, 0)) == UNSPEC)
- switch (XINT (XEXP (value, 0), 1))
- {
- case UNSPEC_GOTPCREL:
- case UNSPEC_DTPOFF:
- case UNSPEC_GOTNTPOFF:
- case UNSPEC_NTPOFF:
- return 1;
- default:
- break;
- }
- if (GET_CODE (XEXP (value, 0)) == PLUS)
+ if (GET_CODE (XEXP (value, 0)) == UNSPEC
+ && XVECLEN (XEXP (value, 0), 0) == 1
+ && XINT (XEXP (value, 0), 1) == 15)
+ return 1;
+ else if (GET_CODE (XEXP (value, 0)) == PLUS)
{
rtx op1 = XEXP (XEXP (value, 0), 0);
rtx op2 = XEXP (XEXP (value, 0), 1);
@@ -4066,12 +3733,12 @@ x86_64_sign_extended_value (value)
switch (GET_CODE (op1))
{
case SYMBOL_REF:
- /* For CM_SMALL assume that latest object is 16MB before
+ /* For CM_SMALL assume that latest object is 1MB before
end of 31bits boundary. We may also accept pretty
large negative constants knowing that all objects are
in the positive half of address space. */
if (ix86_cmodel == CM_SMALL
- && offset < 16*1024*1024
+ && offset < 1024*1024*1024
&& trunc_int_for_mode (offset, SImode) == offset)
return 1;
/* For CM_KERNEL we know that all object resist in the
@@ -4087,7 +3754,7 @@ x86_64_sign_extended_value (value)
/* These conditions are similar to SYMBOL_REF ones, just the
constraints for code models differ. */
if ((ix86_cmodel == CM_SMALL || ix86_cmodel == CM_MEDIUM)
- && offset < 16*1024*1024
+ && offset < 1024*1024*1024
&& trunc_int_for_mode (offset, SImode) == offset)
return 1;
if (ix86_cmodel == CM_KERNEL
@@ -4095,16 +3762,6 @@ x86_64_sign_extended_value (value)
&& trunc_int_for_mode (offset, SImode) == offset)
return 1;
break;
- case UNSPEC:
- switch (XINT (op1, 1))
- {
- case UNSPEC_DTPOFF:
- case UNSPEC_NTPOFF:
- if (offset > 0
- && trunc_int_for_mode (offset, SImode) == offset)
- return 1;
- }
- break;
default:
return 0;
}
@@ -4212,11 +3869,7 @@ ix86_frame_pointer_required ()
/* In override_options, TARGET_OMIT_LEAF_FRAME_POINTER turns off
the frame pointer by default. Turn it back on now if we've not
got a leaf function. */
- if (TARGET_OMIT_LEAF_FRAME_POINTER
- && (!current_function_is_leaf))
- return 1;
-
- if (current_function_profile)
+ if (TARGET_OMIT_LEAF_FRAME_POINTER && ! leaf_function_p ())
return 1;
return 0;
@@ -4230,28 +3883,7 @@ ix86_setup_frame_addresses ()
cfun->machine->accesses_prev_frame = 1;
}
-#if defined(HAVE_GAS_HIDDEN) && defined(SUPPORTS_ONE_ONLY)
-# define USE_HIDDEN_LINKONCE 1
-#else
-# define USE_HIDDEN_LINKONCE 0
-#endif
-
-static int pic_labels_used;
-
-/* Fills in the label name that should be used for a pc thunk for
- the given register. */
-
-static void
-get_pc_thunk_name (name, regno)
- char name[32];
- unsigned int regno;
-{
- if (USE_HIDDEN_LINKONCE)
- sprintf (name, "__i686.get_pc_thunk.%s", reg_names[regno]);
- else
- ASM_GENERATE_INTERNAL_LABEL (name, "LPR", regno);
-}
-
+static char pic_label_name[32];
/* This function generates code for -fpic that loads %ebx with
the return address of the caller and then returns. */
@@ -4261,97 +3893,74 @@ ix86_asm_file_end (file)
FILE *file;
{
rtx xops[2];
- int regno;
- for (regno = 0; regno < 8; ++regno)
- {
- char name[32];
-
- if (! ((pic_labels_used >> regno) & 1))
- continue;
-
- get_pc_thunk_name (name, regno);
+ if (! TARGET_DEEP_BRANCH_PREDICTION || pic_label_name[0] == 0)
+ return;
- if (USE_HIDDEN_LINKONCE)
- {
- tree decl;
+ /* ??? Binutils 2.10 and earlier has a linkonce elimination bug related
+ to updating relocations to a section being discarded such that this
+ doesn't work. Ought to detect this at configure time. */
+#if 0
+ /* The trick here is to create a linkonce section containing the
+ pic label thunk, but to refer to it with an internal label.
+ Because the label is internal, we don't have inter-dso name
+ binding issues on hosts that don't support ".hidden".
+
+ In order to use these macros, however, we must create a fake
+ function decl. */
+ if (targetm.have_named_sections)
+ {
+ tree decl = build_decl (FUNCTION_DECL,
+ get_identifier ("i686.get_pc_thunk"),
+ error_mark_node);
+ DECL_ONE_ONLY (decl) = 1;
+ UNIQUE_SECTION (decl, 0);
+ named_section (decl, NULL);
+ }
+ else
+#else
+ text_section ();
+#endif
- decl = build_decl (FUNCTION_DECL, get_identifier (name),
- error_mark_node);
- TREE_PUBLIC (decl) = 1;
- TREE_STATIC (decl) = 1;
- DECL_ONE_ONLY (decl) = 1;
+ /* This used to call ASM_DECLARE_FUNCTION_NAME() but since it's an
+ internal (non-global) label that's being emitted, it didn't make
+ sense to have .type information for local labels. This caused
+ the SCO OpenServer 5.0.4 ELF assembler grief (why are you giving
+ me debug info for a label that you're declaring non-global?) this
+ was changed to call ASM_OUTPUT_LABEL() instead. */
- (*targetm.asm_out.unique_section) (decl, 0);
- named_section (decl, NULL, 0);
+ ASM_OUTPUT_LABEL (file, pic_label_name);
- (*targetm.asm_out.globalize_label) (file, name);
- fputs ("\t.hidden\t", file);
- assemble_name (file, name);
- fputc ('\n', file);
- ASM_DECLARE_FUNCTION_NAME (file, name, decl);
- }
- else
- {
- text_section ();
- ASM_OUTPUT_LABEL (file, name);
- }
-
- xops[0] = gen_rtx_REG (SImode, regno);
- xops[1] = gen_rtx_MEM (SImode, stack_pointer_rtx);
- output_asm_insn ("mov{l}\t{%1, %0|%0, %1}", xops);
- output_asm_insn ("ret", xops);
- }
+ xops[0] = pic_offset_table_rtx;
+ xops[1] = gen_rtx_MEM (SImode, stack_pointer_rtx);
+ output_asm_insn ("mov{l}\t{%1, %0|%0, %1}", xops);
+ output_asm_insn ("ret", xops);
}
-/* Emit code for the SET_GOT patterns. */
-
-const char *
-output_set_got (dest)
- rtx dest;
+void
+load_pic_register ()
{
- rtx xops[3];
-
- xops[0] = dest;
- xops[1] = gen_rtx_SYMBOL_REF (Pmode, GOT_SYMBOL_NAME);
+ rtx gotsym, pclab;
- if (! TARGET_DEEP_BRANCH_PREDICTION || !flag_pic)
- {
- xops[2] = gen_rtx_LABEL_REF (Pmode, gen_label_rtx ());
-
- if (!flag_pic)
- output_asm_insn ("mov{l}\t{%2, %0|%0, %2}", xops);
- else
- output_asm_insn ("call\t%a2", xops);
+ if (TARGET_64BIT)
+ abort ();
-#if TARGET_MACHO
- /* Output the "canonical" label name ("Lxx$pb") here too. This
- is what will be referred to by the Mach-O PIC subsystem. */
- ASM_OUTPUT_LABEL (asm_out_file, machopic_function_base_name ());
-#endif
- ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, "L",
- CODE_LABEL_NUMBER (XEXP (xops[2], 0)));
+ gotsym = gen_rtx_SYMBOL_REF (Pmode, "_GLOBAL_OFFSET_TABLE_");
- if (flag_pic)
- output_asm_insn ("pop{l}\t%0", xops);
+ if (TARGET_DEEP_BRANCH_PREDICTION)
+ {
+ if (! pic_label_name[0])
+ ASM_GENERATE_INTERNAL_LABEL (pic_label_name, "LPR", 0);
+ pclab = gen_rtx_MEM (QImode, gen_rtx_SYMBOL_REF (Pmode, pic_label_name));
}
else
{
- char name[32];
- get_pc_thunk_name (name, REGNO (dest));
- pic_labels_used |= 1 << REGNO (dest);
-
- xops[2] = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (name));
- xops[2] = gen_rtx_MEM (QImode, xops[2]);
- output_asm_insn ("call\t%X2", xops);
+ pclab = gen_rtx_LABEL_REF (VOIDmode, gen_label_rtx ());
}
- if (!flag_pic || TARGET_DEEP_BRANCH_PREDICTION)
- output_asm_insn ("add{l}\t{%1, %0|%0, %1}", xops);
- else if (!TARGET_MACHO)
- output_asm_insn ("add{l}\t{%1+[.-%a2], %0|%0, %a1+(.-%a2)}", xops);
+ emit_insn (gen_prologue_get_pc (pic_offset_table_rtx, pclab));
- return "";
+ emit_insn (gen_prologue_set_got (pic_offset_table_rtx, gotsym, pclab));
}
/* Generate an "push" pattern for input ARG. */
@@ -4367,40 +3976,17 @@ gen_push (arg)
arg);
}
-/* Return >= 0 if there is an unused call-clobbered register available
- for the entire function. */
-
-static unsigned int
-ix86_select_alt_pic_regnum ()
-{
- if (current_function_is_leaf && !current_function_profile)
- {
- int i;
- for (i = 2; i >= 0; --i)
- if (!regs_ever_live[i])
- return i;
- }
-
- return INVALID_REGNUM;
-}
-
/* Return 1 if we need to save REGNO. */
static int
ix86_save_reg (regno, maybe_eh_return)
- unsigned int regno;
+ int regno;
int maybe_eh_return;
{
- if (pic_offset_table_rtx
- && regno == REAL_PIC_OFFSET_TABLE_REGNUM
- && (regs_ever_live[REAL_PIC_OFFSET_TABLE_REGNUM]
- || current_function_profile
- || current_function_calls_eh_return
- || current_function_uses_const_pool))
- {
- if (ix86_select_alt_pic_regnum () != INVALID_REGNUM)
- return 0;
- return 1;
- }
+ if (regno == PIC_OFFSET_TABLE_REGNUM
+ && (current_function_uses_pic_offset_table
+ || current_function_uses_const_pool
+ || current_function_calls_eh_return))
+ return 1;
if (current_function_calls_eh_return && maybe_eh_return)
{
@@ -4410,7 +3996,7 @@ ix86_save_reg (regno, maybe_eh_return)
unsigned test = EH_RETURN_DATA_REGNO (i);
if (test == INVALID_REGNUM)
break;
- if (test == regno)
+ if (test == (unsigned) regno)
return 1;
}
}
@@ -4479,7 +4065,7 @@ ix86_compute_frame_layout (frame)
frame->nregs = ix86_nsaved_regs ();
total_size = size;
- /* Skip return address and saved base pointer. */
+ /* Skip return value and save base pointer. */
offset = frame_pointer_needed ? UNITS_PER_WORD * 2 : UNITS_PER_WORD;
frame->hard_frame_pointer_offset = offset;
@@ -4621,7 +4207,9 @@ void
ix86_expand_prologue ()
{
rtx insn;
- bool pic_reg_used;
+ int pic_reg_used = (flag_pic && (current_function_uses_pic_offset_table
+ || current_function_uses_const_pool)
+ && !TARGET_64BIT);
struct ix86_frame frame;
int use_mov = 0;
HOST_WIDE_INT allocate;
@@ -4686,10 +4274,6 @@ ix86_expand_prologue ()
CALL_INSN_FUNCTION_USAGE (insn)
= gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_USE (VOIDmode, arg0),
CALL_INSN_FUNCTION_USAGE (insn));
-
- /* Don't allow scheduling pass to move insns across __alloca
- call. */
- emit_insn (gen_blockage (const0_rtx));
}
if (use_mov)
{
@@ -4704,36 +4288,14 @@ ix86_expand_prologue ()
SUBTARGET_PROLOGUE;
#endif
- pic_reg_used = false;
- if (pic_offset_table_rtx
- && (regs_ever_live[REAL_PIC_OFFSET_TABLE_REGNUM]
- || current_function_profile))
- {
- unsigned int alt_pic_reg_used = ix86_select_alt_pic_regnum ();
-
- if (alt_pic_reg_used != INVALID_REGNUM)
- REGNO (pic_offset_table_rtx) = alt_pic_reg_used;
-
- pic_reg_used = true;
- }
-
if (pic_reg_used)
- {
- insn = emit_insn (gen_set_got (pic_offset_table_rtx));
+ load_pic_register ();
- /* Even with accurate pre-reload life analysis, we can wind up
- deleting all references to the pic register after reload.
- Consider if cross-jumping unifies two sides of a branch
- controled by a comparison vs the only read from a global.
- In which case, allow the set_got to be deleted, though we're
- too late to do anything about the ebx save in the prologue. */
- REG_NOTES (insn) = gen_rtx_EXPR_LIST (REG_MAYBE_DEAD, const0_rtx, NULL);
- }
-
- /* Prevent function calls from be scheduled before the call to mcount.
- In the pic_reg_used case, make sure that the got load isn't deleted. */
- if (current_function_profile)
- emit_insn (gen_blockage (pic_reg_used ? pic_offset_table_rtx : const0_rtx));
+ /* If we are profiling, make sure no instructions are scheduled before
+ the call to mcount. However, if -fpic, the above call will have
+ done that. */
+ if (current_function_profile && ! pic_reg_used)
+ emit_insn (gen_blockage ());
}
/* Emit code to restore saved registers using MOV insns. First register
@@ -4922,17 +4484,6 @@ ix86_expand_epilogue (style)
else
emit_jump_insn (gen_return_internal ());
}
-
-/* Reset from the function's potential modifications. */
-
-static void
-ix86_output_function_epilogue (file, size)
- FILE *file ATTRIBUTE_UNUSED;
- HOST_WIDE_INT size ATTRIBUTE_UNUSED;
-{
- if (pic_offset_table_rtx)
- REGNO (pic_offset_table_rtx) = REAL_PIC_OFFSET_TABLE_REGNUM;
-}
/* Extract the parts of an RTL expression that is a valid memory address
for an instruction. Return 0 if the structure of the address is
@@ -4952,7 +4503,7 @@ ix86_decompose_address (addr, out)
rtx scale_rtx = NULL_RTX;
int retval = 1;
- if (REG_P (addr) || GET_CODE (addr) == SUBREG)
+ if (GET_CODE (addr) == REG || GET_CODE (addr) == SUBREG)
base = addr;
else if (GET_CODE (addr) == PLUS)
{
@@ -5079,11 +4630,6 @@ ix86_address_cost (x)
if (!ix86_decompose_address (x, &parts))
abort ();
- if (parts.base && GET_CODE (parts.base) == SUBREG)
- parts.base = SUBREG_REG (parts.base);
- if (parts.index && GET_CODE (parts.index) == SUBREG)
- parts.index = SUBREG_REG (parts.index);
-
/* More complex memory references are better. */
if (parts.disp && parts.disp != const0_rtx)
cost--;
@@ -5147,7 +4693,8 @@ ix86_find_base_term (x)
|| GET_CODE (XEXP (term, 1)) == CONST_DOUBLE))
term = XEXP (term, 0);
if (GET_CODE (term) != UNSPEC
- || XINT (term, 1) != UNSPEC_GOTPCREL)
+ || XVECLEN (term, 0) != 1
+ || XINT (term, 1) != 15)
return x;
term = XVECEXP (term, 0, 0);
@@ -5170,7 +4717,8 @@ ix86_find_base_term (x)
term = XEXP (term, 0);
if (GET_CODE (term) != UNSPEC
- || XINT (term, 1) != UNSPEC_GOTOFF)
+ || XVECLEN (term, 0) != 1
+ || XINT (term, 1) != 7)
return x;
term = XVECEXP (term, 0, 0);
@@ -5182,125 +4730,6 @@ ix86_find_base_term (x)
return term;
}
-/* Determine if a given RTX is a valid constant. We already know this
- satisfies CONSTANT_P. */
-
-bool
-legitimate_constant_p (x)
- rtx x;
-{
- rtx inner;
-
- switch (GET_CODE (x))
- {
- case SYMBOL_REF:
- /* TLS symbols are not constant. */
- if (tls_symbolic_operand (x, Pmode))
- return false;
- break;
-
- case CONST:
- inner = XEXP (x, 0);
-
- /* Offsets of TLS symbols are never valid.
- Discourage CSE from creating them. */
- if (GET_CODE (inner) == PLUS
- && tls_symbolic_operand (XEXP (inner, 0), Pmode))
- return false;
-
- /* Only some unspecs are valid as "constants". */
- if (GET_CODE (inner) == UNSPEC)
- switch (XINT (inner, 1))
- {
- case UNSPEC_TPOFF:
- return local_exec_symbolic_operand (XVECEXP (inner, 0, 0), Pmode);
- default:
- return false;
- }
- break;
-
- default:
- break;
- }
-
- /* Otherwise we handle everything else in the move patterns. */
- return true;
-}
-
-/* Determine if it's legal to put X into the constant pool. This
- is not possible for the address of thread-local symbols, which
- is checked above. */
-
-static bool
-ix86_cannot_force_const_mem (x)
- rtx x;
-{
- return !legitimate_constant_p (x);
-}
-
-/* Determine if a given RTX is a valid constant address. */
-
-bool
-constant_address_p (x)
- rtx x;
-{
- switch (GET_CODE (x))
- {
- case LABEL_REF:
- case CONST_INT:
- return true;
-
- case CONST_DOUBLE:
- return TARGET_64BIT;
-
- case CONST:
- /* For Mach-O, really believe the CONST. */
- if (TARGET_MACHO)
- return true;
- /* Otherwise fall through. */
- case SYMBOL_REF:
- return !flag_pic && legitimate_constant_p (x);
-
- default:
- return false;
- }
-}
-
-/* Nonzero if the constant value X is a legitimate general operand
- when generating PIC code. It is given that flag_pic is on and
- that X satisfies CONSTANT_P or is a CONST_DOUBLE. */
-
-bool
-legitimate_pic_operand_p (x)
- rtx x;
-{
- rtx inner;
-
- switch (GET_CODE (x))
- {
- case CONST:
- inner = XEXP (x, 0);
-
- /* Only some unspecs are valid as "constants". */
- if (GET_CODE (inner) == UNSPEC)
- switch (XINT (inner, 1))
- {
- case UNSPEC_TPOFF:
- return local_exec_symbolic_operand (XVECEXP (inner, 0, 0), Pmode);
- default:
- return false;
- }
- /* FALLTHRU */
-
- case SYMBOL_REF:
- case LABEL_REF:
- return legitimate_pic_address_disp_p (x);
-
- default:
- return true;
- }
-}
-
/* Determine if a given CONST RTX is a valid memory displacement
in PIC mode. */
@@ -5308,32 +4737,21 @@ int
legitimate_pic_address_disp_p (disp)
register rtx disp;
{
- bool saw_plus;
-
/* In 64bit mode we can allow direct addresses of symbols and labels
when they are not dynamic symbols. */
if (TARGET_64BIT)
{
- /* TLS references should always be enclosed in UNSPEC. */
- if (tls_symbolic_operand (disp, GET_MODE (disp)))
- return 0;
- if (GET_CODE (disp) == SYMBOL_REF
- && ix86_cmodel == CM_SMALL_PIC
- && (CONSTANT_POOL_ADDRESS_P (disp)
- || SYMBOL_REF_FLAG (disp)))
- return 1;
- if (GET_CODE (disp) == LABEL_REF)
- return 1;
- if (GET_CODE (disp) == CONST
- && GET_CODE (XEXP (disp, 0)) == PLUS
- && ((GET_CODE (XEXP (XEXP (disp, 0), 0)) == SYMBOL_REF
- && ix86_cmodel == CM_SMALL_PIC
- && (CONSTANT_POOL_ADDRESS_P (XEXP (XEXP (disp, 0), 0))
- || SYMBOL_REF_FLAG (XEXP (XEXP (disp, 0), 0))))
- || GET_CODE (XEXP (XEXP (disp, 0), 0)) == LABEL_REF)
- && GET_CODE (XEXP (XEXP (disp, 0), 1)) == CONST_INT
- && INTVAL (XEXP (XEXP (disp, 0), 1)) < 16*1024*1024
- && INTVAL (XEXP (XEXP (disp, 0), 1)) >= -16*1024*1024)
+ rtx x = disp;
+ if (GET_CODE (disp) == CONST)
+ x = XEXP (disp, 0);
+ /* ??? Handle PIC code models */
+ if (GET_CODE (x) == PLUS
+ && (GET_CODE (XEXP (x, 1)) == CONST_INT
+ && ix86_cmodel == CM_SMALL_PIC
+ && INTVAL (XEXP (x, 1)) < 1024*1024*1024
+ && INTVAL (XEXP (x, 1)) > -1024*1024*1024))
+ x = XEXP (x, 0);
+ if (local_symbolic_operand (x, Pmode))
return 1;
}
if (GET_CODE (disp) != CONST)
@@ -5345,7 +4763,8 @@ legitimate_pic_address_disp_p (disp)
/* We are unsafe to allow PLUS expressions. This limit allowed distance
of GOT tables. We should not need these anyway. */
if (GET_CODE (disp) != UNSPEC
- || XINT (disp, 1) != UNSPEC_GOTPCREL)
+ || XVECLEN (disp, 0) != 1
+ || XINT (disp, 1) != 15)
return 0;
if (GET_CODE (XVECEXP (disp, 0, 0)) != SYMBOL_REF
@@ -5354,51 +4773,27 @@ legitimate_pic_address_disp_p (disp)
return 1;
}
- saw_plus = false;
if (GET_CODE (disp) == PLUS)
{
if (GET_CODE (XEXP (disp, 1)) != CONST_INT)
return 0;
disp = XEXP (disp, 0);
- saw_plus = true;
- }
-
- /* Allow {LABEL | SYMBOL}_REF - SYMBOL_REF-FOR-PICBASE for Mach-O. */
- if (TARGET_MACHO && GET_CODE (disp) == MINUS)
- {
- if (GET_CODE (XEXP (disp, 0)) == LABEL_REF
- || GET_CODE (XEXP (disp, 0)) == SYMBOL_REF)
- if (GET_CODE (XEXP (disp, 1)) == SYMBOL_REF)
- {
- const char *sym_name = XSTR (XEXP (disp, 1), 0);
- if (strstr (sym_name, "$pb") != 0)
- return 1;
- }
}
- if (GET_CODE (disp) != UNSPEC)
+ if (GET_CODE (disp) != UNSPEC
+ || XVECLEN (disp, 0) != 1)
return 0;
+ /* Must be @GOT or @GOTOFF. */
switch (XINT (disp, 1))
{
- case UNSPEC_GOT:
- if (saw_plus)
- return false;
+ case 6: /* @GOT */
return GET_CODE (XVECEXP (disp, 0, 0)) == SYMBOL_REF;
- case UNSPEC_GOTOFF:
+
+ case 7: /* @GOTOFF */
return local_symbolic_operand (XVECEXP (disp, 0, 0), Pmode);
- case UNSPEC_GOTTPOFF:
- case UNSPEC_GOTNTPOFF:
- case UNSPEC_INDNTPOFF:
- if (saw_plus)
- return false;
- return initial_exec_symbolic_operand (XVECEXP (disp, 0, 0), Pmode);
- case UNSPEC_NTPOFF:
- return local_exec_symbolic_operand (XVECEXP (disp, 0, 0), Pmode);
- case UNSPEC_DTPOFF:
- return local_dynamic_symbolic_operand (XVECEXP (disp, 0, 0), Pmode);
}
-
+
return 0;
}
@@ -5430,13 +4825,6 @@ legitimate_address_p (mode, addr, strict)
debug_rtx (addr);
}
- if (GET_CODE (addr) == UNSPEC && XINT (addr, 1) == UNSPEC_TP)
- {
- if (TARGET_DEBUG_ADDR)
- fprintf (stderr, "Success.\n");
- return TRUE;
- }
-
if (ix86_decompose_address (addr, &parts) <= 0)
{
reason = "decomposition failed";
@@ -5456,15 +4844,9 @@ legitimate_address_p (mode, addr, strict)
if (base)
{
- rtx reg;
reason_rtx = base;
- if (GET_CODE (base) == SUBREG)
- reg = SUBREG_REG (base);
- else
- reg = base;
-
- if (GET_CODE (reg) != REG)
+ if (GET_CODE (base) != REG)
{
reason = "base is not a register";
goto report_error;
@@ -5476,8 +4858,8 @@ legitimate_address_p (mode, addr, strict)
goto report_error;
}
- if ((strict && ! REG_OK_FOR_BASE_STRICT_P (reg))
- || (! strict && ! REG_OK_FOR_BASE_NONSTRICT_P (reg)))
+ if ((strict && ! REG_OK_FOR_BASE_STRICT_P (base))
+ || (! strict && ! REG_OK_FOR_BASE_NONSTRICT_P (base)))
{
reason = "base is not valid";
goto report_error;
@@ -5492,15 +4874,9 @@ legitimate_address_p (mode, addr, strict)
if (index)
{
- rtx reg;
reason_rtx = index;
- if (GET_CODE (index) == SUBREG)
- reg = SUBREG_REG (index);
- else
- reg = index;
-
- if (GET_CODE (reg) != REG)
+ if (GET_CODE (index) != REG)
{
reason = "index is not a register";
goto report_error;
@@ -5512,8 +4888,8 @@ legitimate_address_p (mode, addr, strict)
goto report_error;
}
- if ((strict && ! REG_OK_FOR_INDEX_STRICT_P (reg))
- || (! strict && ! REG_OK_FOR_INDEX_NONSTRICT_P (reg)))
+ if ((strict && ! REG_OK_FOR_INDEX_STRICT_P (index))
+ || (! strict && ! REG_OK_FOR_INDEX_NONSTRICT_P (index)))
{
reason = "index is not valid";
goto report_error;
@@ -5542,51 +4918,37 @@ legitimate_address_p (mode, addr, strict)
{
reason_rtx = disp;
- if (GET_CODE (disp) == CONST
- && GET_CODE (XEXP (disp, 0)) == UNSPEC)
- switch (XINT (XEXP (disp, 0), 1))
- {
- case UNSPEC_GOT:
- case UNSPEC_GOTOFF:
- case UNSPEC_GOTPCREL:
- if (!flag_pic)
- abort ();
- goto is_legitimate_pic;
-
- case UNSPEC_GOTTPOFF:
- case UNSPEC_GOTNTPOFF:
- case UNSPEC_INDNTPOFF:
- case UNSPEC_NTPOFF:
- case UNSPEC_DTPOFF:
- break;
+ if (!CONSTANT_ADDRESS_P (disp))
+ {
+ reason = "displacement is not constant";
+ goto report_error;
+ }
- default:
- reason = "invalid address unspec";
- goto report_error;
- }
+ if (TARGET_64BIT)
+ {
+ if (!x86_64_sign_extended_value (disp))
+ {
+ reason = "displacement is out of range";
+ goto report_error;
+ }
+ }
+ else
+ {
+ if (GET_CODE (disp) == CONST_DOUBLE)
+ {
+ reason = "displacement is a const_double";
+ goto report_error;
+ }
+ }
- else if (flag_pic && (SYMBOLIC_CONST (disp)
-#if TARGET_MACHO
- && !machopic_operand_p (disp)
-#endif
- ))
+ if (flag_pic && SYMBOLIC_CONST (disp))
{
- is_legitimate_pic:
if (TARGET_64BIT && (index || base))
{
- /* foo@dtpoff(%rX) is ok. */
- if (GET_CODE (disp) != CONST
- || GET_CODE (XEXP (disp, 0)) != PLUS
- || GET_CODE (XEXP (XEXP (disp, 0), 0)) != UNSPEC
- || GET_CODE (XEXP (XEXP (disp, 0), 1)) != CONST_INT
- || (XINT (XEXP (XEXP (disp, 0), 0), 1) != UNSPEC_DTPOFF
- && XINT (XEXP (XEXP (disp, 0), 0), 1) != UNSPEC_NTPOFF))
- {
- reason = "non-constant pic memory reference";
- goto report_error;
- }
+ reason = "non-constant pic memory reference";
+ goto report_error;
}
- else if (! legitimate_pic_address_disp_p (disp))
+ if (! legitimate_pic_address_disp_p (disp))
{
reason = "displacement is an invalid pic construct";
goto report_error;
@@ -5614,20 +4976,14 @@ legitimate_address_p (mode, addr, strict)
that never results in lea, this seems to be easier and
correct fix for crash to disable this test. */
}
- else if (!CONSTANT_ADDRESS_P (disp))
- {
- reason = "displacement is not constant";
- goto report_error;
- }
- else if (TARGET_64BIT && !x86_64_sign_extended_value (disp))
+ else if (HALF_PIC_P ())
{
- reason = "displacement is out of range";
- goto report_error;
- }
- else if (!TARGET_64BIT && GET_CODE (disp) == CONST_DOUBLE)
- {
- reason = "displacement is a const_double";
- goto report_error;
+ if (! HALF_PIC_ADDRESS_P (disp)
+ || (base != NULL_RTX || index != NULL_RTX))
+ {
+ reason = "displacement is an invalid half-pic reference";
+ goto report_error;
+ }
}
}
@@ -5636,7 +4992,7 @@ legitimate_address_p (mode, addr, strict)
fprintf (stderr, "Success.\n");
return TRUE;
- report_error:
+report_error:
if (TARGET_DEBUG_ADDR)
{
fprintf (stderr, "Error: %s\n", reason);
@@ -5650,10 +5006,10 @@ legitimate_address_p (mode, addr, strict)
static HOST_WIDE_INT
ix86_GOT_alias_set ()
{
- static HOST_WIDE_INT set = -1;
- if (set == -1)
- set = new_alias_set ();
- return set;
+ static HOST_WIDE_INT set = -1;
+ if (set == -1)
+ set = new_alias_set ();
+ return set;
}
/* Return a legitimate reference for ORIG (an address) using the
@@ -5683,37 +5039,34 @@ legitimize_pic_address (orig, reg)
rtx new = orig;
rtx base;
-#if TARGET_MACHO
- if (reg == 0)
- reg = gen_reg_rtx (Pmode);
- /* Use the generic Mach-O PIC machinery. */
- return machopic_legitimize_pic_address (orig, GET_MODE (orig), reg);
-#endif
-
- if (TARGET_64BIT && legitimate_pic_address_disp_p (addr))
- new = addr;
- else if (!TARGET_64BIT && local_symbolic_operand (addr, Pmode))
+ if (local_symbolic_operand (addr, Pmode))
{
- /* This symbol may be referenced via a displacement from the PIC
- base address (@GOTOFF). */
+ /* In 64bit mode we can address such objects directly. */
+ if (TARGET_64BIT)
+ new = addr;
+ else
+ {
+ /* This symbol may be referenced via a displacement from the PIC
+ base address (@GOTOFF). */
- if (reload_in_progress)
- regs_ever_live[PIC_OFFSET_TABLE_REGNUM] = 1;
- new = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, addr), UNSPEC_GOTOFF);
- new = gen_rtx_CONST (Pmode, new);
- new = gen_rtx_PLUS (Pmode, pic_offset_table_rtx, new);
+ current_function_uses_pic_offset_table = 1;
+ new = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, addr), 7);
+ new = gen_rtx_CONST (Pmode, new);
+ new = gen_rtx_PLUS (Pmode, pic_offset_table_rtx, new);
- if (reg != 0)
- {
- emit_move_insn (reg, new);
- new = reg;
- }
+ if (reg != 0)
+ {
+ emit_move_insn (reg, new);
+ new = reg;
+ }
+ }
}
else if (GET_CODE (addr) == SYMBOL_REF)
{
if (TARGET_64BIT)
{
- new = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, addr), UNSPEC_GOTPCREL);
+ current_function_uses_pic_offset_table = 1;
+ new = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, addr), 15);
new = gen_rtx_CONST (Pmode, new);
new = gen_rtx_MEM (Pmode, new);
RTX_UNCHANGING_P (new) = 1;
@@ -5732,9 +5085,8 @@ legitimize_pic_address (orig, reg)
/* This symbol must be referenced via a load from the
Global Offset Table (@GOT). */
- if (reload_in_progress)
- regs_ever_live[PIC_OFFSET_TABLE_REGNUM] = 1;
- new = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, addr), UNSPEC_GOT);
+ current_function_uses_pic_offset_table = 1;
+ new = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, addr), 6);
new = gen_rtx_CONST (Pmode, new);
new = gen_rtx_PLUS (Pmode, pic_offset_table_rtx, new);
new = gen_rtx_MEM (Pmode, new);
@@ -5774,10 +5126,8 @@ legitimize_pic_address (orig, reg)
{
if (!TARGET_64BIT)
{
- if (reload_in_progress)
- regs_ever_live[PIC_OFFSET_TABLE_REGNUM] = 1;
- new = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, op0),
- UNSPEC_GOTOFF);
+ current_function_uses_pic_offset_table = 1;
+ new = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, op0), 7);
new = gen_rtx_PLUS (Pmode, new, op1);
new = gen_rtx_CONST (Pmode, new);
new = gen_rtx_PLUS (Pmode, pic_offset_table_rtx, new);
@@ -5790,9 +5140,7 @@ legitimize_pic_address (orig, reg)
}
else
{
- if (INTVAL (op1) < -16*1024*1024
- || INTVAL (op1) >= 16*1024*1024)
- new = gen_rtx_PLUS (Pmode, op0, force_reg (Pmode, op1));
+ /* ??? We need to limit offsets here. */
}
}
else
@@ -5817,102 +5165,7 @@ legitimize_pic_address (orig, reg)
}
return new;
}
-
-static void
-ix86_encode_section_info (decl, first)
- tree decl;
- int first ATTRIBUTE_UNUSED;
-{
- bool local_p = (*targetm.binds_local_p) (decl);
- rtx rtl, symbol;
-
- rtl = DECL_P (decl) ? DECL_RTL (decl) : TREE_CST_RTL (decl);
- if (GET_CODE (rtl) != MEM)
- return;
- symbol = XEXP (rtl, 0);
- if (GET_CODE (symbol) != SYMBOL_REF)
- return;
-
- /* For basic x86, if using PIC, mark a SYMBOL_REF for a non-global
- symbol so that we may access it directly in the GOT. */
-
- if (flag_pic)
- SYMBOL_REF_FLAG (symbol) = local_p;
-
- /* For ELF, encode thread-local data with %[GLil] for "global dynamic",
- "local dynamic", "initial exec" or "local exec" TLS models
- respectively. */
-
- if (TREE_CODE (decl) == VAR_DECL && DECL_THREAD_LOCAL (decl))
- {
- const char *symbol_str;
- char *newstr;
- size_t len;
- enum tls_model kind = decl_tls_model (decl);
-
- if (TARGET_64BIT && ! flag_pic)
- {
- /* x86-64 doesn't allow non-pic code for shared libraries,
- so don't generate GD/LD TLS models for non-pic code. */
- switch (kind)
- {
- case TLS_MODEL_GLOBAL_DYNAMIC:
- kind = TLS_MODEL_INITIAL_EXEC; break;
- case TLS_MODEL_LOCAL_DYNAMIC:
- kind = TLS_MODEL_LOCAL_EXEC; break;
- default:
- break;
- }
- }
-
- symbol_str = XSTR (symbol, 0);
-
- if (symbol_str[0] == '%')
- {
- if (symbol_str[1] == tls_model_chars[kind])
- return;
- symbol_str += 2;
- }
- len = strlen (symbol_str) + 1;
- newstr = alloca (len + 2);
-
- newstr[0] = '%';
- newstr[1] = tls_model_chars[kind];
- memcpy (newstr + 2, symbol_str, len);
-
- XSTR (symbol, 0) = ggc_alloc_string (newstr, len + 2 - 1);
- }
-}
-
-/* Undo the above when printing symbol names. */
-
-static const char *
-ix86_strip_name_encoding (str)
- const char *str;
-{
- if (str[0] == '%')
- str += 2;
- if (str [0] == '*')
- str += 1;
- return str;
-}
-/* Load the thread pointer into a register. */
-
-static rtx
-get_thread_pointer ()
-{
- rtx tp;
-
- tp = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, const0_rtx), UNSPEC_TP);
- tp = gen_rtx_MEM (Pmode, tp);
- RTX_UNCHANGING_P (tp) = 1;
- set_mem_alias_set (tp, ix86_GOT_alias_set ());
- tp = force_reg (Pmode, tp);
-
- return tp;
-}
-
/* Try machine-dependent ways of modifying an illegitimate address
to be legitimate. If we find one, return the new, valid address.
This macro is used in only one place: `memory_address' in explow.c.
@@ -5950,123 +5203,6 @@ legitimize_address (x, oldx, mode)
debug_rtx (x);
}
- log = tls_symbolic_operand (x, mode);
- if (log)
- {
- rtx dest, base, off, pic;
- int type;
-
- switch (log)
- {
- case TLS_MODEL_GLOBAL_DYNAMIC:
- dest = gen_reg_rtx (Pmode);
- if (TARGET_64BIT)
- {
- rtx rax = gen_rtx_REG (Pmode, 0), insns;
-
- start_sequence ();
- emit_call_insn (gen_tls_global_dynamic_64 (rax, x));
- insns = get_insns ();
- end_sequence ();
-
- emit_libcall_block (insns, dest, rax, x);
- }
- else
- emit_insn (gen_tls_global_dynamic_32 (dest, x));
- break;
-
- case TLS_MODEL_LOCAL_DYNAMIC:
- base = gen_reg_rtx (Pmode);
- if (TARGET_64BIT)
- {
- rtx rax = gen_rtx_REG (Pmode, 0), insns, note;
-
- start_sequence ();
- emit_call_insn (gen_tls_local_dynamic_base_64 (rax));
- insns = get_insns ();
- end_sequence ();
-
- note = gen_rtx_EXPR_LIST (VOIDmode, const0_rtx, NULL);
- note = gen_rtx_EXPR_LIST (VOIDmode, ix86_tls_get_addr (), note);
- emit_libcall_block (insns, base, rax, note);
- }
- else
- emit_insn (gen_tls_local_dynamic_base_32 (base));
-
- off = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, x), UNSPEC_DTPOFF);
- off = gen_rtx_CONST (Pmode, off);
-
- return gen_rtx_PLUS (Pmode, base, off);
-
- case TLS_MODEL_INITIAL_EXEC:
- if (TARGET_64BIT)
- {
- pic = NULL;
- type = UNSPEC_GOTNTPOFF;
- }
- else if (flag_pic)
- {
- if (reload_in_progress)
- regs_ever_live[PIC_OFFSET_TABLE_REGNUM] = 1;
- pic = pic_offset_table_rtx;
- type = TARGET_GNU_TLS ? UNSPEC_GOTNTPOFF : UNSPEC_GOTTPOFF;
- }
- else if (!TARGET_GNU_TLS)
- {
- pic = gen_reg_rtx (Pmode);
- emit_insn (gen_set_got (pic));
- type = UNSPEC_GOTTPOFF;
- }
- else
- {
- pic = NULL;
- type = UNSPEC_INDNTPOFF;
- }
-
- base = get_thread_pointer ();
-
- off = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, x), type);
- off = gen_rtx_CONST (Pmode, off);
- if (pic)
- off = gen_rtx_PLUS (Pmode, pic, off);
- off = gen_rtx_MEM (Pmode, off);
- RTX_UNCHANGING_P (off) = 1;
- set_mem_alias_set (off, ix86_GOT_alias_set ());
- dest = gen_reg_rtx (Pmode);
-
- if (TARGET_64BIT || TARGET_GNU_TLS)
- {
- emit_move_insn (dest, off);
- return gen_rtx_PLUS (Pmode, base, dest);
- }
- else
- emit_insn (gen_subsi3 (dest, base, off));
- break;
-
- case TLS_MODEL_LOCAL_EXEC:
- base = get_thread_pointer ();
-
- off = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, x),
- (TARGET_64BIT || TARGET_GNU_TLS)
- ? UNSPEC_NTPOFF : UNSPEC_TPOFF);
- off = gen_rtx_CONST (Pmode, off);
-
- if (TARGET_64BIT || TARGET_GNU_TLS)
- return gen_rtx_PLUS (Pmode, base, off);
- else
- {
- dest = gen_reg_rtx (Pmode);
- emit_insn (gen_subsi3 (dest, base, off));
- }
- break;
-
- default:
- abort ();
- }
-
- return dest;
- }
-
if (flag_pic && SYMBOLIC_CONST (x))
return legitimize_pic_address (x, 0);
@@ -6239,7 +5375,7 @@ output_pic_addr_const (file, x, code)
case SYMBOL_REF:
assemble_name (file, XSTR (x, 0));
- if (!TARGET_MACHO && code == 'P' && ! SYMBOL_REF_FLAG (x))
+ if (code == 'P' && ! SYMBOL_REF_FLAG (x))
fputs ("@PLT", file);
break;
@@ -6297,54 +5433,30 @@ output_pic_addr_const (file, x, code)
break;
case MINUS:
- if (!TARGET_MACHO)
- putc (ASSEMBLER_DIALECT == ASM_INTEL ? '(' : '[', file);
+ putc (ASSEMBLER_DIALECT == ASM_INTEL ? '(' : '[', file);
output_pic_addr_const (file, XEXP (x, 0), code);
putc ('-', file);
output_pic_addr_const (file, XEXP (x, 1), code);
- if (!TARGET_MACHO)
- putc (ASSEMBLER_DIALECT == ASM_INTEL ? ')' : ']', file);
+ putc (ASSEMBLER_DIALECT == ASM_INTEL ? ')' : ']', file);
break;
case UNSPEC:
if (XVECLEN (x, 0) != 1)
- abort ();
+ abort ();
output_pic_addr_const (file, XVECEXP (x, 0, 0), code);
switch (XINT (x, 1))
{
- case UNSPEC_GOT:
+ case 6:
fputs ("@GOT", file);
break;
- case UNSPEC_GOTOFF:
+ case 7:
fputs ("@GOTOFF", file);
break;
- case UNSPEC_GOTPCREL:
- fputs ("@GOTPCREL(%rip)", file);
- break;
- case UNSPEC_GOTTPOFF:
- /* FIXME: This might be @TPOFF in Sun ld too. */
- fputs ("@GOTTPOFF", file);
+ case 8:
+ fputs ("@PLT", file);
break;
- case UNSPEC_TPOFF:
- fputs ("@TPOFF", file);
- break;
- case UNSPEC_NTPOFF:
- if (TARGET_64BIT)
- fputs ("@TPOFF", file);
- else
- fputs ("@NTPOFF", file);
- break;
- case UNSPEC_DTPOFF:
- fputs ("@DTPOFF", file);
- break;
- case UNSPEC_GOTNTPOFF:
- if (TARGET_64BIT)
- fputs ("@GOTTPOFF(%rip)", file);
- else
- fputs ("@GOTNTPOFF", file);
- break;
- case UNSPEC_INDNTPOFF:
- fputs ("@INDNTPOFF", file);
+ case 15:
+ fputs ("@GOTPCREL(%RIP)", file);
break;
default:
output_operand_lossage ("invalid UNSPEC as operand");
@@ -6379,30 +5491,6 @@ i386_dwarf_output_addr_const (file, x)
fputc ('\n', file);
}
-/* This is called from dwarf2out.c via ASM_OUTPUT_DWARF_DTPREL.
- We need to emit DTP-relative relocations. */
-
-void
-i386_output_dwarf_dtprel (file, size, x)
- FILE *file;
- int size;
- rtx x;
-{
- fputs (ASM_LONG, file);
- output_addr_const (file, x);
- fputs ("@DTPOFF", file);
- switch (size)
- {
- case 4:
- break;
- case 8:
- fputs (", 0", file);
- break;
- default:
- abort ();
- }
-}
-
/* In the name of slightly smaller debug output, and to cater to
general assembler losage, recognize PIC+GOTOFF and turn it back
into a direct symbol reference. */
@@ -6420,7 +5508,7 @@ i386_simplify_dwarf_addr (orig_x)
{
if (GET_CODE (x) != CONST
|| GET_CODE (XEXP (x, 0)) != UNSPEC
- || XINT (XEXP (x, 0), 1) != UNSPEC_GOTPCREL
+ || XINT (XEXP (x, 0), 1) != 15
|| GET_CODE (orig_x) != MEM)
return orig_x;
return XVECEXP (XEXP (x, 0), 0, 0);
@@ -6456,8 +5544,8 @@ i386_simplify_dwarf_addr (orig_x)
x = XEXP (XEXP (x, 1), 0);
if (GET_CODE (x) == UNSPEC
- && ((XINT (x, 1) == UNSPEC_GOT && GET_CODE (orig_x) == MEM)
- || (XINT (x, 1) == UNSPEC_GOTOFF && GET_CODE (orig_x) != MEM)))
+ && ((XINT (x, 1) == 6 && GET_CODE (orig_x) == MEM)
+ || (XINT (x, 1) == 7 && GET_CODE (orig_x) != MEM)))
{
if (y)
return gen_rtx_PLUS (Pmode, y, XVECEXP (x, 0, 0));
@@ -6467,9 +5555,8 @@ i386_simplify_dwarf_addr (orig_x)
if (GET_CODE (x) == PLUS
&& GET_CODE (XEXP (x, 0)) == UNSPEC
&& GET_CODE (XEXP (x, 1)) == CONST_INT
- && ((XINT (XEXP (x, 0), 1) == UNSPEC_GOT && GET_CODE (orig_x) == MEM)
- || (XINT (XEXP (x, 0), 1) == UNSPEC_GOTOFF
- && GET_CODE (orig_x) != MEM)))
+ && ((XINT (XEXP (x, 0), 1) == 6 && GET_CODE (orig_x) == MEM)
+ || (XINT (XEXP (x, 0), 1) == 7 && GET_CODE (orig_x) != MEM)))
{
x = gen_rtx_PLUS (VOIDmode, XVECEXP (XEXP (x, 0), 0, 0), XEXP (x, 1));
if (y)
@@ -6582,7 +5669,7 @@ print_reg (x, code, file)
|| REGNO (x) == FPSR_REG)
abort ();
- if (ASSEMBLER_DIALECT == ASM_ATT || USER_LABEL_PREFIX[0] == 0)
+ if (ASSEMBLER_DIALECT == ASM_ATT || USER_LABEL_PREFIX[0] == 0)
putc ('%', file);
if (code == 'w' || MMX_REG_P (x))
@@ -6659,43 +5746,6 @@ print_reg (x, code, file)
}
}
-/* Locate some local-dynamic symbol still in use by this function
- so that we can print its name in some tls_local_dynamic_base
- pattern. */
-
-static const char *
-get_some_local_dynamic_name ()
-{
- rtx insn;
-
- if (cfun->machine->some_ld_name)
- return cfun->machine->some_ld_name;
-
- for (insn = get_insns (); insn ; insn = NEXT_INSN (insn))
- if (INSN_P (insn)
- && for_each_rtx (&PATTERN (insn), get_some_local_dynamic_name_1, 0))
- return cfun->machine->some_ld_name;
-
- abort ();
-}
-
-static int
-get_some_local_dynamic_name_1 (px, data)
- rtx *px;
- void *data ATTRIBUTE_UNUSED;
-{
- rtx x = *px;
-
- if (GET_CODE (x) == SYMBOL_REF
- && local_dynamic_symbolic_operand (x, Pmode))
- {
- cfun->machine->some_ld_name = XSTR (x, 0);
- return 1;
- }
-
- return 0;
-}
-
/* Meaning of CODE:
L,W,B,Q,S,T -- print the opcode suffix for specified size of operand.
C -- print opcode suffix for set/cmov insn.
@@ -6720,7 +5770,6 @@ get_some_local_dynamic_name_1 (px, data)
D -- print condition for SSE cmp instruction.
P -- if PIC, print an @PLT suffix.
X -- don't print any sort of PIC '@' suffix for a symbol.
- & -- print some in-use local-dynamic symbol name.
*/
void
@@ -6738,10 +5787,6 @@ print_operand (file, x, code)
putc ('*', file);
return;
- case '&':
- assemble_name (file, get_some_local_dynamic_name ());
- return;
-
case 'A':
if (ASSEMBLER_DIALECT == ASM_ATT)
putc ('*', file);
@@ -6935,7 +5980,7 @@ print_operand (file, x, code)
/* Like above, but reverse condition */
case 'c':
- /* Check to see if argument to %c is really a constant
+ /* Check to see if argument to %c is really a constant
and not a condition code which needs to be reversed. */
if (GET_RTX_CLASS (GET_CODE (x)) != '<')
{
@@ -7028,11 +6073,9 @@ print_operand (file, x, code)
if (flag_pic && CONSTANT_ADDRESS_P (x))
output_pic_addr_const (file, x, code);
/* Avoid (%rip) for call operands. */
- else if (CONSTANT_ADDRESS_P (x) && code == 'P'
+ else if (CONSTANT_ADDRESS_P (x) && code =='P'
&& GET_CODE (x) != CONST_INT)
output_addr_const (file, x);
- else if (this_is_asm_operands && ! address_operand (x, VOIDmode))
- output_operand_lossage ("invalid constraints for operand");
else
output_address (x);
}
@@ -7053,21 +6096,24 @@ print_operand (file, x, code)
/* These float cases don't actually occur as immediate operands. */
else if (GET_CODE (x) == CONST_DOUBLE && GET_MODE (x) == DFmode)
{
+ REAL_VALUE_TYPE r;
char dstr[30];
- real_to_decimal (dstr, CONST_DOUBLE_REAL_VALUE (x), sizeof (dstr), 0, 1);
+ REAL_VALUE_FROM_CONST_DOUBLE (r, x);
+ REAL_VALUE_TO_DECIMAL (r, "%.22e", dstr);
fprintf (file, "%s", dstr);
}
else if (GET_CODE (x) == CONST_DOUBLE
&& (GET_MODE (x) == XFmode || GET_MODE (x) == TFmode))
{
+ REAL_VALUE_TYPE r;
char dstr[30];
- real_to_decimal (dstr, CONST_DOUBLE_REAL_VALUE (x), sizeof (dstr), 0, 1);
+ REAL_VALUE_FROM_CONST_DOUBLE (r, x);
+ REAL_VALUE_TO_DECIMAL (r, "%.22e", dstr);
fprintf (file, "%s", dstr);
}
-
else
{
if (code != 'P')
@@ -7106,22 +6152,12 @@ print_operand_address (file, addr)
rtx base, index, disp;
int scale;
- if (GET_CODE (addr) == UNSPEC && XINT (addr, 1) == UNSPEC_TP)
+ if (! ix86_decompose_address (addr, &parts))
{
- if (ASSEMBLER_DIALECT == ASM_INTEL)
- fputs ("DWORD PTR ", file);
- if (ASSEMBLER_DIALECT == ASM_ATT || USER_LABEL_PREFIX[0] == 0)
- putc ('%', file);
- if (TARGET_64BIT)
- fputs ("fs:0", file);
- else
- fputs ("gs:0", file);
+ output_operand_lossage ("Wrong address expression or operand constraint");
return;
}
- if (! ix86_decompose_address (addr, &parts))
- abort ();
-
base = parts.base;
index = parts.index;
disp = parts.disp;
@@ -7147,15 +6183,7 @@ print_operand_address (file, addr)
output_addr_const (file, addr);
/* Use one byte shorter RIP relative addressing for 64bit mode. */
- if (TARGET_64BIT
- && ((GET_CODE (addr) == SYMBOL_REF
- && ! tls_symbolic_operand (addr, GET_MODE (addr)))
- || GET_CODE (addr) == LABEL_REF
- || (GET_CODE (addr) == CONST
- && GET_CODE (XEXP (addr, 0)) == PLUS
- && (GET_CODE (XEXP (XEXP (addr, 0), 0)) == SYMBOL_REF
- || GET_CODE (XEXP (XEXP (addr, 0), 0)) == LABEL_REF)
- && GET_CODE (XEXP (XEXP (addr, 0), 1)) == CONST_INT)))
+ if (GET_CODE (disp) != CONST_INT && TARGET_64BIT)
fputs ("(%rip)", file);
}
else
@@ -7237,58 +6265,6 @@ print_operand_address (file, addr)
}
}
}
-
-bool
-output_addr_const_extra (file, x)
- FILE *file;
- rtx x;
-{
- rtx op;
-
- if (GET_CODE (x) != UNSPEC)
- return false;
-
- op = XVECEXP (x, 0, 0);
- switch (XINT (x, 1))
- {
- case UNSPEC_GOTTPOFF:
- output_addr_const (file, op);
- /* FIXME: This might be @TPOFF in Sun ld. */
- fputs ("@GOTTPOFF", file);
- break;
- case UNSPEC_TPOFF:
- output_addr_const (file, op);
- fputs ("@TPOFF", file);
- break;
- case UNSPEC_NTPOFF:
- output_addr_const (file, op);
- if (TARGET_64BIT)
- fputs ("@TPOFF", file);
- else
- fputs ("@NTPOFF", file);
- break;
- case UNSPEC_DTPOFF:
- output_addr_const (file, op);
- fputs ("@DTPOFF", file);
- break;
- case UNSPEC_GOTNTPOFF:
- output_addr_const (file, op);
- if (TARGET_64BIT)
- fputs ("@GOTTPOFF(%rip)", file);
- else
- fputs ("@GOTNTPOFF", file);
- break;
- case UNSPEC_INDNTPOFF:
- output_addr_const (file, op);
- fputs ("@INDNTPOFF", file);
- break;
-
- default:
- return false;
- }
-
- return true;
-}
/* Split one or more DImode RTL references into pairs of SImode
references. The RTL can be REG, offsettable MEM, integer constant, or
@@ -7658,12 +6634,12 @@ output_fp_compare (insn, operands, eflags_p, unordered_p)
if (unordered_p)
return "ucomiss\t{%1, %0|%0, %1}";
else
- return "comiss\t{%1, %0|%0, %1}";
+ return "comiss\t{%1, %0|%0, %y}";
else
if (unordered_p)
return "ucomisd\t{%1, %0|%0, %1}";
else
- return "comisd\t{%1, %0|%0, %1}";
+ return "comisd\t{%1, %0|%0, %y}";
}
if (! STACK_TOP_P (cmp_op0))
@@ -7788,18 +6764,13 @@ ix86_output_addr_diff_elt (file, value, rel)
int value, rel;
{
if (TARGET_64BIT)
- fprintf (file, "%s%s%d-%s%d\n",
+ fprintf (file, "%s%s%d-.+(.-%s%d)\n",
ASM_LONG, LPREFIX, value, LPREFIX, rel);
else if (HAVE_AS_GOTOFF_IN_DATA)
fprintf (file, "%s%s%d@GOTOFF\n", ASM_LONG, LPREFIX, value);
-#if TARGET_MACHO
- else if (TARGET_MACHO)
- fprintf (file, "%s%s%d-%s\n", ASM_LONG, LPREFIX, value,
- machopic_function_base_name () + 1);
-#endif
else
- asm_fprintf (file, "%s%U%s+[.-%s%d]\n",
- ASM_LONG, GOT_SYMBOL_NAME, LPREFIX, value);
+ asm_fprintf (file, "%s%U_GLOBAL_OFFSET_TABLE_+[.-%s%d]\n",
+ ASM_LONG, LPREFIX, value);
}
/* Generate either "mov $0, reg" or "xor reg, reg", as appropriate
@@ -7831,117 +6802,51 @@ ix86_expand_clear (dest)
emit_insn (tmp);
}
-/* X is an unchanging MEM. If it is a constant pool reference, return
- the constant pool rtx, else NULL. */
-
-static rtx
-maybe_get_pool_constant (x)
- rtx x;
-{
- x = XEXP (x, 0);
-
- if (flag_pic && ! TARGET_64BIT)
- {
- if (GET_CODE (x) != PLUS)
- return NULL_RTX;
- if (XEXP (x, 0) != pic_offset_table_rtx)
- return NULL_RTX;
- x = XEXP (x, 1);
- if (GET_CODE (x) != CONST)
- return NULL_RTX;
- x = XEXP (x, 0);
- if (GET_CODE (x) != UNSPEC)
- return NULL_RTX;
- if (XINT (x, 1) != UNSPEC_GOTOFF)
- return NULL_RTX;
- x = XVECEXP (x, 0, 0);
- }
-
- if (GET_CODE (x) == SYMBOL_REF && CONSTANT_POOL_ADDRESS_P (x))
- return get_pool_constant (x);
-
- return NULL_RTX;
-}
-
void
ix86_expand_move (mode, operands)
enum machine_mode mode;
rtx operands[];
{
int strict = (reload_in_progress || reload_completed);
- rtx insn, op0, op1, tmp;
-
- op0 = operands[0];
- op1 = operands[1];
+ rtx insn;
- if (tls_symbolic_operand (op1, Pmode))
+ if (flag_pic && mode == Pmode && symbolic_operand (operands[1], Pmode))
{
- op1 = legitimize_address (op1, op1, VOIDmode);
- if (GET_CODE (op0) == MEM)
- {
- tmp = gen_reg_rtx (mode);
- emit_insn (gen_rtx_SET (VOIDmode, tmp, op1));
- op1 = tmp;
- }
- }
- else if (flag_pic && mode == Pmode && symbolic_operand (op1, Pmode))
- {
-#if TARGET_MACHO
- if (MACHOPIC_PURE)
- {
- rtx temp = ((reload_in_progress
- || ((op0 && GET_CODE (op0) == REG)
- && mode == Pmode))
- ? op0 : gen_reg_rtx (Pmode));
- op1 = machopic_indirect_data_reference (op1, temp);
- op1 = machopic_legitimize_pic_address (op1, mode,
- temp == op1 ? 0 : temp);
- }
- else
- {
- if (MACHOPIC_INDIRECT)
- op1 = machopic_indirect_data_reference (op1, 0);
- }
- if (op0 != op1)
- {
- insn = gen_rtx_SET (VOIDmode, op0, op1);
- emit_insn (insn);
- }
- return;
-#endif /* TARGET_MACHO */
- if (GET_CODE (op0) == MEM)
- op1 = force_reg (Pmode, op1);
+ /* Emit insns to move operands[1] into operands[0]. */
+
+ if (GET_CODE (operands[0]) == MEM)
+ operands[1] = force_reg (Pmode, operands[1]);
else
{
- rtx temp = op0;
+ rtx temp = operands[0];
if (GET_CODE (temp) != REG)
temp = gen_reg_rtx (Pmode);
- temp = legitimize_pic_address (op1, temp);
- if (temp == op0)
+ temp = legitimize_pic_address (operands[1], temp);
+ if (temp == operands[0])
return;
- op1 = temp;
+ operands[1] = temp;
}
}
else
{
- if (GET_CODE (op0) == MEM
+ if (GET_CODE (operands[0]) == MEM
&& (PUSH_ROUNDING (GET_MODE_SIZE (mode)) != GET_MODE_SIZE (mode)
- || !push_operand (op0, mode))
- && GET_CODE (op1) == MEM)
- op1 = force_reg (mode, op1);
+ || !push_operand (operands[0], mode))
+ && GET_CODE (operands[1]) == MEM)
+ operands[1] = force_reg (mode, operands[1]);
- if (push_operand (op0, mode)
- && ! general_no_elim_operand (op1, mode))
- op1 = copy_to_mode_reg (mode, op1);
+ if (push_operand (operands[0], mode)
+ && ! general_no_elim_operand (operands[1], mode))
+ operands[1] = copy_to_mode_reg (mode, operands[1]);
/* Force large constants in 64bit compilation into register
to get them CSEed. */
if (TARGET_64BIT && mode == DImode
- && immediate_operand (op1, mode)
- && !x86_64_zero_extended_value (op1)
- && !register_operand (op0, mode)
+ && immediate_operand (operands[1], mode)
+ && !x86_64_zero_extended_value (operands[1])
+ && !register_operand (operands[0], mode)
&& optimize && !reload_completed && !reload_in_progress)
- op1 = copy_to_mode_reg (mode, op1);
+ operands[1] = copy_to_mode_reg (mode, operands[1]);
if (FLOAT_MODE_P (mode))
{
@@ -7951,21 +6856,13 @@ ix86_expand_move (mode, operands)
if (strict)
;
- else if (GET_CODE (op1) == CONST_DOUBLE)
- {
- op1 = validize_mem (force_const_mem (mode, op1));
- if (!register_operand (op0, mode))
- {
- rtx temp = gen_reg_rtx (mode);
- emit_insn (gen_rtx_SET (VOIDmode, temp, op1));
- emit_move_insn (op0, temp);
- return;
- }
- }
+ else if (GET_CODE (operands[1]) == CONST_DOUBLE
+ && register_operand (operands[0], mode))
+ operands[1] = validize_mem (force_const_mem (mode, operands[1]));
}
}
- insn = gen_rtx_SET (VOIDmode, op0, op1);
+ insn = gen_rtx_SET (VOIDmode, operands[0], operands[1]);
emit_insn (insn);
}
@@ -7981,15 +6878,15 @@ ix86_expand_vector_move (mode, operands)
to handle some of them more efficiently. */
if ((reload_in_progress | reload_completed) == 0
&& register_operand (operands[0], mode)
- && CONSTANT_P (operands[1]) && operands[1] != CONST0_RTX (mode))
+ && CONSTANT_P (operands[1]))
{
- operands[1] = force_const_mem (mode, operands[1]);
- emit_move_insn (operands[0], operands[1]);
- return;
+ rtx addr = gen_reg_rtx (Pmode);
+ emit_move_insn (addr, XEXP (force_const_mem (mode, operands[1]), 0));
+ operands[1] = gen_rtx_MEM (mode, addr);
}
/* Make operand1 a register if it isn't already. */
- if (!no_new_pseudos
+ if ((reload_in_progress | reload_completed) == 0
&& !register_operand (operands[0], mode)
&& !register_operand (operands[1], mode))
{
@@ -7999,7 +6896,7 @@ ix86_expand_vector_move (mode, operands)
}
emit_insn (gen_rtx_SET (VOIDmode, operands[0], operands[1]));
-}
+}
/* Attempt to expand a binary operator. Make the expansion closer to the
actual machine, then just general_operand, which will allow 3 separate
@@ -8647,7 +7544,7 @@ ix86_expand_fp_compare (code, op0, op1, scratch, second_test, bypass_test)
else
{
tmp = gen_rtx_COMPARE (fpcmp_mode, op0, op1);
- tmp2 = gen_rtx_UNSPEC (HImode, gen_rtvec (1, tmp), UNSPEC_FNSTSW);
+ tmp2 = gen_rtx_UNSPEC (HImode, gen_rtvec (1, tmp), 9);
if (!scratch)
scratch = gen_reg_rtx (HImode);
emit_insn (gen_rtx_SET (VOIDmode, scratch, tmp2));
@@ -8670,7 +7567,7 @@ ix86_expand_fp_compare (code, op0, op1, scratch, second_test, bypass_test)
{
/* Sadness wrt reg-stack pops killing fpsr -- gotta get fnstsw first. */
tmp = gen_rtx_COMPARE (fpcmp_mode, op0, op1);
- tmp2 = gen_rtx_UNSPEC (HImode, gen_rtvec (1, tmp), UNSPEC_FNSTSW);
+ tmp2 = gen_rtx_UNSPEC (HImode, gen_rtvec (1, tmp), 9);
if (!scratch)
scratch = gen_reg_rtx (HImode);
emit_insn (gen_rtx_SET (VOIDmode, scratch, tmp2));
@@ -8864,7 +7761,7 @@ ix86_expand_branch (code, label)
code = ix86_prepare_fp_compare_args (code, &ix86_compare_op0,
&ix86_compare_op1);
-
+
ix86_fp_comparison_codes (code, &bypass_code, &first_code, &second_code);
/* Check whether we will use the natural sequence with one jump. If
@@ -9181,7 +8078,7 @@ ix86_expand_int_movcc (operands)
start_sequence ();
compare_op = ix86_expand_compare (code, &second_test, &bypass_test);
- compare_seq = get_insns ();
+ compare_seq = gen_sequence ();
end_sequence ();
compare_code = GET_CODE (compare_op);
@@ -9202,13 +8099,14 @@ ix86_expand_int_movcc (operands)
if ((compare_code == LTU || compare_code == GEU)
&& !second_test && !bypass_test)
{
+
/* Detect overlap between destination and compare sources. */
rtx tmp = out;
/* To simplify rest of code, restrict to the GEU case. */
if (compare_code == LTU)
{
- HOST_WIDE_INT tmp = ct;
+ int tmp = ct;
ct = cf;
cf = tmp;
compare_code = reverse_condition (compare_code);
@@ -9258,7 +8156,7 @@ ix86_expand_int_movcc (operands)
/*
* cmpl op0,op1
* sbbl dest,dest
- * notl dest
+ * xorl $-1, dest
* [addl dest, cf]
*
* Size 8 - 11.
@@ -9274,23 +8172,15 @@ ix86_expand_int_movcc (operands)
/*
* cmpl op0,op1
* sbbl dest,dest
- * [notl dest]
* andl cf - ct, dest
* [addl dest, ct]
*
* Size 8 - 11.
*/
-
- if (cf == 0)
- {
- cf = ct;
- ct = 0;
- tmp = expand_simple_unop (mode, NOT, tmp, tmp, 1);
- }
-
tmp = expand_simple_binop (mode, AND,
tmp,
- gen_int_mode (cf - ct, mode),
+ GEN_INT (trunc_int_for_mode
+ (cf - ct, mode)),
tmp, 1, OPTAB_DIRECT);
if (ct)
tmp = expand_simple_binop (mode, PLUS,
@@ -9325,61 +8215,6 @@ ix86_expand_int_movcc (operands)
code = reverse_condition (code);
}
}
-
- compare_code = NIL;
- if (GET_MODE_CLASS (GET_MODE (ix86_compare_op0)) == MODE_INT
- && GET_CODE (ix86_compare_op1) == CONST_INT)
- {
- if (ix86_compare_op1 == const0_rtx
- && (code == LT || code == GE))
- compare_code = code;
- else if (ix86_compare_op1 == constm1_rtx)
- {
- if (code == LE)
- compare_code = LT;
- else if (code == GT)
- compare_code = GE;
- }
- }
-
- /* Optimize dest = (op0 < 0) ? -1 : cf. */
- if (compare_code != NIL
- && GET_MODE (ix86_compare_op0) == GET_MODE (out)
- && (cf == -1 || ct == -1))
- {
- /* If lea code below could be used, only optimize
- if it results in a 2 insn sequence. */
-
- if (! (diff == 1 || diff == 2 || diff == 4 || diff == 8
- || diff == 3 || diff == 5 || diff == 9)
- || (compare_code == LT && ct == -1)
- || (compare_code == GE && cf == -1))
- {
- /*
- * notl op1 (if necessary)
- * sarl $31, op1
- * orl cf, op1
- */
- if (ct != -1)
- {
- cf = ct;
- ct = -1;
- code = reverse_condition (code);
- }
-
- out = emit_store_flag (out, code, ix86_compare_op0,
- ix86_compare_op1, VOIDmode, 0, -1);
-
- out = expand_simple_binop (mode, IOR,
- out, GEN_INT (cf),
- out, 1, OPTAB_DIRECT);
- if (out != operands[0])
- emit_move_insn (operands[0], out);
-
- return 1; /* DONE */
- }
- }
-
if ((diff == 1 || diff == 2 || diff == 4 || diff == 8
|| diff == 3 || diff == 5 || diff == 9)
&& (mode != DImode || x86_64_sign_extended_value (GEN_INT (cf))))
@@ -9402,14 +8237,14 @@ ix86_expand_int_movcc (operands)
ix86_compare_op1, VOIDmode, 0, 1);
nops = 0;
- /* On x86_64 the lea instruction operates on Pmode, so we need
- to get arithmetics done in proper mode to match. */
+ /* On x86_64 the lea instruction operates on Pmode, so we need to get arithmetics
+ done in proper mode to match. */
if (diff == 1)
- tmp = copy_rtx (out);
+ tmp = out;
else
{
rtx out1;
- out1 = copy_rtx (out);
+ out1 = out;
tmp = gen_rtx_MULT (mode, out1, GEN_INT (diff & ~1));
nops++;
if (diff & 1)
@@ -9427,12 +8262,21 @@ ix86_expand_int_movcc (operands)
&& (GET_CODE (tmp) != SUBREG || SUBREG_REG (tmp) != out))
{
if (nops == 1)
- out = force_operand (tmp, copy_rtx (out));
+ {
+ rtx clob;
+
+ clob = gen_rtx_REG (CCmode, FLAGS_REG);
+ clob = gen_rtx_CLOBBER (VOIDmode, clob);
+
+ tmp = gen_rtx_SET (VOIDmode, out, tmp);
+ tmp = gen_rtx_PARALLEL (VOIDmode, gen_rtvec (2, copy_rtx (tmp), clob));
+ emit_insn (tmp);
+ }
else
- emit_insn (gen_rtx_SET (VOIDmode, copy_rtx (out), copy_rtx (tmp)));
+ emit_insn (gen_rtx_SET (VOIDmode, out, tmp));
}
if (out != operands[0])
- emit_move_insn (operands[0], copy_rtx (out));
+ emit_move_insn (operands[0], out);
return 1; /* DONE */
}
@@ -9458,68 +8302,40 @@ ix86_expand_int_movcc (operands)
if (!optimize_size && !TARGET_CMOVE)
{
- if (cf == 0)
+ if (ct == 0)
{
- cf = ct;
- ct = 0;
+ ct = cf;
+ cf = 0;
if (FLOAT_MODE_P (GET_MODE (ix86_compare_op0)))
- /* We may be reversing unordered compare to normal compare,
- that is not valid in general (we may convert non-trapping
- condition to trapping one), however on i386 we currently
- emit all comparisons unordered. */
- code = reverse_condition_maybe_unordered (code);
- else
- {
- code = reverse_condition (code);
- if (compare_code != NIL)
- compare_code = reverse_condition (compare_code);
- }
- }
-
- if (compare_code != NIL)
- {
- /* notl op1 (if needed)
- sarl $31, op1
- andl (cf-ct), op1
- addl ct, op1
-
- For x < 0 (resp. x <= -1) there will be no notl,
- so if possible swap the constants to get rid of the
- complement.
- True/false will be -1/0 while code below (store flag
- followed by decrement) is 0/-1, so the constants need
- to be exchanged once more. */
-
- if (compare_code == GE || !cf)
{
- code = reverse_condition (code);
- compare_code = LT;
+ /* We may be reversing unordered compare to normal compare,
+ that is not valid in general (we may convert non-trapping
+ condition to trapping one), however on i386 we currently
+ emit all comparisons unordered. */
+ compare_code = reverse_condition_maybe_unordered (compare_code);
+ code = reverse_condition_maybe_unordered (code);
}
else
{
- HOST_WIDE_INT tmp = cf;
- cf = ct;
- ct = tmp;
+ compare_code = reverse_condition (compare_code);
+ code = reverse_condition (code);
}
-
- out = emit_store_flag (out, code, ix86_compare_op0,
- ix86_compare_op1, VOIDmode, 0, -1);
}
- else
- {
- out = emit_store_flag (out, code, ix86_compare_op0,
- ix86_compare_op1, VOIDmode, 0, 1);
- out = expand_simple_binop (mode, PLUS, out, constm1_rtx,
- out, 1, OPTAB_DIRECT);
- }
+ out = emit_store_flag (out, code, ix86_compare_op0,
+ ix86_compare_op1, VOIDmode, 0, 1);
- out = expand_simple_binop (mode, AND, out,
- gen_int_mode (cf - ct, mode),
+ out = expand_simple_binop (mode, PLUS,
+ out, constm1_rtx,
+ out, 1, OPTAB_DIRECT);
+ out = expand_simple_binop (mode, AND,
+ out,
+ GEN_INT (trunc_int_for_mode
+ (cf - ct, mode)),
+ out, 1, OPTAB_DIRECT);
+ out = expand_simple_binop (mode, PLUS,
+ out, GEN_INT (ct),
out, 1, OPTAB_DIRECT);
- if (ct)
- out = expand_simple_binop (mode, PLUS, out, GEN_INT (ct),
- out, 1, OPTAB_DIRECT);
if (out != operands[0])
emit_move_insn (operands[0], out);
@@ -9810,14 +8626,13 @@ ix86_split_to_parts (operand, parts, mode)
if (size < 2 || size > 3)
abort ();
- /* Optimize constant pool reference to immediates. This is used by fp
- moves, that force all constants to memory to allow combining. */
- if (GET_CODE (operand) == MEM && RTX_UNCHANGING_P (operand))
- {
- rtx tmp = maybe_get_pool_constant (operand);
- if (tmp)
- operand = tmp;
- }
+ /* Optimize constant pool reference to immediates. This is used by fp moves,
+ that force all constants to memory to allow combining. */
+
+ if (GET_CODE (operand) == MEM
+ && GET_CODE (XEXP (operand, 0)) == SYMBOL_REF
+ && CONSTANT_POOL_ADDRESS_P (XEXP (operand, 0)))
+ operand = get_pool_constant (XEXP (operand, 0));
if (GET_CODE (operand) == MEM && !offsettable_memref_p (operand))
{
@@ -9863,7 +8678,7 @@ ix86_split_to_parts (operand, parts, mode)
case XFmode:
case TFmode:
REAL_VALUE_TO_TARGET_LONG_DOUBLE (r, l);
- parts[2] = gen_int_mode (l[2], SImode);
+ parts[2] = GEN_INT (trunc_int_for_mode (l[2], SImode));
break;
case DFmode:
REAL_VALUE_TO_TARGET_DOUBLE (r, l);
@@ -9871,8 +8686,8 @@ ix86_split_to_parts (operand, parts, mode)
default:
abort ();
}
- parts[1] = gen_int_mode (l[1], SImode);
- parts[0] = gen_int_mode (l[0], SImode);
+ parts[1] = GEN_INT (trunc_int_for_mode (l[1], SImode));
+ parts[0] = GEN_INT (trunc_int_for_mode (l[0], SImode));
}
else
abort ();
@@ -9907,13 +8722,13 @@ ix86_split_to_parts (operand, parts, mode)
/* Do not use shift by 32 to avoid warning on 32bit systems. */
if (HOST_BITS_PER_WIDE_INT >= 64)
parts[0]
- = gen_int_mode
+ = GEN_INT (trunc_int_for_mode
((l[0] & (((HOST_WIDE_INT) 2 << 31) - 1))
+ ((((HOST_WIDE_INT) l[1]) << 31) << 1),
- DImode);
+ DImode));
else
parts[0] = immed_double_const (l[0], l[1], DImode);
- parts[1] = gen_int_mode (l[2], SImode);
+ parts[1] = GEN_INT (trunc_int_for_mode (l[2], SImode));
}
else
abort ();
@@ -10008,24 +8823,15 @@ ix86_split_long_move (operands)
Do an lea to the last part and use only one colliding move. */
else if (collisions > 1)
{
- rtx base;
-
collisions = 1;
-
- base = part[0][nparts - 1];
-
- /* Handle the case when the last part isn't valid for lea.
- Happens in 64-bit mode storing the 12-byte XFmode. */
- if (GET_MODE (base) != Pmode)
- base = gen_rtx_REG (Pmode, REGNO (base));
-
- emit_insn (gen_rtx_SET (VOIDmode, base, XEXP (part[1][0], 0)));
- part[1][0] = replace_equiv_address (part[1][0], base);
- part[1][1] = replace_equiv_address (part[1][1],
- plus_constant (base, UNITS_PER_WORD));
+ emit_insn (gen_rtx_SET (VOIDmode, part[0][nparts - 1],
+ XEXP (part[1][0], 0)));
+ part[1][0] = change_address (part[1][0],
+ TARGET_64BIT ? DImode : SImode,
+ part[0][nparts - 1]);
+ part[1][1] = adjust_address (part[1][0], VOIDmode, UNITS_PER_WORD);
if (nparts == 3)
- part[1][2] = replace_equiv_address (part[1][2],
- plus_constant (base, 8));
+ part[1][2] = adjust_address (part[1][0], VOIDmode, 8);
}
}
@@ -10554,7 +9360,7 @@ ix86_expand_movstr (dst, src, count_exp, align_exp)
end_sequence ();
ix86_set_move_mem_attrs (insns, dst, src, destreg, srcreg);
- emit_insn (insns);
+ emit_insns (insns);
return 1;
}
@@ -10955,7 +9761,8 @@ ix86_expand_strlensi_unroll_1 (out, align_rtx)
emit_insn (gen_one_cmplsi2 (scratch, scratch));
emit_insn (gen_andsi3 (tmpreg, tmpreg, scratch));
emit_insn (gen_andsi3 (tmpreg, tmpreg,
- gen_int_mode (0x80808080, SImode)));
+ GEN_INT (trunc_int_for_mode
+ (0x80808080, SImode))));
emit_cmp_and_jump_insns (tmpreg, const0_rtx, EQ, 0, SImode, 1,
align_4_label);
@@ -11021,66 +9828,43 @@ ix86_expand_strlensi_unroll_1 (out, align_rtx)
emit_label (end_0_label);
}
+
+/* Clear stack slot assignments remembered from previous functions.
+ This is called from INIT_EXPANDERS once before RTL is emitted for each
+ function. */
-void
-ix86_expand_call (retval, fnaddr, callarg1, callarg2, pop)
- rtx retval, fnaddr, callarg1, callarg2, pop;
+static void
+ix86_init_machine_status (p)
+ struct function *p;
{
- rtx use = NULL, call;
-
- if (pop == const0_rtx)
- pop = NULL;
- if (TARGET_64BIT && pop)
- abort ();
-
-#if TARGET_MACHO
- if (flag_pic && GET_CODE (XEXP (fnaddr, 0)) == SYMBOL_REF)
- fnaddr = machopic_indirect_call_target (fnaddr);
-#else
- /* Static functions and indirect calls don't need the pic register. */
- if (! TARGET_64BIT && flag_pic
- && GET_CODE (XEXP (fnaddr, 0)) == SYMBOL_REF
- && ! SYMBOL_REF_FLAG (XEXP (fnaddr, 0)))
- use_reg (&use, pic_offset_table_rtx);
-
- if (TARGET_64BIT && INTVAL (callarg2) >= 0)
- {
- rtx al = gen_rtx_REG (QImode, 0);
- emit_move_insn (al, callarg2);
- use_reg (&use, al);
- }
-#endif /* TARGET_MACHO */
+ p->machine = (struct machine_function *)
+ xcalloc (1, sizeof (struct machine_function));
+}
- if (! call_insn_operand (XEXP (fnaddr, 0), Pmode))
- {
- fnaddr = copy_to_mode_reg (Pmode, XEXP (fnaddr, 0));
- fnaddr = gen_rtx_MEM (QImode, fnaddr);
- }
+/* Mark machine specific bits of P for GC. */
+static void
+ix86_mark_machine_status (p)
+ struct function *p;
+{
+ struct machine_function *machine = p->machine;
+ enum machine_mode mode;
+ int n;
- call = gen_rtx_CALL (VOIDmode, fnaddr, callarg1);
- if (retval)
- call = gen_rtx_SET (VOIDmode, retval, call);
- if (pop)
- {
- pop = gen_rtx_PLUS (Pmode, stack_pointer_rtx, pop);
- pop = gen_rtx_SET (VOIDmode, stack_pointer_rtx, pop);
- call = gen_rtx_PARALLEL (VOIDmode, gen_rtvec (2, call, pop));
- }
+ if (! machine)
+ return;
- call = emit_call_insn (call);
- if (use)
- CALL_INSN_FUNCTION_USAGE (call) = use;
+ for (mode = VOIDmode; (int) mode < (int) MAX_MACHINE_MODE;
+ mode = (enum machine_mode) ((int) mode + 1))
+ for (n = 0; n < MAX_386_STACK_LOCALS; n++)
+ ggc_mark_rtx (machine->stack_locals[(int) mode][n]);
}
-
-/* Clear stack slot assignments remembered from previous functions.
- This is called from INIT_EXPANDERS once before RTL is emitted for each
- function. */
-
-static struct machine_function *
-ix86_init_machine_status ()
+static void
+ix86_free_machine_status (p)
+ struct function *p;
{
- return ggc_alloc_cleared (sizeof (struct machine_function));
+ free (p->machine);
+ p->machine = NULL;
}
/* Return a MEM corresponding to a stack slot with mode MODE.
@@ -11103,24 +9887,6 @@ assign_386_stack_local (mode, n)
return ix86_stack_locals[(int) mode][n];
}
-
-/* Construct the SYMBOL_REF for the tls_get_addr function. */
-
-static GTY(()) rtx ix86_tls_symbol;
-rtx
-ix86_tls_get_addr ()
-{
-
- if (!ix86_tls_symbol)
- {
- ix86_tls_symbol = gen_rtx_SYMBOL_REF (Pmode,
- (TARGET_GNU_TLS && !TARGET_64BIT)
- ? "___tls_get_addr"
- : "__tls_get_addr");
- }
-
- return ix86_tls_symbol;
-}
/* Calculate the length of the memory address in the instruction
encoding. Does not include the one-byte modrm, opcode, or prefix. */
@@ -11168,8 +9934,7 @@ memory_address_length (addr)
if (disp)
{
if (GET_CODE (disp) == CONST_INT
- && CONST_OK_FOR_LETTER_P (INTVAL (disp), 'K')
- && base)
+ && CONST_OK_FOR_LETTER_P (INTVAL (disp), 'K'))
len = 1;
else
len = 4;
@@ -11183,8 +9948,8 @@ memory_address_length (addr)
return len;
}
-/* Compute default value for "length_immediate" attribute. When SHORTFORM
- is set, expect that insn have 8bit immediate alternative. */
+/* Compute default value for "length_immediate" attribute. When SHORTFORM is set
+ expect that insn have 8bit immediate alternative. */
int
ix86_attr_length_immediate_default (insn, shortform)
rtx insn;
@@ -11232,26 +9997,6 @@ ix86_attr_length_address_default (insn)
rtx insn;
{
int i;
-
- if (get_attr_type (insn) == TYPE_LEA)
- {
- rtx set = PATTERN (insn);
- if (GET_CODE (set) == SET)
- ;
- else if (GET_CODE (set) == PARALLEL
- && GET_CODE (XVECEXP (set, 0, 0)) == SET)
- set = XVECEXP (set, 0, 0);
- else
- {
-#ifdef ENABLE_CHECKING
- abort ();
-#endif
- return 0;
- }
-
- return memory_address_length (SET_SRC (set));
- }
-
extract_insn_cached (insn);
for (i = recog_data.n_operands - 1; i >= 0; --i)
if (GET_CODE (recog_data.operand[i]) == MEM)
@@ -11530,6 +10275,46 @@ static union
} ppro;
} ix86_sched_data;
+static int
+ix86_safe_length (insn)
+ rtx insn;
+{
+ if (recog_memoized (insn) >= 0)
+ return get_attr_length (insn);
+ else
+ return 128;
+}
+
+static int
+ix86_safe_length_prefix (insn)
+ rtx insn;
+{
+ if (recog_memoized (insn) >= 0)
+ return get_attr_length (insn);
+ else
+ return 0;
+}
+
+static enum attr_memory
+ix86_safe_memory (insn)
+ rtx insn;
+{
+ if (recog_memoized (insn) >= 0)
+ return get_attr_memory (insn);
+ else
+ return MEMORY_UNKNOWN;
+}
+
+static enum attr_pent_pair
+ix86_safe_pent_pair (insn)
+ rtx insn;
+{
+ if (recog_memoized (insn) >= 0)
+ return get_attr_pent_pair (insn);
+ else
+ return PENT_PAIR_NP;
+}
+
static enum attr_ppro_uops
ix86_safe_ppro_uops (insn)
rtx insn;
@@ -11583,6 +10368,129 @@ ix86_reorder_insn (insnp, slot)
}
}
+/* Find an instruction with given pairability and minimal amount of cycles
+ lost by the fact that the CPU waits for both pipelines to finish before
+ reading next instructions. Also take care that both instructions together
+ can not exceed 7 bytes. */
+
+static rtx *
+ix86_pent_find_pair (e_ready, ready, type, first)
+ rtx *e_ready;
+ rtx *ready;
+ enum attr_pent_pair type;
+ rtx first;
+{
+ int mincycles, cycles;
+ enum attr_pent_pair tmp;
+ enum attr_memory memory;
+ rtx *insnp, *bestinsnp = NULL;
+
+ if (ix86_safe_length (first) > 7 + ix86_safe_length_prefix (first))
+ return NULL;
+
+ memory = ix86_safe_memory (first);
+ cycles = result_ready_cost (first);
+ mincycles = INT_MAX;
+
+ for (insnp = e_ready; insnp >= ready && mincycles; --insnp)
+ if ((tmp = ix86_safe_pent_pair (*insnp)) == type
+ && ix86_safe_length (*insnp) <= 7 + ix86_safe_length_prefix (*insnp))
+ {
+ enum attr_memory second_memory;
+ int secondcycles, currentcycles;
+
+ second_memory = ix86_safe_memory (*insnp);
+ secondcycles = result_ready_cost (*insnp);
+ currentcycles = abs (cycles - secondcycles);
+
+ if (secondcycles >= 1 && cycles >= 1)
+ {
+ /* Two read/modify/write instructions together takes two
+ cycles longer. */
+ if (memory == MEMORY_BOTH && second_memory == MEMORY_BOTH)
+ currentcycles += 2;
+
+ /* Read modify/write instruction followed by read/modify
+ takes one cycle longer. */
+ if (memory == MEMORY_BOTH && second_memory == MEMORY_LOAD
+ && tmp != PENT_PAIR_UV
+ && ix86_safe_pent_pair (first) != PENT_PAIR_UV)
+ currentcycles += 1;
+ }
+ if (currentcycles < mincycles)
+ bestinsnp = insnp, mincycles = currentcycles;
+ }
+
+ return bestinsnp;
+}
+
+/* Subroutines of ix86_sched_reorder. */
+
+static void
+ix86_sched_reorder_pentium (ready, e_ready)
+ rtx *ready;
+ rtx *e_ready;
+{
+ enum attr_pent_pair pair1, pair2;
+ rtx *insnp;
+
+ /* This wouldn't be necessary if Haifa knew that static insn ordering
+ is important to which pipe an insn is issued to. So we have to make
+ some minor rearrangements. */
+
+ pair1 = ix86_safe_pent_pair (*e_ready);
+
+ /* If the first insn is non-pairable, let it be. */
+ if (pair1 == PENT_PAIR_NP)
+ return;
+
+ pair2 = PENT_PAIR_NP;
+ insnp = 0;
+
+ /* If the first insn is UV or PV pairable, search for a PU
+ insn to go with. */
+ if (pair1 == PENT_PAIR_UV || pair1 == PENT_PAIR_PV)
+ {
+ insnp = ix86_pent_find_pair (e_ready-1, ready,
+ PENT_PAIR_PU, *e_ready);
+ if (insnp)
+ pair2 = PENT_PAIR_PU;
+ }
+
+ /* If the first insn is PU or UV pairable, search for a PV
+ insn to go with. */
+ if (pair2 == PENT_PAIR_NP
+ && (pair1 == PENT_PAIR_PU || pair1 == PENT_PAIR_UV))
+ {
+ insnp = ix86_pent_find_pair (e_ready-1, ready,
+ PENT_PAIR_PV, *e_ready);
+ if (insnp)
+ pair2 = PENT_PAIR_PV;
+ }
+
+ /* If the first insn is pairable, search for a UV
+ insn to go with. */
+ if (pair2 == PENT_PAIR_NP)
+ {
+ insnp = ix86_pent_find_pair (e_ready-1, ready,
+ PENT_PAIR_UV, *e_ready);
+ if (insnp)
+ pair2 = PENT_PAIR_UV;
+ }
+
+ if (pair2 == PENT_PAIR_NP)
+ return;
+
+ /* Found something! Decide if we need to swap the order. */
+ if (pair1 == PENT_PAIR_PV || pair2 == PENT_PAIR_PU
+ || (pair1 == PENT_PAIR_UV && pair2 == PENT_PAIR_UV
+ && ix86_safe_memory (*e_ready) == MEMORY_BOTH
+ && ix86_safe_memory (*insnp) == MEMORY_LOAD))
+ ix86_reorder_insn (insnp, e_ready);
+ else
+ ix86_reorder_insn (insnp, e_ready - 1);
+}
+
static void
ix86_sched_reorder_ppro (ready, e_ready)
rtx *ready;
@@ -11637,7 +10545,7 @@ ix86_sched_reorder_ppro (ready, e_ready)
for (i = 1; i < 3; ++i)
if (decode[i] == NULL)
{
- if (ready > e_ready)
+ if (ready >= e_ready)
goto ppro_done;
insnp = e_ready;
@@ -11681,20 +10589,18 @@ ix86_sched_reorder (dump, sched_verbose, ready, n_readyp, clock_var)
int n_ready = *n_readyp;
rtx *e_ready = ready + n_ready - 1;
- /* Make sure to go ahead and initialize key items in
- ix86_sched_data if we are not going to bother trying to
- reorder the ready queue. */
if (n_ready < 2)
- {
- ix86_sched_data.ppro.issued_this_cycle = 1;
- goto out;
- }
+ goto out;
switch (ix86_cpu)
{
default:
break;
+ case PROCESSOR_PENTIUM:
+ ix86_sched_reorder_pentium (ready, e_ready);
+ break;
+
case PROCESSOR_PENTIUMPRO:
ix86_sched_reorder_ppro (ready, e_ready);
break;
@@ -11766,28 +10672,6 @@ ix86_variable_issue (dump, sched_verbose, insn, can_issue_more)
return --ix86_sched_data.ppro.issued_this_cycle;
}
}
-
-static int
-ia32_use_dfa_pipeline_interface ()
-{
- if (ix86_cpu == PROCESSOR_PENTIUM)
- return 1;
- return 0;
-}
-
-/* How many alternative schedules to try. This should be as wide as the
- scheduling freedom in the DFA, but no wider. Making this value too
- large results extra work for the scheduler. */
-
-static int
-ia32_multipass_dfa_lookahead ()
-{
- if (ix86_cpu == PROCESSOR_PENTIUM)
- return 2;
- else
- return 0;
-}
-
/* Walk through INSNS and look for MEM references whose address is DSTREG or
SRCREG and set the memory attribute to those of DSTREF and SRCREF, as
@@ -11853,8 +10737,8 @@ ix86_constant_alignment (exp, align)
else if (ALIGN_MODE_128 (TYPE_MODE (TREE_TYPE (exp))) && align < 128)
return 128;
}
- else if (TREE_CODE (exp) == STRING_CST && TREE_STRING_LENGTH (exp) >= 31
- && align < 256)
+ else if (TREE_CODE (exp) == STRING_CST && !TARGET_NO_ALIGN_LONG_STRINGS
+ && TREE_STRING_LENGTH (exp) >= 31 && align < 256)
return 256;
return align;
@@ -11997,10 +10881,10 @@ x86_initialize_trampoline (tramp, fnaddr, cxt)
plus_constant (tramp, 10),
NULL_RTX, 1, OPTAB_DIRECT);
emit_move_insn (gen_rtx_MEM (QImode, tramp),
- gen_int_mode (0xb9, QImode));
+ GEN_INT (trunc_int_for_mode (0xb9, QImode)));
emit_move_insn (gen_rtx_MEM (SImode, plus_constant (tramp, 1)), cxt);
emit_move_insn (gen_rtx_MEM (QImode, plus_constant (tramp, 5)),
- gen_int_mode (0xe9, QImode));
+ GEN_INT (trunc_int_for_mode (0xe9, QImode)));
emit_move_insn (gen_rtx_MEM (SImode, plus_constant (tramp, 6)), disp);
}
else
@@ -12013,7 +10897,7 @@ x86_initialize_trampoline (tramp, fnaddr, cxt)
{
fnaddr = copy_to_mode_reg (DImode, fnaddr);
emit_move_insn (gen_rtx_MEM (HImode, plus_constant (tramp, offset)),
- gen_int_mode (0xbb41, HImode));
+ GEN_INT (trunc_int_for_mode (0xbb41, HImode)));
emit_move_insn (gen_rtx_MEM (SImode, plus_constant (tramp, offset + 2)),
gen_lowpart (SImode, fnaddr));
offset += 6;
@@ -12021,39 +10905,32 @@ x86_initialize_trampoline (tramp, fnaddr, cxt)
else
{
emit_move_insn (gen_rtx_MEM (HImode, plus_constant (tramp, offset)),
- gen_int_mode (0xbb49, HImode));
+ GEN_INT (trunc_int_for_mode (0xbb49, HImode)));
emit_move_insn (gen_rtx_MEM (DImode, plus_constant (tramp, offset + 2)),
fnaddr);
offset += 10;
}
/* Load static chain using movabs to r10. */
emit_move_insn (gen_rtx_MEM (HImode, plus_constant (tramp, offset)),
- gen_int_mode (0xba49, HImode));
+ GEN_INT (trunc_int_for_mode (0xba49, HImode)));
emit_move_insn (gen_rtx_MEM (DImode, plus_constant (tramp, offset + 2)),
cxt);
offset += 10;
/* Jump to the r11 */
emit_move_insn (gen_rtx_MEM (HImode, plus_constant (tramp, offset)),
- gen_int_mode (0xff49, HImode));
+ GEN_INT (trunc_int_for_mode (0xff49, HImode)));
emit_move_insn (gen_rtx_MEM (QImode, plus_constant (tramp, offset+2)),
- gen_int_mode (0xe3, QImode));
+ GEN_INT (trunc_int_for_mode (0xe3, QImode)));
offset += 3;
if (offset > TRAMPOLINE_SIZE)
abort ();
}
-
-#ifdef TRANSFER_FROM_TRAMPOLINE
- emit_library_call (gen_rtx (SYMBOL_REF, Pmode, "__enable_execute_stack"),
- LCT_NORMAL, VOIDmode, 1, tramp, Pmode);
-#endif
}
-#define def_builtin(MASK, NAME, TYPE, CODE) \
-do { \
- if ((MASK) & target_flags \
- && (!((MASK) & MASK_64BIT) || TARGET_64BIT)) \
- builtin_function ((NAME), (TYPE), (CODE), BUILT_IN_MD, \
- NULL, NULL_TREE); \
+#define def_builtin(MASK, NAME, TYPE, CODE) \
+do { \
+ if ((MASK) & target_flags) \
+ builtin_function ((NAME), (TYPE), (CODE), BUILT_IN_MD, NULL); \
} while (0)
struct builtin_description
@@ -12066,97 +10943,73 @@ struct builtin_description
const unsigned int flag;
};
-/* Used for builtins that are enabled both by -msse and -msse2. */
-#define MASK_SSE1 (MASK_SSE | MASK_SSE2)
-#define MASK_SSE164 (MASK_SSE | MASK_SSE2 | MASK_64BIT)
-#define MASK_SSE264 (MASK_SSE2 | MASK_64BIT)
-
static const struct builtin_description bdesc_comi[] =
{
- { MASK_SSE1, CODE_FOR_sse_comi, "__builtin_ia32_comieq", IX86_BUILTIN_COMIEQSS, UNEQ, 0 },
- { MASK_SSE1, CODE_FOR_sse_comi, "__builtin_ia32_comilt", IX86_BUILTIN_COMILTSS, UNLT, 0 },
- { MASK_SSE1, CODE_FOR_sse_comi, "__builtin_ia32_comile", IX86_BUILTIN_COMILESS, UNLE, 0 },
- { MASK_SSE1, CODE_FOR_sse_comi, "__builtin_ia32_comigt", IX86_BUILTIN_COMIGTSS, GT, 0 },
- { MASK_SSE1, CODE_FOR_sse_comi, "__builtin_ia32_comige", IX86_BUILTIN_COMIGESS, GE, 0 },
- { MASK_SSE1, CODE_FOR_sse_comi, "__builtin_ia32_comineq", IX86_BUILTIN_COMINEQSS, LTGT, 0 },
- { MASK_SSE1, CODE_FOR_sse_ucomi, "__builtin_ia32_ucomieq", IX86_BUILTIN_UCOMIEQSS, UNEQ, 0 },
- { MASK_SSE1, CODE_FOR_sse_ucomi, "__builtin_ia32_ucomilt", IX86_BUILTIN_UCOMILTSS, UNLT, 0 },
- { MASK_SSE1, CODE_FOR_sse_ucomi, "__builtin_ia32_ucomile", IX86_BUILTIN_UCOMILESS, UNLE, 0 },
- { MASK_SSE1, CODE_FOR_sse_ucomi, "__builtin_ia32_ucomigt", IX86_BUILTIN_UCOMIGTSS, GT, 0 },
- { MASK_SSE1, CODE_FOR_sse_ucomi, "__builtin_ia32_ucomige", IX86_BUILTIN_UCOMIGESS, GE, 0 },
- { MASK_SSE1, CODE_FOR_sse_ucomi, "__builtin_ia32_ucomineq", IX86_BUILTIN_UCOMINEQSS, LTGT, 0 },
- { MASK_SSE2, CODE_FOR_sse2_comi, "__builtin_ia32_comisdeq", IX86_BUILTIN_COMIEQSD, UNEQ, 0 },
- { MASK_SSE2, CODE_FOR_sse2_comi, "__builtin_ia32_comisdlt", IX86_BUILTIN_COMILTSD, UNLT, 0 },
- { MASK_SSE2, CODE_FOR_sse2_comi, "__builtin_ia32_comisdle", IX86_BUILTIN_COMILESD, UNLE, 0 },
- { MASK_SSE2, CODE_FOR_sse2_comi, "__builtin_ia32_comisdgt", IX86_BUILTIN_COMIGTSD, GT, 0 },
- { MASK_SSE2, CODE_FOR_sse2_comi, "__builtin_ia32_comisdge", IX86_BUILTIN_COMIGESD, GE, 0 },
- { MASK_SSE2, CODE_FOR_sse2_comi, "__builtin_ia32_comisdneq", IX86_BUILTIN_COMINEQSD, LTGT, 0 },
- { MASK_SSE2, CODE_FOR_sse2_ucomi, "__builtin_ia32_ucomisdeq", IX86_BUILTIN_UCOMIEQSD, UNEQ, 0 },
- { MASK_SSE2, CODE_FOR_sse2_ucomi, "__builtin_ia32_ucomisdlt", IX86_BUILTIN_UCOMILTSD, UNLT, 0 },
- { MASK_SSE2, CODE_FOR_sse2_ucomi, "__builtin_ia32_ucomisdle", IX86_BUILTIN_UCOMILESD, UNLE, 0 },
- { MASK_SSE2, CODE_FOR_sse2_ucomi, "__builtin_ia32_ucomisdgt", IX86_BUILTIN_UCOMIGTSD, GT, 0 },
- { MASK_SSE2, CODE_FOR_sse2_ucomi, "__builtin_ia32_ucomisdge", IX86_BUILTIN_UCOMIGESD, GE, 0 },
- { MASK_SSE2, CODE_FOR_sse2_ucomi, "__builtin_ia32_ucomisdneq", IX86_BUILTIN_UCOMINEQSD, LTGT, 0 },
+ { MASK_SSE, CODE_FOR_sse_comi, "__builtin_ia32_comieq", IX86_BUILTIN_COMIEQSS, EQ, 0 },
+ { MASK_SSE, CODE_FOR_sse_comi, "__builtin_ia32_comilt", IX86_BUILTIN_COMILTSS, LT, 0 },
+ { MASK_SSE, CODE_FOR_sse_comi, "__builtin_ia32_comile", IX86_BUILTIN_COMILESS, LE, 0 },
+ { MASK_SSE, CODE_FOR_sse_comi, "__builtin_ia32_comigt", IX86_BUILTIN_COMIGTSS, LT, 1 },
+ { MASK_SSE, CODE_FOR_sse_comi, "__builtin_ia32_comige", IX86_BUILTIN_COMIGESS, LE, 1 },
+ { MASK_SSE, CODE_FOR_sse_comi, "__builtin_ia32_comineq", IX86_BUILTIN_COMINEQSS, NE, 0 },
+ { MASK_SSE, CODE_FOR_sse_ucomi, "__builtin_ia32_ucomieq", IX86_BUILTIN_UCOMIEQSS, EQ, 0 },
+ { MASK_SSE, CODE_FOR_sse_ucomi, "__builtin_ia32_ucomilt", IX86_BUILTIN_UCOMILTSS, LT, 0 },
+ { MASK_SSE, CODE_FOR_sse_ucomi, "__builtin_ia32_ucomile", IX86_BUILTIN_UCOMILESS, LE, 0 },
+ { MASK_SSE, CODE_FOR_sse_ucomi, "__builtin_ia32_ucomigt", IX86_BUILTIN_UCOMIGTSS, LT, 1 },
+ { MASK_SSE, CODE_FOR_sse_ucomi, "__builtin_ia32_ucomige", IX86_BUILTIN_UCOMIGESS, LE, 1 },
+ { MASK_SSE, CODE_FOR_sse_ucomi, "__builtin_ia32_ucomineq", IX86_BUILTIN_UCOMINEQSS, NE, 0 }
};
static const struct builtin_description bdesc_2arg[] =
{
/* SSE */
- { MASK_SSE1, CODE_FOR_addv4sf3, "__builtin_ia32_addps", IX86_BUILTIN_ADDPS, 0, 0 },
- { MASK_SSE1, CODE_FOR_subv4sf3, "__builtin_ia32_subps", IX86_BUILTIN_SUBPS, 0, 0 },
- { MASK_SSE1, CODE_FOR_mulv4sf3, "__builtin_ia32_mulps", IX86_BUILTIN_MULPS, 0, 0 },
- { MASK_SSE1, CODE_FOR_divv4sf3, "__builtin_ia32_divps", IX86_BUILTIN_DIVPS, 0, 0 },
- { MASK_SSE1, CODE_FOR_vmaddv4sf3, "__builtin_ia32_addss", IX86_BUILTIN_ADDSS, 0, 0 },
- { MASK_SSE1, CODE_FOR_vmsubv4sf3, "__builtin_ia32_subss", IX86_BUILTIN_SUBSS, 0, 0 },
- { MASK_SSE1, CODE_FOR_vmmulv4sf3, "__builtin_ia32_mulss", IX86_BUILTIN_MULSS, 0, 0 },
- { MASK_SSE1, CODE_FOR_vmdivv4sf3, "__builtin_ia32_divss", IX86_BUILTIN_DIVSS, 0, 0 },
-
- { MASK_SSE1, CODE_FOR_maskcmpv4sf3, "__builtin_ia32_cmpeqps", IX86_BUILTIN_CMPEQPS, EQ, 0 },
- { MASK_SSE1, CODE_FOR_maskcmpv4sf3, "__builtin_ia32_cmpltps", IX86_BUILTIN_CMPLTPS, LT, 0 },
- { MASK_SSE1, CODE_FOR_maskcmpv4sf3, "__builtin_ia32_cmpleps", IX86_BUILTIN_CMPLEPS, LE, 0 },
- { MASK_SSE1, CODE_FOR_maskcmpv4sf3, "__builtin_ia32_cmpgtps", IX86_BUILTIN_CMPGTPS, LT, 1 },
- { MASK_SSE1, CODE_FOR_maskcmpv4sf3, "__builtin_ia32_cmpgeps", IX86_BUILTIN_CMPGEPS, LE, 1 },
- { MASK_SSE1, CODE_FOR_maskcmpv4sf3, "__builtin_ia32_cmpunordps", IX86_BUILTIN_CMPUNORDPS, UNORDERED, 0 },
- { MASK_SSE1, CODE_FOR_maskncmpv4sf3, "__builtin_ia32_cmpneqps", IX86_BUILTIN_CMPNEQPS, EQ, 0 },
- { MASK_SSE1, CODE_FOR_maskncmpv4sf3, "__builtin_ia32_cmpnltps", IX86_BUILTIN_CMPNLTPS, LT, 0 },
- { MASK_SSE1, CODE_FOR_maskncmpv4sf3, "__builtin_ia32_cmpnleps", IX86_BUILTIN_CMPNLEPS, LE, 0 },
- { MASK_SSE1, CODE_FOR_maskncmpv4sf3, "__builtin_ia32_cmpngtps", IX86_BUILTIN_CMPNGTPS, LT, 1 },
- { MASK_SSE1, CODE_FOR_maskncmpv4sf3, "__builtin_ia32_cmpngeps", IX86_BUILTIN_CMPNGEPS, LE, 1 },
- { MASK_SSE1, CODE_FOR_maskncmpv4sf3, "__builtin_ia32_cmpordps", IX86_BUILTIN_CMPORDPS, UNORDERED, 0 },
- { MASK_SSE1, CODE_FOR_vmmaskcmpv4sf3, "__builtin_ia32_cmpeqss", IX86_BUILTIN_CMPEQSS, EQ, 0 },
- { MASK_SSE1, CODE_FOR_vmmaskcmpv4sf3, "__builtin_ia32_cmpltss", IX86_BUILTIN_CMPLTSS, LT, 0 },
- { MASK_SSE1, CODE_FOR_vmmaskcmpv4sf3, "__builtin_ia32_cmpless", IX86_BUILTIN_CMPLESS, LE, 0 },
- { MASK_SSE1, CODE_FOR_vmmaskcmpv4sf3, "__builtin_ia32_cmpunordss", IX86_BUILTIN_CMPUNORDSS, UNORDERED, 0 },
- { MASK_SSE1, CODE_FOR_vmmaskncmpv4sf3, "__builtin_ia32_cmpneqss", IX86_BUILTIN_CMPNEQSS, EQ, 0 },
- { MASK_SSE1, CODE_FOR_vmmaskncmpv4sf3, "__builtin_ia32_cmpnltss", IX86_BUILTIN_CMPNLTSS, LT, 0 },
- { MASK_SSE1, CODE_FOR_vmmaskncmpv4sf3, "__builtin_ia32_cmpnless", IX86_BUILTIN_CMPNLESS, LE, 0 },
- { MASK_SSE1, CODE_FOR_vmmaskncmpv4sf3, "__builtin_ia32_cmpordss", IX86_BUILTIN_CMPORDSS, UNORDERED, 0 },
-
- { MASK_SSE1, CODE_FOR_sminv4sf3, "__builtin_ia32_minps", IX86_BUILTIN_MINPS, 0, 0 },
- { MASK_SSE1, CODE_FOR_smaxv4sf3, "__builtin_ia32_maxps", IX86_BUILTIN_MAXPS, 0, 0 },
- { MASK_SSE1, CODE_FOR_vmsminv4sf3, "__builtin_ia32_minss", IX86_BUILTIN_MINSS, 0, 0 },
- { MASK_SSE1, CODE_FOR_vmsmaxv4sf3, "__builtin_ia32_maxss", IX86_BUILTIN_MAXSS, 0, 0 },
-
- { MASK_SSE1, CODE_FOR_sse_andv4sf3, "__builtin_ia32_andps", IX86_BUILTIN_ANDPS, 0, 0 },
- { MASK_SSE1, CODE_FOR_sse_nandv4sf3, "__builtin_ia32_andnps", IX86_BUILTIN_ANDNPS, 0, 0 },
- { MASK_SSE1, CODE_FOR_sse_iorv4sf3, "__builtin_ia32_orps", IX86_BUILTIN_ORPS, 0, 0 },
- { MASK_SSE1, CODE_FOR_sse_xorv4sf3, "__builtin_ia32_xorps", IX86_BUILTIN_XORPS, 0, 0 },
-
- { MASK_SSE1, CODE_FOR_sse_movss, "__builtin_ia32_movss", IX86_BUILTIN_MOVSS, 0, 0 },
- { MASK_SSE1, CODE_FOR_sse_movhlps, "__builtin_ia32_movhlps", IX86_BUILTIN_MOVHLPS, 0, 0 },
- { MASK_SSE1, CODE_FOR_sse_movlhps, "__builtin_ia32_movlhps", IX86_BUILTIN_MOVLHPS, 0, 0 },
- { MASK_SSE1, CODE_FOR_sse_unpckhps, "__builtin_ia32_unpckhps", IX86_BUILTIN_UNPCKHPS, 0, 0 },
- { MASK_SSE1, CODE_FOR_sse_unpcklps, "__builtin_ia32_unpcklps", IX86_BUILTIN_UNPCKLPS, 0, 0 },
+ { MASK_SSE, CODE_FOR_addv4sf3, "__builtin_ia32_addps", IX86_BUILTIN_ADDPS, 0, 0 },
+ { MASK_SSE, CODE_FOR_subv4sf3, "__builtin_ia32_subps", IX86_BUILTIN_SUBPS, 0, 0 },
+ { MASK_SSE, CODE_FOR_mulv4sf3, "__builtin_ia32_mulps", IX86_BUILTIN_MULPS, 0, 0 },
+ { MASK_SSE, CODE_FOR_divv4sf3, "__builtin_ia32_divps", IX86_BUILTIN_DIVPS, 0, 0 },
+ { MASK_SSE, CODE_FOR_vmaddv4sf3, "__builtin_ia32_addss", IX86_BUILTIN_ADDSS, 0, 0 },
+ { MASK_SSE, CODE_FOR_vmsubv4sf3, "__builtin_ia32_subss", IX86_BUILTIN_SUBSS, 0, 0 },
+ { MASK_SSE, CODE_FOR_vmmulv4sf3, "__builtin_ia32_mulss", IX86_BUILTIN_MULSS, 0, 0 },
+ { MASK_SSE, CODE_FOR_vmdivv4sf3, "__builtin_ia32_divss", IX86_BUILTIN_DIVSS, 0, 0 },
+
+ { MASK_SSE, CODE_FOR_maskcmpv4sf3, "__builtin_ia32_cmpeqps", IX86_BUILTIN_CMPEQPS, EQ, 0 },
+ { MASK_SSE, CODE_FOR_maskcmpv4sf3, "__builtin_ia32_cmpltps", IX86_BUILTIN_CMPLTPS, LT, 0 },
+ { MASK_SSE, CODE_FOR_maskcmpv4sf3, "__builtin_ia32_cmpleps", IX86_BUILTIN_CMPLEPS, LE, 0 },
+ { MASK_SSE, CODE_FOR_maskcmpv4sf3, "__builtin_ia32_cmpgtps", IX86_BUILTIN_CMPGTPS, LT, 1 },
+ { MASK_SSE, CODE_FOR_maskcmpv4sf3, "__builtin_ia32_cmpgeps", IX86_BUILTIN_CMPGEPS, LE, 1 },
+ { MASK_SSE, CODE_FOR_maskcmpv4sf3, "__builtin_ia32_cmpunordps", IX86_BUILTIN_CMPUNORDPS, UNORDERED, 0 },
+ { MASK_SSE, CODE_FOR_maskncmpv4sf3, "__builtin_ia32_cmpneqps", IX86_BUILTIN_CMPNEQPS, EQ, 0 },
+ { MASK_SSE, CODE_FOR_maskncmpv4sf3, "__builtin_ia32_cmpnltps", IX86_BUILTIN_CMPNLTPS, LT, 0 },
+ { MASK_SSE, CODE_FOR_maskncmpv4sf3, "__builtin_ia32_cmpnleps", IX86_BUILTIN_CMPNLEPS, LE, 0 },
+ { MASK_SSE, CODE_FOR_maskncmpv4sf3, "__builtin_ia32_cmpngtps", IX86_BUILTIN_CMPNGTPS, LT, 1 },
+ { MASK_SSE, CODE_FOR_maskncmpv4sf3, "__builtin_ia32_cmpngeps", IX86_BUILTIN_CMPNGEPS, LE, 1 },
+ { MASK_SSE, CODE_FOR_maskncmpv4sf3, "__builtin_ia32_cmpordps", IX86_BUILTIN_CMPORDPS, UNORDERED, 0 },
+ { MASK_SSE, CODE_FOR_vmmaskcmpv4sf3, "__builtin_ia32_cmpeqss", IX86_BUILTIN_CMPEQSS, EQ, 0 },
+ { MASK_SSE, CODE_FOR_vmmaskcmpv4sf3, "__builtin_ia32_cmpltss", IX86_BUILTIN_CMPLTSS, LT, 0 },
+ { MASK_SSE, CODE_FOR_vmmaskcmpv4sf3, "__builtin_ia32_cmpless", IX86_BUILTIN_CMPLESS, LE, 0 },
+ { MASK_SSE, CODE_FOR_vmmaskcmpv4sf3, "__builtin_ia32_cmpunordss", IX86_BUILTIN_CMPUNORDSS, UNORDERED, 0 },
+ { MASK_SSE, CODE_FOR_vmmaskncmpv4sf3, "__builtin_ia32_cmpneqss", IX86_BUILTIN_CMPNEQSS, EQ, 0 },
+ { MASK_SSE, CODE_FOR_vmmaskncmpv4sf3, "__builtin_ia32_cmpnltss", IX86_BUILTIN_CMPNLTSS, LT, 0 },
+ { MASK_SSE, CODE_FOR_vmmaskncmpv4sf3, "__builtin_ia32_cmpnless", IX86_BUILTIN_CMPNLESS, LE, 0 },
+ { MASK_SSE, CODE_FOR_vmmaskncmpv4sf3, "__builtin_ia32_cmpordss", IX86_BUILTIN_CMPORDSS, UNORDERED, 0 },
+
+ { MASK_SSE, CODE_FOR_sminv4sf3, "__builtin_ia32_minps", IX86_BUILTIN_MINPS, 0, 0 },
+ { MASK_SSE, CODE_FOR_smaxv4sf3, "__builtin_ia32_maxps", IX86_BUILTIN_MAXPS, 0, 0 },
+ { MASK_SSE, CODE_FOR_vmsminv4sf3, "__builtin_ia32_minss", IX86_BUILTIN_MINSS, 0, 0 },
+ { MASK_SSE, CODE_FOR_vmsmaxv4sf3, "__builtin_ia32_maxss", IX86_BUILTIN_MAXSS, 0, 0 },
+
+ { MASK_SSE, CODE_FOR_sse_movss, "__builtin_ia32_movss", IX86_BUILTIN_MOVSS, 0, 0 },
+ { MASK_SSE, CODE_FOR_sse_movhlps, "__builtin_ia32_movhlps", IX86_BUILTIN_MOVHLPS, 0, 0 },
+ { MASK_SSE, CODE_FOR_sse_movlhps, "__builtin_ia32_movlhps", IX86_BUILTIN_MOVLHPS, 0, 0 },
+ { MASK_SSE, CODE_FOR_sse_unpckhps, "__builtin_ia32_unpckhps", IX86_BUILTIN_UNPCKHPS, 0, 0 },
+ { MASK_SSE, CODE_FOR_sse_unpcklps, "__builtin_ia32_unpcklps", IX86_BUILTIN_UNPCKLPS, 0, 0 },
/* MMX */
{ MASK_MMX, CODE_FOR_addv8qi3, "__builtin_ia32_paddb", IX86_BUILTIN_PADDB, 0, 0 },
{ MASK_MMX, CODE_FOR_addv4hi3, "__builtin_ia32_paddw", IX86_BUILTIN_PADDW, 0, 0 },
{ MASK_MMX, CODE_FOR_addv2si3, "__builtin_ia32_paddd", IX86_BUILTIN_PADDD, 0, 0 },
- { MASK_MMX, CODE_FOR_mmx_adddi3, "__builtin_ia32_paddq", IX86_BUILTIN_PADDQ, 0, 0 },
{ MASK_MMX, CODE_FOR_subv8qi3, "__builtin_ia32_psubb", IX86_BUILTIN_PSUBB, 0, 0 },
{ MASK_MMX, CODE_FOR_subv4hi3, "__builtin_ia32_psubw", IX86_BUILTIN_PSUBW, 0, 0 },
{ MASK_MMX, CODE_FOR_subv2si3, "__builtin_ia32_psubd", IX86_BUILTIN_PSUBD, 0, 0 },
- { MASK_MMX, CODE_FOR_mmx_subdi3, "__builtin_ia32_psubq", IX86_BUILTIN_PSUBQ, 0, 0 },
{ MASK_MMX, CODE_FOR_ssaddv8qi3, "__builtin_ia32_paddsb", IX86_BUILTIN_PADDSB, 0, 0 },
{ MASK_MMX, CODE_FOR_ssaddv4hi3, "__builtin_ia32_paddsw", IX86_BUILTIN_PADDSW, 0, 0 },
@@ -12169,15 +11022,15 @@ static const struct builtin_description bdesc_2arg[] =
{ MASK_MMX, CODE_FOR_mulv4hi3, "__builtin_ia32_pmullw", IX86_BUILTIN_PMULLW, 0, 0 },
{ MASK_MMX, CODE_FOR_smulv4hi3_highpart, "__builtin_ia32_pmulhw", IX86_BUILTIN_PMULHW, 0, 0 },
- { MASK_SSE1 | MASK_3DNOW_A, CODE_FOR_umulv4hi3_highpart, "__builtin_ia32_pmulhuw", IX86_BUILTIN_PMULHUW, 0, 0 },
+ { MASK_SSE | MASK_3DNOW_A, CODE_FOR_umulv4hi3_highpart, "__builtin_ia32_pmulhuw", IX86_BUILTIN_PMULHUW, 0, 0 },
{ MASK_MMX, CODE_FOR_mmx_anddi3, "__builtin_ia32_pand", IX86_BUILTIN_PAND, 0, 0 },
{ MASK_MMX, CODE_FOR_mmx_nanddi3, "__builtin_ia32_pandn", IX86_BUILTIN_PANDN, 0, 0 },
{ MASK_MMX, CODE_FOR_mmx_iordi3, "__builtin_ia32_por", IX86_BUILTIN_POR, 0, 0 },
{ MASK_MMX, CODE_FOR_mmx_xordi3, "__builtin_ia32_pxor", IX86_BUILTIN_PXOR, 0, 0 },
- { MASK_SSE1 | MASK_3DNOW_A, CODE_FOR_mmx_uavgv8qi3, "__builtin_ia32_pavgb", IX86_BUILTIN_PAVGB, 0, 0 },
- { MASK_SSE1 | MASK_3DNOW_A, CODE_FOR_mmx_uavgv4hi3, "__builtin_ia32_pavgw", IX86_BUILTIN_PAVGW, 0, 0 },
+ { MASK_SSE | MASK_3DNOW_A, CODE_FOR_mmx_uavgv8qi3, "__builtin_ia32_pavgb", IX86_BUILTIN_PAVGB, 0, 0 },
+ { MASK_SSE | MASK_3DNOW_A, CODE_FOR_mmx_uavgv4hi3, "__builtin_ia32_pavgw", IX86_BUILTIN_PAVGW, 0, 0 },
{ MASK_MMX, CODE_FOR_eqv8qi3, "__builtin_ia32_pcmpeqb", IX86_BUILTIN_PCMPEQB, 0, 0 },
{ MASK_MMX, CODE_FOR_eqv4hi3, "__builtin_ia32_pcmpeqw", IX86_BUILTIN_PCMPEQW, 0, 0 },
@@ -12186,10 +11039,10 @@ static const struct builtin_description bdesc_2arg[] =
{ MASK_MMX, CODE_FOR_gtv4hi3, "__builtin_ia32_pcmpgtw", IX86_BUILTIN_PCMPGTW, 0, 0 },
{ MASK_MMX, CODE_FOR_gtv2si3, "__builtin_ia32_pcmpgtd", IX86_BUILTIN_PCMPGTD, 0, 0 },
- { MASK_SSE1 | MASK_3DNOW_A, CODE_FOR_umaxv8qi3, "__builtin_ia32_pmaxub", IX86_BUILTIN_PMAXUB, 0, 0 },
- { MASK_SSE1 | MASK_3DNOW_A, CODE_FOR_smaxv4hi3, "__builtin_ia32_pmaxsw", IX86_BUILTIN_PMAXSW, 0, 0 },
- { MASK_SSE1 | MASK_3DNOW_A, CODE_FOR_uminv8qi3, "__builtin_ia32_pminub", IX86_BUILTIN_PMINUB, 0, 0 },
- { MASK_SSE1 | MASK_3DNOW_A, CODE_FOR_sminv4hi3, "__builtin_ia32_pminsw", IX86_BUILTIN_PMINSW, 0, 0 },
+ { MASK_SSE | MASK_3DNOW_A, CODE_FOR_umaxv8qi3, "__builtin_ia32_pmaxub", IX86_BUILTIN_PMAXUB, 0, 0 },
+ { MASK_SSE | MASK_3DNOW_A, CODE_FOR_smaxv4hi3, "__builtin_ia32_pmaxsw", IX86_BUILTIN_PMAXSW, 0, 0 },
+ { MASK_SSE | MASK_3DNOW_A, CODE_FOR_uminv8qi3, "__builtin_ia32_pminub", IX86_BUILTIN_PMINUB, 0, 0 },
+ { MASK_SSE | MASK_3DNOW_A, CODE_FOR_sminv4hi3, "__builtin_ia32_pminsw", IX86_BUILTIN_PMINSW, 0, 0 },
{ MASK_MMX, CODE_FOR_mmx_punpckhbw, "__builtin_ia32_punpckhbw", IX86_BUILTIN_PUNPCKHBW, 0, 0 },
{ MASK_MMX, CODE_FOR_mmx_punpckhwd, "__builtin_ia32_punpckhwd", IX86_BUILTIN_PUNPCKHWD, 0, 0 },
@@ -12203,9 +11056,8 @@ static const struct builtin_description bdesc_2arg[] =
{ MASK_MMX, CODE_FOR_mmx_packssdw, 0, IX86_BUILTIN_PACKSSDW, 0, 0 },
{ MASK_MMX, CODE_FOR_mmx_packuswb, 0, IX86_BUILTIN_PACKUSWB, 0, 0 },
- { MASK_SSE1, CODE_FOR_cvtpi2ps, 0, IX86_BUILTIN_CVTPI2PS, 0, 0 },
- { MASK_SSE1, CODE_FOR_cvtsi2ss, 0, IX86_BUILTIN_CVTSI2SS, 0, 0 },
- { MASK_SSE164, CODE_FOR_cvtsi2ssq, 0, IX86_BUILTIN_CVTSI642SS, 0, 0 },
+ { MASK_SSE, CODE_FOR_cvtpi2ps, 0, IX86_BUILTIN_CVTPI2PS, 0, 0 },
+ { MASK_SSE, CODE_FOR_cvtsi2ss, 0, IX86_BUILTIN_CVTSI2SS, 0, 0 },
{ MASK_MMX, CODE_FOR_ashlv4hi3, 0, IX86_BUILTIN_PSLLW, 0, 0 },
{ MASK_MMX, CODE_FOR_ashlv4hi3, 0, IX86_BUILTIN_PSLLWI, 0, 0 },
@@ -12226,185 +11078,25 @@ static const struct builtin_description bdesc_2arg[] =
{ MASK_MMX, CODE_FOR_ashrv2si3, 0, IX86_BUILTIN_PSRAD, 0, 0 },
{ MASK_MMX, CODE_FOR_ashrv2si3, 0, IX86_BUILTIN_PSRADI, 0, 0 },
- { MASK_SSE1 | MASK_3DNOW_A, CODE_FOR_mmx_psadbw, 0, IX86_BUILTIN_PSADBW, 0, 0 },
- { MASK_MMX, CODE_FOR_mmx_pmaddwd, 0, IX86_BUILTIN_PMADDWD, 0, 0 },
-
- /* SSE2 */
- { MASK_SSE2, CODE_FOR_addv2df3, "__builtin_ia32_addpd", IX86_BUILTIN_ADDPD, 0, 0 },
- { MASK_SSE2, CODE_FOR_subv2df3, "__builtin_ia32_subpd", IX86_BUILTIN_SUBPD, 0, 0 },
- { MASK_SSE2, CODE_FOR_mulv2df3, "__builtin_ia32_mulpd", IX86_BUILTIN_MULPD, 0, 0 },
- { MASK_SSE2, CODE_FOR_divv2df3, "__builtin_ia32_divpd", IX86_BUILTIN_DIVPD, 0, 0 },
- { MASK_SSE2, CODE_FOR_vmaddv2df3, "__builtin_ia32_addsd", IX86_BUILTIN_ADDSD, 0, 0 },
- { MASK_SSE2, CODE_FOR_vmsubv2df3, "__builtin_ia32_subsd", IX86_BUILTIN_SUBSD, 0, 0 },
- { MASK_SSE2, CODE_FOR_vmmulv2df3, "__builtin_ia32_mulsd", IX86_BUILTIN_MULSD, 0, 0 },
- { MASK_SSE2, CODE_FOR_vmdivv2df3, "__builtin_ia32_divsd", IX86_BUILTIN_DIVSD, 0, 0 },
-
- { MASK_SSE2, CODE_FOR_maskcmpv2df3, "__builtin_ia32_cmpeqpd", IX86_BUILTIN_CMPEQPD, EQ, 0 },
- { MASK_SSE2, CODE_FOR_maskcmpv2df3, "__builtin_ia32_cmpltpd", IX86_BUILTIN_CMPLTPD, LT, 0 },
- { MASK_SSE2, CODE_FOR_maskcmpv2df3, "__builtin_ia32_cmplepd", IX86_BUILTIN_CMPLEPD, LE, 0 },
- { MASK_SSE2, CODE_FOR_maskcmpv2df3, "__builtin_ia32_cmpgtpd", IX86_BUILTIN_CMPGTPD, LT, 1 },
- { MASK_SSE2, CODE_FOR_maskcmpv2df3, "__builtin_ia32_cmpgepd", IX86_BUILTIN_CMPGEPD, LE, 1 },
- { MASK_SSE2, CODE_FOR_maskcmpv2df3, "__builtin_ia32_cmpunordpd", IX86_BUILTIN_CMPUNORDPD, UNORDERED, 0 },
- { MASK_SSE2, CODE_FOR_maskncmpv2df3, "__builtin_ia32_cmpneqpd", IX86_BUILTIN_CMPNEQPD, EQ, 0 },
- { MASK_SSE2, CODE_FOR_maskncmpv2df3, "__builtin_ia32_cmpnltpd", IX86_BUILTIN_CMPNLTPD, LT, 0 },
- { MASK_SSE2, CODE_FOR_maskncmpv2df3, "__builtin_ia32_cmpnlepd", IX86_BUILTIN_CMPNLEPD, LE, 0 },
- { MASK_SSE2, CODE_FOR_maskncmpv2df3, "__builtin_ia32_cmpngtpd", IX86_BUILTIN_CMPNGTPD, LT, 1 },
- { MASK_SSE2, CODE_FOR_maskncmpv2df3, "__builtin_ia32_cmpngepd", IX86_BUILTIN_CMPNGEPD, LE, 1 },
- { MASK_SSE2, CODE_FOR_maskncmpv2df3, "__builtin_ia32_cmpordpd", IX86_BUILTIN_CMPORDPD, UNORDERED, 0 },
- { MASK_SSE2, CODE_FOR_vmmaskcmpv2df3, "__builtin_ia32_cmpeqsd", IX86_BUILTIN_CMPEQSD, EQ, 0 },
- { MASK_SSE2, CODE_FOR_vmmaskcmpv2df3, "__builtin_ia32_cmpltsd", IX86_BUILTIN_CMPLTSD, LT, 0 },
- { MASK_SSE2, CODE_FOR_vmmaskcmpv2df3, "__builtin_ia32_cmplesd", IX86_BUILTIN_CMPLESD, LE, 0 },
- { MASK_SSE2, CODE_FOR_vmmaskcmpv2df3, "__builtin_ia32_cmpunordsd", IX86_BUILTIN_CMPUNORDSD, UNORDERED, 0 },
- { MASK_SSE2, CODE_FOR_vmmaskncmpv2df3, "__builtin_ia32_cmpneqsd", IX86_BUILTIN_CMPNEQSD, EQ, 0 },
- { MASK_SSE2, CODE_FOR_vmmaskncmpv2df3, "__builtin_ia32_cmpnltsd", IX86_BUILTIN_CMPNLTSD, LT, 0 },
- { MASK_SSE2, CODE_FOR_vmmaskncmpv2df3, "__builtin_ia32_cmpnlesd", IX86_BUILTIN_CMPNLESD, LE, 0 },
- { MASK_SSE2, CODE_FOR_vmmaskncmpv2df3, "__builtin_ia32_cmpordsd", IX86_BUILTIN_CMPORDSD, UNORDERED, 0 },
-
- { MASK_SSE2, CODE_FOR_sminv2df3, "__builtin_ia32_minpd", IX86_BUILTIN_MINPD, 0, 0 },
- { MASK_SSE2, CODE_FOR_smaxv2df3, "__builtin_ia32_maxpd", IX86_BUILTIN_MAXPD, 0, 0 },
- { MASK_SSE2, CODE_FOR_vmsminv2df3, "__builtin_ia32_minsd", IX86_BUILTIN_MINSD, 0, 0 },
- { MASK_SSE2, CODE_FOR_vmsmaxv2df3, "__builtin_ia32_maxsd", IX86_BUILTIN_MAXSD, 0, 0 },
-
- { MASK_SSE2, CODE_FOR_sse2_andv2df3, "__builtin_ia32_andpd", IX86_BUILTIN_ANDPD, 0, 0 },
- { MASK_SSE2, CODE_FOR_sse2_nandv2df3, "__builtin_ia32_andnpd", IX86_BUILTIN_ANDNPD, 0, 0 },
- { MASK_SSE2, CODE_FOR_sse2_iorv2df3, "__builtin_ia32_orpd", IX86_BUILTIN_ORPD, 0, 0 },
- { MASK_SSE2, CODE_FOR_sse2_xorv2df3, "__builtin_ia32_xorpd", IX86_BUILTIN_XORPD, 0, 0 },
-
- { MASK_SSE2, CODE_FOR_sse2_movsd, "__builtin_ia32_movsd", IX86_BUILTIN_MOVSD, 0, 0 },
- { MASK_SSE2, CODE_FOR_sse2_unpckhpd, "__builtin_ia32_unpckhpd", IX86_BUILTIN_UNPCKHPD, 0, 0 },
- { MASK_SSE2, CODE_FOR_sse2_unpcklpd, "__builtin_ia32_unpcklpd", IX86_BUILTIN_UNPCKLPD, 0, 0 },
-
- /* SSE2 MMX */
- { MASK_SSE2, CODE_FOR_addv16qi3, "__builtin_ia32_paddb128", IX86_BUILTIN_PADDB128, 0, 0 },
- { MASK_SSE2, CODE_FOR_addv8hi3, "__builtin_ia32_paddw128", IX86_BUILTIN_PADDW128, 0, 0 },
- { MASK_SSE2, CODE_FOR_addv4si3, "__builtin_ia32_paddd128", IX86_BUILTIN_PADDD128, 0, 0 },
- { MASK_SSE2, CODE_FOR_addv2di3, "__builtin_ia32_paddq128", IX86_BUILTIN_PADDQ128, 0, 0 },
- { MASK_SSE2, CODE_FOR_subv16qi3, "__builtin_ia32_psubb128", IX86_BUILTIN_PSUBB128, 0, 0 },
- { MASK_SSE2, CODE_FOR_subv8hi3, "__builtin_ia32_psubw128", IX86_BUILTIN_PSUBW128, 0, 0 },
- { MASK_SSE2, CODE_FOR_subv4si3, "__builtin_ia32_psubd128", IX86_BUILTIN_PSUBD128, 0, 0 },
- { MASK_SSE2, CODE_FOR_subv2di3, "__builtin_ia32_psubq128", IX86_BUILTIN_PSUBQ128, 0, 0 },
-
- { MASK_MMX, CODE_FOR_ssaddv16qi3, "__builtin_ia32_paddsb128", IX86_BUILTIN_PADDSB128, 0, 0 },
- { MASK_MMX, CODE_FOR_ssaddv8hi3, "__builtin_ia32_paddsw128", IX86_BUILTIN_PADDSW128, 0, 0 },
- { MASK_MMX, CODE_FOR_sssubv16qi3, "__builtin_ia32_psubsb128", IX86_BUILTIN_PSUBSB128, 0, 0 },
- { MASK_MMX, CODE_FOR_sssubv8hi3, "__builtin_ia32_psubsw128", IX86_BUILTIN_PSUBSW128, 0, 0 },
- { MASK_MMX, CODE_FOR_usaddv16qi3, "__builtin_ia32_paddusb128", IX86_BUILTIN_PADDUSB128, 0, 0 },
- { MASK_MMX, CODE_FOR_usaddv8hi3, "__builtin_ia32_paddusw128", IX86_BUILTIN_PADDUSW128, 0, 0 },
- { MASK_MMX, CODE_FOR_ussubv16qi3, "__builtin_ia32_psubusb128", IX86_BUILTIN_PSUBUSB128, 0, 0 },
- { MASK_MMX, CODE_FOR_ussubv8hi3, "__builtin_ia32_psubusw128", IX86_BUILTIN_PSUBUSW128, 0, 0 },
-
- { MASK_SSE2, CODE_FOR_mulv8hi3, "__builtin_ia32_pmullw128", IX86_BUILTIN_PMULLW128, 0, 0 },
- { MASK_SSE2, CODE_FOR_smulv8hi3_highpart, "__builtin_ia32_pmulhw128", IX86_BUILTIN_PMULHW128, 0, 0 },
- { MASK_SSE2, CODE_FOR_sse2_umulsidi3, "__builtin_ia32_pmuludq", IX86_BUILTIN_PMULUDQ, 0, 0 },
- { MASK_SSE2, CODE_FOR_sse2_umulv2siv2di3, "__builtin_ia32_pmuludq128", IX86_BUILTIN_PMULUDQ128, 0, 0 },
-
- { MASK_SSE2, CODE_FOR_sse2_andv2di3, "__builtin_ia32_pand128", IX86_BUILTIN_PAND128, 0, 0 },
- { MASK_SSE2, CODE_FOR_sse2_nandv2di3, "__builtin_ia32_pandn128", IX86_BUILTIN_PANDN128, 0, 0 },
- { MASK_SSE2, CODE_FOR_sse2_iorv2di3, "__builtin_ia32_por128", IX86_BUILTIN_POR128, 0, 0 },
- { MASK_SSE2, CODE_FOR_sse2_xorv2di3, "__builtin_ia32_pxor128", IX86_BUILTIN_PXOR128, 0, 0 },
-
- { MASK_SSE2, CODE_FOR_sse2_uavgv16qi3, "__builtin_ia32_pavgb128", IX86_BUILTIN_PAVGB128, 0, 0 },
- { MASK_SSE2, CODE_FOR_sse2_uavgv8hi3, "__builtin_ia32_pavgw128", IX86_BUILTIN_PAVGW128, 0, 0 },
-
- { MASK_SSE2, CODE_FOR_eqv16qi3, "__builtin_ia32_pcmpeqb128", IX86_BUILTIN_PCMPEQB128, 0, 0 },
- { MASK_SSE2, CODE_FOR_eqv8hi3, "__builtin_ia32_pcmpeqw128", IX86_BUILTIN_PCMPEQW128, 0, 0 },
- { MASK_SSE2, CODE_FOR_eqv4si3, "__builtin_ia32_pcmpeqd128", IX86_BUILTIN_PCMPEQD128, 0, 0 },
- { MASK_SSE2, CODE_FOR_gtv16qi3, "__builtin_ia32_pcmpgtb128", IX86_BUILTIN_PCMPGTB128, 0, 0 },
- { MASK_SSE2, CODE_FOR_gtv8hi3, "__builtin_ia32_pcmpgtw128", IX86_BUILTIN_PCMPGTW128, 0, 0 },
- { MASK_SSE2, CODE_FOR_gtv4si3, "__builtin_ia32_pcmpgtd128", IX86_BUILTIN_PCMPGTD128, 0, 0 },
-
- { MASK_SSE2, CODE_FOR_umaxv16qi3, "__builtin_ia32_pmaxub128", IX86_BUILTIN_PMAXUB128, 0, 0 },
- { MASK_SSE2, CODE_FOR_smaxv8hi3, "__builtin_ia32_pmaxsw128", IX86_BUILTIN_PMAXSW128, 0, 0 },
- { MASK_SSE2, CODE_FOR_uminv16qi3, "__builtin_ia32_pminub128", IX86_BUILTIN_PMINUB128, 0, 0 },
- { MASK_SSE2, CODE_FOR_sminv8hi3, "__builtin_ia32_pminsw128", IX86_BUILTIN_PMINSW128, 0, 0 },
-
- { MASK_SSE2, CODE_FOR_sse2_punpckhbw, "__builtin_ia32_punpckhbw128", IX86_BUILTIN_PUNPCKHBW128, 0, 0 },
- { MASK_SSE2, CODE_FOR_sse2_punpckhwd, "__builtin_ia32_punpckhwd128", IX86_BUILTIN_PUNPCKHWD128, 0, 0 },
- { MASK_SSE2, CODE_FOR_sse2_punpckhdq, "__builtin_ia32_punpckhdq128", IX86_BUILTIN_PUNPCKHDQ128, 0, 0 },
- { MASK_SSE2, CODE_FOR_sse2_punpckhqdq, "__builtin_ia32_punpckhqdq128", IX86_BUILTIN_PUNPCKHQDQ128, 0, 0 },
- { MASK_SSE2, CODE_FOR_sse2_punpcklbw, "__builtin_ia32_punpcklbw128", IX86_BUILTIN_PUNPCKLBW128, 0, 0 },
- { MASK_SSE2, CODE_FOR_sse2_punpcklwd, "__builtin_ia32_punpcklwd128", IX86_BUILTIN_PUNPCKLWD128, 0, 0 },
- { MASK_SSE2, CODE_FOR_sse2_punpckldq, "__builtin_ia32_punpckldq128", IX86_BUILTIN_PUNPCKLDQ128, 0, 0 },
- { MASK_SSE2, CODE_FOR_sse2_punpcklqdq, "__builtin_ia32_punpcklqdq128", IX86_BUILTIN_PUNPCKLQDQ128, 0, 0 },
-
- { MASK_SSE2, CODE_FOR_sse2_packsswb, "__builtin_ia32_packsswb128", IX86_BUILTIN_PACKSSWB128, 0, 0 },
- { MASK_SSE2, CODE_FOR_sse2_packssdw, "__builtin_ia32_packssdw128", IX86_BUILTIN_PACKSSDW128, 0, 0 },
- { MASK_SSE2, CODE_FOR_sse2_packuswb, "__builtin_ia32_packuswb128", IX86_BUILTIN_PACKUSWB128, 0, 0 },
-
- { MASK_SSE2, CODE_FOR_umulv8hi3_highpart, "__builtin_ia32_pmulhuw128", IX86_BUILTIN_PMULHUW128, 0, 0 },
- { MASK_SSE2, CODE_FOR_sse2_psadbw, 0, IX86_BUILTIN_PSADBW128, 0, 0 },
-
- { MASK_SSE2, CODE_FOR_ashlv8hi3_ti, 0, IX86_BUILTIN_PSLLW128, 0, 0 },
- { MASK_SSE2, CODE_FOR_ashlv8hi3, 0, IX86_BUILTIN_PSLLWI128, 0, 0 },
- { MASK_SSE2, CODE_FOR_ashlv4si3_ti, 0, IX86_BUILTIN_PSLLD128, 0, 0 },
- { MASK_SSE2, CODE_FOR_ashlv4si3, 0, IX86_BUILTIN_PSLLDI128, 0, 0 },
- { MASK_SSE2, CODE_FOR_ashlv2di3_ti, 0, IX86_BUILTIN_PSLLQ128, 0, 0 },
- { MASK_SSE2, CODE_FOR_ashlv2di3, 0, IX86_BUILTIN_PSLLQI128, 0, 0 },
-
- { MASK_SSE2, CODE_FOR_lshrv8hi3_ti, 0, IX86_BUILTIN_PSRLW128, 0, 0 },
- { MASK_SSE2, CODE_FOR_lshrv8hi3, 0, IX86_BUILTIN_PSRLWI128, 0, 0 },
- { MASK_SSE2, CODE_FOR_lshrv4si3_ti, 0, IX86_BUILTIN_PSRLD128, 0, 0 },
- { MASK_SSE2, CODE_FOR_lshrv4si3, 0, IX86_BUILTIN_PSRLDI128, 0, 0 },
- { MASK_SSE2, CODE_FOR_lshrv2di3_ti, 0, IX86_BUILTIN_PSRLQ128, 0, 0 },
- { MASK_SSE2, CODE_FOR_lshrv2di3, 0, IX86_BUILTIN_PSRLQI128, 0, 0 },
-
- { MASK_SSE2, CODE_FOR_ashrv8hi3_ti, 0, IX86_BUILTIN_PSRAW128, 0, 0 },
- { MASK_SSE2, CODE_FOR_ashrv8hi3, 0, IX86_BUILTIN_PSRAWI128, 0, 0 },
- { MASK_SSE2, CODE_FOR_ashrv4si3_ti, 0, IX86_BUILTIN_PSRAD128, 0, 0 },
- { MASK_SSE2, CODE_FOR_ashrv4si3, 0, IX86_BUILTIN_PSRADI128, 0, 0 },
-
- { MASK_SSE2, CODE_FOR_sse2_pmaddwd, 0, IX86_BUILTIN_PMADDWD128, 0, 0 },
-
- { MASK_SSE2, CODE_FOR_cvtsi2sd, 0, IX86_BUILTIN_CVTSI2SD, 0, 0 },
- { MASK_SSE264, CODE_FOR_cvtsi2sdq, 0, IX86_BUILTIN_CVTSI642SD, 0, 0 },
- { MASK_SSE2, CODE_FOR_cvtsd2ss, 0, IX86_BUILTIN_CVTSD2SS, 0, 0 },
- { MASK_SSE2, CODE_FOR_cvtss2sd, 0, IX86_BUILTIN_CVTSS2SD, 0, 0 }
+ { MASK_SSE | MASK_3DNOW_A, CODE_FOR_mmx_psadbw, 0, IX86_BUILTIN_PSADBW, 0, 0 },
+ { MASK_MMX, CODE_FOR_mmx_pmaddwd, 0, IX86_BUILTIN_PMADDWD, 0, 0 }
+
};
static const struct builtin_description bdesc_1arg[] =
{
- { MASK_SSE1 | MASK_3DNOW_A, CODE_FOR_mmx_pmovmskb, 0, IX86_BUILTIN_PMOVMSKB, 0, 0 },
- { MASK_SSE1, CODE_FOR_sse_movmskps, 0, IX86_BUILTIN_MOVMSKPS, 0, 0 },
-
- { MASK_SSE1, CODE_FOR_sqrtv4sf2, 0, IX86_BUILTIN_SQRTPS, 0, 0 },
- { MASK_SSE1, CODE_FOR_rsqrtv4sf2, 0, IX86_BUILTIN_RSQRTPS, 0, 0 },
- { MASK_SSE1, CODE_FOR_rcpv4sf2, 0, IX86_BUILTIN_RCPPS, 0, 0 },
+ { MASK_SSE | MASK_3DNOW_A, CODE_FOR_mmx_pmovmskb, 0, IX86_BUILTIN_PMOVMSKB, 0, 0 },
+ { MASK_SSE, CODE_FOR_sse_movmskps, 0, IX86_BUILTIN_MOVMSKPS, 0, 0 },
- { MASK_SSE1, CODE_FOR_cvtps2pi, 0, IX86_BUILTIN_CVTPS2PI, 0, 0 },
- { MASK_SSE1, CODE_FOR_cvtss2si, 0, IX86_BUILTIN_CVTSS2SI, 0, 0 },
- { MASK_SSE164, CODE_FOR_cvtss2siq, 0, IX86_BUILTIN_CVTSS2SI64, 0, 0 },
- { MASK_SSE1, CODE_FOR_cvttps2pi, 0, IX86_BUILTIN_CVTTPS2PI, 0, 0 },
- { MASK_SSE1, CODE_FOR_cvttss2si, 0, IX86_BUILTIN_CVTTSS2SI, 0, 0 },
- { MASK_SSE164, CODE_FOR_cvttss2siq, 0, IX86_BUILTIN_CVTTSS2SI64, 0, 0 },
+ { MASK_SSE, CODE_FOR_sqrtv4sf2, 0, IX86_BUILTIN_SQRTPS, 0, 0 },
+ { MASK_SSE, CODE_FOR_rsqrtv4sf2, 0, IX86_BUILTIN_RSQRTPS, 0, 0 },
+ { MASK_SSE, CODE_FOR_rcpv4sf2, 0, IX86_BUILTIN_RCPPS, 0, 0 },
- { MASK_SSE2, CODE_FOR_sse2_pmovmskb, 0, IX86_BUILTIN_PMOVMSKB128, 0, 0 },
- { MASK_SSE2, CODE_FOR_sse2_movmskpd, 0, IX86_BUILTIN_MOVMSKPD, 0, 0 },
- { MASK_SSE2, CODE_FOR_sse2_movq2dq, 0, IX86_BUILTIN_MOVQ2DQ, 0, 0 },
- { MASK_SSE2, CODE_FOR_sse2_movdq2q, 0, IX86_BUILTIN_MOVDQ2Q, 0, 0 },
+ { MASK_SSE, CODE_FOR_cvtps2pi, 0, IX86_BUILTIN_CVTPS2PI, 0, 0 },
+ { MASK_SSE, CODE_FOR_cvtss2si, 0, IX86_BUILTIN_CVTSS2SI, 0, 0 },
+ { MASK_SSE, CODE_FOR_cvttps2pi, 0, IX86_BUILTIN_CVTTPS2PI, 0, 0 },
+ { MASK_SSE, CODE_FOR_cvttss2si, 0, IX86_BUILTIN_CVTTSS2SI, 0, 0 }
- { MASK_SSE2, CODE_FOR_sqrtv2df2, 0, IX86_BUILTIN_SQRTPD, 0, 0 },
-
- { MASK_SSE2, CODE_FOR_cvtdq2pd, 0, IX86_BUILTIN_CVTDQ2PD, 0, 0 },
- { MASK_SSE2, CODE_FOR_cvtdq2ps, 0, IX86_BUILTIN_CVTDQ2PS, 0, 0 },
-
- { MASK_SSE2, CODE_FOR_cvtpd2dq, 0, IX86_BUILTIN_CVTPD2DQ, 0, 0 },
- { MASK_SSE2, CODE_FOR_cvtpd2pi, 0, IX86_BUILTIN_CVTPD2PI, 0, 0 },
- { MASK_SSE2, CODE_FOR_cvtpd2ps, 0, IX86_BUILTIN_CVTPD2PS, 0, 0 },
- { MASK_SSE2, CODE_FOR_cvttpd2dq, 0, IX86_BUILTIN_CVTTPD2DQ, 0, 0 },
- { MASK_SSE2, CODE_FOR_cvttpd2pi, 0, IX86_BUILTIN_CVTTPD2PI, 0, 0 },
-
- { MASK_SSE2, CODE_FOR_cvtpi2pd, 0, IX86_BUILTIN_CVTPI2PD, 0, 0 },
-
- { MASK_SSE2, CODE_FOR_cvtsd2si, 0, IX86_BUILTIN_CVTSD2SI, 0, 0 },
- { MASK_SSE2, CODE_FOR_cvttsd2si, 0, IX86_BUILTIN_CVTTSD2SI, 0, 0 },
- { MASK_SSE264, CODE_FOR_cvtsd2siq, 0, IX86_BUILTIN_CVTSD2SI64, 0, 0 },
- { MASK_SSE264, CODE_FOR_cvttsd2siq, 0, IX86_BUILTIN_CVTTSD2SI64, 0, 0 },
-
- { MASK_SSE2, CODE_FOR_cvtps2dq, 0, IX86_BUILTIN_CVTPS2DQ, 0, 0 },
- { MASK_SSE2, CODE_FOR_cvtps2pd, 0, IX86_BUILTIN_CVTPS2PD, 0, 0 },
- { MASK_SSE2, CODE_FOR_cvttps2dq, 0, IX86_BUILTIN_CVTTPS2DQ, 0, 0 },
-
- { MASK_SSE2, CODE_FOR_sse2_movq, 0, IX86_BUILTIN_MOVQ, 0, 0 }
};
void
@@ -12422,303 +11114,218 @@ ix86_init_mmx_sse_builtins ()
{
const struct builtin_description * d;
size_t i;
+ tree endlink = void_list_node;
tree pchar_type_node = build_pointer_type (char_type_node);
- tree pcchar_type_node = build_pointer_type (
- build_type_variant (char_type_node, 1, 0));
tree pfloat_type_node = build_pointer_type (float_type_node);
- tree pcfloat_type_node = build_pointer_type (
- build_type_variant (float_type_node, 1, 0));
tree pv2si_type_node = build_pointer_type (V2SI_type_node);
- tree pv2di_type_node = build_pointer_type (V2DI_type_node);
tree pdi_type_node = build_pointer_type (long_long_unsigned_type_node);
/* Comparisons. */
tree int_ftype_v4sf_v4sf
- = build_function_type_list (integer_type_node,
- V4SF_type_node, V4SF_type_node, NULL_TREE);
+ = build_function_type (integer_type_node,
+ tree_cons (NULL_TREE, V4SF_type_node,
+ tree_cons (NULL_TREE,
+ V4SF_type_node,
+ endlink)));
tree v4si_ftype_v4sf_v4sf
- = build_function_type_list (V4SI_type_node,
- V4SF_type_node, V4SF_type_node, NULL_TREE);
+ = build_function_type (V4SI_type_node,
+ tree_cons (NULL_TREE, V4SF_type_node,
+ tree_cons (NULL_TREE,
+ V4SF_type_node,
+ endlink)));
/* MMX/SSE/integer conversions. */
tree int_ftype_v4sf
- = build_function_type_list (integer_type_node,
- V4SF_type_node, NULL_TREE);
- tree int64_ftype_v4sf
- = build_function_type_list (long_long_integer_type_node,
- V4SF_type_node, NULL_TREE);
+ = build_function_type (integer_type_node,
+ tree_cons (NULL_TREE, V4SF_type_node,
+ endlink));
tree int_ftype_v8qi
- = build_function_type_list (integer_type_node, V8QI_type_node, NULL_TREE);
+ = build_function_type (integer_type_node,
+ tree_cons (NULL_TREE, V8QI_type_node,
+ endlink));
tree v4sf_ftype_v4sf_int
- = build_function_type_list (V4SF_type_node,
- V4SF_type_node, integer_type_node, NULL_TREE);
- tree v4sf_ftype_v4sf_int64
- = build_function_type_list (V4SF_type_node,
- V4SF_type_node, long_long_integer_type_node,
- NULL_TREE);
+ = build_function_type (V4SF_type_node,
+ tree_cons (NULL_TREE, V4SF_type_node,
+ tree_cons (NULL_TREE, integer_type_node,
+ endlink)));
tree v4sf_ftype_v4sf_v2si
- = build_function_type_list (V4SF_type_node,
- V4SF_type_node, V2SI_type_node, NULL_TREE);
+ = build_function_type (V4SF_type_node,
+ tree_cons (NULL_TREE, V4SF_type_node,
+ tree_cons (NULL_TREE, V2SI_type_node,
+ endlink)));
tree int_ftype_v4hi_int
- = build_function_type_list (integer_type_node,
- V4HI_type_node, integer_type_node, NULL_TREE);
+ = build_function_type (integer_type_node,
+ tree_cons (NULL_TREE, V4HI_type_node,
+ tree_cons (NULL_TREE, integer_type_node,
+ endlink)));
tree v4hi_ftype_v4hi_int_int
- = build_function_type_list (V4HI_type_node, V4HI_type_node,
- integer_type_node, integer_type_node,
- NULL_TREE);
+ = build_function_type (V4HI_type_node,
+ tree_cons (NULL_TREE, V4HI_type_node,
+ tree_cons (NULL_TREE, integer_type_node,
+ tree_cons (NULL_TREE,
+ integer_type_node,
+ endlink))));
/* Miscellaneous. */
tree v8qi_ftype_v4hi_v4hi
- = build_function_type_list (V8QI_type_node,
- V4HI_type_node, V4HI_type_node, NULL_TREE);
+ = build_function_type (V8QI_type_node,
+ tree_cons (NULL_TREE, V4HI_type_node,
+ tree_cons (NULL_TREE, V4HI_type_node,
+ endlink)));
tree v4hi_ftype_v2si_v2si
- = build_function_type_list (V4HI_type_node,
- V2SI_type_node, V2SI_type_node, NULL_TREE);
+ = build_function_type (V4HI_type_node,
+ tree_cons (NULL_TREE, V2SI_type_node,
+ tree_cons (NULL_TREE, V2SI_type_node,
+ endlink)));
tree v4sf_ftype_v4sf_v4sf_int
- = build_function_type_list (V4SF_type_node,
- V4SF_type_node, V4SF_type_node,
- integer_type_node, NULL_TREE);
+ = build_function_type (V4SF_type_node,
+ tree_cons (NULL_TREE, V4SF_type_node,
+ tree_cons (NULL_TREE, V4SF_type_node,
+ tree_cons (NULL_TREE,
+ integer_type_node,
+ endlink))));
+ tree v4hi_ftype_v8qi_v8qi
+ = build_function_type (V4HI_type_node,
+ tree_cons (NULL_TREE, V8QI_type_node,
+ tree_cons (NULL_TREE, V8QI_type_node,
+ endlink)));
tree v2si_ftype_v4hi_v4hi
- = build_function_type_list (V2SI_type_node,
- V4HI_type_node, V4HI_type_node, NULL_TREE);
+ = build_function_type (V2SI_type_node,
+ tree_cons (NULL_TREE, V4HI_type_node,
+ tree_cons (NULL_TREE, V4HI_type_node,
+ endlink)));
tree v4hi_ftype_v4hi_int
- = build_function_type_list (V4HI_type_node,
- V4HI_type_node, integer_type_node, NULL_TREE);
+ = build_function_type (V4HI_type_node,
+ tree_cons (NULL_TREE, V4HI_type_node,
+ tree_cons (NULL_TREE, integer_type_node,
+ endlink)));
tree v4hi_ftype_v4hi_di
- = build_function_type_list (V4HI_type_node,
- V4HI_type_node, long_long_unsigned_type_node,
- NULL_TREE);
+ = build_function_type (V4HI_type_node,
+ tree_cons (NULL_TREE, V4HI_type_node,
+ tree_cons (NULL_TREE,
+ long_long_integer_type_node,
+ endlink)));
tree v2si_ftype_v2si_di
- = build_function_type_list (V2SI_type_node,
- V2SI_type_node, long_long_unsigned_type_node,
- NULL_TREE);
+ = build_function_type (V2SI_type_node,
+ tree_cons (NULL_TREE, V2SI_type_node,
+ tree_cons (NULL_TREE,
+ long_long_integer_type_node,
+ endlink)));
tree void_ftype_void
- = build_function_type (void_type_node, void_list_node);
+ = build_function_type (void_type_node, endlink);
tree void_ftype_unsigned
- = build_function_type_list (void_type_node, unsigned_type_node, NULL_TREE);
+ = build_function_type (void_type_node,
+ tree_cons (NULL_TREE, unsigned_type_node,
+ endlink));
tree unsigned_ftype_void
- = build_function_type (unsigned_type_node, void_list_node);
+ = build_function_type (unsigned_type_node, endlink);
tree di_ftype_void
- = build_function_type (long_long_unsigned_type_node, void_list_node);
+ = build_function_type (long_long_unsigned_type_node, endlink);
tree v4sf_ftype_void
- = build_function_type (V4SF_type_node, void_list_node);
+ = build_function_type (V4SF_type_node, endlink);
tree v2si_ftype_v4sf
- = build_function_type_list (V2SI_type_node, V4SF_type_node, NULL_TREE);
+ = build_function_type (V2SI_type_node,
+ tree_cons (NULL_TREE, V4SF_type_node,
+ endlink));
/* Loads/stores. */
+ tree maskmovq_args = tree_cons (NULL_TREE, V8QI_type_node,
+ tree_cons (NULL_TREE, V8QI_type_node,
+ tree_cons (NULL_TREE,
+ pchar_type_node,
+ endlink)));
tree void_ftype_v8qi_v8qi_pchar
- = build_function_type_list (void_type_node,
- V8QI_type_node, V8QI_type_node,
- pchar_type_node, NULL_TREE);
- tree v4sf_ftype_pcfloat
- = build_function_type_list (V4SF_type_node, pcfloat_type_node, NULL_TREE);
+ = build_function_type (void_type_node, maskmovq_args);
+ tree v4sf_ftype_pfloat
+ = build_function_type (V4SF_type_node,
+ tree_cons (NULL_TREE, pfloat_type_node,
+ endlink));
/* @@@ the type is bogus */
tree v4sf_ftype_v4sf_pv2si
- = build_function_type_list (V4SF_type_node,
- V4SF_type_node, pv2si_type_node, NULL_TREE);
+ = build_function_type (V4SF_type_node,
+ tree_cons (NULL_TREE, V4SF_type_node,
+ tree_cons (NULL_TREE, pv2si_type_node,
+ endlink)));
tree void_ftype_pv2si_v4sf
- = build_function_type_list (void_type_node,
- pv2si_type_node, V4SF_type_node, NULL_TREE);
+ = build_function_type (void_type_node,
+ tree_cons (NULL_TREE, pv2si_type_node,
+ tree_cons (NULL_TREE, V4SF_type_node,
+ endlink)));
tree void_ftype_pfloat_v4sf
- = build_function_type_list (void_type_node,
- pfloat_type_node, V4SF_type_node, NULL_TREE);
+ = build_function_type (void_type_node,
+ tree_cons (NULL_TREE, pfloat_type_node,
+ tree_cons (NULL_TREE, V4SF_type_node,
+ endlink)));
tree void_ftype_pdi_di
- = build_function_type_list (void_type_node,
- pdi_type_node, long_long_unsigned_type_node,
- NULL_TREE);
- tree void_ftype_pv2di_v2di
- = build_function_type_list (void_type_node,
- pv2di_type_node, V2DI_type_node, NULL_TREE);
+ = build_function_type (void_type_node,
+ tree_cons (NULL_TREE, pdi_type_node,
+ tree_cons (NULL_TREE,
+ long_long_unsigned_type_node,
+ endlink)));
/* Normal vector unops. */
tree v4sf_ftype_v4sf
- = build_function_type_list (V4SF_type_node, V4SF_type_node, NULL_TREE);
+ = build_function_type (V4SF_type_node,
+ tree_cons (NULL_TREE, V4SF_type_node,
+ endlink));
/* Normal vector binops. */
tree v4sf_ftype_v4sf_v4sf
- = build_function_type_list (V4SF_type_node,
- V4SF_type_node, V4SF_type_node, NULL_TREE);
+ = build_function_type (V4SF_type_node,
+ tree_cons (NULL_TREE, V4SF_type_node,
+ tree_cons (NULL_TREE, V4SF_type_node,
+ endlink)));
tree v8qi_ftype_v8qi_v8qi
- = build_function_type_list (V8QI_type_node,
- V8QI_type_node, V8QI_type_node, NULL_TREE);
+ = build_function_type (V8QI_type_node,
+ tree_cons (NULL_TREE, V8QI_type_node,
+ tree_cons (NULL_TREE, V8QI_type_node,
+ endlink)));
tree v4hi_ftype_v4hi_v4hi
- = build_function_type_list (V4HI_type_node,
- V4HI_type_node, V4HI_type_node, NULL_TREE);
+ = build_function_type (V4HI_type_node,
+ tree_cons (NULL_TREE, V4HI_type_node,
+ tree_cons (NULL_TREE, V4HI_type_node,
+ endlink)));
tree v2si_ftype_v2si_v2si
- = build_function_type_list (V2SI_type_node,
- V2SI_type_node, V2SI_type_node, NULL_TREE);
+ = build_function_type (V2SI_type_node,
+ tree_cons (NULL_TREE, V2SI_type_node,
+ tree_cons (NULL_TREE, V2SI_type_node,
+ endlink)));
tree di_ftype_di_di
- = build_function_type_list (long_long_unsigned_type_node,
- long_long_unsigned_type_node,
- long_long_unsigned_type_node, NULL_TREE);
+ = build_function_type (long_long_unsigned_type_node,
+ tree_cons (NULL_TREE, long_long_unsigned_type_node,
+ tree_cons (NULL_TREE,
+ long_long_unsigned_type_node,
+ endlink)));
tree v2si_ftype_v2sf
- = build_function_type_list (V2SI_type_node, V2SF_type_node, NULL_TREE);
+ = build_function_type (V2SI_type_node,
+ tree_cons (NULL_TREE, V2SF_type_node,
+ endlink));
tree v2sf_ftype_v2si
- = build_function_type_list (V2SF_type_node, V2SI_type_node, NULL_TREE);
+ = build_function_type (V2SF_type_node,
+ tree_cons (NULL_TREE, V2SI_type_node,
+ endlink));
tree v2si_ftype_v2si
- = build_function_type_list (V2SI_type_node, V2SI_type_node, NULL_TREE);
+ = build_function_type (V2SI_type_node,
+ tree_cons (NULL_TREE, V2SI_type_node,
+ endlink));
tree v2sf_ftype_v2sf
- = build_function_type_list (V2SF_type_node, V2SF_type_node, NULL_TREE);
+ = build_function_type (V2SF_type_node,
+ tree_cons (NULL_TREE, V2SF_type_node,
+ endlink));
tree v2sf_ftype_v2sf_v2sf
- = build_function_type_list (V2SF_type_node,
- V2SF_type_node, V2SF_type_node, NULL_TREE);
+ = build_function_type (V2SF_type_node,
+ tree_cons (NULL_TREE, V2SF_type_node,
+ tree_cons (NULL_TREE,
+ V2SF_type_node,
+ endlink)));
tree v2si_ftype_v2sf_v2sf
- = build_function_type_list (V2SI_type_node,
- V2SF_type_node, V2SF_type_node, NULL_TREE);
- tree pint_type_node = build_pointer_type (integer_type_node);
- tree pcint_type_node = build_pointer_type (
- build_type_variant (integer_type_node, 1, 0));
- tree pdouble_type_node = build_pointer_type (double_type_node);
- tree pcdouble_type_node = build_pointer_type (
- build_type_variant (double_type_node, 1, 0));
- tree int_ftype_v2df_v2df
- = build_function_type_list (integer_type_node,
- V2DF_type_node, V2DF_type_node, NULL_TREE);
-
- tree ti_ftype_void
- = build_function_type (intTI_type_node, void_list_node);
- tree v2di_ftype_void
- = build_function_type (V2DI_type_node, void_list_node);
- tree ti_ftype_ti_ti
- = build_function_type_list (intTI_type_node,
- intTI_type_node, intTI_type_node, NULL_TREE);
- tree void_ftype_pcvoid
- = build_function_type_list (void_type_node, const_ptr_type_node, NULL_TREE);
- tree v2di_ftype_di
- = build_function_type_list (V2DI_type_node,
- long_long_unsigned_type_node, NULL_TREE);
- tree di_ftype_v2di
- = build_function_type_list (long_long_unsigned_type_node,
- V2DI_type_node, NULL_TREE);
- tree v4sf_ftype_v4si
- = build_function_type_list (V4SF_type_node, V4SI_type_node, NULL_TREE);
- tree v4si_ftype_v4sf
- = build_function_type_list (V4SI_type_node, V4SF_type_node, NULL_TREE);
- tree v2df_ftype_v4si
- = build_function_type_list (V2DF_type_node, V4SI_type_node, NULL_TREE);
- tree v4si_ftype_v2df
- = build_function_type_list (V4SI_type_node, V2DF_type_node, NULL_TREE);
- tree v2si_ftype_v2df
- = build_function_type_list (V2SI_type_node, V2DF_type_node, NULL_TREE);
- tree v4sf_ftype_v2df
- = build_function_type_list (V4SF_type_node, V2DF_type_node, NULL_TREE);
- tree v2df_ftype_v2si
- = build_function_type_list (V2DF_type_node, V2SI_type_node, NULL_TREE);
- tree v2df_ftype_v4sf
- = build_function_type_list (V2DF_type_node, V4SF_type_node, NULL_TREE);
- tree int_ftype_v2df
- = build_function_type_list (integer_type_node, V2DF_type_node, NULL_TREE);
- tree int64_ftype_v2df
- = build_function_type_list (long_long_integer_type_node,
- V2DF_type_node, NULL_TREE);
- tree v2df_ftype_v2df_int
- = build_function_type_list (V2DF_type_node,
- V2DF_type_node, integer_type_node, NULL_TREE);
- tree v2df_ftype_v2df_int64
- = build_function_type_list (V2DF_type_node,
- V2DF_type_node, long_long_integer_type_node,
- NULL_TREE);
- tree v4sf_ftype_v4sf_v2df
- = build_function_type_list (V4SF_type_node,
- V4SF_type_node, V2DF_type_node, NULL_TREE);
- tree v2df_ftype_v2df_v4sf
- = build_function_type_list (V2DF_type_node,
- V2DF_type_node, V4SF_type_node, NULL_TREE);
- tree v2df_ftype_v2df_v2df_int
- = build_function_type_list (V2DF_type_node,
- V2DF_type_node, V2DF_type_node,
- integer_type_node,
- NULL_TREE);
- tree v2df_ftype_v2df_pv2si
- = build_function_type_list (V2DF_type_node,
- V2DF_type_node, pv2si_type_node, NULL_TREE);
- tree void_ftype_pv2si_v2df
- = build_function_type_list (void_type_node,
- pv2si_type_node, V2DF_type_node, NULL_TREE);
- tree void_ftype_pdouble_v2df
- = build_function_type_list (void_type_node,
- pdouble_type_node, V2DF_type_node, NULL_TREE);
- tree void_ftype_pint_int
- = build_function_type_list (void_type_node,
- pint_type_node, integer_type_node, NULL_TREE);
- tree void_ftype_v16qi_v16qi_pchar
- = build_function_type_list (void_type_node,
- V16QI_type_node, V16QI_type_node,
- pchar_type_node, NULL_TREE);
- tree v2df_ftype_pcdouble
- = build_function_type_list (V2DF_type_node, pcdouble_type_node, NULL_TREE);
- tree v2df_ftype_v2df_v2df
- = build_function_type_list (V2DF_type_node,
- V2DF_type_node, V2DF_type_node, NULL_TREE);
- tree v16qi_ftype_v16qi_v16qi
- = build_function_type_list (V16QI_type_node,
- V16QI_type_node, V16QI_type_node, NULL_TREE);
- tree v8hi_ftype_v8hi_v8hi
- = build_function_type_list (V8HI_type_node,
- V8HI_type_node, V8HI_type_node, NULL_TREE);
- tree v4si_ftype_v4si_v4si
- = build_function_type_list (V4SI_type_node,
- V4SI_type_node, V4SI_type_node, NULL_TREE);
- tree v2di_ftype_v2di_v2di
- = build_function_type_list (V2DI_type_node,
- V2DI_type_node, V2DI_type_node, NULL_TREE);
- tree v2di_ftype_v2df_v2df
- = build_function_type_list (V2DI_type_node,
- V2DF_type_node, V2DF_type_node, NULL_TREE);
- tree v2df_ftype_v2df
- = build_function_type_list (V2DF_type_node, V2DF_type_node, NULL_TREE);
- tree v2df_ftype_double
- = build_function_type_list (V2DF_type_node, double_type_node, NULL_TREE);
- tree v2df_ftype_double_double
- = build_function_type_list (V2DF_type_node,
- double_type_node, double_type_node, NULL_TREE);
- tree int_ftype_v8hi_int
- = build_function_type_list (integer_type_node,
- V8HI_type_node, integer_type_node, NULL_TREE);
- tree v8hi_ftype_v8hi_int_int
- = build_function_type_list (V8HI_type_node,
- V8HI_type_node, integer_type_node,
- integer_type_node, NULL_TREE);
- tree v2di_ftype_v2di_int
- = build_function_type_list (V2DI_type_node,
- V2DI_type_node, integer_type_node, NULL_TREE);
- tree v4si_ftype_v4si_int
- = build_function_type_list (V4SI_type_node,
- V4SI_type_node, integer_type_node, NULL_TREE);
- tree v8hi_ftype_v8hi_int
- = build_function_type_list (V8HI_type_node,
- V8HI_type_node, integer_type_node, NULL_TREE);
- tree v8hi_ftype_v8hi_v2di
- = build_function_type_list (V8HI_type_node,
- V8HI_type_node, V2DI_type_node, NULL_TREE);
- tree v4si_ftype_v4si_v2di
- = build_function_type_list (V4SI_type_node,
- V4SI_type_node, V2DI_type_node, NULL_TREE);
- tree v4si_ftype_v8hi_v8hi
- = build_function_type_list (V4SI_type_node,
- V8HI_type_node, V8HI_type_node, NULL_TREE);
- tree di_ftype_v8qi_v8qi
- = build_function_type_list (long_long_unsigned_type_node,
- V8QI_type_node, V8QI_type_node, NULL_TREE);
- tree v2di_ftype_v16qi_v16qi
- = build_function_type_list (V2DI_type_node,
- V16QI_type_node, V16QI_type_node, NULL_TREE);
- tree int_ftype_v16qi
- = build_function_type_list (integer_type_node, V16QI_type_node, NULL_TREE);
- tree v16qi_ftype_pcchar
- = build_function_type_list (V16QI_type_node, pcchar_type_node, NULL_TREE);
- tree void_ftype_pchar_v16qi
- = build_function_type_list (void_type_node,
- pchar_type_node, V16QI_type_node, NULL_TREE);
- tree v4si_ftype_pcint
- = build_function_type_list (V4SI_type_node, pcint_type_node, NULL_TREE);
- tree void_ftype_pcint_v4si
- = build_function_type_list (void_type_node,
- pcint_type_node, V4SI_type_node, NULL_TREE);
- tree v2di_ftype_v2di
- = build_function_type_list (V2DI_type_node, V2DI_type_node, NULL_TREE);
+ = build_function_type (V2SI_type_node,
+ tree_cons (NULL_TREE, V2SF_type_node,
+ tree_cons (NULL_TREE,
+ V2SF_type_node,
+ endlink)));
/* Add all builtins that are more or less simple operations on two
operands. */
- for (i = 0, d = bdesc_2arg; i < ARRAY_SIZE (bdesc_2arg); i++, d++)
+ for (i = 0, d = bdesc_2arg; i < sizeof (bdesc_2arg) / sizeof *d; i++, d++)
{
/* Use one of the operands; the target can have a different mode for
mask-generating compares. */
@@ -12731,24 +11338,6 @@ ix86_init_mmx_sse_builtins ()
switch (mode)
{
- case V16QImode:
- type = v16qi_ftype_v16qi_v16qi;
- break;
- case V8HImode:
- type = v8hi_ftype_v8hi_v8hi;
- break;
- case V4SImode:
- type = v4si_ftype_v4si_v4si;
- break;
- case V2DImode:
- type = v2di_ftype_v2di_v2di;
- break;
- case V2DFmode:
- type = v2df_ftype_v2df_v2df;
- break;
- case TImode:
- type = ti_ftype_ti_ti;
- break;
case V4SFmode:
type = v4sf_ftype_v4sf_v4sf;
break;
@@ -12776,18 +11365,14 @@ ix86_init_mmx_sse_builtins ()
|| d->icode == CODE_FOR_vmmaskncmpv4sf3)
type = v4si_ftype_v4sf_v4sf;
- if (d->icode == CODE_FOR_maskcmpv2df3
- || d->icode == CODE_FOR_maskncmpv2df3
- || d->icode == CODE_FOR_vmmaskcmpv2df3
- || d->icode == CODE_FOR_vmmaskncmpv2df3)
- type = v2di_ftype_v2df_v2df;
-
def_builtin (d->mask, d->name, type, d->code);
}
/* Add the remaining MMX insns with somewhat more complicated types. */
def_builtin (MASK_MMX, "__builtin_ia32_mmx_zero", di_ftype_void, IX86_BUILTIN_MMX_ZERO);
def_builtin (MASK_MMX, "__builtin_ia32_emms", void_ftype_void, IX86_BUILTIN_EMMS);
+ def_builtin (MASK_MMX, "__builtin_ia32_ldmxcsr", void_ftype_unsigned, IX86_BUILTIN_LDMXCSR);
+ def_builtin (MASK_MMX, "__builtin_ia32_stmxcsr", unsigned_ftype_void, IX86_BUILTIN_STMXCSR);
def_builtin (MASK_MMX, "__builtin_ia32_psllw", v4hi_ftype_v4hi_di, IX86_BUILTIN_PSLLW);
def_builtin (MASK_MMX, "__builtin_ia32_pslld", v2si_ftype_v2si_di, IX86_BUILTIN_PSLLD);
def_builtin (MASK_MMX, "__builtin_ia32_psllq", di_ftype_di_di, IX86_BUILTIN_PSLLQ);
@@ -12803,62 +11388,59 @@ ix86_init_mmx_sse_builtins ()
def_builtin (MASK_MMX, "__builtin_ia32_pmaddwd", v2si_ftype_v4hi_v4hi, IX86_BUILTIN_PMADDWD);
/* comi/ucomi insns. */
- for (i = 0, d = bdesc_comi; i < ARRAY_SIZE (bdesc_comi); i++, d++)
- if (d->mask == MASK_SSE2)
- def_builtin (d->mask, d->name, int_ftype_v2df_v2df, d->code);
- else
- def_builtin (d->mask, d->name, int_ftype_v4sf_v4sf, d->code);
+ for (i = 0, d = bdesc_comi; i < sizeof (bdesc_comi) / sizeof *d; i++, d++)
+ def_builtin (d->mask, d->name, int_ftype_v4sf_v4sf, d->code);
def_builtin (MASK_MMX, "__builtin_ia32_packsswb", v8qi_ftype_v4hi_v4hi, IX86_BUILTIN_PACKSSWB);
def_builtin (MASK_MMX, "__builtin_ia32_packssdw", v4hi_ftype_v2si_v2si, IX86_BUILTIN_PACKSSDW);
def_builtin (MASK_MMX, "__builtin_ia32_packuswb", v8qi_ftype_v4hi_v4hi, IX86_BUILTIN_PACKUSWB);
- def_builtin (MASK_SSE1, "__builtin_ia32_ldmxcsr", void_ftype_unsigned, IX86_BUILTIN_LDMXCSR);
- def_builtin (MASK_SSE1, "__builtin_ia32_stmxcsr", unsigned_ftype_void, IX86_BUILTIN_STMXCSR);
- def_builtin (MASK_SSE1, "__builtin_ia32_cvtpi2ps", v4sf_ftype_v4sf_v2si, IX86_BUILTIN_CVTPI2PS);
- def_builtin (MASK_SSE1, "__builtin_ia32_cvtps2pi", v2si_ftype_v4sf, IX86_BUILTIN_CVTPS2PI);
- def_builtin (MASK_SSE1, "__builtin_ia32_cvtsi2ss", v4sf_ftype_v4sf_int, IX86_BUILTIN_CVTSI2SS);
- def_builtin (MASK_SSE164, "__builtin_ia32_cvtsi642ss", v4sf_ftype_v4sf_int64, IX86_BUILTIN_CVTSI642SS);
- def_builtin (MASK_SSE1, "__builtin_ia32_cvtss2si", int_ftype_v4sf, IX86_BUILTIN_CVTSS2SI);
- def_builtin (MASK_SSE164, "__builtin_ia32_cvtss2si64", int64_ftype_v4sf, IX86_BUILTIN_CVTSS2SI64);
- def_builtin (MASK_SSE1, "__builtin_ia32_cvttps2pi", v2si_ftype_v4sf, IX86_BUILTIN_CVTTPS2PI);
- def_builtin (MASK_SSE1, "__builtin_ia32_cvttss2si", int_ftype_v4sf, IX86_BUILTIN_CVTTSS2SI);
- def_builtin (MASK_SSE164, "__builtin_ia32_cvttss2si64", int64_ftype_v4sf, IX86_BUILTIN_CVTTSS2SI64);
-
- def_builtin (MASK_SSE1 | MASK_3DNOW_A, "__builtin_ia32_pextrw", int_ftype_v4hi_int, IX86_BUILTIN_PEXTRW);
- def_builtin (MASK_SSE1 | MASK_3DNOW_A, "__builtin_ia32_pinsrw", v4hi_ftype_v4hi_int_int, IX86_BUILTIN_PINSRW);
-
- def_builtin (MASK_SSE1 | MASK_3DNOW_A, "__builtin_ia32_maskmovq", void_ftype_v8qi_v8qi_pchar, IX86_BUILTIN_MASKMOVQ);
-
- def_builtin (MASK_SSE1, "__builtin_ia32_loadaps", v4sf_ftype_pcfloat, IX86_BUILTIN_LOADAPS);
- def_builtin (MASK_SSE1, "__builtin_ia32_loadups", v4sf_ftype_pcfloat, IX86_BUILTIN_LOADUPS);
- def_builtin (MASK_SSE1, "__builtin_ia32_loadss", v4sf_ftype_pcfloat, IX86_BUILTIN_LOADSS);
- def_builtin (MASK_SSE1, "__builtin_ia32_storeaps", void_ftype_pfloat_v4sf, IX86_BUILTIN_STOREAPS);
- def_builtin (MASK_SSE1, "__builtin_ia32_storeups", void_ftype_pfloat_v4sf, IX86_BUILTIN_STOREUPS);
- def_builtin (MASK_SSE1, "__builtin_ia32_storess", void_ftype_pfloat_v4sf, IX86_BUILTIN_STORESS);
-
- def_builtin (MASK_SSE1, "__builtin_ia32_loadhps", v4sf_ftype_v4sf_pv2si, IX86_BUILTIN_LOADHPS);
- def_builtin (MASK_SSE1, "__builtin_ia32_loadlps", v4sf_ftype_v4sf_pv2si, IX86_BUILTIN_LOADLPS);
- def_builtin (MASK_SSE1, "__builtin_ia32_storehps", void_ftype_pv2si_v4sf, IX86_BUILTIN_STOREHPS);
- def_builtin (MASK_SSE1, "__builtin_ia32_storelps", void_ftype_pv2si_v4sf, IX86_BUILTIN_STORELPS);
-
- def_builtin (MASK_SSE1, "__builtin_ia32_movmskps", int_ftype_v4sf, IX86_BUILTIN_MOVMSKPS);
- def_builtin (MASK_SSE1 | MASK_3DNOW_A, "__builtin_ia32_pmovmskb", int_ftype_v8qi, IX86_BUILTIN_PMOVMSKB);
- def_builtin (MASK_SSE1, "__builtin_ia32_movntps", void_ftype_pfloat_v4sf, IX86_BUILTIN_MOVNTPS);
- def_builtin (MASK_SSE1 | MASK_3DNOW_A, "__builtin_ia32_movntq", void_ftype_pdi_di, IX86_BUILTIN_MOVNTQ);
-
- def_builtin (MASK_SSE1 | MASK_3DNOW_A, "__builtin_ia32_sfence", void_ftype_void, IX86_BUILTIN_SFENCE);
-
- def_builtin (MASK_SSE1 | MASK_3DNOW_A, "__builtin_ia32_psadbw", di_ftype_v8qi_v8qi, IX86_BUILTIN_PSADBW);
-
- def_builtin (MASK_SSE1, "__builtin_ia32_rcpps", v4sf_ftype_v4sf, IX86_BUILTIN_RCPPS);
- def_builtin (MASK_SSE1, "__builtin_ia32_rcpss", v4sf_ftype_v4sf, IX86_BUILTIN_RCPSS);
- def_builtin (MASK_SSE1, "__builtin_ia32_rsqrtps", v4sf_ftype_v4sf, IX86_BUILTIN_RSQRTPS);
- def_builtin (MASK_SSE1, "__builtin_ia32_rsqrtss", v4sf_ftype_v4sf, IX86_BUILTIN_RSQRTSS);
- def_builtin (MASK_SSE1, "__builtin_ia32_sqrtps", v4sf_ftype_v4sf, IX86_BUILTIN_SQRTPS);
- def_builtin (MASK_SSE1, "__builtin_ia32_sqrtss", v4sf_ftype_v4sf, IX86_BUILTIN_SQRTSS);
-
- def_builtin (MASK_SSE1, "__builtin_ia32_shufps", v4sf_ftype_v4sf_v4sf_int, IX86_BUILTIN_SHUFPS);
+ def_builtin (MASK_SSE, "__builtin_ia32_cvtpi2ps", v4sf_ftype_v4sf_v2si, IX86_BUILTIN_CVTPI2PS);
+ def_builtin (MASK_SSE, "__builtin_ia32_cvtps2pi", v2si_ftype_v4sf, IX86_BUILTIN_CVTPS2PI);
+ def_builtin (MASK_SSE, "__builtin_ia32_cvtsi2ss", v4sf_ftype_v4sf_int, IX86_BUILTIN_CVTSI2SS);
+ def_builtin (MASK_SSE, "__builtin_ia32_cvtss2si", int_ftype_v4sf, IX86_BUILTIN_CVTSS2SI);
+ def_builtin (MASK_SSE, "__builtin_ia32_cvttps2pi", v2si_ftype_v4sf, IX86_BUILTIN_CVTTPS2PI);
+ def_builtin (MASK_SSE, "__builtin_ia32_cvttss2si", int_ftype_v4sf, IX86_BUILTIN_CVTTSS2SI);
+
+ def_builtin (MASK_SSE, "__builtin_ia32_andps", v4sf_ftype_v4sf_v4sf, IX86_BUILTIN_ANDPS);
+ def_builtin (MASK_SSE, "__builtin_ia32_andnps", v4sf_ftype_v4sf_v4sf, IX86_BUILTIN_ANDNPS);
+ def_builtin (MASK_SSE, "__builtin_ia32_orps", v4sf_ftype_v4sf_v4sf, IX86_BUILTIN_ORPS);
+ def_builtin (MASK_SSE, "__builtin_ia32_xorps", v4sf_ftype_v4sf_v4sf, IX86_BUILTIN_XORPS);
+
+ def_builtin (MASK_SSE | MASK_3DNOW_A, "__builtin_ia32_pextrw", int_ftype_v4hi_int, IX86_BUILTIN_PEXTRW);
+ def_builtin (MASK_SSE | MASK_3DNOW_A, "__builtin_ia32_pinsrw", v4hi_ftype_v4hi_int_int, IX86_BUILTIN_PINSRW);
+
+ def_builtin (MASK_SSE | MASK_3DNOW_A, "__builtin_ia32_maskmovq", void_ftype_v8qi_v8qi_pchar, IX86_BUILTIN_MASKMOVQ);
+
+ def_builtin (MASK_SSE, "__builtin_ia32_loadaps", v4sf_ftype_pfloat, IX86_BUILTIN_LOADAPS);
+ def_builtin (MASK_SSE, "__builtin_ia32_loadups", v4sf_ftype_pfloat, IX86_BUILTIN_LOADUPS);
+ def_builtin (MASK_SSE, "__builtin_ia32_loadss", v4sf_ftype_pfloat, IX86_BUILTIN_LOADSS);
+ def_builtin (MASK_SSE, "__builtin_ia32_storeaps", void_ftype_pfloat_v4sf, IX86_BUILTIN_STOREAPS);
+ def_builtin (MASK_SSE, "__builtin_ia32_storeups", void_ftype_pfloat_v4sf, IX86_BUILTIN_STOREUPS);
+ def_builtin (MASK_SSE, "__builtin_ia32_storess", void_ftype_pfloat_v4sf, IX86_BUILTIN_STORESS);
+
+ def_builtin (MASK_SSE, "__builtin_ia32_loadhps", v4sf_ftype_v4sf_pv2si, IX86_BUILTIN_LOADHPS);
+ def_builtin (MASK_SSE, "__builtin_ia32_loadlps", v4sf_ftype_v4sf_pv2si, IX86_BUILTIN_LOADLPS);
+ def_builtin (MASK_SSE, "__builtin_ia32_storehps", void_ftype_pv2si_v4sf, IX86_BUILTIN_STOREHPS);
+ def_builtin (MASK_SSE, "__builtin_ia32_storelps", void_ftype_pv2si_v4sf, IX86_BUILTIN_STORELPS);
+
+ def_builtin (MASK_SSE, "__builtin_ia32_movmskps", int_ftype_v4sf, IX86_BUILTIN_MOVMSKPS);
+ def_builtin (MASK_SSE | MASK_3DNOW_A, "__builtin_ia32_pmovmskb", int_ftype_v8qi, IX86_BUILTIN_PMOVMSKB);
+ def_builtin (MASK_SSE, "__builtin_ia32_movntps", void_ftype_pfloat_v4sf, IX86_BUILTIN_MOVNTPS);
+ def_builtin (MASK_SSE | MASK_3DNOW_A, "__builtin_ia32_movntq", void_ftype_pdi_di, IX86_BUILTIN_MOVNTQ);
+
+ def_builtin (MASK_SSE | MASK_3DNOW_A, "__builtin_ia32_sfence", void_ftype_void, IX86_BUILTIN_SFENCE);
+
+ def_builtin (MASK_SSE | MASK_3DNOW_A, "__builtin_ia32_psadbw", v4hi_ftype_v8qi_v8qi, IX86_BUILTIN_PSADBW);
+
+ def_builtin (MASK_SSE, "__builtin_ia32_rcpps", v4sf_ftype_v4sf, IX86_BUILTIN_RCPPS);
+ def_builtin (MASK_SSE, "__builtin_ia32_rcpss", v4sf_ftype_v4sf, IX86_BUILTIN_RCPSS);
+ def_builtin (MASK_SSE, "__builtin_ia32_rsqrtps", v4sf_ftype_v4sf, IX86_BUILTIN_RSQRTPS);
+ def_builtin (MASK_SSE, "__builtin_ia32_rsqrtss", v4sf_ftype_v4sf, IX86_BUILTIN_RSQRTSS);
+ def_builtin (MASK_SSE, "__builtin_ia32_sqrtps", v4sf_ftype_v4sf, IX86_BUILTIN_SQRTPS);
+ def_builtin (MASK_SSE, "__builtin_ia32_sqrtss", v4sf_ftype_v4sf, IX86_BUILTIN_SQRTSS);
+
+ def_builtin (MASK_SSE, "__builtin_ia32_shufps", v4sf_ftype_v4sf_v4sf_int, IX86_BUILTIN_SHUFPS);
/* Original 3DNow! */
def_builtin (MASK_3DNOW, "__builtin_ia32_femms", void_ftype_void, IX86_BUILTIN_FEMMS);
@@ -12890,116 +11472,7 @@ ix86_init_mmx_sse_builtins ()
def_builtin (MASK_3DNOW_A, "__builtin_ia32_pswapdsf", v2sf_ftype_v2sf, IX86_BUILTIN_PSWAPDSF);
def_builtin (MASK_3DNOW_A, "__builtin_ia32_pswapdsi", v2si_ftype_v2si, IX86_BUILTIN_PSWAPDSI);
- def_builtin (MASK_SSE1, "__builtin_ia32_setzerops", v4sf_ftype_void, IX86_BUILTIN_SSE_ZERO);
-
- /* SSE2 */
- def_builtin (MASK_SSE2, "__builtin_ia32_pextrw128", int_ftype_v8hi_int, IX86_BUILTIN_PEXTRW128);
- def_builtin (MASK_SSE2, "__builtin_ia32_pinsrw128", v8hi_ftype_v8hi_int_int, IX86_BUILTIN_PINSRW128);
-
- def_builtin (MASK_SSE2, "__builtin_ia32_maskmovdqu", void_ftype_v16qi_v16qi_pchar, IX86_BUILTIN_MASKMOVDQU);
- def_builtin (MASK_SSE2, "__builtin_ia32_movq2dq", v2di_ftype_di, IX86_BUILTIN_MOVQ2DQ);
- def_builtin (MASK_SSE2, "__builtin_ia32_movdq2q", di_ftype_v2di, IX86_BUILTIN_MOVDQ2Q);
-
- def_builtin (MASK_SSE2, "__builtin_ia32_loadapd", v2df_ftype_pcdouble, IX86_BUILTIN_LOADAPD);
- def_builtin (MASK_SSE2, "__builtin_ia32_loadupd", v2df_ftype_pcdouble, IX86_BUILTIN_LOADUPD);
- def_builtin (MASK_SSE2, "__builtin_ia32_loadsd", v2df_ftype_pcdouble, IX86_BUILTIN_LOADSD);
- def_builtin (MASK_SSE2, "__builtin_ia32_storeapd", void_ftype_pdouble_v2df, IX86_BUILTIN_STOREAPD);
- def_builtin (MASK_SSE2, "__builtin_ia32_storeupd", void_ftype_pdouble_v2df, IX86_BUILTIN_STOREUPD);
- def_builtin (MASK_SSE2, "__builtin_ia32_storesd", void_ftype_pdouble_v2df, IX86_BUILTIN_STORESD);
-
- def_builtin (MASK_SSE2, "__builtin_ia32_loadhpd", v2df_ftype_v2df_pv2si, IX86_BUILTIN_LOADHPD);
- def_builtin (MASK_SSE2, "__builtin_ia32_loadlpd", v2df_ftype_v2df_pv2si, IX86_BUILTIN_LOADLPD);
- def_builtin (MASK_SSE2, "__builtin_ia32_storehpd", void_ftype_pv2si_v2df, IX86_BUILTIN_STOREHPD);
- def_builtin (MASK_SSE2, "__builtin_ia32_storelpd", void_ftype_pv2si_v2df, IX86_BUILTIN_STORELPD);
-
- def_builtin (MASK_SSE2, "__builtin_ia32_movmskpd", int_ftype_v2df, IX86_BUILTIN_MOVMSKPD);
- def_builtin (MASK_SSE2, "__builtin_ia32_pmovmskb128", int_ftype_v16qi, IX86_BUILTIN_PMOVMSKB128);
- def_builtin (MASK_SSE2, "__builtin_ia32_movnti", void_ftype_pint_int, IX86_BUILTIN_MOVNTI);
- def_builtin (MASK_SSE2, "__builtin_ia32_movntpd", void_ftype_pdouble_v2df, IX86_BUILTIN_MOVNTPD);
- def_builtin (MASK_SSE2, "__builtin_ia32_movntdq", void_ftype_pv2di_v2di, IX86_BUILTIN_MOVNTDQ);
-
- def_builtin (MASK_SSE2, "__builtin_ia32_pshufd", v4si_ftype_v4si_int, IX86_BUILTIN_PSHUFD);
- def_builtin (MASK_SSE2, "__builtin_ia32_pshuflw", v8hi_ftype_v8hi_int, IX86_BUILTIN_PSHUFLW);
- def_builtin (MASK_SSE2, "__builtin_ia32_pshufhw", v8hi_ftype_v8hi_int, IX86_BUILTIN_PSHUFHW);
- def_builtin (MASK_SSE2, "__builtin_ia32_psadbw128", v2di_ftype_v16qi_v16qi, IX86_BUILTIN_PSADBW128);
-
- def_builtin (MASK_SSE2, "__builtin_ia32_sqrtpd", v2df_ftype_v2df, IX86_BUILTIN_SQRTPD);
- def_builtin (MASK_SSE2, "__builtin_ia32_sqrtsd", v2df_ftype_v2df, IX86_BUILTIN_SQRTSD);
-
- def_builtin (MASK_SSE2, "__builtin_ia32_shufpd", v2df_ftype_v2df_v2df_int, IX86_BUILTIN_SHUFPD);
-
- def_builtin (MASK_SSE2, "__builtin_ia32_cvtdq2pd", v2df_ftype_v4si, IX86_BUILTIN_CVTDQ2PD);
- def_builtin (MASK_SSE2, "__builtin_ia32_cvtdq2ps", v4sf_ftype_v4si, IX86_BUILTIN_CVTDQ2PS);
-
- def_builtin (MASK_SSE2, "__builtin_ia32_cvtpd2dq", v4si_ftype_v2df, IX86_BUILTIN_CVTPD2DQ);
- def_builtin (MASK_SSE2, "__builtin_ia32_cvtpd2pi", v2si_ftype_v2df, IX86_BUILTIN_CVTPD2PI);
- def_builtin (MASK_SSE2, "__builtin_ia32_cvtpd2ps", v4sf_ftype_v2df, IX86_BUILTIN_CVTPD2PS);
- def_builtin (MASK_SSE2, "__builtin_ia32_cvttpd2dq", v4si_ftype_v2df, IX86_BUILTIN_CVTTPD2DQ);
- def_builtin (MASK_SSE2, "__builtin_ia32_cvttpd2pi", v2si_ftype_v2df, IX86_BUILTIN_CVTTPD2PI);
-
- def_builtin (MASK_SSE2, "__builtin_ia32_cvtpi2pd", v2df_ftype_v2si, IX86_BUILTIN_CVTPI2PD);
-
- def_builtin (MASK_SSE2, "__builtin_ia32_cvtsd2si", int_ftype_v2df, IX86_BUILTIN_CVTSD2SI);
- def_builtin (MASK_SSE2, "__builtin_ia32_cvttsd2si", int_ftype_v2df, IX86_BUILTIN_CVTTSD2SI);
- def_builtin (MASK_SSE264, "__builtin_ia32_cvtsd2si64", int64_ftype_v2df, IX86_BUILTIN_CVTSD2SI64);
- def_builtin (MASK_SSE264, "__builtin_ia32_cvttsd2si64", int64_ftype_v2df, IX86_BUILTIN_CVTTSD2SI64);
-
- def_builtin (MASK_SSE2, "__builtin_ia32_cvtps2dq", v4si_ftype_v4sf, IX86_BUILTIN_CVTPS2DQ);
- def_builtin (MASK_SSE2, "__builtin_ia32_cvtps2pd", v2df_ftype_v4sf, IX86_BUILTIN_CVTPS2PD);
- def_builtin (MASK_SSE2, "__builtin_ia32_cvttps2dq", v4si_ftype_v4sf, IX86_BUILTIN_CVTTPS2DQ);
-
- def_builtin (MASK_SSE2, "__builtin_ia32_cvtsi2sd", v2df_ftype_v2df_int, IX86_BUILTIN_CVTSI2SD);
- def_builtin (MASK_SSE264, "__builtin_ia32_cvtsi642sd", v2df_ftype_v2df_int64, IX86_BUILTIN_CVTSI642SD);
- def_builtin (MASK_SSE2, "__builtin_ia32_cvtsd2ss", v4sf_ftype_v4sf_v2df, IX86_BUILTIN_CVTSD2SS);
- def_builtin (MASK_SSE2, "__builtin_ia32_cvtss2sd", v2df_ftype_v2df_v4sf, IX86_BUILTIN_CVTSS2SD);
-
- def_builtin (MASK_SSE2, "__builtin_ia32_setpd1", v2df_ftype_double, IX86_BUILTIN_SETPD1);
- def_builtin (MASK_SSE2, "__builtin_ia32_setpd", v2df_ftype_double_double, IX86_BUILTIN_SETPD);
- def_builtin (MASK_SSE2, "__builtin_ia32_setzeropd", ti_ftype_void, IX86_BUILTIN_CLRPD);
- def_builtin (MASK_SSE2, "__builtin_ia32_loadpd1", v2df_ftype_pcdouble, IX86_BUILTIN_LOADPD1);
- def_builtin (MASK_SSE2, "__builtin_ia32_loadrpd", v2df_ftype_pcdouble, IX86_BUILTIN_LOADRPD);
- def_builtin (MASK_SSE2, "__builtin_ia32_storepd1", void_ftype_pdouble_v2df, IX86_BUILTIN_STOREPD1);
- def_builtin (MASK_SSE2, "__builtin_ia32_storerpd", void_ftype_pdouble_v2df, IX86_BUILTIN_STORERPD);
-
- def_builtin (MASK_SSE2, "__builtin_ia32_clflush", void_ftype_pcvoid, IX86_BUILTIN_CLFLUSH);
- def_builtin (MASK_SSE2, "__builtin_ia32_lfence", void_ftype_void, IX86_BUILTIN_LFENCE);
- def_builtin (MASK_SSE2, "__builtin_ia32_mfence", void_ftype_void, IX86_BUILTIN_MFENCE);
-
- def_builtin (MASK_SSE2, "__builtin_ia32_loaddqa", v16qi_ftype_pcchar, IX86_BUILTIN_LOADDQA);
- def_builtin (MASK_SSE2, "__builtin_ia32_loaddqu", v16qi_ftype_pcchar, IX86_BUILTIN_LOADDQU);
- def_builtin (MASK_SSE2, "__builtin_ia32_loadd", v4si_ftype_pcint, IX86_BUILTIN_LOADD);
- def_builtin (MASK_SSE2, "__builtin_ia32_storedqa", void_ftype_pchar_v16qi, IX86_BUILTIN_STOREDQA);
- def_builtin (MASK_SSE2, "__builtin_ia32_storedqu", void_ftype_pchar_v16qi, IX86_BUILTIN_STOREDQU);
- def_builtin (MASK_SSE2, "__builtin_ia32_stored", void_ftype_pcint_v4si, IX86_BUILTIN_STORED);
- def_builtin (MASK_SSE2, "__builtin_ia32_movq", v2di_ftype_v2di, IX86_BUILTIN_MOVQ);
-
- def_builtin (MASK_SSE1, "__builtin_ia32_setzero128", v2di_ftype_void, IX86_BUILTIN_CLRTI);
-
- def_builtin (MASK_SSE2, "__builtin_ia32_psllw128", v8hi_ftype_v8hi_v2di, IX86_BUILTIN_PSLLW128);
- def_builtin (MASK_SSE2, "__builtin_ia32_pslld128", v4si_ftype_v4si_v2di, IX86_BUILTIN_PSLLD128);
- def_builtin (MASK_SSE2, "__builtin_ia32_psllq128", v2di_ftype_v2di_v2di, IX86_BUILTIN_PSLLQ128);
-
- def_builtin (MASK_SSE2, "__builtin_ia32_psrlw128", v8hi_ftype_v8hi_v2di, IX86_BUILTIN_PSRLW128);
- def_builtin (MASK_SSE2, "__builtin_ia32_psrld128", v4si_ftype_v4si_v2di, IX86_BUILTIN_PSRLD128);
- def_builtin (MASK_SSE2, "__builtin_ia32_psrlq128", v2di_ftype_v2di_v2di, IX86_BUILTIN_PSRLQ128);
-
- def_builtin (MASK_SSE2, "__builtin_ia32_psraw128", v8hi_ftype_v8hi_v2di, IX86_BUILTIN_PSRAW128);
- def_builtin (MASK_SSE2, "__builtin_ia32_psrad128", v4si_ftype_v4si_v2di, IX86_BUILTIN_PSRAD128);
-
- def_builtin (MASK_SSE2, "__builtin_ia32_pslldqi128", v2di_ftype_v2di_int, IX86_BUILTIN_PSLLDQI128);
- def_builtin (MASK_SSE2, "__builtin_ia32_psllwi128", v8hi_ftype_v8hi_int, IX86_BUILTIN_PSLLWI128);
- def_builtin (MASK_SSE2, "__builtin_ia32_pslldi128", v4si_ftype_v4si_int, IX86_BUILTIN_PSLLDI128);
- def_builtin (MASK_SSE2, "__builtin_ia32_psllqi128", v2di_ftype_v2di_int, IX86_BUILTIN_PSLLQI128);
-
- def_builtin (MASK_SSE2, "__builtin_ia32_psrldqi128", v2di_ftype_v2di_int, IX86_BUILTIN_PSRLDQI128);
- def_builtin (MASK_SSE2, "__builtin_ia32_psrlwi128", v8hi_ftype_v8hi_int, IX86_BUILTIN_PSRLWI128);
- def_builtin (MASK_SSE2, "__builtin_ia32_psrldi128", v4si_ftype_v4si_int, IX86_BUILTIN_PSRLDI128);
- def_builtin (MASK_SSE2, "__builtin_ia32_psrlqi128", v2di_ftype_v2di_int, IX86_BUILTIN_PSRLQI128);
-
- def_builtin (MASK_SSE2, "__builtin_ia32_psrawi128", v8hi_ftype_v8hi_int, IX86_BUILTIN_PSRAWI128);
- def_builtin (MASK_SSE2, "__builtin_ia32_psradi128", v4si_ftype_v4si_int, IX86_BUILTIN_PSRADI128);
-
- def_builtin (MASK_SSE2, "__builtin_ia32_pmaddwd128", v4si_ftype_v8hi_v8hi, IX86_BUILTIN_PMADDWD128);
+ def_builtin (MASK_SSE, "__builtin_ia32_setzerops", v4sf_ftype_void, IX86_BUILTIN_SSE_ZERO);
}
/* Errors in the source file can cause expand_expr to return const0_rtx
@@ -13050,13 +11523,6 @@ ix86_expand_binop_builtin (icode, arglist, target)
|| ! (*insn_data[icode].operand[0].predicate) (target, tmode))
target = gen_reg_rtx (tmode);
- if (GET_MODE (op1) == SImode && mode1 == TImode)
- {
- rtx x = gen_reg_rtx (V4SImode);
- emit_insn (gen_sse2_loadd (x, op1));
- op1 = gen_lowpart (TImode, x);
- }
-
/* In case the insn wants input operands in modes different from
the result, abort. */
if (GET_MODE (op0) != mode0 || GET_MODE (op1) != mode1)
@@ -13080,6 +11546,45 @@ ix86_expand_binop_builtin (icode, arglist, target)
return target;
}
+/* In type_for_mode we restrict the ability to create TImode types
+ to hosts with 64-bit H_W_I. So we've defined the SSE logicals
+ to have a V4SFmode signature. Convert them in-place to TImode. */
+
+static rtx
+ix86_expand_timode_binop_builtin (icode, arglist, target)
+ enum insn_code icode;
+ tree arglist;
+ rtx target;
+{
+ rtx pat;
+ tree arg0 = TREE_VALUE (arglist);
+ tree arg1 = TREE_VALUE (TREE_CHAIN (arglist));
+ rtx op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0);
+ rtx op1 = expand_expr (arg1, NULL_RTX, VOIDmode, 0);
+
+ op0 = gen_lowpart (TImode, op0);
+ op1 = gen_lowpart (TImode, op1);
+ target = gen_reg_rtx (TImode);
+
+ if (! (*insn_data[icode].operand[1].predicate) (op0, TImode))
+ op0 = copy_to_mode_reg (TImode, op0);
+ if (! (*insn_data[icode].operand[2].predicate) (op1, TImode))
+ op1 = copy_to_mode_reg (TImode, op1);
+
+ /* In the commutative cases, both op0 and op1 are nonimmediate_operand,
+ yet one of the two must not be a memory. This is normally enforced
+ by expanders, but we didn't bother to create one here. */
+ if (GET_CODE (op0) == MEM && GET_CODE (op1) == MEM)
+ op0 = copy_to_mode_reg (TImode, op0);
+
+ pat = GEN_FCN (icode) (target, op0, op1);
+ if (! pat)
+ return 0;
+ emit_insn (pat);
+
+ return gen_lowpart (V4SFmode, target);
+}
+
/* Subroutine of ix86_expand_builtin to take care of stores. */
static rtx
@@ -13099,7 +11604,9 @@ ix86_expand_store_builtin (icode, arglist)
op1 = safe_vector_operand (op1, mode1);
op0 = gen_rtx_MEM (mode0, copy_to_mode_reg (Pmode, op0));
- op1 = copy_to_mode_reg (mode1, op1);
+
+ if (! (*insn_data[icode].operand[1].predicate) (op1, mode1))
+ op1 = copy_to_mode_reg (mode1, op1);
pat = GEN_FCN (icode) (op0, op1);
if (pat)
@@ -13169,11 +11676,11 @@ ix86_expand_unop1_builtin (icode, arglist, target)
if (! (*insn_data[icode].operand[1].predicate) (op0, mode0))
op0 = copy_to_mode_reg (mode0, op0);
-
+
op1 = op0;
if (! (*insn_data[icode].operand[2].predicate) (op1, mode0))
op1 = copy_to_mode_reg (mode0, op1);
-
+
pat = GEN_FCN (icode) (target, op0, op1);
if (! pat)
return 0;
@@ -13275,14 +11782,14 @@ ix86_expand_sse_comi (d, arglist, target)
op1 = copy_to_mode_reg (mode1, op1);
op2 = gen_rtx_fmt_ee (comparison, mode0, op0, op1);
- pat = GEN_FCN (d->icode) (op0, op1);
+ pat = GEN_FCN (d->icode) (op0, op1, op2);
if (! pat)
return 0;
emit_insn (pat);
emit_insn (gen_rtx_SET (VOIDmode,
gen_rtx_STRICT_LOW_PART (VOIDmode, target),
gen_rtx_fmt_ee (comparison, QImode,
- SET_DEST (pat),
+ gen_rtx_REG (CCmode, FLAGS_REG),
const0_rtx)));
return SUBREG_REG (target);
@@ -13323,10 +11830,7 @@ ix86_expand_builtin (exp, target, subtarget, mode, ignore)
return 0;
case IX86_BUILTIN_PEXTRW:
- case IX86_BUILTIN_PEXTRW128:
- icode = (fcode == IX86_BUILTIN_PEXTRW
- ? CODE_FOR_mmx_pextrw
- : CODE_FOR_sse2_pextrw);
+ icode = CODE_FOR_mmx_pextrw;
arg0 = TREE_VALUE (arglist);
arg1 = TREE_VALUE (TREE_CHAIN (arglist));
op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0);
@@ -13354,10 +11858,7 @@ ix86_expand_builtin (exp, target, subtarget, mode, ignore)
return target;
case IX86_BUILTIN_PINSRW:
- case IX86_BUILTIN_PINSRW128:
- icode = (fcode == IX86_BUILTIN_PINSRW
- ? CODE_FOR_mmx_pinsrw
- : CODE_FOR_sse2_pinsrw);
+ icode = CODE_FOR_mmx_pinsrw;
arg0 = TREE_VALUE (arglist);
arg1 = TREE_VALUE (TREE_CHAIN (arglist));
arg2 = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (arglist)));
@@ -13390,11 +11891,7 @@ ix86_expand_builtin (exp, target, subtarget, mode, ignore)
return target;
case IX86_BUILTIN_MASKMOVQ:
- case IX86_BUILTIN_MASKMOVDQU:
- icode = (fcode == IX86_BUILTIN_MASKMOVQ
- ? (TARGET_64BIT ? CODE_FOR_mmx_maskmovq_rex : CODE_FOR_mmx_maskmovq)
- : (TARGET_64BIT ? CODE_FOR_sse2_maskmovdqu_rex64
- : CODE_FOR_sse2_maskmovdqu));
+ icode = TARGET_64BIT ? CODE_FOR_mmx_maskmovq_rex : CODE_FOR_mmx_maskmovq;
/* Note the arg order is different from the operand order. */
arg1 = TREE_VALUE (arglist);
arg2 = TREE_VALUE (TREE_CHAIN (arglist));
@@ -13425,6 +11922,19 @@ ix86_expand_builtin (exp, target, subtarget, mode, ignore)
case IX86_BUILTIN_RCPSS:
return ix86_expand_unop1_builtin (CODE_FOR_vmrcpv4sf2, arglist, target);
+ case IX86_BUILTIN_ANDPS:
+ return ix86_expand_timode_binop_builtin (CODE_FOR_sse_andti3,
+ arglist, target);
+ case IX86_BUILTIN_ANDNPS:
+ return ix86_expand_timode_binop_builtin (CODE_FOR_sse_nandti3,
+ arglist, target);
+ case IX86_BUILTIN_ORPS:
+ return ix86_expand_timode_binop_builtin (CODE_FOR_sse_iorti3,
+ arglist, target);
+ case IX86_BUILTIN_XORPS:
+ return ix86_expand_timode_binop_builtin (CODE_FOR_sse_xorti3,
+ arglist, target);
+
case IX86_BUILTIN_LOADAPS:
return ix86_expand_unop_builtin (CODE_FOR_sse_movaps, arglist, target, 1);
@@ -13433,7 +11943,6 @@ ix86_expand_builtin (exp, target, subtarget, mode, ignore)
case IX86_BUILTIN_STOREAPS:
return ix86_expand_store_builtin (CODE_FOR_sse_movaps, arglist);
-
case IX86_BUILTIN_STOREUPS:
return ix86_expand_store_builtin (CODE_FOR_sse_movups, arglist);
@@ -13445,12 +11954,8 @@ ix86_expand_builtin (exp, target, subtarget, mode, ignore)
case IX86_BUILTIN_LOADHPS:
case IX86_BUILTIN_LOADLPS:
- case IX86_BUILTIN_LOADHPD:
- case IX86_BUILTIN_LOADLPD:
- icode = (fcode == IX86_BUILTIN_LOADHPS ? CODE_FOR_sse_movhps
- : fcode == IX86_BUILTIN_LOADLPS ? CODE_FOR_sse_movlps
- : fcode == IX86_BUILTIN_LOADHPD ? CODE_FOR_sse2_movhpd
- : CODE_FOR_sse2_movlpd);
+ icode = (fcode == IX86_BUILTIN_LOADHPS
+ ? CODE_FOR_sse_movhps : CODE_FOR_sse_movlps);
arg0 = TREE_VALUE (arglist);
arg1 = TREE_VALUE (TREE_CHAIN (arglist));
op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0);
@@ -13474,12 +11979,8 @@ ix86_expand_builtin (exp, target, subtarget, mode, ignore)
case IX86_BUILTIN_STOREHPS:
case IX86_BUILTIN_STORELPS:
- case IX86_BUILTIN_STOREHPD:
- case IX86_BUILTIN_STORELPD:
- icode = (fcode == IX86_BUILTIN_STOREHPS ? CODE_FOR_sse_movhps
- : fcode == IX86_BUILTIN_STORELPS ? CODE_FOR_sse_movlps
- : fcode == IX86_BUILTIN_STOREHPD ? CODE_FOR_sse2_movhpd
- : CODE_FOR_sse2_movlpd);
+ icode = (fcode == IX86_BUILTIN_STOREHPS
+ ? CODE_FOR_sse_movhps : CODE_FOR_sse_movlps);
arg0 = TREE_VALUE (arglist);
arg1 = TREE_VALUE (TREE_CHAIN (arglist));
op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0);
@@ -13515,10 +12016,7 @@ ix86_expand_builtin (exp, target, subtarget, mode, ignore)
return copy_to_mode_reg (SImode, target);
case IX86_BUILTIN_SHUFPS:
- case IX86_BUILTIN_SHUFPD:
- icode = (fcode == IX86_BUILTIN_SHUFPS
- ? CODE_FOR_sse_shufps
- : CODE_FOR_sse2_shufpd);
+ icode = CODE_FOR_sse_shufps;
arg0 = TREE_VALUE (arglist);
arg1 = TREE_VALUE (TREE_CHAIN (arglist));
arg2 = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (arglist)));
@@ -13551,13 +12049,7 @@ ix86_expand_builtin (exp, target, subtarget, mode, ignore)
return target;
case IX86_BUILTIN_PSHUFW:
- case IX86_BUILTIN_PSHUFD:
- case IX86_BUILTIN_PSHUFHW:
- case IX86_BUILTIN_PSHUFLW:
- icode = ( fcode == IX86_BUILTIN_PSHUFHW ? CODE_FOR_sse2_pshufhw
- : fcode == IX86_BUILTIN_PSHUFLW ? CODE_FOR_sse2_pshuflw
- : fcode == IX86_BUILTIN_PSHUFD ? CODE_FOR_sse2_pshufd
- : CODE_FOR_mmx_pshufw);
+ icode = CODE_FOR_mmx_pshufw;
arg0 = TREE_VALUE (arglist);
arg1 = TREE_VALUE (TREE_CHAIN (arglist));
op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0);
@@ -13584,35 +12076,6 @@ ix86_expand_builtin (exp, target, subtarget, mode, ignore)
emit_insn (pat);
return target;
- case IX86_BUILTIN_PSLLDQI128:
- case IX86_BUILTIN_PSRLDQI128:
- icode = ( fcode == IX86_BUILTIN_PSLLDQI128 ? CODE_FOR_sse2_ashlti3
- : CODE_FOR_sse2_lshrti3);
- arg0 = TREE_VALUE (arglist);
- arg1 = TREE_VALUE (TREE_CHAIN (arglist));
- op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0);
- op1 = expand_expr (arg1, NULL_RTX, VOIDmode, 0);
- tmode = insn_data[icode].operand[0].mode;
- mode1 = insn_data[icode].operand[1].mode;
- mode2 = insn_data[icode].operand[2].mode;
-
- if (! (*insn_data[icode].operand[1].predicate) (op0, mode1))
- {
- op0 = copy_to_reg (op0);
- op0 = simplify_gen_subreg (mode1, op0, GET_MODE (op0), 0);
- }
- if (! (*insn_data[icode].operand[2].predicate) (op1, mode2))
- {
- error ("shift must be an immediate");
- return const0_rtx;
- }
- target = gen_reg_rtx (V2DImode);
- pat = GEN_FCN (icode) (simplify_gen_subreg (tmode, target, V2DImode, 0), op0, op1);
- if (! pat)
- return 0;
- emit_insn (pat);
- return target;
-
case IX86_BUILTIN_FEMMS:
emit_insn (gen_femms ());
return NULL_RTX;
@@ -13702,138 +12165,28 @@ ix86_expand_builtin (exp, target, subtarget, mode, ignore)
emit_insn (gen_mmx_clrdi (target));
return target;
- case IX86_BUILTIN_CLRTI:
- target = gen_reg_rtx (V2DImode);
- emit_insn (gen_sse2_clrti (simplify_gen_subreg (TImode, target, V2DImode, 0)));
- return target;
-
-
- case IX86_BUILTIN_SQRTSD:
- return ix86_expand_unop1_builtin (CODE_FOR_vmsqrtv2df2, arglist, target);
- case IX86_BUILTIN_LOADAPD:
- return ix86_expand_unop_builtin (CODE_FOR_sse2_movapd, arglist, target, 1);
- case IX86_BUILTIN_LOADUPD:
- return ix86_expand_unop_builtin (CODE_FOR_sse2_movupd, arglist, target, 1);
-
- case IX86_BUILTIN_STOREAPD:
- return ix86_expand_store_builtin (CODE_FOR_sse2_movapd, arglist);
- case IX86_BUILTIN_STOREUPD:
- return ix86_expand_store_builtin (CODE_FOR_sse2_movupd, arglist);
-
- case IX86_BUILTIN_LOADSD:
- return ix86_expand_unop_builtin (CODE_FOR_sse2_loadsd, arglist, target, 1);
-
- case IX86_BUILTIN_STORESD:
- return ix86_expand_store_builtin (CODE_FOR_sse2_storesd, arglist);
-
- case IX86_BUILTIN_SETPD1:
- target = assign_386_stack_local (DFmode, 0);
- arg0 = TREE_VALUE (arglist);
- emit_move_insn (adjust_address (target, DFmode, 0),
- expand_expr (arg0, NULL_RTX, VOIDmode, 0));
- op0 = gen_reg_rtx (V2DFmode);
- emit_insn (gen_sse2_loadsd (op0, adjust_address (target, V2DFmode, 0)));
- emit_insn (gen_sse2_shufpd (op0, op0, op0, GEN_INT (0)));
- return op0;
-
- case IX86_BUILTIN_SETPD:
- target = assign_386_stack_local (V2DFmode, 0);
- arg0 = TREE_VALUE (arglist);
- arg1 = TREE_VALUE (TREE_CHAIN (arglist));
- emit_move_insn (adjust_address (target, DFmode, 0),
- expand_expr (arg0, NULL_RTX, VOIDmode, 0));
- emit_move_insn (adjust_address (target, DFmode, 8),
- expand_expr (arg1, NULL_RTX, VOIDmode, 0));
- op0 = gen_reg_rtx (V2DFmode);
- emit_insn (gen_sse2_movapd (op0, target));
- return op0;
-
- case IX86_BUILTIN_LOADRPD:
- target = ix86_expand_unop_builtin (CODE_FOR_sse2_movapd, arglist,
- gen_reg_rtx (V2DFmode), 1);
- emit_insn (gen_sse2_shufpd (target, target, target, GEN_INT (1)));
- return target;
-
- case IX86_BUILTIN_LOADPD1:
- target = ix86_expand_unop_builtin (CODE_FOR_sse2_loadsd, arglist,
- gen_reg_rtx (V2DFmode), 1);
- emit_insn (gen_sse2_shufpd (target, target, target, const0_rtx));
- return target;
-
- case IX86_BUILTIN_STOREPD1:
- return ix86_expand_store_builtin (CODE_FOR_sse2_movapd, arglist);
- case IX86_BUILTIN_STORERPD:
- return ix86_expand_store_builtin (CODE_FOR_sse2_movapd, arglist);
-
- case IX86_BUILTIN_CLRPD:
- target = gen_reg_rtx (V2DFmode);
- emit_insn (gen_sse_clrv2df (target));
- return target;
-
- case IX86_BUILTIN_MFENCE:
- emit_insn (gen_sse2_mfence ());
- return 0;
- case IX86_BUILTIN_LFENCE:
- emit_insn (gen_sse2_lfence ());
- return 0;
-
- case IX86_BUILTIN_CLFLUSH:
- arg0 = TREE_VALUE (arglist);
- op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0);
- icode = CODE_FOR_sse2_clflush;
- if (! (*insn_data[icode].operand[0].predicate) (op0, Pmode))
- op0 = copy_to_mode_reg (Pmode, op0);
-
- emit_insn (gen_sse2_clflush (op0));
- return 0;
-
- case IX86_BUILTIN_MOVNTPD:
- return ix86_expand_store_builtin (CODE_FOR_sse2_movntv2df, arglist);
- case IX86_BUILTIN_MOVNTDQ:
- return ix86_expand_store_builtin (CODE_FOR_sse2_movntv2di, arglist);
- case IX86_BUILTIN_MOVNTI:
- return ix86_expand_store_builtin (CODE_FOR_sse2_movntsi, arglist);
-
- case IX86_BUILTIN_LOADDQA:
- return ix86_expand_unop_builtin (CODE_FOR_sse2_movdqa, arglist, target, 1);
- case IX86_BUILTIN_LOADDQU:
- return ix86_expand_unop_builtin (CODE_FOR_sse2_movdqu, arglist, target, 1);
- case IX86_BUILTIN_LOADD:
- return ix86_expand_unop_builtin (CODE_FOR_sse2_loadd, arglist, target, 1);
-
- case IX86_BUILTIN_STOREDQA:
- return ix86_expand_store_builtin (CODE_FOR_sse2_movdqa, arglist);
- case IX86_BUILTIN_STOREDQU:
- return ix86_expand_store_builtin (CODE_FOR_sse2_movdqu, arglist);
- case IX86_BUILTIN_STORED:
- return ix86_expand_store_builtin (CODE_FOR_sse2_stored, arglist);
-
default:
break;
}
- for (i = 0, d = bdesc_2arg; i < ARRAY_SIZE (bdesc_2arg); i++, d++)
+ for (i = 0, d = bdesc_2arg; i < sizeof (bdesc_2arg) / sizeof *d; i++, d++)
if (d->code == fcode)
{
/* Compares are treated specially. */
if (d->icode == CODE_FOR_maskcmpv4sf3
|| d->icode == CODE_FOR_vmmaskcmpv4sf3
|| d->icode == CODE_FOR_maskncmpv4sf3
- || d->icode == CODE_FOR_vmmaskncmpv4sf3
- || d->icode == CODE_FOR_maskcmpv2df3
- || d->icode == CODE_FOR_vmmaskcmpv2df3
- || d->icode == CODE_FOR_maskncmpv2df3
- || d->icode == CODE_FOR_vmmaskncmpv2df3)
+ || d->icode == CODE_FOR_vmmaskncmpv4sf3)
return ix86_expand_sse_compare (d, arglist, target);
return ix86_expand_binop_builtin (d->icode, arglist, target);
}
- for (i = 0, d = bdesc_1arg; i < ARRAY_SIZE (bdesc_1arg); i++, d++)
+ for (i = 0, d = bdesc_1arg; i < sizeof (bdesc_1arg) / sizeof *d; i++, d++)
if (d->code == fcode)
return ix86_expand_unop_builtin (d->icode, arglist, target, 0);
- for (i = 0, d = bdesc_comi; i < ARRAY_SIZE (bdesc_comi); i++, d++)
+ for (i = 0, d = bdesc_comi; i < sizeof (bdesc_comi) / sizeof *d; i++, d++)
if (d->code == fcode)
return ix86_expand_sse_comi (d, arglist, target);
@@ -13955,8 +12308,6 @@ ix86_preferred_reload_class (x, class)
rtx x;
enum reg_class class;
{
- if (GET_CODE (x) == CONST_VECTOR && x != CONST0_RTX (GET_MODE (x)))
- return NO_REGS;
if (GET_CODE (x) == CONST_DOUBLE && GET_MODE (x) != VOIDmode)
{
/* SSE can't load any constant directly yet. */
@@ -14088,10 +12439,9 @@ ix86_hard_regno_mode_ok (regno, mode)
if (FP_REGNO_P (regno))
return VALID_FP_MODE_P (mode);
if (SSE_REGNO_P (regno))
- return (TARGET_SSE ? VALID_SSE_REG_MODE (mode) : 0);
+ return VALID_SSE_REG_MODE (mode);
if (MMX_REGNO_P (regno))
- return (TARGET_MMX
- ? VALID_MMX_REG_MODE (mode) || VALID_MMX_REG_MODE_3DNOW (mode) : 0);
+ return VALID_MMX_REG_MODE (mode) || VALID_MMX_REG_MODE_3DNOW (mode);
/* We handle both integer and floats in the general purpose registers.
In future we should be able to handle vector modes as well. */
if (!VALID_INT_MODE_P (mode) && !VALID_FP_MODE_P (mode))
@@ -14192,12 +12542,11 @@ ix86_memory_move_cost (mode, class, in)
if (mode == TFmode)
mode = XFmode;
return ((in ? ix86_cost->int_load[2] : ix86_cost->int_store[2])
- * ((int) GET_MODE_SIZE (mode)
- + UNITS_PER_WORD -1 ) / UNITS_PER_WORD);
+ * (int) GET_MODE_SIZE (mode) / 4);
}
}
-#if defined (DO_GLOBAL_CTORS_BODY) && defined (HAS_INIT_SECTION)
+#ifdef DO_GLOBAL_CTORS_BODY
static void
ix86_svr3_asm_out_constructor (symbol, priority)
rtx symbol;
@@ -14210,71 +12559,6 @@ ix86_svr3_asm_out_constructor (symbol, priority)
}
#endif
-#if TARGET_MACHO
-
-static int current_machopic_label_num;
-
-/* Given a symbol name and its associated stub, write out the
- definition of the stub. */
-
-void
-machopic_output_stub (file, symb, stub)
- FILE *file;
- const char *symb, *stub;
-{
- unsigned int length;
- char *binder_name, *symbol_name, lazy_ptr_name[32];
- int label = ++current_machopic_label_num;
-
- /* Lose our funky encoding stuff so it doesn't contaminate the stub. */
- symb = (*targetm.strip_name_encoding) (symb);
-
- length = strlen (stub);
- binder_name = alloca (length + 32);
- GEN_BINDER_NAME_FOR_STUB (binder_name, stub, length);
-
- length = strlen (symb);
- symbol_name = alloca (length + 32);
- GEN_SYMBOL_NAME_FOR_SYMBOL (symbol_name, symb, length);
-
- sprintf (lazy_ptr_name, "L%d$lz", label);
-
- if (MACHOPIC_PURE)
- machopic_picsymbol_stub_section ();
- else
- machopic_symbol_stub_section ();
-
- fprintf (file, "%s:\n", stub);
- fprintf (file, "\t.indirect_symbol %s\n", symbol_name);
-
- if (MACHOPIC_PURE)
- {
- fprintf (file, "\tcall LPC$%d\nLPC$%d:\tpopl %%eax\n", label, label);
- fprintf (file, "\tmovl %s-LPC$%d(%%eax),%%edx\n", lazy_ptr_name, label);
- fprintf (file, "\tjmp %%edx\n");
- }
- else
- fprintf (file, "\tjmp *%s\n", lazy_ptr_name);
-
- fprintf (file, "%s:\n", binder_name);
-
- if (MACHOPIC_PURE)
- {
- fprintf (file, "\tlea %s-LPC$%d(%%eax),%%eax\n", lazy_ptr_name, label);
- fprintf (file, "\tpushl %%eax\n");
- }
- else
- fprintf (file, "\t pushl $%s\n", lazy_ptr_name);
-
- fprintf (file, "\tjmp dyld_stub_binding_helper\n");
-
- machopic_lazy_symbol_ptr_section ();
- fprintf (file, "%s:\n", lazy_ptr_name);
- fprintf (file, "\t.indirect_symbol %s\n", symbol_name);
- fprintf (file, "\t.long %s\n", binder_name);
-}
-#endif /* TARGET_MACHO */
-
/* Order the registers for register allocator. */
void
@@ -14298,7 +12582,7 @@ x86_order_regs_for_local_alloc ()
if (!TARGET_SSE_MATH)
for (i = FIRST_STACK_REG; i <= LAST_STACK_REG; i++)
reg_alloc_order [pos++] = i;
-
+
/* SSE registers. */
for (i = FIRST_SSE_REG; i <= LAST_SSE_REG; i++)
reg_alloc_order [pos++] = i;
@@ -14319,191 +12603,77 @@ x86_order_regs_for_local_alloc ()
reg_alloc_order [pos++] = 0;
}
-/* Returns an expression indicating where the this parameter is
- located on entry to the FUNCTION. */
-
-static rtx
-x86_this_parameter (function)
- tree function;
-{
- tree type = TREE_TYPE (function);
-
- if (TARGET_64BIT)
- {
- int n = aggregate_value_p (TREE_TYPE (type)) != 0;
- return gen_rtx_REG (DImode, x86_64_int_parameter_registers[n]);
- }
-
- if (ix86_fntype_regparm (type) > 0)
- {
- tree parm;
-
- parm = TYPE_ARG_TYPES (type);
- /* Figure out whether or not the function has a variable number of
- arguments. */
- for (; parm; parm = TREE_CHAIN (parm))
- if (TREE_VALUE (parm) == void_type_node)
- break;
- /* If not, the this parameter is in %eax. */
- if (parm)
- return gen_rtx_REG (SImode, 0);
- }
-
- if (aggregate_value_p (TREE_TYPE (type)))
- return gen_rtx_MEM (SImode, plus_constant (stack_pointer_rtx, 8));
- else
- return gen_rtx_MEM (SImode, plus_constant (stack_pointer_rtx, 4));
-}
-
-/* Determine whether x86_output_mi_thunk can succeed. */
-
-static bool
-x86_can_output_mi_thunk (thunk, delta, vcall_offset, function)
- tree thunk ATTRIBUTE_UNUSED;
- HOST_WIDE_INT delta ATTRIBUTE_UNUSED;
- HOST_WIDE_INT vcall_offset;
- tree function;
-{
- /* 64-bit can handle anything. */
- if (TARGET_64BIT)
- return true;
-
- /* For 32-bit, everything's fine if we have one free register. */
- if (ix86_fntype_regparm (TREE_TYPE (function)) < 3)
- return true;
-
- /* Need a free register for vcall_offset. */
- if (vcall_offset)
- return false;
-
- /* Need a free register for GOT references. */
- if (flag_pic && !(*targetm.binds_local_p) (function))
- return false;
-
- /* Otherwise ok. */
- return true;
-}
-
-/* Output the assembler code for a thunk function. THUNK_DECL is the
- declaration for the thunk function itself, FUNCTION is the decl for
- the target function. DELTA is an immediate constant offset to be
- added to THIS. If VCALL_OFFSET is non-zero, the word at
- *(*this + vcall_offset) should be added to THIS. */
-
-static void
-x86_output_mi_thunk (file, thunk, delta, vcall_offset, function)
- FILE *file ATTRIBUTE_UNUSED;
- tree thunk ATTRIBUTE_UNUSED;
- HOST_WIDE_INT delta;
- HOST_WIDE_INT vcall_offset;
+void
+x86_output_mi_thunk (file, delta, function)
+ FILE *file;
+ int delta;
tree function;
{
+ tree parm;
rtx xops[3];
- rtx this = x86_this_parameter (function);
- rtx this_reg, tmp;
- /* If VCALL_OFFSET, we'll need THIS in a register. Might as well
- pull it in now and let DELTA benefit. */
- if (REG_P (this))
- this_reg = this;
- else if (vcall_offset)
- {
- /* Put the this parameter into %eax. */
- xops[0] = this;
- xops[1] = this_reg = gen_rtx_REG (Pmode, 0);
- output_asm_insn ("mov{l}\t{%0, %1|%1, %0}", xops);
- }
+ if (ix86_regparm > 0)
+ parm = TYPE_ARG_TYPES (TREE_TYPE (function));
else
- this_reg = NULL_RTX;
+ parm = NULL_TREE;
+ for (; parm; parm = TREE_CHAIN (parm))
+ if (TREE_VALUE (parm) == void_type_node)
+ break;
- /* Adjust the this parameter by a fixed constant. */
- if (delta)
+ xops[0] = GEN_INT (delta);
+ if (TARGET_64BIT)
{
- xops[0] = GEN_INT (delta);
- xops[1] = this_reg ? this_reg : this;
- if (TARGET_64BIT)
+ int n = aggregate_value_p (TREE_TYPE (TREE_TYPE (function))) != 0;
+ xops[1] = gen_rtx_REG (DImode, x86_64_int_parameter_registers[n]);
+ output_asm_insn ("add{q} {%0, %1|%1, %0}", xops);
+ if (flag_pic)
{
- if (!x86_64_general_operand (xops[0], DImode))
- {
- tmp = gen_rtx_REG (DImode, FIRST_REX_INT_REG + 2 /* R10 */);
- xops[1] = tmp;
- output_asm_insn ("mov{q}\t{%1, %0|%0, %1}", xops);
- xops[0] = tmp;
- xops[1] = this;
- }
- output_asm_insn ("add{q}\t{%0, %1|%1, %0}", xops);
+ fprintf (file, "\tjmp *");
+ assemble_name (file, XSTR (XEXP (DECL_RTL (function), 0), 0));
+ fprintf (file, "@GOTPCREL(%%rip)\n");
}
else
- output_asm_insn ("add{l}\t{%0, %1|%1, %0}", xops);
- }
-
- /* Adjust the this parameter by a value stored in the vtable. */
- if (vcall_offset)
- {
- if (TARGET_64BIT)
- tmp = gen_rtx_REG (DImode, FIRST_REX_INT_REG + 2 /* R10 */);
- else
- tmp = gen_rtx_REG (SImode, 2 /* ECX */);
-
- xops[0] = gen_rtx_MEM (Pmode, this_reg);
- xops[1] = tmp;
- if (TARGET_64BIT)
- output_asm_insn ("mov{q}\t{%0, %1|%1, %0}", xops);
- else
- output_asm_insn ("mov{l}\t{%0, %1|%1, %0}", xops);
-
- /* Adjust the this parameter. */
- xops[0] = gen_rtx_MEM (Pmode, plus_constant (tmp, vcall_offset));
- if (TARGET_64BIT && !memory_operand (xops[0], Pmode))
{
- rtx tmp2 = gen_rtx_REG (DImode, FIRST_REX_INT_REG + 3 /* R11 */);
- xops[0] = GEN_INT (vcall_offset);
- xops[1] = tmp2;
- output_asm_insn ("mov{q}\t{%0, %1|%1, %0}", xops);
- xops[0] = gen_rtx_MEM (Pmode, gen_rtx_PLUS (Pmode, tmp, tmp2));
+ fprintf (file, "\tjmp ");
+ assemble_name (file, XSTR (XEXP (DECL_RTL (function), 0), 0));
+ fprintf (file, "\n");
}
- xops[1] = this_reg;
- if (TARGET_64BIT)
- output_asm_insn ("add{q}\t{%0, %1|%1, %0}", xops);
- else
- output_asm_insn ("add{l}\t{%0, %1|%1, %0}", xops);
- }
-
- /* If necessary, drop THIS back to its stack slot. */
- if (this_reg && this_reg != this)
- {
- xops[0] = this_reg;
- xops[1] = this;
- output_asm_insn ("mov{l}\t{%0, %1|%1, %0}", xops);
}
-
- xops[0] = DECL_RTL (function);
- if (TARGET_64BIT)
+ else
{
- if (!flag_pic || (*targetm.binds_local_p) (function))
- output_asm_insn ("jmp\t%P0", xops);
+ if (parm)
+ xops[1] = gen_rtx_REG (SImode, 0);
+ else if (aggregate_value_p (TREE_TYPE (TREE_TYPE (function))))
+ xops[1] = gen_rtx_MEM (SImode, plus_constant (stack_pointer_rtx, 8));
else
+ xops[1] = gen_rtx_MEM (SImode, plus_constant (stack_pointer_rtx, 4));
+ output_asm_insn ("add{l} {%0, %1|%1, %0}", xops);
+
+ if (flag_pic)
{
- tmp = XEXP (xops[0], 0);
- tmp = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, tmp), UNSPEC_GOTPCREL);
- tmp = gen_rtx_CONST (Pmode, tmp);
- tmp = gen_rtx_MEM (QImode, tmp);
- xops[0] = tmp;
- output_asm_insn ("jmp\t%A0", xops);
+ xops[0] = pic_offset_table_rtx;
+ xops[1] = gen_label_rtx ();
+ xops[2] = gen_rtx_SYMBOL_REF (Pmode, "_GLOBAL_OFFSET_TABLE_");
+
+ if (ix86_regparm > 2)
+ abort ();
+ output_asm_insn ("push{l}\t%0", xops);
+ output_asm_insn ("call\t%P1", xops);
+ ASM_OUTPUT_INTERNAL_LABEL (file, "L", CODE_LABEL_NUMBER (xops[1]));
+ output_asm_insn ("pop{l}\t%0", xops);
+ output_asm_insn
+ ("add{l}\t{%2+[.-%P1], %0|%0, OFFSET FLAT: %2+[.-%P1]}", xops);
+ xops[0] = gen_rtx_MEM (SImode, XEXP (DECL_RTL (function), 0));
+ output_asm_insn
+ ("mov{l}\t{%0@GOT(%%ebx), %%ecx|%%ecx, %0@GOT[%%ebx]}", xops);
+ asm_fprintf (file, "\tpop{l\t%%ebx|\t%%ebx}\n");
+ asm_fprintf (file, "\tjmp\t{*%%ecx|%%ecx}\n");
}
- }
- else
- {
- if (!flag_pic || (*targetm.binds_local_p) (function))
- output_asm_insn ("jmp\t%P0", xops);
else
{
- tmp = gen_rtx_REG (SImode, 2 /* ECX */);
- output_set_got (tmp);
-
- xops[1] = tmp;
- output_asm_insn ("mov{l}\t{%0@GOT(%1), %1|%1, %0@GOT[%1]}", xops);
- output_asm_insn ("jmp\t{*}%1", xops);
+ fprintf (file, "\tjmp ");
+ assemble_name (file, XSTR (XEXP (DECL_RTL (function), 0), 0));
+ fprintf (file, "\n");
}
}
}
@@ -14526,88 +12696,3 @@ x86_field_alignment (field, computed)
return MIN (32, computed);
return computed;
}
-
-/* Output assembler code to FILE to increment profiler label # LABELNO
- for profiling a function entry. */
-void
-x86_function_profiler (file, labelno)
- FILE *file;
- int labelno;
-{
- if (TARGET_64BIT)
- if (flag_pic)
- {
-#ifndef NO_PROFILE_COUNTERS
- fprintf (file, "\tleaq\t%sP%d@(%%rip),%%r11\n", LPREFIX, labelno);
-#endif
- fprintf (file, "\tcall\t*%s@GOTPCREL(%%rip)\n", MCOUNT_NAME);
- }
- else
- {
-#ifndef NO_PROFILE_COUNTERS
- fprintf (file, "\tmovq\t$%sP%d,%%r11\n", LPREFIX, labelno);
-#endif
- fprintf (file, "\tcall\t%s\n", MCOUNT_NAME);
- }
- else if (flag_pic)
- {
-#ifndef NO_PROFILE_COUNTERS
- fprintf (file, "\tleal\t%sP%d@GOTOFF(%%ebx),%%%s\n",
- LPREFIX, labelno, PROFILE_COUNT_REGISTER);
-#endif
- fprintf (file, "\tcall\t*%s@GOT(%%ebx)\n", MCOUNT_NAME);
- }
- else
- {
-#ifndef NO_PROFILE_COUNTERS
- fprintf (file, "\tmovl\t$%sP%d,%%%s\n", LPREFIX, labelno,
- PROFILE_COUNT_REGISTER);
-#endif
- fprintf (file, "\tcall\t%s\n", MCOUNT_NAME);
- }
-}
-
-/* Implement machine specific optimizations.
- At the moment we implement single transformation: AMD Athlon works faster
- when RET is not destination of conditional jump or directly preceeded
- by other jump instruction. We avoid the penalty by inserting NOP just
- before the RET instructions in such cases. */
-void
-x86_machine_dependent_reorg (first)
- rtx first ATTRIBUTE_UNUSED;
-{
- edge e;
-
- if (!TARGET_ATHLON || !optimize || optimize_size)
- return;
- for (e = EXIT_BLOCK_PTR->pred; e; e = e->pred_next)
- {
- basic_block bb = e->src;
- rtx ret = bb->end;
- rtx prev;
- bool insert = false;
-
- if (!returnjump_p (ret) || !maybe_hot_bb_p (bb))
- continue;
- prev = prev_nonnote_insn (ret);
- if (prev && GET_CODE (prev) == CODE_LABEL)
- {
- edge e;
- for (e = bb->pred; e; e = e->pred_next)
- if (EDGE_FREQUENCY (e) && e->src->index > 0
- && !(e->flags & EDGE_FALLTHRU))
- insert = 1;
- }
- if (!insert)
- {
- prev = prev_real_insn (ret);
- if (prev && GET_CODE (prev) == JUMP_INSN
- && any_condjump_p (prev))
- insert = 1;
- }
- if (insert)
- emit_insn_before (gen_nop (), ret);
- }
-}
-
-#include "gt-i386.h"
diff --git a/contrib/gcc/config/i386/i386.h b/contrib/gcc/config/i386/i386.h
index ead133b..8c7f120 100644
--- a/contrib/gcc/config/i386/i386.h
+++ b/contrib/gcc/config/i386/i386.h
@@ -34,6 +34,24 @@ Boston, MA 02111-1307, USA. */
ADDR_BEG, ADDR_END, PRINT_IREG, PRINT_SCALE, PRINT_B_I_S, and many
that start with ASM_ or end in ASM_OP. */
+
+/* $FreeBSD$ */
+
+
+/* Stubs for half-pic support if not OSF/1 reference platform. */
+
+#ifndef HALF_PIC_P
+#define HALF_PIC_P() 0
+#define HALF_PIC_NUMBER_PTRS 0
+#define HALF_PIC_NUMBER_REFS 0
+#define HALF_PIC_ENCODE(DECL)
+#define HALF_PIC_DECLARE(NAME)
+#define HALF_PIC_INIT() error ("half-pic init called on systems that don't support it")
+#define HALF_PIC_ADDRESS_P(X) 0
+#define HALF_PIC_PTR(X) (X)
+#define HALF_PIC_FINISH(STREAM)
+#endif
+
/* Define the specific costs for a given cpu */
struct processor_costs {
@@ -75,12 +93,6 @@ struct processor_costs {
const int prefetch_block; /* bytes moved to cache for prefetch. */
const int simultaneous_prefetches; /* number of parallel prefetch
operations. */
- const int fadd; /* cost of FADD and FSUB instructions. */
- const int fmul; /* cost of FMUL instruction. */
- const int fdiv; /* cost of FDIV instruction. */
- const int fabs; /* cost of FABS instruction. */
- const int fchs; /* cost of FCHS instruction. */
- const int fsqrt; /* cost of FSQRT instruction. */
};
extern const struct processor_costs *ix86_cost;
@@ -111,25 +123,29 @@ extern int target_flags;
#define MASK_INLINE_ALL_STROPS 0x00000400 /* Inline stringops in all cases */
#define MASK_NO_PUSH_ARGS 0x00000800 /* Use push instructions */
#define MASK_ACCUMULATE_OUTGOING_ARGS 0x00001000/* Accumulate outgoing args */
-#define MASK_MMX 0x00002000 /* Support MMX regs/builtins */
-#define MASK_SSE 0x00004000 /* Support SSE regs/builtins */
-#define MASK_SSE2 0x00008000 /* Support SSE2 regs/builtins */
-#define MASK_3DNOW 0x00010000 /* Support 3Dnow builtins */
-#define MASK_3DNOW_A 0x00020000 /* Support Athlon 3Dnow builtins */
-#define MASK_128BIT_LONG_DOUBLE 0x00040000 /* long double size is 128bit */
-#define MASK_64BIT 0x00080000 /* Produce 64bit code */
-
-/* Unused: 0x03f0000 */
-
+#define MASK_ACCUMULATE_OUTGOING_ARGS_SET 0x00002000
+#define MASK_MMX 0x00004000 /* Support MMX regs/builtins */
+#define MASK_MMX_SET 0x00008000
+#define MASK_SSE 0x00010000 /* Support SSE regs/builtins */
+#define MASK_SSE_SET 0x00020000
+#define MASK_SSE2 0x00040000 /* Support SSE2 regs/builtins */
+#define MASK_SSE2_SET 0x00080000
+#define MASK_3DNOW 0x00100000 /* Support 3Dnow builtins */
+#define MASK_3DNOW_SET 0x00200000
+#define MASK_3DNOW_A 0x00400000 /* Support Athlon 3Dnow builtins */
+#define MASK_3DNOW_A_SET 0x00800000
+#define MASK_128BIT_LONG_DOUBLE 0x01000000 /* long double size is 128bit */
+#define MASK_64BIT 0x02000000 /* Produce 64bit code */
/* ... overlap with subtarget options starts by 0x04000000. */
#define MASK_NO_RED_ZONE 0x04000000 /* Do not use red zone */
+#define MASK_NO_ALIGN_LONG_STRINGS 0x08000000 /* Do not align long strings specially */
/* Use the floating point instructions */
#define TARGET_80387 (target_flags & MASK_80387)
/* Compile using ret insn that pops args.
This will not work unless you use prototypes at least
- for all functions that can take varying numbers of args. */
+ for all functions that can take varying numbers of args. */
#define TARGET_RTD (target_flags & MASK_RTD)
/* Align doubles to a two word boundary. This breaks compatibility with
@@ -177,25 +193,16 @@ extern int target_flags;
/* Debug FUNCTION_ARG macros */
#define TARGET_DEBUG_ARG (ix86_debug_arg_string != 0)
-/* 64bit Sledgehammer mode. For libgcc2 we make sure this is a
- compile-time constant. */
-#ifdef IN_LIBGCC2
-#ifdef __x86_64__
-#define TARGET_64BIT 1
-#else
-#define TARGET_64BIT 0
-#endif
-#else
+/* 64bit Sledgehammer mode */
#ifdef TARGET_BI_ARCH
#define TARGET_64BIT (target_flags & MASK_64BIT)
#else
-#if TARGET_64BIT_DEFAULT
+#ifdef TARGET_64BIT_DEFAULT
#define TARGET_64BIT 1
#else
#define TARGET_64BIT 0
#endif
#endif
-#endif
#define TARGET_386 (ix86_cpu == PROCESSOR_I386)
#define TARGET_486 (ix86_cpu == PROCESSOR_I486)
@@ -213,14 +220,14 @@ extern const int x86_double_with_add, x86_partial_reg_stall, x86_movx;
extern const int x86_use_loop, x86_use_fiop, x86_use_mov0;
extern const int x86_use_cltd, x86_read_modify_write;
extern const int x86_read_modify, x86_split_long_moves;
-extern const int x86_promote_QImode, x86_single_stringop, x86_fast_prefix;
+extern const int x86_promote_QImode, x86_single_stringop;
extern const int x86_himode_math, x86_qimode_math, x86_promote_qi_regs;
extern const int x86_promote_hi_regs, x86_integer_DFmode_moves;
extern const int x86_add_esp_4, x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8;
extern const int x86_partial_reg_dependency, x86_memory_mismatch_stall;
extern const int x86_accumulate_outgoing_args, x86_prologue_using_move;
extern const int x86_epilogue_using_move, x86_decompose_lea;
-extern const int x86_arch_always_fancy_math_387, x86_shift1;
+extern const int x86_arch_always_fancy_math_387;
extern int x86_prefetch_sse;
#define TARGET_USE_LEAVE (x86_use_leave & CPUMASK)
@@ -245,7 +252,6 @@ extern int x86_prefetch_sse;
#define TARGET_READ_MODIFY_WRITE (x86_read_modify_write & CPUMASK)
#define TARGET_READ_MODIFY (x86_read_modify & CPUMASK)
#define TARGET_PROMOTE_QImode (x86_promote_QImode & CPUMASK)
-#define TARGET_FAST_PREFIX (x86_fast_prefix & CPUMASK)
#define TARGET_SINGLE_STRINGOP (x86_single_stringop & CPUMASK)
#define TARGET_QIMODE_MATH (x86_qimode_math & CPUMASK)
#define TARGET_HIMODE_MATH (x86_himode_math & CPUMASK)
@@ -262,7 +268,6 @@ extern int x86_prefetch_sse;
#define TARGET_EPILOGUE_USING_MOVE (x86_epilogue_using_move & CPUMASK)
#define TARGET_DECOMPOSE_LEA (x86_decompose_lea & CPUMASK)
#define TARGET_PREFETCH_SSE (x86_prefetch_sse)
-#define TARGET_SHIFT1 (x86_shift1 & CPUMASK)
#define TARGET_STACK_PROBE (target_flags & MASK_STACK_PROBE)
@@ -282,8 +287,7 @@ extern int x86_prefetch_sse;
#define TARGET_RED_ZONE (!(target_flags & MASK_NO_RED_ZONE))
-#define TARGET_GNU_TLS (ix86_tls_dialect == TLS_DIALECT_GNU)
-#define TARGET_SUN_TLS (ix86_tls_dialect == TLS_DIALECT_SUN)
+#define TARGET_NO_ALIGN_LONG_STRINGS (target_flags & MASK_NO_ALIGN_LONG_STRINGS)
/* WARNING: Do not mark empty strings for translation, as calling
gettext on an empty string does NOT return an empty
@@ -346,25 +350,30 @@ extern int x86_prefetch_sse;
N_("Use push instructions to save outgoing arguments") }, \
{ "no-push-args", MASK_NO_PUSH_ARGS, \
N_("Do not use push instructions to save outgoing arguments") }, \
- { "accumulate-outgoing-args", MASK_ACCUMULATE_OUTGOING_ARGS, \
+ { "accumulate-outgoing-args", (MASK_ACCUMULATE_OUTGOING_ARGS \
+ | MASK_ACCUMULATE_OUTGOING_ARGS_SET), \
N_("Use push instructions to save outgoing arguments") }, \
- { "no-accumulate-outgoing-args",-MASK_ACCUMULATE_OUTGOING_ARGS, \
+ { "no-accumulate-outgoing-args",MASK_ACCUMULATE_OUTGOING_ARGS_SET, \
N_("Do not use push instructions to save outgoing arguments") }, \
- { "mmx", MASK_MMX, \
+ { "mmx", MASK_MMX | MASK_MMX_SET, \
N_("Support MMX built-in functions") }, \
{ "no-mmx", -MASK_MMX, \
N_("Do not support MMX built-in functions") }, \
- { "3dnow", MASK_3DNOW, \
+ { "no-mmx", MASK_MMX_SET, "" }, \
+ { "3dnow", MASK_3DNOW | MASK_3DNOW_SET, \
N_("Support 3DNow! built-in functions") }, \
- { "no-3dnow", -MASK_3DNOW, \
+ { "no-3dnow", -MASK_3DNOW, "" }, \
+ { "no-3dnow", MASK_3DNOW_SET, \
N_("Do not support 3DNow! built-in functions") }, \
- { "sse", MASK_SSE, \
+ { "sse", MASK_SSE | MASK_SSE_SET, \
N_("Support MMX and SSE built-in functions and code generation") }, \
- { "no-sse", -MASK_SSE, \
+ { "no-sse", -MASK_SSE, "" }, \
+ { "no-sse", MASK_SSE_SET, \
N_("Do not support MMX and SSE built-in functions and code generation") },\
- { "sse2", MASK_SSE2, \
+ { "sse2", MASK_SSE2 | MASK_SSE2_SET, \
N_("Support MMX, SSE and SSE2 built-in functions and code generation") }, \
- { "no-sse2", -MASK_SSE2, \
+ { "no-sse2", -MASK_SSE2, "" }, \
+ { "no-sse2", MASK_SSE2_SET, \
N_("Do not support MMX, SSE and SSE2 built-in functions and code generation") }, \
{ "128bit-long-double", MASK_128BIT_LONG_DOUBLE, \
N_("sizeof(long double) is 16") }, \
@@ -378,22 +387,43 @@ extern int x86_prefetch_sse;
N_("Use red-zone in the x86-64 code") }, \
{ "no-red-zone", MASK_NO_RED_ZONE, \
N_("Do not use red-zone in the x86-64 code") }, \
+ { "no-align-long-strings", MASK_NO_ALIGN_LONG_STRINGS, \
+ N_("Do not align long strings specially") }, \
+ { "align-long-strings", -MASK_NO_ALIGN_LONG_STRINGS, \
+ N_("Align strings longer than 30 on a 32-byte boundary") }, \
SUBTARGET_SWITCHES \
- { "", TARGET_DEFAULT | TARGET_64BIT_DEFAULT | TARGET_SUBTARGET_DEFAULT, 0 }}
+ { "", TARGET_DEFAULT, 0 }}
-#ifndef TARGET_64BIT_DEFAULT
-#define TARGET_64BIT_DEFAULT 0
+#ifdef TARGET_64BIT_DEFAULT
+#define TARGET_DEFAULT (MASK_64BIT | TARGET_SUBTARGET_DEFAULT)
+#else
+#define TARGET_DEFAULT TARGET_SUBTARGET_DEFAULT
#endif
-/* Once GDB has been enhanced to deal with functions without frame
- pointers, we can change this to allow for elimination of
- the frame pointer in leaf functions. */
-#define TARGET_DEFAULT 0
+/* Which processor to schedule for. The cpu attribute defines a list that
+ mirrors this list, so changes to i386.md must be made at the same time. */
-/* This is not really a target flag, but is done this way so that
- it's analogous to similar code for Mach-O on PowerPC. darwin.h
- redefines this to 1. */
-#define TARGET_MACHO 0
+enum processor_type
+{
+ PROCESSOR_I386, /* 80386 */
+ PROCESSOR_I486, /* 80486DX, 80486SX, 80486DX[24] */
+ PROCESSOR_PENTIUM,
+ PROCESSOR_PENTIUMPRO,
+ PROCESSOR_K6,
+ PROCESSOR_ATHLON,
+ PROCESSOR_PENTIUM4,
+ PROCESSOR_max
+};
+enum fpmath_unit
+{
+ FPMATH_387 = 1,
+ FPMATH_SSE = 2
+};
+
+extern enum processor_type ix86_cpu;
+extern enum fpmath_unit ix86_fpmath;
+
+extern int ix86_arch;
/* This macro is similar to `TARGET_SWITCHES' but defines names of
command options that have values. Its definition is an
@@ -432,8 +462,6 @@ extern int x86_prefetch_sse;
"" /* Undocumented. */ }, \
{ "asm=", &ix86_asm_string, \
N_("Use given assembler dialect") }, \
- { "tls-dialect=", &ix86_tls_dialect_string, \
- N_("Use given thread-local storage dialect") }, \
SUBTARGET_OPTIONS \
}
@@ -475,138 +503,6 @@ extern int x86_prefetch_sse;
%n`-mno-intel-syntax' is deprecated. Use `-masm=att' instead.\n}"
#endif
-/* Target CPU builtins. */
-#define TARGET_CPU_CPP_BUILTINS() \
- do \
- { \
- size_t arch_len = strlen (ix86_arch_string); \
- size_t cpu_len = strlen (ix86_cpu_string); \
- int last_arch_char = ix86_arch_string[arch_len - 1]; \
- int last_cpu_char = ix86_cpu_string[cpu_len - 1]; \
- \
- if (TARGET_64BIT) \
- { \
- builtin_assert ("cpu=x86_64"); \
- builtin_define ("__x86_64"); \
- builtin_define ("__x86_64__"); \
- builtin_define ("__amd64"); \
- builtin_define ("__amd64__"); \
- } \
- else \
- { \
- builtin_assert ("cpu=i386"); \
- builtin_assert ("machine=i386"); \
- builtin_define_std ("i386"); \
- } \
- \
- /* Built-ins based on -mcpu= (or -march= if no \
- CPU given). */ \
- if (TARGET_386) \
- builtin_define ("__tune_i386__"); \
- else if (TARGET_486) \
- builtin_define ("__tune_i486__"); \
- else if (TARGET_PENTIUM) \
- { \
- builtin_define ("__tune_i586__"); \
- builtin_define ("__tune_pentium__"); \
- if (last_cpu_char == 'x') \
- builtin_define ("__tune_pentium_mmx__"); \
- } \
- else if (TARGET_PENTIUMPRO) \
- { \
- builtin_define ("__tune_i686__"); \
- builtin_define ("__tune_pentiumpro__"); \
- switch (last_cpu_char) \
- { \
- case '3': \
- builtin_define ("__tune_pentium3__"); \
- /* FALLTHRU */ \
- case '2': \
- builtin_define ("__tune_pentium2__"); \
- break; \
- } \
- } \
- else if (TARGET_K6) \
- { \
- builtin_define ("__tune_k6__"); \
- if (last_cpu_char == '2') \
- builtin_define ("__tune_k6_2__"); \
- else if (last_cpu_char == '3') \
- builtin_define ("__tune_k6_3__"); \
- } \
- else if (TARGET_ATHLON) \
- { \
- builtin_define ("__tune_athlon__"); \
- /* Only plain "athlon" lacks SSE. */ \
- if (last_cpu_char != 'n') \
- builtin_define ("__tune_athlon_sse__"); \
- } \
- else if (TARGET_PENTIUM4) \
- builtin_define ("__tune_pentium4__"); \
- \
- if (TARGET_MMX) \
- builtin_define ("__MMX__"); \
- if (TARGET_3DNOW) \
- builtin_define ("__3dNOW__"); \
- if (TARGET_3DNOW_A) \
- builtin_define ("__3dNOW_A__"); \
- if (TARGET_SSE) \
- builtin_define ("__SSE__"); \
- if (TARGET_SSE2) \
- builtin_define ("__SSE2__"); \
- if (TARGET_SSE_MATH && TARGET_SSE) \
- builtin_define ("__SSE_MATH__"); \
- if (TARGET_SSE_MATH && TARGET_SSE2) \
- builtin_define ("__SSE2_MATH__"); \
- \
- /* Built-ins based on -march=. */ \
- if (ix86_arch == PROCESSOR_I486) \
- { \
- builtin_define ("__i486"); \
- builtin_define ("__i486__"); \
- } \
- else if (ix86_arch == PROCESSOR_PENTIUM) \
- { \
- builtin_define ("__i586"); \
- builtin_define ("__i586__"); \
- builtin_define ("__pentium"); \
- builtin_define ("__pentium__"); \
- if (last_arch_char == 'x') \
- builtin_define ("__pentium_mmx__"); \
- } \
- else if (ix86_arch == PROCESSOR_PENTIUMPRO) \
- { \
- builtin_define ("__i686"); \
- builtin_define ("__i686__"); \
- builtin_define ("__pentiumpro"); \
- builtin_define ("__pentiumpro__"); \
- } \
- else if (ix86_arch == PROCESSOR_K6) \
- { \
- \
- builtin_define ("__k6"); \
- builtin_define ("__k6__"); \
- if (last_arch_char == '2') \
- builtin_define ("__k6_2__"); \
- else if (last_arch_char == '3') \
- builtin_define ("__k6_3__"); \
- } \
- else if (ix86_arch == PROCESSOR_ATHLON) \
- { \
- builtin_define ("__athlon"); \
- builtin_define ("__athlon__"); \
- /* Only plain "athlon" lacks SSE. */ \
- if (last_arch_char != 'n') \
- builtin_define ("__athlon_sse__"); \
- } \
- else if (ix86_arch == PROCESSOR_PENTIUM4) \
- { \
- builtin_define ("__pentium4"); \
- builtin_define ("__pentium4__"); \
- } \
- } \
- while (0)
-
#define TARGET_CPU_DEFAULT_i386 0
#define TARGET_CPU_DEFAULT_i486 1
#define TARGET_CPU_DEFAULT_pentium 2
@@ -625,6 +521,137 @@ extern int x86_prefetch_sse;
"pentiumpro", "pentium2", "pentium3", \
"pentium4", "k6", "k6-2", "k6-3",\
"athlon", "athlon-4"}
+#ifndef CPP_CPU_DEFAULT_SPEC
+#if TARGET_CPU_DEFAULT == TARGET_CPU_DEFAULT_i486
+#define CPP_CPU_DEFAULT_SPEC "-D__tune_i486__"
+#endif
+#if TARGET_CPU_DEFAULT == TARGET_CPU_DEFAULT_pentium
+#define CPP_CPU_DEFAULT_SPEC "-D__tune_i586__ -D__tune_pentium__"
+#endif
+#if TARGET_CPU_DEFAULT == TARGET_CPU_DEFAULT_pentium_mmx
+#define CPP_CPU_DEFAULT_SPEC "-D__tune_i586__ -D__tune_pentium__ -D__tune_pentium_mmx__"
+#endif
+#if TARGET_CPU_DEFAULT == TARGET_CPU_DEFAULT_pentiumpro
+#define CPP_CPU_DEFAULT_SPEC "-D__tune_i686__ -D__tune_pentiumpro__"
+#endif
+#if TARGET_CPU_DEFAULT == TARGET_CPU_DEFAULT_pentium2
+#define CPP_CPU_DEFAULT_SPEC "-D__tune_i686__ -D__tune_pentiumpro__ \
+-D__tune_pentium2__"
+#endif
+#if TARGET_CPU_DEFAULT == TARGET_CPU_DEFAULT_pentium3
+#define CPP_CPU_DEFAULT_SPEC "-D__tune_i686__ -D__tune_pentiumpro__ \
+-D__tune_pentium2__ -D__tune_pentium3__"
+#endif
+#if TARGET_CPU_DEFAULT == TARGET_CPU_DEFAULT_pentium4
+#define CPP_CPU_DEFAULT_SPEC "-D__tune_pentium4__"
+#endif
+#if TARGET_CPU_DEFAULT == TARGET_CPU_DEFAULT_k6
+#define CPP_CPU_DEFAULT_SPEC "-D__tune_k6__"
+#endif
+#if TARGET_CPU_DEFAULT == TARGET_CPU_DEFAULT_k6_2
+#define CPP_CPU_DEFAULT_SPEC "-D__tune_k6__ -D__tune_k6_2__"
+#endif
+#if TARGET_CPU_DEFAULT == TARGET_CPU_DEFAULT_k6_3
+#define CPP_CPU_DEFAULT_SPEC "-D__tune_k6__ -D__tune_k6_3__"
+#endif
+#if TARGET_CPU_DEFAULT == TARGET_CPU_DEFAULT_athlon
+#define CPP_CPU_DEFAULT_SPEC "-D__tune_athlon__"
+#endif
+#if TARGET_CPU_DEFAULT == TARGET_CPU_DEFAULT_athlon_sse
+#define CPP_CPU_DEFAULT_SPEC "-D__tune_athlon__ -D__tune_athlon_sse__"
+#endif
+#ifndef CPP_CPU_DEFAULT_SPEC
+#define CPP_CPU_DEFAULT_SPEC "-D__tune_i386__"
+#endif
+#endif /* CPP_CPU_DEFAULT_SPEC */
+
+#ifdef TARGET_BI_ARCH
+#define NO_BUILTIN_SIZE_TYPE
+#define NO_BUILTIN_PTRDIFF_TYPE
+#endif
+
+#ifdef NO_BUILTIN_SIZE_TYPE
+#define CPP_CPU32_SIZE_TYPE_SPEC \
+ " -D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int"
+#define CPP_CPU64_SIZE_TYPE_SPEC \
+ " -D__SIZE_TYPE__=unsigned\\ long\\ int -D__PTRDIFF_TYPE__=long\\ int"
+#else
+#define CPP_CPU32_SIZE_TYPE_SPEC ""
+#define CPP_CPU64_SIZE_TYPE_SPEC ""
+#endif
+
+#define CPP_CPU32_SPEC \
+ "-Acpu=i386 -Amachine=i386 %{!ansi:%{!std=c*:%{!std=i*:-Di386}}} -D__i386 \
+-D__i386__ %(cpp_cpu32sizet)"
+
+#define CPP_CPU64_SPEC \
+ "-Acpu=x86_64 -Amachine=x86_64 -D__x86_64 -D__x86_64__ %(cpp_cpu64sizet) -D__amd64__ -D__AMD64__"
+
+#define CPP_CPUCOMMON_SPEC "\
+%{march=i386:%{!mcpu*:-D__tune_i386__ }}\
+%{march=i486:-D__i486 -D__i486__ %{!mcpu*:-D__tune_i486__ }}\
+%{march=pentium|march=i586:-D__i586 -D__i586__ -D__pentium -D__pentium__ \
+ %{!mcpu*:-D__tune_i586__ -D__tune_pentium__ }}\
+%{march=pentium-mmx:-D__i586 -D__i586__ -D__pentium -D__pentium__ \
+ -D__pentium__mmx__ \
+ %{!mcpu*:-D__tune_i586__ -D__tune_pentium__ -D__tune_pentium_mmx__}}\
+%{march=pentiumpro|march=i686|march=pentium2|march=pentium3:-D__i686 -D__i686__ \
+ -D__pentiumpro -D__pentiumpro__ \
+ %{!mcpu*:-D__tune_i686__ -D__tune_pentiumpro__ }}\
+%{march=march=pentium2|march=pentium3: -D__pentium2 -D__pentium2__\
+ %{!mcpu*:-D__tune_pentium2__ }}\
+%{march=pentium3: -D__pentium3 -D__pentium3__\
+ %{!mcpu*:-D__tune_pentium3__ }}\
+%{march=k6:-D__k6 -D__k6__ %{!mcpu*:-D__tune_k6__ }}\
+%{march=k6-2:-D__k6 -D__k6__ -D__k6_2__ \
+ %{!mcpu*:-D__tune_k6__ -D__tune_k6_2__ }}\
+%{march=k6-3:-D__k6 -D__k6__ -D__k6_3__ \
+ %{!mcpu*:-D__tune_k6__ -D__tune_k6_3__ }}\
+%{march=athlon|march=athlon-tbird:-D__athlon -D__athlon__ \
+ %{!mcpu*:-D__tune_athlon__ }}\
+%{march=athlon-4|march=athlon-xp|march=athlon-mp:-D__athlon -D__athlon__ \
+ -D__athlon_sse__ \
+ %{!mcpu*:-D__tune_athlon__ -D__tune_athlon_sse__ }}\
+%{march=pentium4:-D__pentium4 -D__pentium4__ %{!mcpu*:-D__tune_pentium4__ }}\
+%{m386|mcpu=i386:-D__tune_i386__ }\
+%{m486|mcpu=i486:-D__tune_i486__ }\
+%{mpentium|mcpu=pentium|mcpu=i586|mcpu=pentium-mmx:-D__tune_i586__ -D__tune_pentium__ }\
+%{mpentiumpro|mcpu=pentiumpro|mcpu=i686|mcpu=pentium2|mcpu=pentium3:-D__tune_i686__ \
+-D__tune_pentiumpro__ }\
+%{mcpu=k6|mcpu=k6-2|mcpu=k6-3:-D__tune_k6__ }\
+%{mcpu=athlon|mcpu=athlon-tbird|mcpu=athlon-4|mcpu=athlon-xp|mcpu=athlon-mp:\
+-D__tune_athlon__ }\
+%{mcpu=athlon-4|mcpu=athlon-xp|mcpu=athlon-mp:\
+-D__tune_athlon_sse__ }\
+%{mcpu=pentium4:-D__tune_pentium4__ }\
+%{march=athlon-xp|march=athlon-mp|march=pentium3|march=pentium4|msse|msse2:\
+-D__SSE__ }\
+%{march=pentium-mmx|march=k6|march=k6-2|march=k6-3\
+|march=athlon|march=athlon-tbird|march=athlon-4|march=athlon-xp\
+|march=athlon-mp|march=pentium2|march=pentium3|march=pentium4|mmx|msse|m3dnow: -D__MMX__ }\
+%{march=k6-2|march=k6-3\
+|march=athlon|march=athlon-tbird|march=athlon-4|march=athlon-xp\
+|march=athlon-mp|m3dnow: -D__3dNOW__ }\
+%{march=athlon|march=athlon-tbird|march=athlon-4|march=athlon-xp\
+|march=athlon-mp: -D__3dNOW_A__ }\
+%{march=pentium4|msse2: -D__SSE2__ }\
+%{!march*:%{!mcpu*:%{!m386:%{!m486:%{!mpentium*:%(cpp_cpu_default)}}}}}"
+
+#ifndef CPP_CPU_SPEC
+#ifdef TARGET_BI_ARCH
+#ifdef TARGET_64BIT_DEFAULT
+#define CPP_CPU_SPEC "%{m32:%(cpp_cpu32)}%{!m32:%(cpp_cpu64)} %(cpp_cpucommon)"
+#else
+#define CPP_CPU_SPEC "%{m64:%(cpp_cpu64)}%{!m64:%(cpp_cpu32)} %(cpp_cpucommon)"
+#endif
+#else
+#ifdef TARGET_64BIT_DEFAULT
+#define CPP_CPU_SPEC "%(cpp_cpu64) %(cpp_cpucommon)"
+#else
+#define CPP_CPU_SPEC "%(cpp_cpu32) %(cpp_cpucommon)"
+#endif
+#endif
+#endif
#ifndef CC1_SPEC
#define CC1_SPEC "%(cc1_cpu) "
@@ -645,14 +672,24 @@ extern int x86_prefetch_sse;
#endif
#define EXTRA_SPECS \
+ { "cpp_cpu_default", CPP_CPU_DEFAULT_SPEC }, \
+ { "cpp_cpu", CPP_CPU_SPEC }, \
+ { "cpp_cpu32", CPP_CPU32_SPEC }, \
+ { "cpp_cpu64", CPP_CPU64_SPEC }, \
+ { "cpp_cpu32sizet", CPP_CPU32_SIZE_TYPE_SPEC }, \
+ { "cpp_cpu64sizet", CPP_CPU64_SIZE_TYPE_SPEC }, \
+ { "cpp_cpucommon", CPP_CPUCOMMON_SPEC }, \
{ "cc1_cpu", CC1_CPU_SPEC }, \
SUBTARGET_EXTRA_SPECS
/* target machine storage layout */
/* Define for XFmode or TFmode extended real floating point support.
+ This will automatically cause REAL_ARITHMETIC to be defined.
+
The XFmode is specified by i386 ABI, while TFmode may be faster
- due to alignment and simplifications in the address calculations. */
+ due to alignment and simplifications in the address calculations.
+ */
#define LONG_DOUBLE_TYPE_SIZE (TARGET_128BIT_LONG_DOUBLE ? 128 : 96)
#define MAX_LONG_DOUBLE_TYPE_SIZE 128
#ifdef __x86_64__
@@ -660,24 +697,22 @@ extern int x86_prefetch_sse;
#else
#define LIBGCC2_LONG_DOUBLE_TYPE_SIZE 96
#endif
+/* Tell real.c that this is the 80-bit Intel extended float format
+ packaged in a 128-bit or 96bit entity. */
+#define INTEL_EXTENDED_IEEE_FORMAT 1
-/* Set the value of FLT_EVAL_METHOD in float.h. When using only the
- FPU, assume that the fpcw is set to extended precision; when using
- only SSE, rounding is correct; when using both SSE and the FPU,
- the rounding precision is indeterminate, since either may be chosen
- apparently at random. */
-#define TARGET_FLT_EVAL_METHOD \
- (TARGET_MIX_SSE_I387 ? -1 : TARGET_SSE_MATH ? 1 : 2)
#define SHORT_TYPE_SIZE 16
#define INT_TYPE_SIZE 32
#define FLOAT_TYPE_SIZE 32
+#ifndef LONG_TYPE_SIZE
#define LONG_TYPE_SIZE BITS_PER_WORD
+#endif
#define MAX_WCHAR_TYPE_SIZE 32
#define DOUBLE_TYPE_SIZE 64
#define LONG_LONG_TYPE_SIZE 64
-#if defined (TARGET_BI_ARCH) || TARGET_64BIT_DEFAULT
+#if defined (TARGET_BI_ARCH) || defined (TARGET_64BIT_DEFAULT)
#define MAX_BITS_PER_WORD 64
#define MAX_LONG_TYPE_SIZE 64
#else
@@ -685,6 +720,11 @@ extern int x86_prefetch_sse;
#define MAX_LONG_TYPE_SIZE 32
#endif
+/* Define if you don't want extended real, but do want to use the
+ software floating point emulator for REAL_ARITHMETIC and
+ decimal <-> binary conversion. */
+/* #define REAL_ARITHMETIC */
+
/* Define this if most significant byte of a word is the lowest numbered. */
/* That is true on the 80386. */
@@ -699,13 +739,22 @@ extern int x86_prefetch_sse;
/* Not true for 80386 */
#define WORDS_BIG_ENDIAN 0
+/* number of bits in an addressable storage unit */
+#define BITS_PER_UNIT 8
+
+/* Width in bits of a "word", which is the contents of a machine register.
+ Note that this is not necessarily the width of data type `int';
+ if using 16-bit ints on a 80386, this would still be 32.
+ But on a machine with 16-bit registers, this would be 16. */
+#define BITS_PER_WORD (TARGET_64BIT ? 64 : 32)
+
/* Width of a word, in units (bytes). */
#define UNITS_PER_WORD (TARGET_64BIT ? 8 : 4)
-#ifdef IN_LIBGCC2
-#define MIN_UNITS_PER_WORD (TARGET_64BIT ? 8 : 4)
-#else
-#define MIN_UNITS_PER_WORD 4
-#endif
+#define MIN_UNITS_PER_WORD 4
+
+/* Width in bits of a pointer.
+ See also the macro `Pmode' defined below. */
+#define POINTER_SIZE BITS_PER_WORD
/* Allocation boundary (in *bits*) for storing arguments in argument list. */
#define PARM_BOUNDARY BITS_PER_WORD
@@ -738,15 +787,16 @@ extern int x86_prefetch_sse;
and all fundamental data types supported by the hardware
might need to be aligned. No data type wants to be aligned
rounder than this.
-
+
Pentium+ preferrs DFmode values to be aligned to 64 bit boundary
and Pentium Pro XFmode values at 128 bit boundaries. */
#define BIGGEST_ALIGNMENT 128
-/* Decide whether a variable of mode MODE should be 128 bit aligned. */
+/* Decide whether a variable of mode MODE must be 128 bit aligned. */
#define ALIGN_MODE_128(MODE) \
- ((MODE) == XFmode || (MODE) == TFmode || SSE_REG_MODE_P (MODE))
+ ((MODE) == XFmode || (MODE) == TFmode || ((MODE) == TImode) \
+ || (MODE) == V4SFmode || (MODE) == V4SImode)
/* The published ABIs say that doubles should be aligned on word
boundaries, so lower the aligment for structure fields unless
@@ -756,11 +806,7 @@ extern int x86_prefetch_sse;
supports no vector modes, cut out the complexity and fall back
on BIGGEST_FIELD_ALIGNMENT. */
#ifdef IN_TARGET_LIBS
-#ifdef __x86_64__
-#define BIGGEST_FIELD_ALIGNMENT 128
-#else
#define BIGGEST_FIELD_ALIGNMENT 32
-#endif
#else
#define ADJUST_FIELD_ALIGN(FIELD, COMPUTED) \
x86_field_alignment (FIELD, COMPUTED)
@@ -813,13 +859,13 @@ extern int x86_prefetch_sse;
#define FUNCTION_ARG_BOUNDARY(MODE, TYPE) \
ix86_function_arg_boundary ((MODE), (TYPE))
-/* Set this nonzero if move instructions will actually fail to work
+/* Set this non-zero if move instructions will actually fail to work
when given unaligned data. */
#define STRICT_ALIGNMENT 0
/* If bit field type is int, don't let it cross an int,
and give entire struct the alignment of an int. */
-/* Required on the 386 since it doesn't have bit-field insns. */
+/* Required on the 386 since it doesn't have bitfield insns. */
#define PCC_BITFIELD_TYPE_MATTERS 1
/* Standard register usage. */
@@ -858,7 +904,7 @@ extern int x86_prefetch_sse;
/* 1 for registers that have pervasive standard uses
and are not available for the register allocator.
On the 80386, the stack pointer is such, as is the arg pointer.
-
+
The value is an mask - bit 1 is set for fixed registers
for 32bit target, while 2 is set for fixed registers for 64bit.
Proper value is computed in the CONDITIONAL_REGISTER_USAGE.
@@ -876,15 +922,15 @@ extern int x86_prefetch_sse;
1, 1, 1, 1, 1, 1, 1, 1, \
/*xmm8,xmm9,xmm10,xmm11,xmm12,xmm13,xmm14,xmm15*/ \
1, 1, 1, 1, 1, 1, 1, 1}
-
+
/* 1 for registers not available across function calls.
These must include the FIXED_REGISTERS and also any
registers that can be used without being saved.
The latter must include the registers where values are returned
and the register where structure-value addresses are passed.
- Aside from that, you can include as many other registers as you like.
-
+ Aside from that, you can include as many other registers as you like.
+
The value is an mask - bit 1 is set for call used
for 32bit target, while 2 is set for call used for 64bit.
Proper value is computed in the CONDITIONAL_REGISTER_USAGE.
@@ -970,7 +1016,7 @@ do { \
This is ordinarily the length in words of a value of mode MODE
but can be less for certain modes in special long registers.
- Actually there are no two word move instructions for consecutive
+ Actually there are no two word move instructions for consecutive
registers. And only registers 0-3 may have mov byte instructions
applied to them.
*/
@@ -984,15 +1030,9 @@ do { \
? (TARGET_64BIT ? 4 : 6) \
: ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD)))
-#define VALID_SSE2_REG_MODE(MODE) \
- ((MODE) == V16QImode || (MODE) == V8HImode || (MODE) == V2DFmode \
- || (MODE) == V2DImode)
-
#define VALID_SSE_REG_MODE(MODE) \
((MODE) == TImode || (MODE) == V4SFmode || (MODE) == V4SImode \
|| (MODE) == SFmode \
- /* Always accept SSE2 modes so that xmmintrin.h compiles. */ \
- || VALID_SSE2_REG_MODE (MODE) \
|| (TARGET_SSE2 && ((MODE) == DFmode || VALID_MMX_REG_MODE (MODE))))
#define VALID_MMX_REG_MODE_3DNOW(MODE) \
@@ -1020,17 +1060,6 @@ do { \
|| (MODE) == CDImode \
|| (TARGET_64BIT && ((MODE) == TImode || (MODE) == CTImode)))
-/* Return true for modes passed in SSE registers. */
-#define SSE_REG_MODE_P(MODE) \
- ((MODE) == TImode || (MODE) == V16QImode \
- || (MODE) == V8HImode || (MODE) == V2DFmode || (MODE) == V2DImode \
- || (MODE) == V4SFmode || (MODE) == V4SImode)
-
-/* Return true for modes passed in MMX registers. */
-#define MMX_REG_MODE_P(MODE) \
- ((MODE) == V8QImode || (MODE) == V4HImode || (MODE) == V2SImode \
- || (MODE) == V2SFmode)
-
/* Value is 1 if hard register REGNO can hold a value of machine-mode MODE. */
#define HARD_REGNO_MODE_OK(REGNO, MODE) \
@@ -1048,7 +1077,7 @@ do { \
&& (TARGET_64BIT || !TARGET_PARTIAL_REG_STALL)) \
|| ((MODE1) == DImode && TARGET_64BIT)) \
&& ((MODE2) == HImode || (MODE2) == SImode \
- || ((MODE2) == QImode \
+ || ((MODE1) == QImode \
&& (TARGET_64BIT || !TARGET_PARTIAL_REG_STALL)) \
|| ((MODE2) == DImode && TARGET_64BIT))))
@@ -1094,7 +1123,7 @@ do { \
#define FIRST_SSE_REG (FRAME_POINTER_REGNUM + 1)
#define LAST_SSE_REG (FIRST_SSE_REG + 7)
-
+
#define FIRST_MMX_REG (LAST_SSE_REG + 1)
#define LAST_MMX_REG (FIRST_MMX_REG + 7)
@@ -1130,20 +1159,9 @@ do { \
/* Register to hold the addressing base for position independent
code access to data items. We don't use PIC pointer for 64bit
mode. Define the regnum to dummy value to prevent gcc from
- pessimizing code dealing with EBX.
-
- To avoid clobbering a call-saved register unnecessarily, we renumber
- the pic register when possible. The change is visible after the
- prologue has been emitted. */
-
-#define REAL_PIC_OFFSET_TABLE_REGNUM 3
-
-#define PIC_OFFSET_TABLE_REGNUM \
- (TARGET_64BIT || !flag_pic ? INVALID_REGNUM \
- : reload_completed ? REGNO (pic_offset_table_rtx) \
- : REAL_PIC_OFFSET_TABLE_REGNUM)
-
-#define GOT_SYMBOL_NAME "_GLOBAL_OFFSET_TABLE_"
+ pessimizing code dealing with EBX. */
+#define PIC_OFFSET_TABLE_REGNUM \
+ (TARGET_64BIT || !flag_pic ? INVALID_REGNUM : 3)
/* Register in which address to store a structure value
arrives in the function. On the 386, the prologue
@@ -1345,7 +1363,7 @@ enum reg_class
#define MMX_REGNO_P(N) ((N) >= FIRST_MMX_REG && (N) <= LAST_MMX_REG)
#define MMX_REG_P(XOP) (REG_P (XOP) && MMX_REGNO_P (REGNO (XOP)))
-
+
#define STACK_REG_P(XOP) \
(REG_P (XOP) && \
REGNO (XOP) >= FIRST_STACK_REG && \
@@ -1425,7 +1443,7 @@ enum reg_class
#define CONST_DOUBLE_OK_FOR_LETTER_P(VALUE, C) \
((C) == 'G' ? standard_80387_constant_p (VALUE) \
- : 0)
+ : ((C) == 'H' ? standard_sse_constant_p (VALUE) : 0))
/* A C expression that defines the optional machine-dependent
constraint letters that can be used to segregate specific types of
@@ -1439,10 +1457,9 @@ enum reg_class
the constraint letter C. If C is not defined as an extra
constraint, the value returned should be 0 regardless of VALUE. */
-#define EXTRA_CONSTRAINT(VALUE, D) \
- ((D) == 'e' ? x86_64_sign_extended_value (VALUE) \
- : (D) == 'Z' ? x86_64_zero_extended_value (VALUE) \
- : (D) == 'C' ? standard_sse_constant_p (VALUE) \
+#define EXTRA_CONSTRAINT(VALUE, C) \
+ ((C) == 'e' ? x86_64_sign_extended_value (VALUE) \
+ : (C) == 'Z' ? x86_64_zero_extended_value (VALUE) \
: 0)
/* Place additional restrictions on the register class to use when it
@@ -1477,7 +1494,7 @@ enum reg_class
ix86_secondary_memory_needed ((CLASS1), (CLASS2), (MODE), 1)
/* QImode spills from non-QI registers need a scratch. This does not
- happen often -- the only example so far requires an uninitialized
+ happen often -- the only example so far requires an uninitialized
pseudo. */
#define SECONDARY_OUTPUT_RELOAD_CLASS(CLASS, MODE, OUT) \
@@ -1523,22 +1540,8 @@ enum reg_class
|| ((CLASS) == SIREG) \
|| ((CLASS) == DIREG))
-/* Return a class of registers that cannot change FROM mode to TO mode.
-
- x87 registers can't do subreg as all values are reformated to extended
- precision. XMM registers does not support with nonzero offsets equal
- to 4, 8 and 12 otherwise valid for integer registers. Since we can't
- determine these, prohibit all nonparadoxical subregs changing size. */
-
-#define CANNOT_CHANGE_MODE_CLASS(FROM, TO, CLASS) \
- (GET_MODE_SIZE (TO) < GET_MODE_SIZE (FROM) \
- ? reg_classes_intersect_p (FLOAT_SSE_REGS, (CLASS)) \
- || MAYBE_MMX_CLASS_P (CLASS) \
- : GET_MODE_SIZE (FROM) != GET_MODE_SIZE (TO) \
- ? reg_classes_intersect_p (FLOAT_REGS, (CLASS)) : 0)
-
/* A C statement that adds to CLOBBERS any hard regs the port wishes
- to automatically clobber for all asms.
+ to automatically clobber for all asms.
We do this in the new i386 backend to maintain source compatibility
with the old cc0-based compiler. */
@@ -1576,7 +1579,7 @@ enum reg_class
On 386 pushw decrements by exactly 2 no matter what the position was.
On the 386 there is no pushb; we use pushw instead, and this
has the effect of rounding up to 2.
-
+
For 64bit ABI we round up to 8 bytes.
*/
@@ -1731,28 +1734,17 @@ typedef struct ix86_args {
#define FUNCTION_ARG_PARTIAL_NREGS(CUM, MODE, TYPE, NAMED) 0
-/* A C expression that indicates when an argument must be passed by
- reference. If nonzero for an argument, a copy of that argument is
- made in memory and a pointer to the argument is passed instead of
- the argument itself. The pointer is passed in whatever way is
- appropriate for passing a pointer to that type. */
-
-#define FUNCTION_ARG_PASS_BY_REFERENCE(CUM, MODE, TYPE, NAMED) \
- function_arg_pass_by_reference(&CUM, MODE, TYPE, NAMED)
-
/* If PIC, we cannot make sibling calls to global functions
because the PLT requires %ebx live.
- If we are returning floats on the 80387 register stack, we cannot
- make a sibcall from a function that doesn't return a float to a
- function that does or, conversely, from a function that does return
- a float to a function that doesn't; the necessary stack adjustment
- would not be executed. */
+ If we are returning floats on the register stack, we cannot make
+ sibling calls to functions that return floats. (The stack adjust
+ instruction will wind up after the sibcall jump, and not be executed.) */
#define FUNCTION_OK_FOR_SIBCALL(DECL) \
((DECL) \
&& (! flag_pic || ! TREE_PUBLIC (DECL)) \
&& (! TARGET_FLOAT_RETURNS_IN_80387 \
- || (FLOAT_MODE_P (TYPE_MODE (TREE_TYPE (TREE_TYPE (DECL)))) \
- == FLOAT_MODE_P (TYPE_MODE (TREE_TYPE (TREE_TYPE (cfun->decl)))))))
+ || ! FLOAT_MODE_P (TYPE_MODE (TREE_TYPE (TREE_TYPE (DECL)))) \
+ || FLOAT_MODE_P (TYPE_MODE (TREE_TYPE (TREE_TYPE (cfun->decl))))))
/* Perform any needed actions needed for a function that is receiving a
variable number of arguments.
@@ -1777,8 +1769,8 @@ typedef struct ix86_args {
((VALIST) = ix86_build_va_list ())
/* Implement `va_start' for varargs and stdarg. */
-#define EXPAND_BUILTIN_VA_START(VALIST, NEXTARG) \
- ix86_va_start (VALIST, NEXTARG)
+#define EXPAND_BUILTIN_VA_START(STDARG, VALIST, NEXTARG) \
+ ix86_va_start ((STDARG), (VALIST), (NEXTARG))
/* Implement `va_arg'. */
#define EXPAND_BUILTIN_VA_ARG(VALIST, TYPE) \
@@ -1793,17 +1785,26 @@ typedef struct ix86_args {
/* Output assembler code to FILE to increment profiler label # LABELNO
for profiling a function entry. */
-#define FUNCTION_PROFILER(FILE, LABELNO) x86_function_profiler (FILE, LABELNO)
-
-#define MCOUNT_NAME "_mcount"
-
-#define PROFILE_COUNT_REGISTER "edx"
+#define FUNCTION_PROFILER(FILE, LABELNO) \
+do { \
+ if (flag_pic) \
+ { \
+ fprintf ((FILE), "\tleal\t%sP%d@GOTOFF(%%ebx),%%edx\n", \
+ LPREFIX, (LABELNO)); \
+ fprintf ((FILE), "\tcall\t*_mcount@GOT(%%ebx)\n"); \
+ } \
+ else \
+ { \
+ fprintf ((FILE), "\tmovl\t$%sP%d,%%edx\n", LPREFIX, (LABELNO)); \
+ fprintf ((FILE), "\tcall\t_mcount\n"); \
+ } \
+} while (0)
/* EXIT_IGNORE_STACK should be nonzero if, when returning from a function,
the stack pointer does not matter. The value is tested only in
functions that have frame pointers.
No definition is equivalent to always zero. */
-/* Note on the 386 it might be more efficient not to define this since
+/* Note on the 386 it might be more efficient not to define this since
we have to restore it ourselves from the frame pointer, in order to
use pop */
@@ -1957,12 +1958,15 @@ typedef struct ix86_args {
#define MAX_REGS_PER_ADDRESS 2
-#define CONSTANT_ADDRESS_P(X) constant_address_p (X)
+#define CONSTANT_ADDRESS_P(X) \
+ (GET_CODE (X) == LABEL_REF || GET_CODE (X) == SYMBOL_REF \
+ || GET_CODE (X) == CONST_INT || GET_CODE (X) == CONST \
+ || GET_CODE (X) == CONST_DOUBLE)
/* Nonzero if the constant value X is a legitimate general operand.
It is given that X satisfies CONSTANT_P or is a CONST_DOUBLE. */
-#define LEGITIMATE_CONSTANT_P(X) legitimate_constant_p (X)
+#define LEGITIMATE_CONSTANT_P(X) 1
#ifdef REG_OK_STRICT
#define GO_IF_LEGITIMATE_ADDRESS(MODE, X, ADDR) \
@@ -2022,10 +2026,12 @@ do { \
#define REWRITE_ADDRESS(X) rewrite_address (X)
/* Nonzero if the constant value X is a legitimate general operand
- when generating PIC code. It is given that flag_pic is on and
+ when generating PIC code. It is given that flag_pic is on and
that X satisfies CONSTANT_P or is a CONST_DOUBLE. */
-#define LEGITIMATE_PIC_OPERAND_P(X) legitimate_pic_operand_p (X)
+#define LEGITIMATE_PIC_OPERAND_P(X) \
+ (! SYMBOLIC_CONST (X) \
+ || legitimate_pic_address_disp_p (X))
#define SYMBOLIC_CONST(X) \
(GET_CODE (X) == SYMBOL_REF \
@@ -2094,12 +2100,9 @@ enum ix86_builtins
IX86_BUILTIN_CVTPI2PS,
IX86_BUILTIN_CVTPS2PI,
IX86_BUILTIN_CVTSI2SS,
- IX86_BUILTIN_CVTSI642SS,
IX86_BUILTIN_CVTSS2SI,
- IX86_BUILTIN_CVTSS2SI64,
IX86_BUILTIN_CVTTPS2PI,
IX86_BUILTIN_CVTTSS2SI,
- IX86_BUILTIN_CVTTSS2SI64,
IX86_BUILTIN_MAXPS,
IX86_BUILTIN_MAXSS,
@@ -2128,16 +2131,6 @@ enum ix86_builtins
IX86_BUILTIN_MOVNTPS,
IX86_BUILTIN_MOVNTQ,
- IX86_BUILTIN_LOADDQA,
- IX86_BUILTIN_LOADDQU,
- IX86_BUILTIN_STOREDQA,
- IX86_BUILTIN_STOREDQU,
- IX86_BUILTIN_MOVQ,
- IX86_BUILTIN_LOADD,
- IX86_BUILTIN_STORED,
-
- IX86_BUILTIN_CLRTI,
-
IX86_BUILTIN_PACKSSWB,
IX86_BUILTIN_PACKSSDW,
IX86_BUILTIN_PACKUSWB,
@@ -2145,7 +2138,6 @@ enum ix86_builtins
IX86_BUILTIN_PADDB,
IX86_BUILTIN_PADDW,
IX86_BUILTIN_PADDD,
- IX86_BUILTIN_PADDQ,
IX86_BUILTIN_PADDSB,
IX86_BUILTIN_PADDSW,
IX86_BUILTIN_PADDUSB,
@@ -2153,7 +2145,6 @@ enum ix86_builtins
IX86_BUILTIN_PSUBB,
IX86_BUILTIN_PSUBW,
IX86_BUILTIN_PSUBD,
- IX86_BUILTIN_PSUBQ,
IX86_BUILTIN_PSUBSB,
IX86_BUILTIN_PSUBSW,
IX86_BUILTIN_PSUBUSB,
@@ -2223,7 +2214,7 @@ enum ix86_builtins
IX86_BUILTIN_RSQRTSS,
IX86_BUILTIN_SQRTPS,
IX86_BUILTIN_SQRTSS,
-
+
IX86_BUILTIN_UNPCKHPS,
IX86_BUILTIN_UNPCKLPS,
@@ -2270,233 +2261,50 @@ enum ix86_builtins
IX86_BUILTIN_SSE_ZERO,
IX86_BUILTIN_MMX_ZERO,
- /* SSE2 */
- IX86_BUILTIN_ADDPD,
- IX86_BUILTIN_ADDSD,
- IX86_BUILTIN_DIVPD,
- IX86_BUILTIN_DIVSD,
- IX86_BUILTIN_MULPD,
- IX86_BUILTIN_MULSD,
- IX86_BUILTIN_SUBPD,
- IX86_BUILTIN_SUBSD,
-
- IX86_BUILTIN_CMPEQPD,
- IX86_BUILTIN_CMPLTPD,
- IX86_BUILTIN_CMPLEPD,
- IX86_BUILTIN_CMPGTPD,
- IX86_BUILTIN_CMPGEPD,
- IX86_BUILTIN_CMPNEQPD,
- IX86_BUILTIN_CMPNLTPD,
- IX86_BUILTIN_CMPNLEPD,
- IX86_BUILTIN_CMPNGTPD,
- IX86_BUILTIN_CMPNGEPD,
- IX86_BUILTIN_CMPORDPD,
- IX86_BUILTIN_CMPUNORDPD,
- IX86_BUILTIN_CMPNEPD,
- IX86_BUILTIN_CMPEQSD,
- IX86_BUILTIN_CMPLTSD,
- IX86_BUILTIN_CMPLESD,
- IX86_BUILTIN_CMPNEQSD,
- IX86_BUILTIN_CMPNLTSD,
- IX86_BUILTIN_CMPNLESD,
- IX86_BUILTIN_CMPORDSD,
- IX86_BUILTIN_CMPUNORDSD,
- IX86_BUILTIN_CMPNESD,
-
- IX86_BUILTIN_COMIEQSD,
- IX86_BUILTIN_COMILTSD,
- IX86_BUILTIN_COMILESD,
- IX86_BUILTIN_COMIGTSD,
- IX86_BUILTIN_COMIGESD,
- IX86_BUILTIN_COMINEQSD,
- IX86_BUILTIN_UCOMIEQSD,
- IX86_BUILTIN_UCOMILTSD,
- IX86_BUILTIN_UCOMILESD,
- IX86_BUILTIN_UCOMIGTSD,
- IX86_BUILTIN_UCOMIGESD,
- IX86_BUILTIN_UCOMINEQSD,
-
- IX86_BUILTIN_MAXPD,
- IX86_BUILTIN_MAXSD,
- IX86_BUILTIN_MINPD,
- IX86_BUILTIN_MINSD,
-
- IX86_BUILTIN_ANDPD,
- IX86_BUILTIN_ANDNPD,
- IX86_BUILTIN_ORPD,
- IX86_BUILTIN_XORPD,
-
- IX86_BUILTIN_SQRTPD,
- IX86_BUILTIN_SQRTSD,
-
- IX86_BUILTIN_UNPCKHPD,
- IX86_BUILTIN_UNPCKLPD,
-
- IX86_BUILTIN_SHUFPD,
-
- IX86_BUILTIN_LOADAPD,
- IX86_BUILTIN_LOADUPD,
- IX86_BUILTIN_STOREAPD,
- IX86_BUILTIN_STOREUPD,
- IX86_BUILTIN_LOADSD,
- IX86_BUILTIN_STORESD,
- IX86_BUILTIN_MOVSD,
-
- IX86_BUILTIN_LOADHPD,
- IX86_BUILTIN_LOADLPD,
- IX86_BUILTIN_STOREHPD,
- IX86_BUILTIN_STORELPD,
-
- IX86_BUILTIN_CVTDQ2PD,
- IX86_BUILTIN_CVTDQ2PS,
-
- IX86_BUILTIN_CVTPD2DQ,
- IX86_BUILTIN_CVTPD2PI,
- IX86_BUILTIN_CVTPD2PS,
- IX86_BUILTIN_CVTTPD2DQ,
- IX86_BUILTIN_CVTTPD2PI,
-
- IX86_BUILTIN_CVTPI2PD,
- IX86_BUILTIN_CVTSI2SD,
- IX86_BUILTIN_CVTSI642SD,
-
- IX86_BUILTIN_CVTSD2SI,
- IX86_BUILTIN_CVTSD2SI64,
- IX86_BUILTIN_CVTSD2SS,
- IX86_BUILTIN_CVTSS2SD,
- IX86_BUILTIN_CVTTSD2SI,
- IX86_BUILTIN_CVTTSD2SI64,
-
- IX86_BUILTIN_CVTPS2DQ,
- IX86_BUILTIN_CVTPS2PD,
- IX86_BUILTIN_CVTTPS2DQ,
-
- IX86_BUILTIN_MOVNTI,
- IX86_BUILTIN_MOVNTPD,
- IX86_BUILTIN_MOVNTDQ,
-
- IX86_BUILTIN_SETPD1,
- IX86_BUILTIN_SETPD,
- IX86_BUILTIN_CLRPD,
- IX86_BUILTIN_SETRPD,
- IX86_BUILTIN_LOADPD1,
- IX86_BUILTIN_LOADRPD,
- IX86_BUILTIN_STOREPD1,
- IX86_BUILTIN_STORERPD,
-
- /* SSE2 MMX */
- IX86_BUILTIN_MASKMOVDQU,
- IX86_BUILTIN_MOVMSKPD,
- IX86_BUILTIN_PMOVMSKB128,
- IX86_BUILTIN_MOVQ2DQ,
- IX86_BUILTIN_MOVDQ2Q,
-
- IX86_BUILTIN_PACKSSWB128,
- IX86_BUILTIN_PACKSSDW128,
- IX86_BUILTIN_PACKUSWB128,
-
- IX86_BUILTIN_PADDB128,
- IX86_BUILTIN_PADDW128,
- IX86_BUILTIN_PADDD128,
- IX86_BUILTIN_PADDQ128,
- IX86_BUILTIN_PADDSB128,
- IX86_BUILTIN_PADDSW128,
- IX86_BUILTIN_PADDUSB128,
- IX86_BUILTIN_PADDUSW128,
- IX86_BUILTIN_PSUBB128,
- IX86_BUILTIN_PSUBW128,
- IX86_BUILTIN_PSUBD128,
- IX86_BUILTIN_PSUBQ128,
- IX86_BUILTIN_PSUBSB128,
- IX86_BUILTIN_PSUBSW128,
- IX86_BUILTIN_PSUBUSB128,
- IX86_BUILTIN_PSUBUSW128,
-
- IX86_BUILTIN_PAND128,
- IX86_BUILTIN_PANDN128,
- IX86_BUILTIN_POR128,
- IX86_BUILTIN_PXOR128,
-
- IX86_BUILTIN_PAVGB128,
- IX86_BUILTIN_PAVGW128,
-
- IX86_BUILTIN_PCMPEQB128,
- IX86_BUILTIN_PCMPEQW128,
- IX86_BUILTIN_PCMPEQD128,
- IX86_BUILTIN_PCMPGTB128,
- IX86_BUILTIN_PCMPGTW128,
- IX86_BUILTIN_PCMPGTD128,
-
- IX86_BUILTIN_PEXTRW128,
- IX86_BUILTIN_PINSRW128,
-
- IX86_BUILTIN_PMADDWD128,
-
- IX86_BUILTIN_PMAXSW128,
- IX86_BUILTIN_PMAXUB128,
- IX86_BUILTIN_PMINSW128,
- IX86_BUILTIN_PMINUB128,
-
- IX86_BUILTIN_PMULUDQ,
- IX86_BUILTIN_PMULUDQ128,
- IX86_BUILTIN_PMULHUW128,
- IX86_BUILTIN_PMULHW128,
- IX86_BUILTIN_PMULLW128,
-
- IX86_BUILTIN_PSADBW128,
- IX86_BUILTIN_PSHUFHW,
- IX86_BUILTIN_PSHUFLW,
- IX86_BUILTIN_PSHUFD,
-
- IX86_BUILTIN_PSLLW128,
- IX86_BUILTIN_PSLLD128,
- IX86_BUILTIN_PSLLQ128,
- IX86_BUILTIN_PSRAW128,
- IX86_BUILTIN_PSRAD128,
- IX86_BUILTIN_PSRLW128,
- IX86_BUILTIN_PSRLD128,
- IX86_BUILTIN_PSRLQ128,
- IX86_BUILTIN_PSLLDQI128,
- IX86_BUILTIN_PSLLWI128,
- IX86_BUILTIN_PSLLDI128,
- IX86_BUILTIN_PSLLQI128,
- IX86_BUILTIN_PSRAWI128,
- IX86_BUILTIN_PSRADI128,
- IX86_BUILTIN_PSRLDQI128,
- IX86_BUILTIN_PSRLWI128,
- IX86_BUILTIN_PSRLDI128,
- IX86_BUILTIN_PSRLQI128,
-
- IX86_BUILTIN_PUNPCKHBW128,
- IX86_BUILTIN_PUNPCKHWD128,
- IX86_BUILTIN_PUNPCKHDQ128,
- IX86_BUILTIN_PUNPCKHQDQ128,
- IX86_BUILTIN_PUNPCKLBW128,
- IX86_BUILTIN_PUNPCKLWD128,
- IX86_BUILTIN_PUNPCKLDQ128,
- IX86_BUILTIN_PUNPCKLQDQ128,
-
- IX86_BUILTIN_CLFLUSH,
- IX86_BUILTIN_MFENCE,
- IX86_BUILTIN_LFENCE,
-
IX86_BUILTIN_MAX
};
-#define TARGET_ENCODE_SECTION_INFO ix86_encode_section_info
-#define TARGET_STRIP_NAME_ENCODING ix86_strip_name_encoding
-
-#define ASM_OUTPUT_LABELREF(FILE,NAME) \
- do { \
- const char *xname = (NAME); \
- if (xname[0] == '%') \
- xname += 2; \
- if (xname[0] == '*') \
- xname += 1; \
- else \
- fputs (user_label_prefix, FILE); \
- fputs (xname, FILE); \
- } while (0)
+/* Define this macro if references to a symbol must be treated
+ differently depending on something about the variable or
+ function named by the symbol (such as what section it is in).
+
+ On i386, if using PIC, mark a SYMBOL_REF for a non-global symbol
+ so that we may access it directly in the GOT. */
+
+#define ENCODE_SECTION_INFO(DECL) \
+do { \
+ if (flag_pic) \
+ { \
+ rtx rtl = (TREE_CODE_CLASS (TREE_CODE (DECL)) != 'd' \
+ ? TREE_CST_RTL (DECL) : DECL_RTL (DECL)); \
+ \
+ if (GET_CODE (rtl) == MEM) \
+ { \
+ if (TARGET_DEBUG_ADDR \
+ && TREE_CODE_CLASS (TREE_CODE (DECL)) == 'd') \
+ { \
+ fprintf (stderr, "Encode %s, public = %d\n", \
+ IDENTIFIER_POINTER (DECL_NAME (DECL)), \
+ TREE_PUBLIC (DECL)); \
+ } \
+ \
+ SYMBOL_REF_FLAG (XEXP (rtl, 0)) \
+ = (TREE_CODE_CLASS (TREE_CODE (DECL)) != 'd' \
+ || ! TREE_PUBLIC (DECL)); \
+ } \
+ } \
+} while (0)
+
+/* The `FINALIZE_PIC' macro serves as a hook to emit these special
+ codes once the function is being compiled into assembly code, but
+ not before. (It is not done before, because in the case of
+ compiling an inline function, it would lead to multiple PIC
+ prologues being included in functions which used inline functions
+ and were compiled to assembly language.) */
+
+#define FINALIZE_PIC \
+ (current_function_uses_pic_offset_table |= current_function_profile)
+
/* Max number of args passed in registers. If this is more than 3, we will
have problems with ebx (register #4), since it is a caller save register and
@@ -2564,7 +2372,7 @@ enum ix86_builtins
/* When a prototype says `char' or `short', really pass an `int'.
(The 386 can't easily push less than an int.) */
-#define PROMOTE_PROTOTYPES 1
+#define PROMOTE_PROTOTYPES (!TARGET_64BIT)
/* A macro to update M and UNSIGNEDP when an object whose type is
TYPE and which has the specified mode and signedness is to be
@@ -2600,7 +2408,7 @@ do { \
precise value of the constant, which is available for examination
in X, and the rtx code of the expression in which it is contained,
found in OUTER_CODE.
-
+
CODE is the expression code--redundant, since it can be obtained
with `GET_CODE (X)'. */
@@ -2616,21 +2424,16 @@ do { \
return flag_pic && SYMBOLIC_CONST (RTX) ? 1 : 0; \
\
case CONST_DOUBLE: \
- if (GET_MODE (RTX) == VOIDmode) \
- return 0; \
- switch (standard_80387_constant_p (RTX)) \
- { \
- case 1: /* 0.0 */ \
- return 1; \
- case 2: /* 1.0 */ \
- return 2; \
- default: \
- /* Start with (MEM (SYMBOL_REF)), since that's where \
- it'll probably end up. Add a penalty for size. */ \
- return (COSTS_N_INSNS (1) + (flag_pic != 0) \
- + (GET_MODE (RTX) == SFmode ? 0 \
- : GET_MODE (RTX) == DFmode ? 1 : 2)); \
- }
+ { \
+ int code; \
+ if (GET_MODE (RTX) == VOIDmode) \
+ return 0; \
+ \
+ code = standard_80387_constant_p (RTX); \
+ return code == 1 ? 1 : \
+ code == 2 ? 2 : \
+ 3; \
+ }
/* Delete the definition here when TOPLEVEL_COSTS_N_INSNS gets added to cse.c */
#define TOPLEVEL_COSTS_N_INSNS(N) \
@@ -2707,9 +2510,7 @@ do { \
break; \
\
case MULT: \
- if (FLOAT_MODE_P (GET_MODE (X))) \
- TOPLEVEL_COSTS_N_INSNS (ix86_cost->fmul); \
- else if (GET_CODE (XEXP (X, 1)) == CONST_INT) \
+ if (GET_CODE (XEXP (X, 1)) == CONST_INT) \
{ \
unsigned HOST_WIDE_INT value = INTVAL (XEXP (X, 1)); \
int nbits = 0; \
@@ -2731,16 +2532,10 @@ do { \
case UDIV: \
case MOD: \
case UMOD: \
- if (FLOAT_MODE_P (GET_MODE (X))) \
- TOPLEVEL_COSTS_N_INSNS (ix86_cost->fdiv); \
- else \
- TOPLEVEL_COSTS_N_INSNS (ix86_cost->divide); \
- break; \
+ TOPLEVEL_COSTS_N_INSNS (ix86_cost->divide); \
\
case PLUS: \
- if (FLOAT_MODE_P (GET_MODE (X))) \
- TOPLEVEL_COSTS_N_INSNS (ix86_cost->fadd); \
- else if (!TARGET_DECOMPOSE_LEA \
+ if (!TARGET_DECOMPOSE_LEA \
&& INTEGRAL_MODE_P (GET_MODE (X)) \
&& GET_MODE_BITSIZE (GET_MODE (X)) <= GET_MODE_BITSIZE (Pmode)) \
{ \
@@ -2780,50 +2575,26 @@ do { \
+ rtx_cost (XEXP (X, 1), (OUTER_CODE))); \
} \
} \
- /* fall through */ \
\
- case MINUS: \
- if (FLOAT_MODE_P (GET_MODE (X))) \
- TOPLEVEL_COSTS_N_INSNS (ix86_cost->fadd); \
/* fall through */ \
- \
case AND: \
case IOR: \
case XOR: \
+ case MINUS: \
if (!TARGET_64BIT && GET_MODE (X) == DImode) \
return (COSTS_N_INSNS (ix86_cost->add) * 2 \
+ (rtx_cost (XEXP (X, 0), (OUTER_CODE)) \
<< (GET_MODE (XEXP (X, 0)) != DImode)) \
+ (rtx_cost (XEXP (X, 1), (OUTER_CODE)) \
<< (GET_MODE (XEXP (X, 1)) != DImode))); \
- /* fall through */ \
\
- case NEG: \
- if (FLOAT_MODE_P (GET_MODE (X))) \
- TOPLEVEL_COSTS_N_INSNS (ix86_cost->fchs); \
/* fall through */ \
- \
+ case NEG: \
case NOT: \
if (!TARGET_64BIT && GET_MODE (X) == DImode) \
TOPLEVEL_COSTS_N_INSNS (ix86_cost->add * 2); \
TOPLEVEL_COSTS_N_INSNS (ix86_cost->add); \
\
- case FLOAT_EXTEND: \
- if (!TARGET_SSE_MATH \
- || !VALID_SSE_REG_MODE (GET_MODE (X))) \
- TOPLEVEL_COSTS_N_INSNS (0); \
- break; \
- \
- case ABS: \
- if (FLOAT_MODE_P (GET_MODE (X))) \
- TOPLEVEL_COSTS_N_INSNS (ix86_cost->fabs); \
- break; \
- \
- case SQRT: \
- if (FLOAT_MODE_P (GET_MODE (X))) \
- TOPLEVEL_COSTS_N_INSNS (ix86_cost->fsqrt); \
- break; \
- \
egress_rtx_costs: \
break;
@@ -2928,10 +2699,10 @@ do { \
cost many times greater than aligned accesses, for example if they
are emulated in a trap handler.
- When this macro is nonzero, the compiler will act as if
- `STRICT_ALIGNMENT' were nonzero when generating code for block
+ When this macro is non-zero, the compiler will act as if
+ `STRICT_ALIGNMENT' were non-zero when generating code for block
moves. This can cause significantly more instructions to be
- produced. Therefore, do not set this macro nonzero if unaligned
+ produced. Therefore, do not set this macro non-zero if unaligned
accesses only add a cycle or two to the time for a memory access.
If the value of this macro is always zero, it need not be defined. */
@@ -2958,6 +2729,34 @@ do { \
#define NO_RECURSIVE_FUNCTION_CSE
+/* Add any extra modes needed to represent the condition code.
+
+ For the i386, we need separate modes when floating-point
+ equality comparisons are being done.
+
+ Add CCNO to indicate comparisons against zero that requires
+ Overflow flag to be unset. Sign bit test is used instead and
+ thus can be used to form "a&b>0" type of tests.
+
+ Add CCGC to indicate comparisons agains zero that allows
+ unspecified garbage in the Carry flag. This mode is used
+ by inc/dec instructions.
+
+ Add CCGOC to indicate comparisons agains zero that allows
+ unspecified garbage in the Carry and Overflow flag. This
+ mode is used to simulate comparisons of (a-b) and (a+b)
+ against zero using sub/cmp/add operations.
+
+ Add CCZ to indicate that only the Zero flag is valid. */
+
+#define EXTRA_CC_MODES \
+ CC (CCGCmode, "CCGC") \
+ CC (CCGOCmode, "CCGOC") \
+ CC (CCNOmode, "CCNO") \
+ CC (CCZmode, "CCZ") \
+ CC (CCFPmode, "CCFP") \
+ CC (CCFPUmode, "CCFPU")
+
/* Given a comparison code (EQ, NE, etc.) and the first operand of a COMPARE,
return the mode to be used for the comparison.
@@ -2969,7 +2768,7 @@ do { \
#define SELECT_CC_MODE(OP, X, Y) ix86_cc_mode ((OP), (X), (Y))
-/* Return nonzero if MODE implies a floating point inequality can be
+/* Return non-zero if MODE implies a floating point inequality can be
reversed. */
#define REVERSIBLE_CC_MODE(MODE) 1
@@ -2993,7 +2792,7 @@ do { \
For float regs, the stack top is sometimes referred to as "%st(0)"
instead of just "%st". PRINT_REG handles this with the "y" code. */
-#undef HI_REGISTER_NAMES
+#undef HI_REGISTER_NAMES
#define HI_REGISTER_NAMES \
{"ax","dx","cx","bx","si","di","bp","sp", \
"st","st(1)","st(2)","st(3)","st(4)","st(5)","st(6)","st(7)","", \
@@ -3043,7 +2842,7 @@ extern int const svr4_dbx_register_map[FIRST_PSEUDO_REGISTER];
/* Before the prologue, RA is at 0(%esp). */
#define INCOMING_RETURN_ADDR_RTX \
gen_rtx_MEM (VOIDmode, gen_rtx_REG (VOIDmode, STACK_POINTER_REGNUM))
-
+
/* After the prologue, RA is at -4(AP) in the current frame. */
#define RETURN_ADDR_RTX(COUNT, FRAME) \
((COUNT) == 0 \
@@ -3074,6 +2873,12 @@ extern int const svr4_dbx_register_map[FIRST_PSEUDO_REGISTER];
? ((GLOBAL) ? DW_EH_PE_indirect : 0) | DW_EH_PE_pcrel | DW_EH_PE_sdata4\
: DW_EH_PE_absptr)
+/* This is how to output the definition of a user-level label named NAME,
+ such as the label on a static function or variable NAME. */
+
+#define ASM_OUTPUT_LABEL(FILE, NAME) \
+ (assemble_name ((FILE), (NAME)), fputs (":\n", (FILE)))
+
/* Store in OUTPUT a string (made with alloca) containing
an assembler-name for a local static variable named NAME.
LABELNO is an integer which is different for each call. */
@@ -3122,7 +2927,7 @@ do { \
#define JUMP_TABLES_IN_TEXT_SECTION \
(!TARGET_64BIT && flag_pic && !HAVE_AS_GOTOFF_IN_DATA)
-/* A C statement that outputs an address constant appropriate to
+/* A C statement that outputs an address constant appropriate to
for DWARF debugging. */
#define ASM_OUTPUT_DWARF_ADDR_CONST(FILE, X) \
@@ -3133,13 +2938,6 @@ do { \
#define ASM_SIMPLIFY_DWARF_ADDR(X) \
i386_simplify_dwarf_addr (X)
-/* Emit a dtp-relative reference to a TLS variable. */
-
-#ifdef HAVE_AS_TLS
-#define ASM_OUTPUT_DWARF_DTPREL(FILE, SIZE, X) \
- i386_output_dwarf_dtprel (FILE, SIZE, X)
-#endif
-
/* Switch to init or fini section via SECTION_OP, emit a call to FUNC,
and switch back. For x86 we do this only to save a few bytes that
would otherwise be unused in the text section. */
@@ -3154,7 +2952,7 @@ do { \
print_operand function. */
#define PRINT_OPERAND_PUNCT_VALID_P(CODE) \
- ((CODE) == '*' || (CODE) == '+' || (CODE) == '&')
+ ((CODE) == '*' || (CODE) == '+')
/* Print the name of a register based on its machine mode and number.
If CODE is 'w', pretend the mode is HImode.
@@ -3173,12 +2971,6 @@ do { \
#define PRINT_OPERAND_ADDRESS(FILE, ADDR) \
print_operand_address ((FILE), (ADDR))
-#define OUTPUT_ADDR_CONST_EXTRA(FILE, X, FAIL) \
-do { \
- if (! output_addr_const_extra (FILE, (X))) \
- goto FAIL; \
-} while (0);
-
/* Print the name of a register for based on its machine mode and number.
This macro is used to print debugging output.
This macro is different from PRINT_REG in that it may be used in
@@ -3285,7 +3077,6 @@ do { \
{"general_no_elim_operand", {CONST_INT, CONST_DOUBLE, CONST, \
SYMBOL_REF, LABEL_REF, SUBREG, REG, MEM}}, \
{"nonmemory_no_elim_operand", {CONST_INT, REG, SUBREG}}, \
- {"index_register_operand", {SUBREG, REG}}, \
{"q_regs_operand", {SUBREG, REG}}, \
{"non_q_regs_operand", {SUBREG, REG}}, \
{"fcmov_comparison_operator", {EQ, NE, LTU, GTU, LEU, GEU, UNORDERED, \
@@ -3310,17 +3101,7 @@ do { \
{"memory_displacement_operand", {MEM}}, \
{"cmpsi_operand", {CONST_INT, CONST_DOUBLE, CONST, SYMBOL_REF, \
LABEL_REF, SUBREG, REG, MEM, AND}}, \
- {"long_memory_operand", {MEM}}, \
- {"tls_symbolic_operand", {SYMBOL_REF}}, \
- {"global_dynamic_symbolic_operand", {SYMBOL_REF}}, \
- {"local_dynamic_symbolic_operand", {SYMBOL_REF}}, \
- {"initial_exec_symbolic_operand", {SYMBOL_REF}}, \
- {"local_exec_symbolic_operand", {SYMBOL_REF}}, \
- {"any_fp_register_operand", {REG}}, \
- {"register_and_not_any_fp_reg_operand", {REG}}, \
- {"fp_register_operand", {REG}}, \
- {"register_and_not_fp_reg_operand", {REG}}, \
- {"vector_move_operand", {CONST_VECTOR, SUBREG, REG, MEM}}, \
+ {"long_memory_operand", {MEM}},
/* A list of predicates that do special things with modes, and so
should not elicit warnings for VOIDmode match_operand. */
@@ -3328,90 +3109,57 @@ do { \
#define SPECIAL_MODE_PREDICATES \
"ext_register_operand",
-/* Which processor to schedule for. The cpu attribute defines a list that
- mirrors this list, so changes to i386.md must be made at the same time. */
-
-enum processor_type
-{
- PROCESSOR_I386, /* 80386 */
- PROCESSOR_I486, /* 80486DX, 80486SX, 80486DX[24] */
- PROCESSOR_PENTIUM,
- PROCESSOR_PENTIUMPRO,
- PROCESSOR_K6,
- PROCESSOR_ATHLON,
- PROCESSOR_PENTIUM4,
- PROCESSOR_max
-};
-
-extern enum processor_type ix86_cpu;
-extern const char *ix86_cpu_string;
-
-extern enum processor_type ix86_arch;
-extern const char *ix86_arch_string;
-
-enum fpmath_unit
-{
- FPMATH_387 = 1,
- FPMATH_SSE = 2
-};
-
-extern enum fpmath_unit ix86_fpmath;
-extern const char *ix86_fpmath_string;
-
-enum tls_dialect
-{
- TLS_DIALECT_GNU,
- TLS_DIALECT_SUN
-};
-
-extern enum tls_dialect ix86_tls_dialect;
-extern const char *ix86_tls_dialect_string;
-
+/* CM_32 is used by 32bit ABI
+ CM_SMALL is small model assuming that all code and data fits in the first
+ 31bits of address space.
+ CM_KERNEL is model assuming that all code and data fits in the negative
+ 31bits of address space.
+ CM_MEDIUM is model assuming that code fits in the first 31bits of address
+ space. Size of data is unlimited.
+ CM_LARGE is model making no assumptions about size of particular sections.
+
+ CM_SMALL_PIC is model for PIC libraries assuming that code+data+got/plt
+ tables first in 31bits of address space.
+ */
enum cmodel {
- CM_32, /* The traditional 32-bit ABI. */
- CM_SMALL, /* Assumes all code and data fits in the low 31 bits. */
- CM_KERNEL, /* Assumes all code and data fits in the high 31 bits. */
- CM_MEDIUM, /* Assumes code fits in the low 31 bits; data unlimited. */
- CM_LARGE, /* No assumptions. */
- CM_SMALL_PIC /* Assumes code+data+got/plt fits in a 31 bit region. */
+ CM_32,
+ CM_SMALL,
+ CM_KERNEL,
+ CM_MEDIUM,
+ CM_LARGE,
+ CM_SMALL_PIC
};
-extern enum cmodel ix86_cmodel;
-extern const char *ix86_cmodel_string;
-
/* Size of the RED_ZONE area. */
#define RED_ZONE_SIZE 128
/* Reserved area of the red zone for temporaries. */
#define RED_ZONE_RESERVE 8
+extern const char *ix86_debug_arg_string, *ix86_debug_addr_string;
enum asm_dialect {
ASM_ATT,
ASM_INTEL
};
-
extern const char *ix86_asm_string;
extern enum asm_dialect ix86_asm_dialect;
-
-extern int ix86_regparm;
-extern const char *ix86_regparm_string;
-
-extern int ix86_preferred_stack_boundary;
-extern const char *ix86_preferred_stack_boundary_string;
-
-extern int ix86_branch_cost;
-extern const char *ix86_branch_cost_string;
-
-extern const char *ix86_debug_arg_string;
-extern const char *ix86_debug_addr_string;
-
-/* Obsoleted by -f options. Remove before 3.2 ships. */
-extern const char *ix86_align_loops_string;
-extern const char *ix86_align_jumps_string;
-extern const char *ix86_align_funcs_string;
-
-/* Smallest class containing REGNO. */
-extern enum reg_class const regclass_map[FIRST_PSEUDO_REGISTER];
-
+/* Value of -mcmodel specified by user. */
+extern const char *ix86_cmodel_string;
+extern enum cmodel ix86_cmodel;
+
+/* Variables in i386.c */
+extern const char *ix86_cpu_string; /* for -mcpu=<xxx> */
+extern const char *ix86_arch_string; /* for -march=<xxx> */
+extern const char *ix86_fpmath_string; /* for -mfpmath=<xxx> */
+extern const char *ix86_regparm_string; /* # registers to use to pass args */
+extern const char *ix86_align_loops_string; /* power of two alignment for loops */
+extern const char *ix86_align_jumps_string; /* power of two alignment for non-loop jumps */
+extern const char *ix86_align_funcs_string; /* power of two alignment for functions */
+extern const char *ix86_preferred_stack_boundary_string;/* power of two alignment for stack boundary */
+extern const char *ix86_branch_cost_string; /* values 1-5: see jump.c */
+extern int ix86_regparm; /* ix86_regparm_string as a number */
+extern int ix86_preferred_stack_boundary; /* preferred stack boundary alignment in bits */
+extern int ix86_branch_cost; /* values 1-5: see jump.c */
+extern enum reg_class const regclass_map[FIRST_PSEUDO_REGISTER]; /* smalled class containing REGNO */
extern rtx ix86_compare_op0; /* operand 0 for comparisons */
extern rtx ix86_compare_op1; /* operand 1 for comparisons */
@@ -3421,12 +3169,12 @@ extern rtx ix86_compare_op1; /* operand 1 for comparisons */
redundant computation of new control word by the mode switching pass.
The fldcw instructions are still emitted redundantly, but this is probably
not going to be noticeable problem, as most CPUs do have fast path for
- the sequence.
+ the sequence.
The machinery is to emit simple truncation instructions and split them
before reload to instructions having USEs of two memory locations that
are filled by this code to old and new control word.
-
+
Post-reload pass may be later used to eliminate the redundant fildcw if
needed. */
@@ -3487,10 +3235,6 @@ enum fp_cw_mode {FP_CW_STORED, FP_CW_UNINITIALIZED, FP_CW_ANY};
((SRC) < FIRST_STACK_REG || (SRC) > LAST_STACK_REG)
-#define MACHINE_DEPENDENT_REORG(X) x86_machine_dependent_reorg(X)
-
-#define DLL_IMPORT_EXPORT_PREFIX '@'
-
/*
Local variables:
version-control: t
diff --git a/contrib/gcc/config/i386/i386.md b/contrib/gcc/config/i386/i386.md
index 1fa2998..36a0497 100644
--- a/contrib/gcc/config/i386/i386.md
+++ b/contrib/gcc/config/i386/i386.md
@@ -1,6 +1,5 @@
;; GCC machine description for IA-32 and x86-64.
-;; Copyright (C) 1988, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-;; 2001, 2002, 2003
+;; Copyright (C) 1988, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
;; Free Software Foundation, Inc.
;; Mostly by William Schelter.
;; x86_64 support added by Jan Hubicka
@@ -50,77 +49,55 @@
;; 'k' Likewise, print the SImode name of the register.
;; 'h' Print the QImode name for a "high" register, either ah, bh, ch or dh.
;; 'y' Print "st(0)" instead of "st" as a register.
-
+;;
;; UNSPEC usage:
-
-(define_constants
- [; Relocation specifiers
- (UNSPEC_GOT 0)
- (UNSPEC_GOTOFF 1)
- (UNSPEC_GOTPCREL 2)
- (UNSPEC_GOTTPOFF 3)
- (UNSPEC_TPOFF 4)
- (UNSPEC_NTPOFF 5)
- (UNSPEC_DTPOFF 6)
- (UNSPEC_GOTNTPOFF 7)
- (UNSPEC_INDNTPOFF 8)
-
- ; Prologue support
- (UNSPEC_STACK_PROBE 10)
- (UNSPEC_STACK_ALLOC 11)
- (UNSPEC_SET_GOT 12)
- (UNSPEC_SSE_PROLOGUE_SAVE 13)
-
- ; TLS support
- (UNSPEC_TP 15)
- (UNSPEC_TLS_GD 16)
- (UNSPEC_TLS_LD_BASE 17)
-
- ; Other random patterns
- (UNSPEC_SCAS 20)
- (UNSPEC_SIN 21)
- (UNSPEC_COS 22)
- (UNSPEC_BSF 23)
- (UNSPEC_FNSTSW 24)
- (UNSPEC_SAHF 25)
- (UNSPEC_FSTCW 26)
- (UNSPEC_ADD_CARRY 27)
- (UNSPEC_FLDCW 28)
-
- ; For SSE/MMX support:
- (UNSPEC_FIX 30)
- (UNSPEC_MASKMOV 32)
- (UNSPEC_MOVMSK 33)
- (UNSPEC_MOVNT 34)
- (UNSPEC_MOVA 38)
- (UNSPEC_MOVU 39)
- (UNSPEC_SHUFFLE 41)
- (UNSPEC_RCP 42)
- (UNSPEC_RSQRT 43)
- (UNSPEC_SFENCE 44)
- (UNSPEC_NOP 45) ; prevents combiner cleverness
- (UNSPEC_PAVGUSB 49)
- (UNSPEC_PFRCP 50)
- (UNSPEC_PFRCPIT1 51)
- (UNSPEC_PFRCPIT2 52)
- (UNSPEC_PFRSQRT 53)
- (UNSPEC_PFRSQIT1 54)
- (UNSPEC_PSHUFLW 55)
- (UNSPEC_PSHUFHW 56)
- (UNSPEC_MFENCE 59)
- (UNSPEC_LFENCE 60)
- (UNSPEC_PSADBW 61)
- ])
-
-(define_constants
- [(UNSPECV_BLOCKAGE 0)
- (UNSPECV_EH_RETURN 13)
- (UNSPECV_EMMS 31)
- (UNSPECV_LDMXCSR 37)
- (UNSPECV_STMXCSR 40)
- (UNSPECV_FEMMS 46)
- (UNSPECV_CLFLUSH 57)
- ])
+;; 0 This is a `scas' operation. The mode of the UNSPEC is always SImode.
+;; operand 0 is the memory address to scan.
+;; operand 1 is a register containing the value to scan for. The mode
+;; of the scas opcode will be the same as the mode of this operand.
+;; operand 2 is the known alignment of operand 0.
+;; 1 This is a `sin' operation. The mode of the UNSPEC is MODE_FLOAT.
+;; operand 0 is the argument for `sin'.
+;; 2 This is a `cos' operation. The mode of the UNSPEC is MODE_FLOAT.
+;; operand 0 is the argument for `cos'.
+;; 3 This is part of a `stack probe' operation. The mode of the UNSPEC is
+;; always SImode. operand 0 is the size of the stack allocation.
+;; 4 This is the source of a fake SET of the frame pointer which is used to
+;; prevent insns referencing it being scheduled across the initial
+;; decrement of the stack pointer.
+;; 5 This is a `bsf' operation.
+;; 6 This is the @GOT offset of a PIC address.
+;; 7 This is the @GOTOFF offset of a PIC address.
+;; 8 This is a reference to a symbol's @PLT address.
+;; 9 This is an `fnstsw' operation.
+;; 10 This is a `sahf' operation.
+;; 11 This is a `fstcw' operation
+;; 12 This is behaviour of add when setting carry flag.
+;; 13 This is a `eh_return' placeholder.
+
+;; For SSE/MMX support:
+;; 30 This is `fix', guaranteed to be truncating.
+;; 31 This is a `emms' operation.
+;; 32 This is a `maskmov' operation.
+;; 33 This is a `movmsk' operation.
+;; 34 This is a `non-temporal' move.
+;; 36 This is used to distinguish COMISS from UCOMISS.
+;; 37 This is a `ldmxcsr' operation.
+;; 38 This is a forced `movaps' instruction (rather than whatever movti does)
+;; 39 This is a forced `movups' instruction (rather than whatever movti does)
+;; 40 This is a `stmxcsr' operation.
+;; 41 This is a `shuffle' operation.
+;; 42 This is a `rcp' operation.
+;; 43 This is a `rsqsrt' operation.
+;; 44 This is a `sfence' operation.
+;; 45 This is a noop to prevent excessive combiner cleverness.
+;; 46 This is a `femms' operation.
+;; 49 This is a 'pavgusb' operation.
+;; 50 This is a `pfrcp' operation.
+;; 51 This is a `pfrcpit1' operation.
+;; 52 This is a `pfrcpit2' operation.
+;; 53 This is a `pfrsqrt' operation.
+;; 54 This is a `pfrsqrit1' operation.
;; Insns whose names begin with "x86_" are emitted by gen_FOO calls
;; from i386.c.
@@ -139,44 +116,26 @@
;; A basic instruction type. Refinements due to arguments to be
;; provided in other attributes.
(define_attr "type"
- "other,multi,
- alu,alu1,negnot,imov,imovx,lea,
- incdec,ishift,ishift1,rotate,rotate1,imul,idiv,
- icmp,test,ibr,setcc,icmov,
- push,pop,call,callv,
- str,cld,
- fmov,fop,fsgn,fmul,fdiv,fpspc,fcmov,fcmp,fxch,fistp,
- sselog,sseiadd,sseishft,sseimul,
- sse,ssemov,sseadd,ssemul,ssecmp,ssecvt,ssediv,
- mmx,mmxmov,mmxadd,mmxmul,mmxcmp,mmxcvt,mmxshft"
+ "other,multi,alu1,negnot,alu,icmp,test,imov,imovx,lea,incdec,ishift,imul,idiv,ibr,setcc,push,pop,call,callv,icmov,fmov,fop,fop1,fsgn,fmul,fdiv,fpspc,fcmov,fcmp,fxch,str,cld,sse,mmx,fistp"
(const_string "other"))
;; Main data type used by the insn
-(define_attr "mode"
- "unknown,none,QI,HI,SI,DI,unknownfp,SF,DF,XF,TI,V4SF,V2DF,V2SF"
+(define_attr "mode" "unknown,none,QI,HI,SI,DI,unknownfp,SF,DF,XF,TI"
(const_string "unknown"))
-;; The CPU unit operations uses.
-(define_attr "unit" "integer,i387,sse,mmx,unknown"
- (cond [(eq_attr "type" "fmov,fop,fsgn,fmul,fdiv,fpspc,fcmov,fcmp,fxch,fistp")
- (const_string "i387")
- (eq_attr "type" "sselog,sseiadd,sseishft,sseimul,
- sse,ssemov,sseadd,ssemul,ssecmp,ssecvt,ssediv")
- (const_string "sse")
- (eq_attr "type" "mmx,mmxmov,mmxadd,mmxmul,mmxcmp,mmxcvt,mmxshft")
- (const_string "mmx")
- (eq_attr "type" "other")
- (const_string "unknown")]
- (const_string "integer")))
+;; Set for i387 operations.
+(define_attr "i387" ""
+ (if_then_else (eq_attr "type" "fmov,fop,fop1,fsgn,fmul,fdiv,fpspc,fcmov,fcmp,fxch,fistp")
+ (const_int 1)
+ (const_int 0)))
;; The (bounding maximum) length of an instruction immediate.
(define_attr "length_immediate" ""
- (cond [(eq_attr "type" "incdec,setcc,icmov,str,cld,lea,other,multi,idiv")
+ (cond [(eq_attr "type" "incdec,setcc,icmov,ibr,str,cld,lea,other,multi,idiv,sse,mmx")
(const_int 0)
- (eq_attr "unit" "i387,sse,mmx")
+ (eq_attr "i387" "1")
(const_int 0)
- (eq_attr "type" "alu,alu1,negnot,imovx,ishift,rotate,ishift1,rotate1,
- imul,icmp,push,pop")
+ (eq_attr "type" "alu1,negnot,alu,icmp,imovx,ishift,imul,push,pop")
(symbol_ref "ix86_attr_length_immediate_default(insn,1)")
(eq_attr "type" "imov,test")
(symbol_ref "ix86_attr_length_immediate_default(insn,0)")
@@ -188,20 +147,22 @@
(if_then_else (match_operand 1 "constant_call_address_operand" "")
(const_int 4)
(const_int 0))
- ;; We don't know the size before shorten_branches. Expect
- ;; the instruction to fit for better scheduling.
(eq_attr "type" "ibr")
- (const_int 1)
+ (if_then_else (and (ge (minus (match_dup 0) (pc))
+ (const_int -128))
+ (lt (minus (match_dup 0) (pc))
+ (const_int 124)))
+ (const_int 1)
+ (const_int 4))
]
- (symbol_ref "/* Update immediate_length and other attributes! */
- abort(),1")))
+ (symbol_ref "/* Update immediate_length and other attributes! */ abort(),1")))
;; The (bounding maximum) length of an instruction address.
(define_attr "length_address" ""
(cond [(eq_attr "type" "str,cld,other,multi,fxch")
(const_int 0)
(and (eq_attr "type" "call")
- (match_operand 0 "constant_call_address_operand" ""))
+ (match_operand 1 "constant_call_address_operand" ""))
(const_int 0)
(and (eq_attr "type" "callv")
(match_operand 1 "constant_call_address_operand" ""))
@@ -211,25 +172,16 @@
;; Set when length prefix is used.
(define_attr "prefix_data16" ""
- (if_then_else (ior (eq_attr "mode" "HI")
- (and (eq_attr "unit" "sse") (eq_attr "mode" "V2DF")))
+ (if_then_else (eq_attr "mode" "HI")
(const_int 1)
(const_int 0)))
;; Set when string REP prefix is used.
-(define_attr "prefix_rep" ""
- (if_then_else (and (eq_attr "unit" "sse") (eq_attr "mode" "SF,DF"))
- (const_int 1)
- (const_int 0)))
+(define_attr "prefix_rep" "" (const_int 0))
;; Set when 0f opcode prefix is used.
(define_attr "prefix_0f" ""
- (if_then_else
- (eq_attr "type"
- "imovx,setcc,icmov,
- sselog,sseiadd,sseishft,sseimul,
- sse,ssemov,sseadd,ssemul,ssecmp,ssecvt,ssediv,
- mmx,mmxmov,mmxadd,mmxmul,mmxcmp,mmxcvt,mmxshft")
+ (if_then_else (eq_attr "type" "imovx,setcc,icmov,sse,mmx")
(const_int 1)
(const_int 0)))
@@ -237,7 +189,7 @@
(define_attr "modrm" ""
(cond [(eq_attr "type" "str,cld")
(const_int 0)
- (eq_attr "unit" "i387")
+ (eq_attr "i387" "1")
(const_int 0)
(and (eq_attr "type" "incdec")
(ior (match_operand:SI 1 "register_operand" "")
@@ -253,12 +205,6 @@
(and (match_operand 0 "register_operand" "")
(match_operand 1 "immediate_operand" "")))
(const_int 0)
- (and (eq_attr "type" "call")
- (match_operand 0 "constant_call_address_operand" ""))
- (const_int 0)
- (and (eq_attr "type" "callv")
- (match_operand 1 "constant_call_address_operand" ""))
- (const_int 0)
]
(const_int 1)))
@@ -268,15 +214,11 @@
(define_attr "length" ""
(cond [(eq_attr "type" "other,multi,fistp")
(const_int 16)
- (eq_attr "type" "fcmp")
- (const_int 4)
- (eq_attr "unit" "i387")
- (plus (const_int 2)
- (plus (attr "prefix_data16")
- (attr "length_address")))]
+ ]
(plus (plus (attr "modrm")
(plus (attr "prefix_0f")
- (const_int 1)))
+ (plus (attr "i387")
+ (const_int 1))))
(plus (attr "prefix_rep")
(plus (attr "prefix_data16")
(plus (attr "length_immediate")
@@ -301,7 +243,7 @@
(if_then_else (match_operand 0 "memory_operand" "")
(const_string "both")
(const_string "load"))
- (eq_attr "type" "icmp,test,ssecmp,mmxcmp,fcmp")
+ (eq_attr "type" "icmp,test")
(if_then_else (ior (match_operand 0 "memory_operand" "")
(match_operand 1 "memory_operand" ""))
(const_string "load")
@@ -328,12 +270,7 @@
(const_string "store")
(match_operand 1 "memory_operand" "")
(const_string "load")
- (and (eq_attr "type"
- "!alu1,negnot,
- imov,imovx,icmp,test,
- fmov,fcmp,fsgn,
- sse,ssemov,ssecmp,ssecvt,
- mmx,mmxmov,mmxcmp,mmxcvt")
+ (and (eq_attr "type" "!icmp,test,alu1,negnot,fop1,fsgn,imov,imovx,fmov,fcmp,sse,mmx")
(match_operand 2 "memory_operand" ""))
(const_string "load")
(and (eq_attr "type" "icmov")
@@ -347,11 +284,11 @@
(define_attr "imm_disp" "false,true,unknown"
(cond [(eq_attr "type" "other,multi")
(const_string "unknown")
- (and (eq_attr "type" "icmp,test,imov,alu1,ishift1,rotate1")
+ (and (eq_attr "type" "icmp,test,imov")
(and (match_operand 0 "memory_displacement_operand" "")
(match_operand 1 "immediate_operand" "")))
(const_string "true")
- (and (eq_attr "type" "alu,ishift,rotate,imul,idiv")
+ (and (eq_attr "type" "alu,ishift,imul,idiv")
(and (match_operand 0 "memory_displacement_operand" "")
(match_operand 2 "immediate_operand" "")))
(const_string "true")
@@ -368,10 +305,710 @@
[(set_attr "length" "128")
(set_attr "type" "multi")])
-(include "pentium.md")
-(include "ppro.md")
-(include "k6.md")
-(include "athlon.md")
+;; Pentium Scheduling
+;;
+;; The Pentium is an in-order core with two integer pipelines.
+
+;; True for insns that behave like prefixed insns on the Pentium.
+(define_attr "pent_prefix" "false,true"
+ (if_then_else (ior (eq_attr "prefix_0f" "1")
+ (ior (eq_attr "prefix_data16" "1")
+ (eq_attr "prefix_rep" "1")))
+ (const_string "true")
+ (const_string "false")))
+
+;; Categorize how an instruction slots.
+
+;; The non-MMX Pentium slots an instruction with prefixes on U pipe only,
+;; while MMX Pentium can slot it on either U or V. Model non-MMX Pentium
+;; rules, because it results in noticeably better code on non-MMX Pentium
+;; and doesn't hurt much on MMX. (Prefixed instructions are not very
+;; common, so the scheduler usualy has a non-prefixed insn to pair).
+
+(define_attr "pent_pair" "uv,pu,pv,np"
+ (cond [(eq_attr "imm_disp" "true")
+ (const_string "np")
+ (ior (eq_attr "type" "alu1,alu,imov,icmp,test,lea,incdec")
+ (and (eq_attr "type" "pop,push")
+ (eq_attr "memory" "!both")))
+ (if_then_else (eq_attr "pent_prefix" "true")
+ (const_string "pu")
+ (const_string "uv"))
+ (eq_attr "type" "ibr")
+ (const_string "pv")
+ (and (eq_attr "type" "ishift")
+ (match_operand 2 "const_int_operand" ""))
+ (const_string "pu")
+ (and (eq_attr "type" "call")
+ (match_operand 0 "constant_call_address_operand" ""))
+ (const_string "pv")
+ (and (eq_attr "type" "callv")
+ (match_operand 1 "constant_call_address_operand" ""))
+ (const_string "pv")
+ ]
+ (const_string "np")))
+
+;; Rough readiness numbers. Fine tuning happens in i386.c.
+;;
+;; u describes pipe U
+;; v describes pipe V
+;; uv describes either pipe U or V for those that can issue to either
+;; np describes not paring
+;; fpu describes fpu
+;; fpm describes fp insns of different types are not pipelined.
+;;
+;; ??? fxch isn't handled; not an issue until sched3 after reg-stack is real.
+
+(define_function_unit "pent_np" 1 0
+ (and (eq_attr "cpu" "pentium")
+ (eq_attr "type" "imul"))
+ 11 11)
+
+(define_function_unit "pent_mul" 1 1
+ (and (eq_attr "cpu" "pentium")
+ (eq_attr "type" "imul"))
+ 11 11)
+
+;; Rep movs takes minimally 12 cycles.
+(define_function_unit "pent_np" 1 0
+ (and (eq_attr "cpu" "pentium")
+ (eq_attr "type" "str"))
+ 12 12)
+
+; ??? IDIV for SI takes 46 cycles, for HI 30, for QI 22
+(define_function_unit "pent_np" 1 0
+ (and (eq_attr "cpu" "pentium")
+ (eq_attr "type" "idiv"))
+ 46 46)
+
+; Fp reg-reg moves takes 1 cycle. Loads takes 1 cycle for SF/DF mode,
+; 3 cycles for XFmode. Stores takes 2 cycles for SF/DF and 3 for XF.
+; fldz and fld1 takes 2 cycles. Only reg-reg moves are pairable.
+; The integer <-> fp conversion is not modeled correctly. Fild behaves
+; like normal fp operation and fist takes 6 cycles.
+
+(define_function_unit "fpu" 1 0
+ (and (eq_attr "cpu" "pentium")
+ (and (eq_attr "type" "fmov")
+ (and (eq_attr "memory" "load,store")
+ (eq_attr "mode" "XF"))))
+ 3 3)
+
+(define_function_unit "pent_np" 1 0
+ (and (eq_attr "cpu" "pentium")
+ (and (eq_attr "type" "fmov")
+ (and (eq_attr "memory" "load,store")
+ (eq_attr "mode" "XF"))))
+ 3 3)
+
+(define_function_unit "fpu" 1 0
+ (and (eq_attr "cpu" "pentium")
+ (and (eq_attr "type" "fmov")
+ (ior (match_operand 1 "immediate_operand" "")
+ (eq_attr "memory" "store"))))
+ 2 2)
+
+(define_function_unit "pent_np" 1 0
+ (and (eq_attr "cpu" "pentium")
+ (and (eq_attr "type" "fmov")
+ (ior (match_operand 1 "immediate_operand" "")
+ (eq_attr "memory" "store"))))
+ 2 2)
+
+(define_function_unit "pent_np" 1 0
+ (and (eq_attr "cpu" "pentium")
+ (eq_attr "type" "cld"))
+ 2 2)
+
+(define_function_unit "fpu" 1 0
+ (and (eq_attr "cpu" "pentium")
+ (and (eq_attr "type" "fmov")
+ (eq_attr "memory" "none,load")))
+ 1 1)
+
+; Read/Modify/Write instructions usually take 3 cycles.
+(define_function_unit "pent_u" 1 0
+ (and (eq_attr "cpu" "pentium")
+ (and (eq_attr "type" "alu,alu1,ishift")
+ (and (eq_attr "pent_pair" "pu")
+ (eq_attr "memory" "both"))))
+ 3 3)
+
+(define_function_unit "pent_uv" 2 0
+ (and (eq_attr "cpu" "pentium")
+ (and (eq_attr "type" "alu,alu1,ishift")
+ (and (eq_attr "pent_pair" "!np")
+ (eq_attr "memory" "both"))))
+ 3 3)
+
+(define_function_unit "pent_np" 1 0
+ (and (eq_attr "cpu" "pentium")
+ (and (eq_attr "type" "alu,alu1,negnot,ishift")
+ (and (eq_attr "pent_pair" "np")
+ (eq_attr "memory" "both"))))
+ 3 3)
+
+; Read/Modify or Modify/Write instructions usually take 2 cycles.
+(define_function_unit "pent_u" 1 0
+ (and (eq_attr "cpu" "pentium")
+ (and (eq_attr "type" "alu,ishift")
+ (and (eq_attr "pent_pair" "pu")
+ (eq_attr "memory" "load,store"))))
+ 2 2)
+
+(define_function_unit "pent_uv" 2 0
+ (and (eq_attr "cpu" "pentium")
+ (and (eq_attr "type" "alu,ishift")
+ (and (eq_attr "pent_pair" "!np")
+ (eq_attr "memory" "load,store"))))
+ 2 2)
+
+(define_function_unit "pent_np" 1 0
+ (and (eq_attr "cpu" "pentium")
+ (and (eq_attr "type" "alu,ishift")
+ (and (eq_attr "pent_pair" "np")
+ (eq_attr "memory" "load,store"))))
+ 2 2)
+
+; Insns w/o memory operands and move instructions usually take one cycle.
+(define_function_unit "pent_u" 1 0
+ (and (eq_attr "cpu" "pentium")
+ (eq_attr "pent_pair" "pu"))
+ 1 1)
+
+(define_function_unit "pent_v" 1 0
+ (and (eq_attr "cpu" "pentium")
+ (eq_attr "pent_pair" "pv"))
+ 1 1)
+
+(define_function_unit "pent_uv" 2 0
+ (and (eq_attr "cpu" "pentium")
+ (eq_attr "pent_pair" "!np"))
+ 1 1)
+
+(define_function_unit "pent_np" 1 0
+ (and (eq_attr "cpu" "pentium")
+ (eq_attr "pent_pair" "np"))
+ 1 1)
+
+; Pairable insns only conflict with other non-pairable insns.
+(define_function_unit "pent_np" 1 0
+ (and (eq_attr "cpu" "pentium")
+ (and (eq_attr "type" "alu,alu1,ishift")
+ (and (eq_attr "pent_pair" "!np")
+ (eq_attr "memory" "both"))))
+ 3 3
+ [(eq_attr "pent_pair" "np")])
+
+(define_function_unit "pent_np" 1 0
+ (and (eq_attr "cpu" "pentium")
+ (and (eq_attr "type" "alu,alu1,ishift")
+ (and (eq_attr "pent_pair" "!np")
+ (eq_attr "memory" "load,store"))))
+ 2 2
+ [(eq_attr "pent_pair" "np")])
+
+(define_function_unit "pent_np" 1 0
+ (and (eq_attr "cpu" "pentium")
+ (eq_attr "pent_pair" "!np"))
+ 1 1
+ [(eq_attr "pent_pair" "np")])
+
+; Floating point instructions usually blocks cycle longer when combined with
+; integer instructions, because of the inpaired fxch instruction.
+(define_function_unit "pent_np" 1 0
+ (and (eq_attr "cpu" "pentium")
+ (eq_attr "type" "fmov,fop,fop1,fsgn,fmul,fpspc,fcmov,fcmp,fistp"))
+ 2 2
+ [(eq_attr "type" "!fmov,fop,fop1,fsgn,fmul,fpspc,fcmov,fcmp,fistp")])
+
+(define_function_unit "fpu" 1 0
+ (and (eq_attr "cpu" "pentium")
+ (eq_attr "type" "fcmp,fxch,fsgn"))
+ 1 1)
+
+; Addition takes 3 cycles; assume other random cruft does as well.
+; ??? Trivial fp operations such as fabs or fchs takes only one cycle.
+(define_function_unit "fpu" 1 0
+ (and (eq_attr "cpu" "pentium")
+ (eq_attr "type" "fop,fop1,fistp"))
+ 3 1)
+
+; Multiplication takes 3 cycles and is only half pipelined.
+(define_function_unit "fpu" 1 0
+ (and (eq_attr "cpu" "pentium")
+ (eq_attr "type" "fmul"))
+ 3 1)
+
+(define_function_unit "pent_mul" 1 1
+ (and (eq_attr "cpu" "pentium")
+ (eq_attr "type" "fmul"))
+ 2 2)
+
+; ??? This is correct only for fdiv and sqrt -- sin/cos take 65-100 cycles.
+; They can overlap with integer insns. Only the last two cycles can overlap
+; with other fp insns. Only fsin/fcos can overlap with multiplies.
+; Only last two cycles of fsin/fcos can overlap with other instructions.
+(define_function_unit "fpu" 1 0
+ (and (eq_attr "cpu" "pentium")
+ (eq_attr "type" "fdiv"))
+ 39 37)
+
+(define_function_unit "pent_mul" 1 1
+ (and (eq_attr "cpu" "pentium")
+ (eq_attr "type" "fdiv"))
+ 39 39)
+
+(define_function_unit "fpu" 1 0
+ (and (eq_attr "cpu" "pentium")
+ (eq_attr "type" "fpspc"))
+ 70 68)
+
+(define_function_unit "pent_mul" 1 1
+ (and (eq_attr "cpu" "pentium")
+ (eq_attr "type" "fpspc"))
+ 70 70)
+
+;; Pentium Pro/PII Scheduling
+;;
+;; The PPro has an out-of-order core, but the instruction decoders are
+;; naturally in-order and asymmetric. We get best performance by scheduling
+;; for the decoders, for in doing so we give the oo execution unit the
+;; most choices.
+
+;; Categorize how many uops an ia32 instruction evaluates to:
+;; one -- an instruction with 1 uop can be decoded by any of the
+;; three decoders.
+;; few -- an instruction with 1 to 4 uops can be decoded only by
+;; decoder 0.
+;; many -- a complex instruction may take an unspecified number of
+;; cycles to decode in decoder 0.
+
+(define_attr "ppro_uops" "one,few,many"
+ (cond [(eq_attr "type" "other,multi,call,callv,fpspc,str")
+ (const_string "many")
+ (eq_attr "type" "icmov,fcmov,str,cld")
+ (const_string "few")
+ (eq_attr "type" "imov")
+ (if_then_else (eq_attr "memory" "store,both")
+ (const_string "few")
+ (const_string "one"))
+ (eq_attr "memory" "!none")
+ (const_string "few")
+ ]
+ (const_string "one")))
+
+;; Rough readiness numbers. Fine tuning happens in i386.c.
+;;
+;; p0 describes port 0.
+;; p01 describes ports 0 and 1 as a pair; alu insns can issue to either.
+;; p2 describes port 2 for loads.
+;; p34 describes ports 3 and 4 for stores.
+;; fpu describes the fpu accessed via port 0.
+;; ??? It is less than clear if there are separate fadd and fmul units
+;; that could operate in parallel.
+;;
+;; ??? fxch isn't handled; not an issue until sched3 after reg-stack is real.
+
+(define_function_unit "ppro_p0" 1 0
+ (and (eq_attr "cpu" "pentiumpro")
+ (eq_attr "type" "ishift,lea,ibr,cld"))
+ 1 1)
+
+(define_function_unit "ppro_p0" 1 0
+ (and (eq_attr "cpu" "pentiumpro")
+ (eq_attr "type" "imul"))
+ 4 1)
+
+;; ??? Does the divider lock out the pipe while it works,
+;; or is there a disconnected unit?
+(define_function_unit "ppro_p0" 1 0
+ (and (eq_attr "cpu" "pentiumpro")
+ (eq_attr "type" "idiv"))
+ 17 17)
+
+(define_function_unit "ppro_p0" 1 0
+ (and (eq_attr "cpu" "pentiumpro")
+ (eq_attr "type" "fop,fop1,fsgn,fistp"))
+ 3 1)
+
+(define_function_unit "ppro_p0" 1 0
+ (and (eq_attr "cpu" "pentiumpro")
+ (eq_attr "type" "fcmov"))
+ 2 1)
+
+(define_function_unit "ppro_p0" 1 0
+ (and (eq_attr "cpu" "pentiumpro")
+ (eq_attr "type" "fcmp"))
+ 1 1)
+
+(define_function_unit "ppro_p0" 1 0
+ (and (eq_attr "cpu" "pentiumpro")
+ (eq_attr "type" "fmov"))
+ 1 1)
+
+(define_function_unit "ppro_p0" 1 0
+ (and (eq_attr "cpu" "pentiumpro")
+ (eq_attr "type" "fmul"))
+ 5 1)
+
+(define_function_unit "ppro_p0" 1 0
+ (and (eq_attr "cpu" "pentiumpro")
+ (eq_attr "type" "fdiv,fpspc"))
+ 56 1)
+
+(define_function_unit "ppro_p01" 2 0
+ (and (eq_attr "cpu" "pentiumpro")
+ (eq_attr "type" "!imov,fmov"))
+ 1 1)
+
+(define_function_unit "ppro_p01" 2 0
+ (and (and (eq_attr "cpu" "pentiumpro")
+ (eq_attr "type" "imov,fmov"))
+ (eq_attr "memory" "none"))
+ 1 1)
+
+(define_function_unit "ppro_p2" 1 0
+ (and (eq_attr "cpu" "pentiumpro")
+ (ior (eq_attr "type" "pop")
+ (eq_attr "memory" "load,both")))
+ 3 1)
+
+(define_function_unit "ppro_p34" 1 0
+ (and (eq_attr "cpu" "pentiumpro")
+ (ior (eq_attr "type" "push")
+ (eq_attr "memory" "store,both")))
+ 1 1)
+
+(define_function_unit "fpu" 1 0
+ (and (eq_attr "cpu" "pentiumpro")
+ (eq_attr "type" "fop,fop1,fsgn,fmov,fcmp,fcmov,fistp"))
+ 1 1)
+
+(define_function_unit "fpu" 1 0
+ (and (eq_attr "cpu" "pentiumpro")
+ (eq_attr "type" "fmul"))
+ 5 2)
+
+(define_function_unit "fpu" 1 0
+ (and (eq_attr "cpu" "pentiumpro")
+ (eq_attr "type" "fdiv,fpspc"))
+ 56 56)
+
+;; imul uses the fpu. ??? does it have the same throughput as fmul?
+(define_function_unit "fpu" 1 0
+ (and (eq_attr "cpu" "pentiumpro")
+ (eq_attr "type" "imul"))
+ 4 1)
+
+;; AMD K6/K6-2 Scheduling
+;;
+;; The K6 has similar architecture to PPro. Important difference is, that
+;; there are only two decoders and they seems to be much slower than execution
+;; units. So we have to pay much more attention to proper decoding for
+;; schedulers. We share most of scheduler code for PPro in i386.c
+;;
+;; The fp unit is not pipelined and do one operation per two cycles including
+;; the FXCH.
+;;
+;; alu describes both ALU units (ALU-X and ALU-Y).
+;; alux describes X alu unit
+;; fpu describes FPU unit
+;; load describes load unit.
+;; branch describes branch unit.
+;; store decsribes store unit. This unit is not modelled completely and only
+;; used to model lea operation. Otherwise it lie outside of the critical
+;; path.
+;;
+;; ??? fxch isn't handled; not an issue until sched3 after reg-stack is real.
+
+;; The decoder specification is in the PPro section above!
+
+;; Shift instructions and certain arithmetic are issued only to X pipe.
+(define_function_unit "k6_alux" 1 0
+ (and (eq_attr "cpu" "k6")
+ (eq_attr "type" "ishift,alu1,negnot,cld"))
+ 1 1)
+
+;; The QI mode arithmetic is issued to X pipe only.
+(define_function_unit "k6_alux" 1 0
+ (and (eq_attr "cpu" "k6")
+ (and (eq_attr "type" "alu,alu1,negnot,icmp,test,imovx,incdec")
+ (match_operand:QI 0 "general_operand" "")))
+ 1 1)
+
+(define_function_unit "k6_alu" 2 0
+ (and (eq_attr "cpu" "k6")
+ (eq_attr "type" "ishift,alu1,negnot,alu,icmp,test,imovx,incdec,setcc,lea"))
+ 1 1)
+
+(define_function_unit "k6_alu" 2 0
+ (and (eq_attr "cpu" "k6")
+ (and (eq_attr "type" "imov")
+ (eq_attr "memory" "none")))
+ 1 1)
+
+(define_function_unit "k6_branch" 1 0
+ (and (eq_attr "cpu" "k6")
+ (eq_attr "type" "call,callv,ibr"))
+ 1 1)
+
+;; Load unit have two cycle latency, but we take care for it in adjust_cost
+(define_function_unit "k6_load" 1 0
+ (and (eq_attr "cpu" "k6")
+ (ior (eq_attr "type" "pop")
+ (eq_attr "memory" "load,both")))
+ 1 1)
+
+(define_function_unit "k6_load" 1 0
+ (and (eq_attr "cpu" "k6")
+ (and (eq_attr "type" "str")
+ (eq_attr "memory" "load,both")))
+ 10 10)
+
+;; Lea have two instructions, so latency is probably 2
+(define_function_unit "k6_store" 1 0
+ (and (eq_attr "cpu" "k6")
+ (eq_attr "type" "lea"))
+ 2 1)
+
+(define_function_unit "k6_store" 1 0
+ (and (eq_attr "cpu" "k6")
+ (eq_attr "type" "str"))
+ 10 10)
+
+(define_function_unit "k6_store" 1 0
+ (and (eq_attr "cpu" "k6")
+ (ior (eq_attr "type" "push")
+ (eq_attr "memory" "store,both")))
+ 1 1)
+
+(define_function_unit "k6_fpu" 1 1
+ (and (eq_attr "cpu" "k6")
+ (eq_attr "type" "fop,fop1,fmov,fcmp,fistp"))
+ 2 2)
+
+(define_function_unit "k6_fpu" 1 1
+ (and (eq_attr "cpu" "k6")
+ (eq_attr "type" "fmul"))
+ 2 2)
+
+;; ??? Guess
+(define_function_unit "k6_fpu" 1 1
+ (and (eq_attr "cpu" "k6")
+ (eq_attr "type" "fdiv,fpspc"))
+ 56 56)
+
+(define_function_unit "k6_alu" 2 0
+ (and (eq_attr "cpu" "k6")
+ (eq_attr "type" "imul"))
+ 2 2)
+
+(define_function_unit "k6_alux" 1 0
+ (and (eq_attr "cpu" "k6")
+ (eq_attr "type" "imul"))
+ 2 2)
+
+;; ??? Guess
+(define_function_unit "k6_alu" 2 0
+ (and (eq_attr "cpu" "k6")
+ (eq_attr "type" "idiv"))
+ 17 17)
+
+(define_function_unit "k6_alux" 1 0
+ (and (eq_attr "cpu" "k6")
+ (eq_attr "type" "idiv"))
+ 17 17)
+
+;; AMD Athlon Scheduling
+;;
+;; The Athlon does contain three pipelined FP units, three integer units and
+;; three address generation units.
+;;
+;; The predecode logic is determining boundaries of instructions in the 64
+;; byte cache line. So the cache line straddling problem of K6 might be issue
+;; here as well, but it is not noted in the documentation.
+;;
+;; Three DirectPath instructions decoders and only one VectorPath decoder
+;; is available. They can decode three DirectPath instructions or one VectorPath
+;; instruction per cycle.
+;; Decoded macro instructions are then passed to 72 entry instruction control
+;; unit, that passes
+;; it to the specialized integer (18 entry) and fp (36 entry) schedulers.
+;;
+;; The load/store queue unit is not attached to the schedulers but
+;; communicates with all the execution units separately instead.
+
+(define_attr "athlon_decode" "direct,vector"
+ (cond [(eq_attr "type" "call,imul,idiv,other,multi,fcmov,fpspc,str,pop,cld,fcmov")
+ (const_string "vector")
+ (and (eq_attr "type" "push")
+ (match_operand 1 "memory_operand" ""))
+ (const_string "vector")
+ (and (eq_attr "type" "fmov")
+ (and (eq_attr "memory" "load,store")
+ (eq_attr "mode" "XF")))
+ (const_string "vector")]
+ (const_string "direct")))
+
+(define_function_unit "athlon_vectordec" 1 0
+ (and (eq_attr "cpu" "athlon")
+ (eq_attr "athlon_decode" "vector"))
+ 1 1)
+
+(define_function_unit "athlon_directdec" 3 0
+ (and (eq_attr "cpu" "athlon")
+ (eq_attr "athlon_decode" "direct"))
+ 1 1)
+
+(define_function_unit "athlon_vectordec" 1 0
+ (and (eq_attr "cpu" "athlon")
+ (eq_attr "athlon_decode" "direct"))
+ 1 1 [(eq_attr "athlon_decode" "vector")])
+
+(define_function_unit "athlon_ieu" 3 0
+ (and (eq_attr "cpu" "athlon")
+ (eq_attr "type" "alu1,negnot,alu,icmp,test,imov,imovx,lea,incdec,ishift,ibr,call,callv,icmov,cld,pop,setcc,push,pop"))
+ 1 1)
+
+(define_function_unit "athlon_ieu" 3 0
+ (and (eq_attr "cpu" "athlon")
+ (eq_attr "type" "str"))
+ 15 15)
+
+(define_function_unit "athlon_ieu" 3 0
+ (and (eq_attr "cpu" "athlon")
+ (eq_attr "type" "imul"))
+ 5 0)
+
+(define_function_unit "athlon_ieu" 3 0
+ (and (eq_attr "cpu" "athlon")
+ (eq_attr "type" "idiv"))
+ 42 0)
+
+(define_function_unit "athlon_muldiv" 1 0
+ (and (eq_attr "cpu" "athlon")
+ (eq_attr "type" "imul"))
+ 5 0)
+
+(define_function_unit "athlon_muldiv" 1 0
+ (and (eq_attr "cpu" "athlon")
+ (eq_attr "type" "idiv"))
+ 42 42)
+
+(define_attr "athlon_fpunits" "none,store,mul,add,muladd,any"
+ (cond [(eq_attr "type" "fop,fop1,fcmp,fistp")
+ (const_string "add")
+ (eq_attr "type" "fmul,fdiv,fpspc,fsgn,fcmov")
+ (const_string "mul")
+ (and (eq_attr "type" "fmov") (eq_attr "memory" "store,both"))
+ (const_string "store")
+ (and (eq_attr "type" "fmov") (eq_attr "memory" "load"))
+ (const_string "any")
+ (and (eq_attr "type" "fmov")
+ (ior (match_operand:SI 1 "register_operand" "")
+ (match_operand 1 "immediate_operand" "")))
+ (const_string "store")
+ (eq_attr "type" "fmov")
+ (const_string "muladd")]
+ (const_string "none")))
+
+;; We use latencies 1 for definitions. This is OK to model colisions
+;; in execution units. The real latencies are modeled in the "fp" pipeline.
+
+;; fsin, fcos: 96-192
+;; fsincos: 107-211
+;; fsqrt: 19 for SFmode, 27 for DFmode, 35 for XFmode.
+(define_function_unit "athlon_fp" 3 0
+ (and (eq_attr "cpu" "athlon")
+ (eq_attr "type" "fpspc"))
+ 100 1)
+
+;; 16 cycles for SFmode, 20 for DFmode and 24 for XFmode.
+(define_function_unit "athlon_fp" 3 0
+ (and (eq_attr "cpu" "athlon")
+ (eq_attr "type" "fdiv"))
+ 24 1)
+
+(define_function_unit "athlon_fp" 3 0
+ (and (eq_attr "cpu" "athlon")
+ (eq_attr "type" "fop,fop1,fmul,fistp"))
+ 4 1)
+
+;; XFmode loads are slow.
+;; XFmode store is slow too (8 cycles), but we don't need to model it, because
+;; there are no dependent instructions.
+
+(define_function_unit "athlon_fp" 3 0
+ (and (eq_attr "cpu" "athlon")
+ (and (eq_attr "type" "fmov")
+ (and (eq_attr "memory" "load")
+ (eq_attr "mode" "XF"))))
+ 10 1)
+
+(define_function_unit "athlon_fp" 3 0
+ (and (eq_attr "cpu" "athlon")
+ (eq_attr "type" "fmov,fsgn"))
+ 2 1)
+
+;; fcmp and ftst instructions
+(define_function_unit "athlon_fp" 3 0
+ (and (eq_attr "cpu" "athlon")
+ (and (eq_attr "type" "fcmp")
+ (eq_attr "athlon_decode" "direct")))
+ 3 1)
+
+;; fcmpi instructions.
+(define_function_unit "athlon_fp" 3 0
+ (and (eq_attr "cpu" "athlon")
+ (and (eq_attr "type" "fcmp")
+ (eq_attr "athlon_decode" "vector")))
+ 3 1)
+
+(define_function_unit "athlon_fp" 3 0
+ (and (eq_attr "cpu" "athlon")
+ (eq_attr "type" "fcmov"))
+ 7 1)
+
+(define_function_unit "athlon_fp_mul" 1 0
+ (and (eq_attr "cpu" "athlon")
+ (eq_attr "athlon_fpunits" "mul"))
+ 1 1)
+
+(define_function_unit "athlon_fp_add" 1 0
+ (and (eq_attr "cpu" "athlon")
+ (eq_attr "athlon_fpunits" "add"))
+ 1 1)
+
+(define_function_unit "athlon_fp_muladd" 2 0
+ (and (eq_attr "cpu" "athlon")
+ (eq_attr "athlon_fpunits" "muladd,mul,add"))
+ 1 1)
+
+(define_function_unit "athlon_fp_store" 1 0
+ (and (eq_attr "cpu" "athlon")
+ (eq_attr "athlon_fpunits" "store"))
+ 1 1)
+
+;; We don't need to model the Address Generation Unit, since we don't model
+;; the re-order buffer yet and thus we never schedule more than three operations
+;; at time. Later we may want to experiment with MD_SCHED macros modeling the
+;; decoders independently on the functional units.
+
+;(define_function_unit "athlon_agu" 3 0
+; (and (eq_attr "cpu" "athlon")
+; (and (eq_attr "memory" "!none")
+; (eq_attr "athlon_fpunits" "none")))
+; 1 1)
+
+;; Model load unit to avoid too long sequences of loads. We don't need to
+;; model store queue, since it is hardly going to be bottleneck.
+
+(define_function_unit "athlon_load" 2 0
+ (and (eq_attr "cpu" "athlon")
+ (eq_attr "memory" "load,both"))
+ 1 1)
+
;; Compare instructions.
@@ -745,8 +1382,7 @@
[(set (match_operand:HI 0 "register_operand" "=a")
(unspec:HI
[(compare:CCFP (match_operand 1 "register_operand" "f")
- (match_operand 2 "const0_operand" "X"))]
- UNSPEC_FNSTSW))]
+ (match_operand 2 "const0_operand" "X"))] 9))]
"TARGET_80387
&& FLOAT_MODE_P (GET_MODE (operands[1]))
&& GET_MODE (operands[1]) == GET_MODE (operands[2])"
@@ -777,8 +1413,7 @@
(unspec:HI
[(compare:CCFP
(match_operand:SF 1 "register_operand" "f")
- (match_operand:SF 2 "nonimmediate_operand" "fm"))]
- UNSPEC_FNSTSW))]
+ (match_operand:SF 2 "nonimmediate_operand" "fm"))] 9))]
"TARGET_80387"
"* return output_fp_compare (insn, operands, 2, 0);"
[(set_attr "type" "fcmp")
@@ -799,8 +1434,7 @@
(unspec:HI
[(compare:CCFP
(match_operand:DF 1 "register_operand" "f")
- (match_operand:DF 2 "nonimmediate_operand" "fm"))]
- UNSPEC_FNSTSW))]
+ (match_operand:DF 2 "nonimmediate_operand" "fm"))] 9))]
"TARGET_80387"
"* return output_fp_compare (insn, operands, 2, 0);"
[(set_attr "type" "multi")
@@ -831,8 +1465,7 @@
(unspec:HI
[(compare:CCFP
(match_operand:XF 1 "register_operand" "f")
- (match_operand:XF 2 "register_operand" "f"))]
- UNSPEC_FNSTSW))]
+ (match_operand:XF 2 "register_operand" "f"))] 9))]
"!TARGET_64BIT && TARGET_80387"
"* return output_fp_compare (insn, operands, 2, 0);"
[(set_attr "type" "multi")
@@ -843,8 +1476,7 @@
(unspec:HI
[(compare:CCFP
(match_operand:TF 1 "register_operand" "f")
- (match_operand:TF 2 "register_operand" "f"))]
- UNSPEC_FNSTSW))]
+ (match_operand:TF 2 "register_operand" "f"))] 9))]
"TARGET_80387"
"* return output_fp_compare (insn, operands, 2, 0);"
[(set_attr "type" "multi")
@@ -867,8 +1499,7 @@
(unspec:HI
[(compare:CCFPU
(match_operand 1 "register_operand" "f")
- (match_operand 2 "register_operand" "f"))]
- UNSPEC_FNSTSW))]
+ (match_operand 2 "register_operand" "f"))] 9))]
"TARGET_80387
&& FLOAT_MODE_P (GET_MODE (operands[1]))
&& GET_MODE (operands[1]) == GET_MODE (operands[2])"
@@ -916,12 +1547,12 @@
(define_insn "x86_fnstsw_1"
[(set (match_operand:HI 0 "register_operand" "=a")
- (unspec:HI [(reg 18)] UNSPEC_FNSTSW))]
+ (unspec:HI [(reg 18)] 9))]
"TARGET_80387"
"fnstsw\t%0"
[(set_attr "length" "2")
(set_attr "mode" "SI")
- (set_attr "unit" "i387")
+ (set_attr "i387" "1")
(set_attr "ppro_uops" "few")])
;; FP compares, step 3
@@ -929,7 +1560,7 @@
(define_insn "x86_sahf_1"
[(set (reg:CC 17)
- (unspec:CC [(match_operand:HI 0 "register_operand" "a")] UNSPEC_SAHF))]
+ (unspec:CC [(match_operand:HI 0 "register_operand" "a")] 10))]
"!TARGET_64BIT"
"sahf"
[(set_attr "length" "1")
@@ -960,7 +1591,7 @@
&& SSE_FLOAT_MODE_P (GET_MODE (operands[0]))
&& GET_MODE (operands[0]) == GET_MODE (operands[0])"
"* return output_fp_compare (insn, operands, 1, 0);"
- [(set_attr "type" "fcmp,ssecmp")
+ [(set_attr "type" "fcmp,sse")
(set_attr "mode" "unknownfp")
(set_attr "athlon_decode" "vector")])
@@ -971,7 +1602,7 @@
"SSE_FLOAT_MODE_P (GET_MODE (operands[0]))
&& GET_MODE (operands[0]) == GET_MODE (operands[0])"
"* return output_fp_compare (insn, operands, 1, 0);"
- [(set_attr "type" "ssecmp")
+ [(set_attr "type" "sse")
(set_attr "mode" "unknownfp")
(set_attr "athlon_decode" "vector")])
@@ -996,7 +1627,7 @@
&& SSE_FLOAT_MODE_P (GET_MODE (operands[0]))
&& GET_MODE (operands[0]) == GET_MODE (operands[1])"
"* return output_fp_compare (insn, operands, 1, 1);"
- [(set_attr "type" "fcmp,ssecmp")
+ [(set_attr "type" "fcmp,sse")
(set_attr "mode" "unknownfp")
(set_attr "athlon_decode" "vector")])
@@ -1007,7 +1638,7 @@
"SSE_FLOAT_MODE_P (GET_MODE (operands[0]))
&& GET_MODE (operands[0]) == GET_MODE (operands[1])"
"* return output_fp_compare (insn, operands, 1, 1);"
- [(set_attr "type" "ssecmp")
+ [(set_attr "type" "sse")
(set_attr "mode" "unknownfp")
(set_attr "athlon_decode" "vector")])
@@ -1102,20 +1733,25 @@
(set_attr "mode" "SI")
(set_attr "length_immediate" "1")])
+; The first alternative is used only to compute proper length of instruction.
+; Reload's algorithm does not take into account the cost of spill instructions
+; needed to free register in given class, so avoid it from choosing the first
+; alternative when eax is not available.
+
(define_insn "*movsi_1"
- [(set (match_operand:SI 0 "nonimmediate_operand" "=r,m,!*y,!rm,!*y,!*Y,!*Y,!rm")
- (match_operand:SI 1 "general_operand" "rinm,rin,rm,*y,*y,*Y,rm,*Y"))]
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=*?a,r,*?a,m,!*y,!rm,!*y,!*Y,!rm,!*Y")
+ (match_operand:SI 1 "general_operand" "im,rinm,rinm,rin,rm,*y,*y,rm,*Y,*Y"))]
"GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM"
{
switch (get_attr_type (insn))
{
- case TYPE_SSEMOV:
- if (get_attr_mode (insn) == MODE_TI)
+ case TYPE_SSE:
+ if (get_attr_mode (insn) == TImode)
return "movdqa\t{%1, %0|%0, %1}";
return "movd\t{%1, %0|%0, %1}";
- case TYPE_MMXMOV:
- if (get_attr_mode (insn) == MODE_DI)
+ case TYPE_MMX:
+ if (get_attr_mode (insn) == DImode)
return "movq\t{%1, %0|%0, %1}";
return "movd\t{%1, %0|%0, %1}";
@@ -1123,44 +1759,46 @@
return "lea{l}\t{%1, %0|%0, %1}";
default:
- if (flag_pic && !LEGITIMATE_PIC_OPERAND_P (operands[1]))
+ if (flag_pic && SYMBOLIC_CONST (operands[1]))
abort();
return "mov{l}\t{%1, %0|%0, %1}";
}
}
[(set (attr "type")
- (cond [(eq_attr "alternative" "2,3,4")
- (const_string "mmxmov")
- (eq_attr "alternative" "5,6,7")
- (const_string "ssemov")
+ (cond [(eq_attr "alternative" "4,5,6")
+ (const_string "mmx")
+ (eq_attr "alternative" "7,8,9")
+ (const_string "sse")
(and (ne (symbol_ref "flag_pic") (const_int 0))
(match_operand:SI 1 "symbolic_operand" ""))
(const_string "lea")
]
(const_string "imov")))
- (set_attr "mode" "SI,SI,SI,SI,DI,TI,SI,SI")])
+ (set_attr "modrm" "0,*,0,*,*,*,*,*,*,*")
+ (set_attr "mode" "SI,SI,SI,SI,SI,SI,DI,TI,SI,SI")])
;; Stores and loads of ax to arbitary constant address.
;; We fake an second form of instruction to force reload to load address
;; into register when rax is not available
(define_insn "*movabssi_1_rex64"
- [(set (mem:SI (match_operand:DI 0 "x86_64_movabs_operand" "i,r"))
- (match_operand:SI 1 "nonmemory_operand" "a,er"))]
- "TARGET_64BIT && ix86_check_movabs (insn, 0)"
+ [(set (mem:SI (match_operand:DI 0 "x86_64_movabs_operand" "i,r,r"))
+ (match_operand:SI 1 "nonmemory_operand" "a,er,i"))]
+ "TARGET_64BIT"
"@
movabs{l}\t{%1, %P0|%P0, %1}
- mov{l}\t{%1, %a0|%a0, %1}"
+ mov{l}\t{%1, %a0|%a0, %1}
+ movabs{l}\t{%1, %a0|%a0, %1}"
[(set_attr "type" "imov")
- (set_attr "modrm" "0,*")
- (set_attr "length_address" "8,0")
- (set_attr "length_immediate" "0,*")
+ (set_attr "modrm" "0,*,*")
+ (set_attr "length_address" "8,0,0")
+ (set_attr "length_immediate" "0,*,*")
(set_attr "memory" "store")
(set_attr "mode" "SI")])
(define_insn "*movabssi_2_rex64"
[(set (match_operand:SI 0 "register_operand" "=a,r")
(mem:SI (match_operand:DI 1 "x86_64_movabs_operand" "i,r")))]
- "TARGET_64BIT && ix86_check_movabs (insn, 1)"
+ "TARGET_64BIT"
"@
movabs{l}\t{%P1, %0|%0, %P1}
mov{l}\t{%a1, %0|%0, %a1}"
@@ -1210,9 +1848,14 @@
[(set_attr "type" "push")
(set_attr "mode" "QI")])
+; The first alternative is used only to compute proper length of instruction.
+; Reload's algorithm does not take into account the cost of spill instructions
+; needed to free register in given class, so avoid it from choosing the first
+; alternative when eax is not available.
+
(define_insn "*movhi_1"
- [(set (match_operand:HI 0 "nonimmediate_operand" "=r,r,r,m")
- (match_operand:HI 1 "general_operand" "r,rn,rm,rn"))]
+ [(set (match_operand:HI 0 "nonimmediate_operand" "=*?a,r,r,*?a,r,m")
+ (match_operand:HI 1 "general_operand" "i,r,rn,rm,rm,rn"))]
"GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM"
{
switch (get_attr_type (insn))
@@ -1229,57 +1872,59 @@
}
}
[(set (attr "type")
- (cond [(and (eq_attr "alternative" "0")
+ (cond [(and (eq_attr "alternative" "0,1")
(ior (eq (symbol_ref "TARGET_PARTIAL_REG_STALL")
(const_int 0))
(eq (symbol_ref "TARGET_HIMODE_MATH")
(const_int 0))))
(const_string "imov")
- (and (eq_attr "alternative" "1,2")
+ (and (eq_attr "alternative" "2,3,4")
(match_operand:HI 1 "aligned_operand" ""))
(const_string "imov")
(and (ne (symbol_ref "TARGET_MOVX")
(const_int 0))
- (eq_attr "alternative" "0,2"))
+ (eq_attr "alternative" "0,1,3,4"))
(const_string "imovx")
]
(const_string "imov")))
(set (attr "mode")
(cond [(eq_attr "type" "imovx")
(const_string "SI")
- (and (eq_attr "alternative" "1,2")
+ (and (eq_attr "alternative" "2,3,4")
(match_operand:HI 1 "aligned_operand" ""))
(const_string "SI")
- (and (eq_attr "alternative" "0")
+ (and (eq_attr "alternative" "0,1")
(ior (eq (symbol_ref "TARGET_PARTIAL_REG_STALL")
(const_int 0))
(eq (symbol_ref "TARGET_HIMODE_MATH")
(const_int 0))))
(const_string "SI")
]
- (const_string "HI")))])
+ (const_string "HI")))
+ (set_attr "modrm" "0,*,*,0,*,*")])
;; Stores and loads of ax to arbitary constant address.
;; We fake an second form of instruction to force reload to load address
;; into register when rax is not available
(define_insn "*movabshi_1_rex64"
- [(set (mem:HI (match_operand:DI 0 "x86_64_movabs_operand" "i,r"))
- (match_operand:HI 1 "nonmemory_operand" "a,er"))]
- "TARGET_64BIT && ix86_check_movabs (insn, 0)"
+ [(set (mem:HI (match_operand:DI 0 "x86_64_movabs_operand" "i,r,r"))
+ (match_operand:HI 1 "nonmemory_operand" "a,er,i"))]
+ "TARGET_64BIT"
"@
movabs{w}\t{%1, %P0|%P0, %1}
- mov{w}\t{%1, %a0|%a0, %1}"
+ mov{w}\t{%1, %a0|%a0, %1}
+ movabs{w}\t{%1, %a0|%a0, %1}"
[(set_attr "type" "imov")
- (set_attr "modrm" "0,*")
- (set_attr "length_address" "8,0")
- (set_attr "length_immediate" "0,*")
+ (set_attr "modrm" "0,*,*")
+ (set_attr "length_address" "8,0,0")
+ (set_attr "length_immediate" "0,*,*")
(set_attr "memory" "store")
(set_attr "mode" "HI")])
(define_insn "*movabshi_2_rex64"
[(set (match_operand:HI 0 "register_operand" "=a,r")
(mem:HI (match_operand:DI 1 "x86_64_movabs_operand" "i,r")))]
- "TARGET_64BIT && ix86_check_movabs (insn, 1)"
+ "TARGET_64BIT"
"@
movabs{w}\t{%P1, %0|%0, %P1}
mov{w}\t{%a1, %0|%0, %a1}"
@@ -1477,7 +2122,7 @@
(define_expand "movstrictqi"
[(set (strict_low_part (match_operand:QI 0 "nonimmediate_operand" ""))
(match_operand:QI 1 "general_operand" ""))]
- "! TARGET_PARTIAL_REG_STALL || optimize_size"
+ "! TARGET_PARTIAL_REG_STALL"
{
/* Don't generate memory->memory moves, go through a register. */
if (GET_CODE (operands[0]) == MEM && GET_CODE (operands[1]) == MEM)
@@ -1487,7 +2132,7 @@
(define_insn "*movstrictqi_1"
[(set (strict_low_part (match_operand:QI 0 "nonimmediate_operand" "+qm,q"))
(match_operand:QI 1 "general_operand" "*qn,m"))]
- "(! TARGET_PARTIAL_REG_STALL || optimize_size)
+ "! TARGET_PARTIAL_REG_STALL
&& (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
"mov{b}\t{%1, %0|%0, %1}"
[(set_attr "type" "imov")
@@ -1581,23 +2226,24 @@
;; We fake an second form of instruction to force reload to load address
;; into register when rax is not available
(define_insn "*movabsqi_1_rex64"
- [(set (mem:QI (match_operand:DI 0 "x86_64_movabs_operand" "i,r"))
- (match_operand:QI 1 "nonmemory_operand" "a,er"))]
- "TARGET_64BIT && ix86_check_movabs (insn, 0)"
+ [(set (mem:QI (match_operand:DI 0 "x86_64_movabs_operand" "i,r,r"))
+ (match_operand:QI 1 "nonmemory_operand" "a,er,i"))]
+ "TARGET_64BIT"
"@
movabs{b}\t{%1, %P0|%P0, %1}
- mov{b}\t{%1, %a0|%a0, %1}"
+ mov{b}\t{%1, %a0|%a0, %1}
+ movabs{b}\t{%1, %a0|%a0, %1}"
[(set_attr "type" "imov")
- (set_attr "modrm" "0,*")
- (set_attr "length_address" "8,0")
- (set_attr "length_immediate" "0,*")
+ (set_attr "modrm" "0,*,*")
+ (set_attr "length_address" "8,0,0")
+ (set_attr "length_immediate" "0,*,*")
(set_attr "memory" "store")
(set_attr "mode" "QI")])
(define_insn "*movabsqi_2_rex64"
[(set (match_operand:QI 0 "register_operand" "=a,r")
(mem:QI (match_operand:DI 1 "x86_64_movabs_operand" "i,r")))]
- "TARGET_64BIT && ix86_check_movabs (insn, 1)"
+ "TARGET_64BIT"
"@
movabs{b}\t{%P1, %0|%0, %P1}
mov{b}\t{%a1, %0|%0, %a1}"
@@ -1838,7 +2484,7 @@
movq\t{%1, %0|%0, %1}
movdqa\t{%1, %0|%0, %1}
movq\t{%1, %0|%0, %1}"
- [(set_attr "type" "*,*,mmx,mmx,ssemov,ssemov,ssemov")
+ [(set_attr "type" "*,*,mmx,mmx,sse,sse,sse")
(set_attr "mode" "DI,DI,DI,DI,DI,TI,DI")])
(define_split
@@ -1867,19 +2513,19 @@
{
switch (get_attr_type (insn))
{
- case TYPE_SSEMOV:
+ case TYPE_SSE:
if (register_operand (operands[0], DImode)
&& register_operand (operands[1], DImode))
return "movdqa\t{%1, %0|%0, %1}";
/* FALLTHRU */
- case TYPE_MMXMOV:
+ case TYPE_MMX:
return "movq\t{%1, %0|%0, %1}";
case TYPE_MULTI:
return "#";
case TYPE_LEA:
return "lea{q}\t{%a1, %0|%0, %a1}";
default:
- if (flag_pic && !LEGITIMATE_PIC_OPERAND_P (operands[1]))
+ if (flag_pic && SYMBOLIC_CONST (operands[1]))
abort ();
if (get_attr_mode (insn) == MODE_SI)
return "mov{l}\t{%k1, %k0|%k0, %k1}";
@@ -1891,9 +2537,9 @@
}
[(set (attr "type")
(cond [(eq_attr "alternative" "5,6")
- (const_string "mmxmov")
- (eq_attr "alternative" "7,8,9")
- (const_string "ssemov")
+ (const_string "mmx")
+ (eq_attr "alternative" "7,8")
+ (const_string "sse")
(eq_attr "alternative" "4")
(const_string "multi")
(and (ne (symbol_ref "flag_pic") (const_int 0))
@@ -1911,7 +2557,7 @@
(define_insn "*movabsdi_1_rex64"
[(set (mem:DI (match_operand:DI 0 "x86_64_movabs_operand" "i,r"))
(match_operand:DI 1 "nonmemory_operand" "a,er"))]
- "TARGET_64BIT && ix86_check_movabs (insn, 0)"
+ "TARGET_64BIT"
"@
movabs{q}\t{%1, %P0|%P0, %1}
mov{q}\t{%1, %a0|%a0, %1}"
@@ -1925,7 +2571,7 @@
(define_insn "*movabsdi_2_rex64"
[(set (match_operand:DI 0 "register_operand" "=a,r")
(mem:DI (match_operand:DI 1 "x86_64_movabs_operand" "i,r")))]
- "TARGET_64BIT && ix86_check_movabs (insn, 1)"
+ "TARGET_64BIT"
"@
movabs{q}\t{%P1, %0|%0, %P1}
mov{q}\t{%a1, %0|%0, %a1}"
@@ -2065,21 +2711,21 @@
;; %%% Kill this when call knows how to work this out.
(define_split
[(set (match_operand:SF 0 "push_operand" "")
- (match_operand:SF 1 "any_fp_register_operand" ""))]
- "!TARGET_64BIT"
+ (match_operand:SF 1 "register_operand" ""))]
+ "!TARGET_64BIT && ANY_FP_REGNO_P (REGNO (operands[1]))"
[(set (reg:SI 7) (plus:SI (reg:SI 7) (const_int -4)))
(set (mem:SF (reg:SI 7)) (match_dup 1))])
(define_split
[(set (match_operand:SF 0 "push_operand" "")
- (match_operand:SF 1 "any_fp_register_operand" ""))]
- "TARGET_64BIT"
+ (match_operand:SF 1 "register_operand" ""))]
+ "TARGET_64BIT && ANY_FP_REGNO_P (REGNO (operands[1]))"
[(set (reg:DI 7) (plus:DI (reg:DI 7) (const_int -8)))
(set (mem:SF (reg:DI 7)) (match_dup 1))])
(define_insn "*movsf_1"
[(set (match_operand:SF 0 "nonimmediate_operand" "=f#xr,m,f#xr,r#xf,m,x#rf,x#rf,x#rf,m,!*y,!rm,!*y")
- (match_operand:SF 1 "general_operand" "fm#rx,f#rx,G,rmF#fx,Fr#fx,C,x,xm#rf,x#rf,rm,*y,*y"))]
+ (match_operand:SF 1 "general_operand" "fm#rx,f#rx,G,rmF#fx,Fr#fx,H,x,xm#rf,x#rf,rm,*y,*y"))]
"(GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)
&& (reload_in_progress || reload_completed
|| (ix86_cmodel == CM_MEDIUM || ix86_cmodel == CM_LARGE)
@@ -2117,7 +2763,7 @@
case 4:
return "mov{l}\t{%1, %0|%0, %1}";
case 5:
- if (TARGET_SSE2 && !TARGET_ATHLON)
+ if (TARGET_SSE2)
return "pxor\t%0, %0";
else
return "xorps\t%0, %0";
@@ -2141,7 +2787,7 @@
abort();
}
}
- [(set_attr "type" "fmov,fmov,fmov,imov,imov,ssemov,ssemov,ssemov,ssemov,mmxmov,mmxmov,mmxmov")
+ [(set_attr "type" "fmov,fmov,fmov,imov,imov,sse,sse,sse,sse,mmx,mmx,mmx")
(set_attr "mode" "SF,SF,SF,SI,SI,TI,SF,SF,SF,SI,SI,DI")])
(define_insn "*swapsf"
@@ -2237,16 +2883,16 @@
;; %%% Kill this when call knows how to work this out.
(define_split
[(set (match_operand:DF 0 "push_operand" "")
- (match_operand:DF 1 "any_fp_register_operand" ""))]
- "!TARGET_64BIT && reload_completed"
+ (match_operand:DF 1 "register_operand" ""))]
+ "!TARGET_64BIT && reload_completed && ANY_FP_REGNO_P (REGNO (operands[1]))"
[(set (reg:SI 7) (plus:SI (reg:SI 7) (const_int -8)))
(set (mem:DF (reg:SI 7)) (match_dup 1))]
"")
(define_split
[(set (match_operand:DF 0 "push_operand" "")
- (match_operand:DF 1 "any_fp_register_operand" ""))]
- "TARGET_64BIT && reload_completed"
+ (match_operand:DF 1 "register_operand" ""))]
+ "TARGET_64BIT && reload_completed && ANY_FP_REGNO_P (REGNO (operands[1]))"
[(set (reg:DI 7) (plus:DI (reg:DI 7) (const_int -8)))
(set (mem:DF (reg:DI 7)) (match_dup 1))]
"")
@@ -2264,7 +2910,7 @@
(define_insn "*movdf_nointeger"
[(set (match_operand:DF 0 "nonimmediate_operand" "=f#Y,m,f#Y,*r,o,Y#f,Y#f,Y#f,m")
- (match_operand:DF 1 "general_operand" "fm#Y,f#Y,G,*roF,F*r,C,Y#f,YHm#f,Y#f"))]
+ (match_operand:DF 1 "general_operand" "fm#Y,f#Y,G,*roF,F*r,H,Y#f,YHm#f,Y#f"))]
"(GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)
&& (optimize_size || !TARGET_INTEGER_DFMODE_MOVES)
&& (reload_in_progress || reload_completed
@@ -2303,10 +2949,7 @@
case 4:
return "#";
case 5:
- if (TARGET_ATHLON)
- return "xorpd\t%0, %0";
- else
- return "pxor\t%0, %0";
+ return "pxor\t%0, %0";
case 6:
if (TARGET_PARTIAL_REG_DEPENDENCY)
return "movapd\t{%1, %0|%0, %1}";
@@ -2320,12 +2963,12 @@
abort();
}
}
- [(set_attr "type" "fmov,fmov,fmov,multi,multi,ssemov,ssemov,ssemov,ssemov")
+ [(set_attr "type" "fmov,fmov,fmov,multi,multi,sse,sse,sse,sse")
(set_attr "mode" "DF,DF,DF,SI,SI,TI,DF,DF,DF")])
(define_insn "*movdf_integer"
[(set (match_operand:DF 0 "nonimmediate_operand" "=f#Yr,m,f#Yr,r#Yf,o,Y#rf,Y#rf,Y#rf,m")
- (match_operand:DF 1 "general_operand" "fm#Yr,f#Yr,G,roF#Yf,Fr#Yf,C,Y#rf,Ym#rf,Y#rf"))]
+ (match_operand:DF 1 "general_operand" "fm#Yr,f#Yr,G,roF#Yf,Fr#Yf,H,Y#rf,Ym#rf,Y#rf"))]
"(GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)
&& !optimize_size && TARGET_INTEGER_DFMODE_MOVES
&& (reload_in_progress || reload_completed
@@ -2365,10 +3008,7 @@
return "#";
case 5:
- if (TARGET_ATHLON)
- return "xorpd\t%0, %0";
- else
- return "pxor\t%0, %0";
+ return "pxor\t%0, %0";
case 6:
if (TARGET_PARTIAL_REG_DEPENDENCY)
return "movapd\t{%1, %0|%0, %1}";
@@ -2382,7 +3022,7 @@
abort();
}
}
- [(set_attr "type" "fmov,fmov,fmov,multi,multi,ssemov,ssemov,ssemov,ssemov")
+ [(set_attr "type" "fmov,fmov,fmov,multi,multi,sse,sse,sse,sse")
(set_attr "mode" "DF,DF,DF,SI,SI,TI,DF,DF,DF")])
(define_split
@@ -2556,28 +3196,28 @@
&& (GET_MODE (operands[0]) == XFmode
|| GET_MODE (operands[0]) == TFmode
|| GET_MODE (operands[0]) == DFmode)
- && !ANY_FP_REG_P (operands[1])"
+ && (!REG_P (operands[1]) || !ANY_FP_REGNO_P (REGNO (operands[1])))"
[(const_int 0)]
"ix86_split_long_move (operands); DONE;")
(define_split
[(set (match_operand:XF 0 "push_operand" "")
- (match_operand:XF 1 "any_fp_register_operand" ""))]
- "!TARGET_64BIT"
+ (match_operand:XF 1 "register_operand" ""))]
+ "!TARGET_64BIT && ANY_FP_REGNO_P (REGNO (operands[1]))"
[(set (reg:SI 7) (plus:SI (reg:SI 7) (const_int -12)))
(set (mem:XF (reg:SI 7)) (match_dup 1))])
(define_split
[(set (match_operand:TF 0 "push_operand" "")
- (match_operand:TF 1 "any_fp_register_operand" ""))]
- "!TARGET_64BIT"
+ (match_operand:TF 1 "register_operand" ""))]
+ "!TARGET_64BIT && ANY_FP_REGNO_P (REGNO (operands[1]))"
[(set (reg:SI 7) (plus:SI (reg:SI 7) (const_int -16)))
(set (mem:TF (reg:SI 7)) (match_dup 1))])
(define_split
[(set (match_operand:TF 0 "push_operand" "")
- (match_operand:TF 1 "any_fp_register_operand" ""))]
- "TARGET_64BIT"
+ (match_operand:TF 1 "register_operand" ""))]
+ "TARGET_64BIT && ANY_FP_REGNO_P (REGNO (operands[1]))"
[(set (reg:DI 7) (plus:DI (reg:DI 7) (const_int -16)))
(set (mem:TF (reg:DI 7)) (match_dup 1))])
@@ -3329,15 +3969,15 @@
(define_split
[(set (match_operand:DF 0 "push_operand" "")
- (float_extend:DF (match_operand:SF 1 "fp_register_operand" "")))]
- "!TARGET_64BIT"
+ (float_extend:DF (match_operand:SF 1 "register_operand" "")))]
+ "!TARGET_64BIT && FP_REGNO_P (REGNO (operands[1]))"
[(set (reg:SI 7) (plus:SI (reg:SI 7) (const_int -8)))
(set (mem:DF (reg:SI 7)) (float_extend:DF (match_dup 1)))])
(define_split
[(set (match_operand:DF 0 "push_operand" "")
- (float_extend:DF (match_operand:SF 1 "fp_register_operand" "")))]
- "TARGET_64BIT"
+ (float_extend:DF (match_operand:SF 1 "register_operand" "")))]
+ "TARGET_64BIT && FP_REGNO_P (REGNO (operands[1]))"
[(set (reg:DI 7) (plus:DI (reg:DI 7) (const_int -8)))
(set (mem:DF (reg:DI 7)) (float_extend:DF (match_dup 1)))])
@@ -3349,8 +3989,8 @@
(define_split
[(set (match_operand:XF 0 "push_operand" "")
- (float_extend:XF (match_operand:SF 1 "fp_register_operand" "")))]
- "!TARGET_64BIT"
+ (float_extend:XF (match_operand:SF 1 "register_operand" "")))]
+ "!TARGET_64BIT && FP_REGNO_P (REGNO (operands[1]))"
[(set (reg:SI 7) (plus:SI (reg:SI 7) (const_int -12)))
(set (mem:XF (reg:SI 7)) (float_extend:XF (match_dup 1)))])
@@ -3362,15 +4002,15 @@
(define_split
[(set (match_operand:TF 0 "push_operand" "")
- (float_extend:TF (match_operand:SF 1 "fp_register_operand" "")))]
- "!TARGET_64BIT"
+ (float_extend:TF (match_operand:SF 1 "register_operand" "")))]
+ "!TARGET_64BIT && FP_REGNO_P (REGNO (operands[1]))"
[(set (reg:SI 7) (plus:SI (reg:SI 7) (const_int -16)))
(set (mem:TF (reg:SI 7)) (float_extend:TF (match_dup 1)))])
(define_split
[(set (match_operand:TF 0 "push_operand" "")
- (float_extend:TF (match_operand:SF 1 "fp_register_operand" "")))]
- "TARGET_64BIT"
+ (float_extend:TF (match_operand:SF 1 "register_operand" "")))]
+ "TARGET_64BIT && FP_REGNO_P (REGNO (operands[1]))"
[(set (reg:DI 7) (plus:DI (reg:DI 7) (const_int -16)))
(set (mem:DF (reg:DI 7)) (float_extend:TF (match_dup 1)))])
@@ -3382,8 +4022,8 @@
(define_split
[(set (match_operand:XF 0 "push_operand" "")
- (float_extend:XF (match_operand:DF 1 "fp_register_operand" "")))]
- "!TARGET_64BIT"
+ (float_extend:XF (match_operand:DF 1 "register_operand" "")))]
+ "!TARGET_64BIT && FP_REGNO_P (REGNO (operands[1]))"
[(set (reg:SI 7) (plus:SI (reg:SI 7) (const_int -12)))
(set (mem:DF (reg:SI 7)) (float_extend:XF (match_dup 1)))])
@@ -3395,27 +4035,23 @@
(define_split
[(set (match_operand:TF 0 "push_operand" "")
- (float_extend:TF (match_operand:DF 1 "fp_register_operand" "")))]
- "!TARGET_64BIT"
+ (float_extend:TF (match_operand:DF 1 "register_operand" "")))]
+ "!TARGET_64BIT && FP_REGNO_P (REGNO (operands[1]))"
[(set (reg:SI 7) (plus:SI (reg:SI 7) (const_int -16)))
(set (mem:TF (reg:SI 7)) (float_extend:XF (match_dup 1)))])
(define_split
[(set (match_operand:TF 0 "push_operand" "")
- (float_extend:TF (match_operand:DF 1 "fp_register_operand" "")))]
- "TARGET_64BIT"
+ (float_extend:TF (match_operand:DF 1 "register_operand" "")))]
+ "TARGET_64BIT && FP_REGNO_P (REGNO (operands[1]))"
[(set (reg:DI 7) (plus:DI (reg:DI 7) (const_int -16)))
(set (mem:TF (reg:DI 7)) (float_extend:TF (match_dup 1)))])
(define_expand "extendsfdf2"
[(set (match_operand:DF 0 "nonimmediate_operand" "")
- (float_extend:DF (match_operand:SF 1 "general_operand" "")))]
+ (float_extend:DF (match_operand:SF 1 "nonimmediate_operand" "")))]
"TARGET_80387 || TARGET_SSE2"
{
- /* ??? Needed for compress_float_constant since all fp constants
- are LEGITIMATE_CONSTANT_P. */
- if (GET_CODE (operands[1]) == CONST_DOUBLE)
- operands[1] = validize_mem (force_const_mem (SFmode, operands[1]));
if (GET_CODE (operands[0]) == MEM && GET_CODE (operands[1]) == MEM)
operands[1] = force_reg (SFmode, operands[1]);
})
@@ -3450,7 +4086,7 @@
abort ();
}
}
- [(set_attr "type" "fmov,fmov,ssecvt")
+ [(set_attr "type" "fmov,fmov,sse")
(set_attr "mode" "SF,XF,DF")])
(define_insn "*extendsfdf2_1_sse_only"
@@ -3459,18 +4095,14 @@
"!TARGET_80387 && TARGET_SSE2
&& (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
"cvtss2sd\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt")
+ [(set_attr "type" "sse")
(set_attr "mode" "DF")])
(define_expand "extendsfxf2"
[(set (match_operand:XF 0 "nonimmediate_operand" "")
- (float_extend:XF (match_operand:SF 1 "general_operand" "")))]
+ (float_extend:XF (match_operand:SF 1 "nonimmediate_operand" "")))]
"!TARGET_64BIT && TARGET_80387"
{
- /* ??? Needed for compress_float_constant since all fp constants
- are LEGITIMATE_CONSTANT_P. */
- if (GET_CODE (operands[1]) == CONST_DOUBLE)
- operands[1] = validize_mem (force_const_mem (SFmode, operands[1]));
if (GET_CODE (operands[0]) == MEM && GET_CODE (operands[1]) == MEM)
operands[1] = force_reg (SFmode, operands[1]);
})
@@ -3509,13 +4141,9 @@
(define_expand "extendsftf2"
[(set (match_operand:TF 0 "nonimmediate_operand" "")
- (float_extend:TF (match_operand:SF 1 "general_operand" "")))]
+ (float_extend:TF (match_operand:SF 1 "nonimmediate_operand" "")))]
"TARGET_80387"
{
- /* ??? Needed for compress_float_constant since all fp constants
- are LEGITIMATE_CONSTANT_P. */
- if (GET_CODE (operands[1]) == CONST_DOUBLE)
- operands[1] = validize_mem (force_const_mem (SFmode, operands[1]));
if (GET_CODE (operands[0]) == MEM && GET_CODE (operands[1]) == MEM)
operands[1] = force_reg (SFmode, operands[1]);
})
@@ -3554,13 +4182,9 @@
(define_expand "extenddfxf2"
[(set (match_operand:XF 0 "nonimmediate_operand" "")
- (float_extend:XF (match_operand:DF 1 "general_operand" "")))]
+ (float_extend:XF (match_operand:DF 1 "nonimmediate_operand" "")))]
"!TARGET_64BIT && TARGET_80387"
{
- /* ??? Needed for compress_float_constant since all fp constants
- are LEGITIMATE_CONSTANT_P. */
- if (GET_CODE (operands[1]) == CONST_DOUBLE)
- operands[1] = validize_mem (force_const_mem (DFmode, operands[1]));
if (GET_CODE (operands[0]) == MEM && GET_CODE (operands[1]) == MEM)
operands[1] = force_reg (DFmode, operands[1]);
})
@@ -3599,13 +4223,9 @@
(define_expand "extenddftf2"
[(set (match_operand:TF 0 "nonimmediate_operand" "")
- (float_extend:TF (match_operand:DF 1 "general_operand" "")))]
+ (float_extend:TF (match_operand:DF 1 "nonimmediate_operand" "")))]
"TARGET_80387"
{
- /* ??? Needed for compress_float_constant since all fp constants
- are LEGITIMATE_CONSTANT_P. */
- if (GET_CODE (operands[1]) == CONST_DOUBLE)
- operands[1] = validize_mem (force_const_mem (DFmode, operands[1]));
if (GET_CODE (operands[0]) == MEM && GET_CODE (operands[1]) == MEM)
operands[1] = force_reg (DFmode, operands[1]);
})
@@ -3705,7 +4325,7 @@
abort ();
}
}
- [(set_attr "type" "fmov,multi,multi,multi,ssecvt")
+ [(set_attr "type" "fmov,multi,multi,multi,sse")
(set_attr "mode" "SF,SF,SF,SF,DF")])
(define_insn "*truncdfsf2_2"
@@ -3728,7 +4348,7 @@
abort ();
}
}
- [(set_attr "type" "ssecvt,fmov")
+ [(set_attr "type" "sse,fmov")
(set_attr "mode" "DF,SF")])
(define_insn "truncdfsf2_3"
@@ -3751,7 +4371,7 @@
(match_operand:DF 1 "nonimmediate_operand" "mY")))]
"!TARGET_80387 && TARGET_SSE2"
"cvtsd2ss\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt")
+ [(set_attr "type" "sse")
(set_attr "mode" "DF")])
(define_split
@@ -3776,9 +4396,10 @@
(define_split
[(set (match_operand:SF 0 "register_operand" "")
(float_truncate:SF
- (match_operand:DF 1 "fp_register_operand" "")))
+ (match_operand:DF 1 "register_operand" "")))
(clobber (match_operand:SF 2 "memory_operand" ""))]
- "TARGET_80387 && reload_completed"
+ "TARGET_80387 && reload_completed
+ && FP_REG_P (operands[1])"
[(set (match_dup 2) (float_truncate:SF (match_dup 1)))
(set (match_dup 0) (match_dup 2))]
"")
@@ -4167,14 +4788,14 @@
(fix:DI (match_operand:SF 1 "nonimmediate_operand" "xm")))]
"TARGET_64BIT && TARGET_SSE"
"cvttss2si{q}\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt")])
+ [(set_attr "type" "sse")])
(define_insn "fix_truncdfdi_sse"
[(set (match_operand:DI 0 "register_operand" "=r")
(fix:DI (match_operand:DF 1 "nonimmediate_operand" "Ym")))]
"TARGET_64BIT && TARGET_SSE2"
"cvttsd2si{q}\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt")])
+ [(set_attr "type" "sse")])
;; Signed conversion to SImode.
@@ -4275,14 +4896,14 @@
(fix:SI (match_operand:SF 1 "nonimmediate_operand" "xm")))]
"TARGET_SSE"
"cvttss2si\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt")])
+ [(set_attr "type" "sse")])
(define_insn "fix_truncdfsi_sse"
[(set (match_operand:SI 0 "register_operand" "=r")
(fix:SI (match_operand:DF 1 "nonimmediate_operand" "Ym")))]
"TARGET_SSE2"
"cvttsd2si\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt")])
+ [(set_attr "type" "sse")])
(define_split
[(set (match_operand:SI 0 "register_operand" "")
@@ -4413,22 +5034,22 @@
;; %% Not used yet.
(define_insn "x86_fnstcw_1"
[(set (match_operand:HI 0 "memory_operand" "=m")
- (unspec:HI [(reg:HI 18)] UNSPEC_FSTCW))]
+ (unspec:HI [(reg:HI 18)] 11))]
"TARGET_80387"
"fnstcw\t%0"
[(set_attr "length" "2")
(set_attr "mode" "HI")
- (set_attr "unit" "i387")
+ (set_attr "i387" "1")
(set_attr "ppro_uops" "few")])
(define_insn "x86_fldcw_1"
[(set (reg:HI 18)
- (unspec:HI [(match_operand:HI 0 "memory_operand" "m")] UNSPEC_FLDCW))]
+ (unspec:HI [(match_operand:HI 0 "memory_operand" "m")] 12))]
"TARGET_80387"
"fldcw\t%0"
[(set_attr "length" "2")
(set_attr "mode" "HI")
- (set_attr "unit" "i387")
+ (set_attr "i387" "1")
(set_attr "athlon_decode" "vector")
(set_attr "ppro_uops" "few")])
@@ -4462,7 +5083,7 @@
fild%z1\t%1
#
cvtsi2ss\t{%1, %0|%0, %1}"
- [(set_attr "type" "fmov,multi,ssecvt")
+ [(set_attr "type" "fmov,multi,sse")
(set_attr "mode" "SF")
(set_attr "fp_int_src" "true")])
@@ -4471,7 +5092,7 @@
(float:SF (match_operand:SI 1 "nonimmediate_operand" "mr")))]
"TARGET_SSE"
"cvtsi2ss\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt")
+ [(set_attr "type" "sse")
(set_attr "mode" "SF")
(set_attr "fp_int_src" "true")])
@@ -4500,7 +5121,7 @@
fild%z1\t%1
#
cvtsi2ss{q}\t{%1, %0|%0, %1}"
- [(set_attr "type" "fmov,multi,ssecvt")
+ [(set_attr "type" "fmov,multi,sse")
(set_attr "mode" "SF")
(set_attr "fp_int_src" "true")])
@@ -4509,7 +5130,7 @@
(float:SF (match_operand:DI 1 "nonimmediate_operand" "mr")))]
"TARGET_64BIT && TARGET_SSE"
"cvtsi2ss{q}\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt")
+ [(set_attr "type" "sse")
(set_attr "mode" "SF")
(set_attr "fp_int_src" "true")])
@@ -4538,7 +5159,7 @@
fild%z1\t%1
#
cvtsi2sd\t{%1, %0|%0, %1}"
- [(set_attr "type" "fmov,multi,ssecvt")
+ [(set_attr "type" "fmov,multi,sse")
(set_attr "mode" "DF")
(set_attr "fp_int_src" "true")])
@@ -4547,7 +5168,7 @@
(float:DF (match_operand:SI 1 "nonimmediate_operand" "mr")))]
"TARGET_SSE2"
"cvtsi2sd\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt")
+ [(set_attr "type" "sse")
(set_attr "mode" "DF")
(set_attr "fp_int_src" "true")])
@@ -4576,7 +5197,7 @@
fild%z1\t%1
#
cvtsi2sd{q}\t{%1, %0|%0, %1}"
- [(set_attr "type" "fmov,multi,ssecvt")
+ [(set_attr "type" "fmov,multi,sse")
(set_attr "mode" "DF")
(set_attr "fp_int_src" "true")])
@@ -4585,7 +5206,7 @@
(float:DF (match_operand:DI 1 "nonimmediate_operand" "mr")))]
"TARGET_SSE2"
"cvtsi2sd{q}\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt")
+ [(set_attr "type" "sse")
(set_attr "mode" "DF")
(set_attr "fp_int_src" "true")])
@@ -4657,9 +5278,10 @@
;; %%% Kill these when reload knows how to do it.
(define_split
- [(set (match_operand 0 "fp_register_operand" "")
+ [(set (match_operand 0 "register_operand" "")
(float (match_operand 1 "register_operand" "")))]
- "reload_completed && FLOAT_MODE_P (GET_MODE (operands[0]))"
+ "reload_completed && FLOAT_MODE_P (GET_MODE (operands[0]))
+ && FP_REG_P (operands[0])"
[(const_int 0)]
{
operands[2] = ix86_force_to_memory (GET_MODE (operands[1]), operands[1]);
@@ -4698,8 +5320,7 @@
(match_operand:DI 2 "general_operand" "")))
(clobber (reg:CC 17))]
"!TARGET_64BIT && reload_completed"
- [(parallel [(set (reg:CC 17) (unspec:CC [(match_dup 1) (match_dup 2)]
- UNSPEC_ADD_CARRY))
+ [(parallel [(set (reg:CC 17) (unspec:CC [(match_dup 1) (match_dup 2)] 12))
(set (match_dup 0) (plus:SI (match_dup 1) (match_dup 2)))])
(parallel [(set (match_dup 3)
(plus:SI (plus:SI (ltu:SI (reg:CC 17) (const_int 0))
@@ -4724,10 +5345,8 @@
(set_attr "ppro_uops" "few")])
(define_insn "*adddi3_cc_rex64"
- [(set (reg:CC 17)
- (unspec:CC [(match_operand:DI 1 "nonimmediate_operand" "%0,0")
- (match_operand:DI 2 "x86_64_general_operand" "re,rm")]
- UNSPEC_ADD_CARRY))
+ [(set (reg:CC 17) (unspec:CC [(match_operand:DI 1 "nonimmediate_operand" "%0,0")
+ (match_operand:DI 2 "x86_64_general_operand" "re,rm")] 12))
(set (match_operand:DI 0 "nonimmediate_operand" "=rm,r")
(plus:DI (match_dup 1) (match_dup 2)))]
"TARGET_64BIT && ix86_binary_operator_ok (PLUS, DImode, operands)"
@@ -4763,10 +5382,8 @@
(set_attr "ppro_uops" "few")])
(define_insn "*addsi3_cc"
- [(set (reg:CC 17)
- (unspec:CC [(match_operand:SI 1 "nonimmediate_operand" "%0,0")
- (match_operand:SI 2 "general_operand" "ri,rm")]
- UNSPEC_ADD_CARRY))
+ [(set (reg:CC 17) (unspec:CC [(match_operand:SI 1 "nonimmediate_operand" "%0,0")
+ (match_operand:SI 2 "general_operand" "ri,rm")] 12))
(set (match_operand:SI 0 "nonimmediate_operand" "=rm,r")
(plus:SI (match_dup 1) (match_dup 2)))]
"ix86_binary_operator_ok (PLUS, SImode, operands)"
@@ -4775,10 +5392,8 @@
(set_attr "mode" "SI")])
(define_insn "addqi3_cc"
- [(set (reg:CC 17)
- (unspec:CC [(match_operand:QI 1 "nonimmediate_operand" "%0,0")
- (match_operand:QI 2 "general_operand" "qi,qm")]
- UNSPEC_ADD_CARRY))
+ [(set (reg:CC 17) (unspec:CC [(match_operand:QI 1 "nonimmediate_operand" "%0,0")
+ (match_operand:QI 2 "general_operand" "qi,qm")] 12))
(set (match_operand:QI 0 "nonimmediate_operand" "=qm,q")
(plus:QI (match_dup 1) (match_dup 2)))]
"ix86_binary_operator_ok (PLUS, QImode, operands)"
@@ -4831,7 +5446,7 @@
(define_insn_and_split "*lea_general_1"
[(set (match_operand 0 "register_operand" "=r")
- (plus (plus (match_operand 1 "index_register_operand" "r")
+ (plus (plus (match_operand 1 "register_operand" "r")
(match_operand 2 "register_operand" "r"))
(match_operand 3 "immediate_operand" "i")))]
"(GET_MODE (operands[0]) == QImode || GET_MODE (operands[0]) == HImode
@@ -4863,7 +5478,7 @@
(define_insn_and_split "*lea_general_1_zext"
[(set (match_operand:DI 0 "register_operand" "=r")
(zero_extend:DI
- (plus:SI (plus:SI (match_operand:SI 1 "index_register_operand" "r")
+ (plus:SI (plus:SI (match_operand:SI 1 "register_operand" "r")
(match_operand:SI 2 "register_operand" "r"))
(match_operand:SI 3 "immediate_operand" "i"))))]
"TARGET_64BIT"
@@ -4883,7 +5498,7 @@
(define_insn_and_split "*lea_general_2"
[(set (match_operand 0 "register_operand" "=r")
- (plus (mult (match_operand 1 "index_register_operand" "r")
+ (plus (mult (match_operand 1 "register_operand" "r")
(match_operand 2 "const248_operand" "i"))
(match_operand 3 "nonmemory_operand" "ri")))]
"(GET_MODE (operands[0]) == QImode || GET_MODE (operands[0]) == HImode
@@ -4913,7 +5528,7 @@
(define_insn_and_split "*lea_general_2_zext"
[(set (match_operand:DI 0 "register_operand" "=r")
(zero_extend:DI
- (plus:SI (mult:SI (match_operand:SI 1 "index_register_operand" "r")
+ (plus:SI (mult:SI (match_operand:SI 1 "register_operand" "r")
(match_operand:SI 2 "const248_operand" "n"))
(match_operand:SI 3 "nonmemory_operand" "ri"))))]
"TARGET_64BIT"
@@ -4932,7 +5547,7 @@
(define_insn_and_split "*lea_general_3"
[(set (match_operand 0 "register_operand" "=r")
- (plus (plus (mult (match_operand 1 "index_register_operand" "r")
+ (plus (plus (mult (match_operand 1 "register_operand" "r")
(match_operand 2 "const248_operand" "i"))
(match_operand 3 "register_operand" "r"))
(match_operand 4 "immediate_operand" "i")))]
@@ -4966,7 +5581,7 @@
(define_insn_and_split "*lea_general_3_zext"
[(set (match_operand:DI 0 "register_operand" "=r")
(zero_extend:DI
- (plus:SI (plus:SI (mult:SI (match_operand:SI 1 "index_register_operand" "r")
+ (plus:SI (plus:SI (mult:SI (match_operand:SI 1 "register_operand" "r")
(match_operand:SI 2 "const248_operand" "n"))
(match_operand:SI 3 "register_operand" "r"))
(match_operand:SI 4 "immediate_operand" "i"))))]
@@ -5703,7 +6318,9 @@
case TYPE_INCDEC:
if (operands[2] == const1_rtx)
return "inc{w}\t%0";
- else if (operands[2] == constm1_rtx)
+ else if (operands[2] == constm1_rtx
+ || (GET_CODE (operands[2]) == CONST_INT
+ && INTVAL (operands[2]) == 65535))
return "dec{w}\t%0";
abort();
@@ -5742,7 +6359,9 @@
case TYPE_INCDEC:
if (operands[2] == const1_rtx)
return "inc{w}\t%0";
- else if (operands[2] == constm1_rtx)
+ else if (operands[2] == constm1_rtx
+ || (GET_CODE (operands[2]) == CONST_INT
+ && INTVAL (operands[2]) == 65535))
return "dec{w}\t%0";
abort();
@@ -5782,7 +6401,9 @@
case TYPE_INCDEC:
if (operands[2] == const1_rtx)
return "inc{w}\t%0";
- else if (operands[2] == constm1_rtx)
+ else if (operands[2] == constm1_rtx
+ || (GET_CODE (operands[2]) == CONST_INT
+ && INTVAL (operands[2]) == 65535))
return "dec{w}\t%0";
abort();
@@ -5819,7 +6440,9 @@
case TYPE_INCDEC:
if (operands[2] == const1_rtx)
return "inc{w}\t%0";
- else if (operands[2] == constm1_rtx)
+ else if (operands[2] == constm1_rtx
+ || (GET_CODE (operands[2]) == CONST_INT
+ && INTVAL (operands[2]) == 65535))
return "dec{w}\t%0";
abort();
@@ -5855,7 +6478,9 @@
switch (get_attr_type (insn))
{
case TYPE_INCDEC:
- if (operands[2] == constm1_rtx)
+ if (operands[2] == constm1_rtx
+ || (GET_CODE (operands[2]) == CONST_INT
+ && INTVAL (operands[2]) == 65535))
return "inc{w}\t%0";
else if (operands[2] == const1_rtx)
return "dec{w}\t%0";
@@ -5897,7 +6522,9 @@
case TYPE_INCDEC:
if (operands[2] == const1_rtx)
return "inc{w}\t%0";
- else if (operands[2] == constm1_rtx)
+ else if (operands[2] == constm1_rtx
+ || (GET_CODE (operands[2]) == CONST_INT
+ && INTVAL (operands[2]) == 65535))
return "dec{w}\t%0";
abort();
@@ -5946,7 +6573,9 @@
case TYPE_INCDEC:
if (operands[2] == const1_rtx)
return widen ? "inc{l}\t%k0" : "inc{b}\t%0";
- else if (operands[2] == constm1_rtx)
+ else if (operands[2] == constm1_rtx
+ || (GET_CODE (operands[2]) == CONST_INT
+ && INTVAL (operands[2]) == 255))
return widen ? "dec{l}\t%k0" : "dec{b}\t%0";
abort();
@@ -5992,7 +6621,9 @@
case TYPE_INCDEC:
if (operands[2] == const1_rtx)
return widen ? "inc{l}\t%k0" : "inc{b}\t%0";
- else if (operands[2] == constm1_rtx)
+ else if (operands[2] == constm1_rtx
+ || (GET_CODE (operands[2]) == CONST_INT
+ && INTVAL (operands[2]) == 255))
return widen ? "dec{l}\t%k0" : "dec{b}\t%0";
abort();
@@ -6022,40 +6653,6 @@
(const_string "alu")))
(set_attr "mode" "QI,QI,SI")])
-(define_insn "*addqi_1_slp"
- [(set (strict_low_part (match_operand:QI 0 "nonimmediate_operand" "+qm,q"))
- (plus:QI (match_dup 0)
- (match_operand:QI 1 "general_operand" "qn,qnm")))
- (clobber (reg:CC 17))]
- "(! TARGET_PARTIAL_REG_STALL || optimize_size)
- && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
-{
- switch (get_attr_type (insn))
- {
- case TYPE_INCDEC:
- if (operands[1] == const1_rtx)
- return "inc{b}\t%0";
- else if (operands[1] == constm1_rtx)
- return "dec{b}\t%0";
- abort();
-
- default:
- /* Make things pretty and `subl $4,%eax' rather than `addl $-4, %eax'. */
- if (GET_CODE (operands[1]) == CONST_INT
- && INTVAL (operands[1]) < 0)
- {
- operands[2] = GEN_INT (-INTVAL (operands[2]));
- return "sub{b}\t{%1, %0|%0, %1}";
- }
- return "add{b}\t{%1, %0|%0, %1}";
- }
-}
- [(set (attr "type")
- (if_then_else (match_operand:QI 2 "incdec_operand" "")
- (const_string "incdec")
- (const_string "alu1")))
- (set_attr "mode" "QI")])
-
(define_insn "*addqi_2"
[(set (reg 17)
(compare
@@ -6587,17 +7184,6 @@
[(set_attr "type" "alu")
(set_attr "mode" "QI")])
-(define_insn "*subqi_1_slp"
- [(set (strict_low_part (match_operand:QI 0 "nonimmediate_operand" "+qm,q"))
- (minus:QI (match_dup 0)
- (match_operand:QI 1 "general_operand" "qn,qmn")))
- (clobber (reg:CC 17))]
- "(! TARGET_PARTIAL_REG_STALL || optimize_size)
- && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
- "sub{b}\t{%1, %0|%0, %1}"
- [(set_attr "type" "alu1")
- (set_attr "mode" "QI")])
-
(define_insn "*subqi_2"
[(set (reg 17)
(compare
@@ -7236,7 +7822,7 @@
(use (match_dup 3))
(clobber (reg:CC 17))])]
{
- /* Avoid use of cltd in favor of a mov+shift. */
+ /* Avoid use of cltd in favour of a mov+shift. */
if (!TARGET_USE_CLTD && !optimize_size)
{
if (true_regnum (operands[1]))
@@ -7321,7 +7907,7 @@
(use (match_dup 3))
(clobber (reg:CC 17))])]
{
- /* Avoid use of cltd in favor of a mov+shift. */
+ /* Avoid use of cltd in favour of a mov+shift. */
if (!TARGET_USE_CLTD && !optimize_size)
{
if (true_regnum (operands[1]))
@@ -7594,7 +8180,8 @@
(const_int 8))
(match_operand 1 "const_int_operand" "n"))
(const_int 0)))]
- "ix86_match_ccmode (insn, CCNOmode)"
+ "(unsigned HOST_WIDE_INT) INTVAL (operands[1]) <= 0xff
+ && ix86_match_ccmode (insn, CCNOmode)"
"test{b}\t{%1, %h0|%h0, %1}"
[(set_attr "type" "test")
(set_attr "mode" "QI")
@@ -7732,57 +8319,10 @@
mask = ((HOST_WIDE_INT)1 << (pos + len)) - 1;
mask &= ~(((HOST_WIDE_INT)1 << pos) - 1);
- operands[3] = gen_rtx_AND (mode, operands[0], gen_int_mode (mask, mode));
+ operands[3] = gen_rtx_AND (mode, operands[0],
+ GEN_INT (trunc_int_for_mode (mask, mode)));
})
-;; Convert HImode/SImode test instructions with immediate to QImode ones.
-;; i386 does not allow to encode test with 8bit sign extended immediate, so
-;; this is relatively important trick.
-;; Do the converison only post-reload to avoid limiting of the register class
-;; to QI regs.
-(define_split
- [(set (reg 17)
- (compare
- (and (match_operand 0 "register_operand" "")
- (match_operand 1 "const_int_operand" ""))
- (const_int 0)))]
- "reload_completed
- && QI_REG_P (operands[0])
- && ((ix86_match_ccmode (insn, CCZmode)
- && !(INTVAL (operands[1]) & ~(255 << 8)))
- || (ix86_match_ccmode (insn, CCNOmode)
- && !(INTVAL (operands[1]) & ~(127 << 8))))
- && GET_MODE (operands[0]) != QImode"
- [(set (reg:CCNO 17)
- (compare:CCNO
- (and:SI (zero_extract:SI (match_dup 0) (const_int 8) (const_int 8))
- (match_dup 1))
- (const_int 0)))]
- "operands[0] = gen_lowpart (SImode, operands[0]);
- operands[1] = gen_int_mode (INTVAL (operands[1]) >> 8, SImode);")
-
-(define_split
- [(set (reg 17)
- (compare
- (and (match_operand 0 "nonimmediate_operand" "")
- (match_operand 1 "const_int_operand" ""))
- (const_int 0)))]
- "reload_completed
- && (!REG_P (operands[0]) || ANY_QI_REG_P (operands[0]))
- && ((ix86_match_ccmode (insn, CCZmode)
- && !(INTVAL (operands[1]) & ~255))
- || (ix86_match_ccmode (insn, CCNOmode)
- && !(INTVAL (operands[1]) & ~127)))
- && GET_MODE (operands[0]) != QImode"
- [(set (reg:CCNO 17)
- (compare:CCNO
- (and:QI (match_dup 0)
- (match_dup 1))
- (const_int 0)))]
- "operands[0] = gen_lowpart (QImode, operands[0]);
- operands[1] = gen_lowpart (QImode, operands[1]);")
-
-
;; %%% This used to optimize known byte-wide and operations to memory,
;; and sometimes to QImode registers. If this is considered useful,
;; it should be done with splitters.
@@ -7905,7 +8445,7 @@
(and (match_dup 0)
(const_int -65536)))
(clobber (reg:CC 17))]
- "optimize_size || (TARGET_FAST_PREFIX && !TARGET_PARTIAL_REG_STALL)"
+ "optimize_size"
[(set (strict_low_part (match_dup 1)) (const_int 0))]
"operands[1] = gen_lowpart (HImode, operands[0]);")
@@ -8051,8 +8591,7 @@
(and:QI (match_dup 0)
(match_operand:QI 1 "general_operand" "qi,qmi")))
(clobber (reg:CC 17))]
- "(! TARGET_PARTIAL_REG_STALL || optimize_size)
- && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
+ ""
"and{b}\t{%1, %0|%0, %1}"
[(set_attr "type" "alu1")
(set_attr "mode" "QI")])
@@ -8088,9 +8627,7 @@
(const_int 0)))
(set (strict_low_part (match_dup 0))
(and:QI (match_dup 0) (match_dup 1)))]
- "(! TARGET_PARTIAL_REG_STALL || optimize_size)
- && ix86_match_ccmode (insn, CCNOmode)
- && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
+ "ix86_match_ccmode (insn, CCNOmode)"
"and{b}\t{%1, %0|%0, %1}"
[(set_attr "type" "alu1")
(set_attr "mode" "QI")])
@@ -8110,7 +8647,7 @@
(const_int 8))
(match_operand 2 "const_int_operand" "n")))
(clobber (reg:CC 17))]
- ""
+ "(unsigned HOST_WIDE_INT)INTVAL (operands[2]) <= 0xff"
"and{b}\t{%2, %h0|%h0, %2}"
[(set_attr "type" "alu")
(set_attr "length_immediate" "1")
@@ -8138,7 +8675,8 @@
(const_int 8)
(const_int 8))
(match_dup 2)))]
- "ix86_match_ccmode (insn, CCNOmode)"
+ "ix86_match_ccmode (insn, CCNOmode)
+ && (unsigned HOST_WIDE_INT)INTVAL (operands[2]) <= 0xff"
"and{b}\t{%2, %h0|%h0, %2}"
[(set_attr "type" "alu")
(set_attr "length_immediate" "1")
@@ -8199,51 +8737,6 @@
[(set_attr "type" "alu")
(set_attr "length_immediate" "0")
(set_attr "mode" "QI")])
-
-;; Convert wide AND instructions with immediate operand to shorter QImode
-;; equivalents when possible.
-;; Don't do the splitting with memory operands, since it intoduces risc
-;; of memory mismatch stalls. We may want to do the splitting for optimizing
-;; for size, but that can (should?) be handled by generic code instead.
-(define_split
- [(set (match_operand 0 "register_operand" "")
- (and (match_operand 1 "register_operand" "")
- (match_operand 2 "const_int_operand" "")))
- (clobber (reg:CC 17))]
- "reload_completed
- && QI_REG_P (operands[0])
- && (!TARGET_PARTIAL_REG_STALL || optimize_size)
- && !(~INTVAL (operands[2]) & ~(255 << 8))
- && GET_MODE (operands[0]) != QImode"
- [(parallel [(set (zero_extract:SI (match_dup 0) (const_int 8) (const_int 8))
- (and:SI (zero_extract:SI (match_dup 1)
- (const_int 8) (const_int 8))
- (match_dup 2)))
- (clobber (reg:CC 17))])]
- "operands[0] = gen_lowpart (SImode, operands[0]);
- operands[1] = gen_lowpart (SImode, operands[1]);
- operands[2] = gen_int_mode ((INTVAL (operands[2]) >> 8) & 0xff, SImode);")
-
-;; Since AND can be encoded with sign extended immediate, this is only
-;; profitable when 7th bit is not set.
-(define_split
- [(set (match_operand 0 "register_operand" "")
- (and (match_operand 1 "general_operand" "")
- (match_operand 2 "const_int_operand" "")))
- (clobber (reg:CC 17))]
- "reload_completed
- && ANY_QI_REG_P (operands[0])
- && (!TARGET_PARTIAL_REG_STALL || optimize_size)
- && !(~INTVAL (operands[2]) & ~255)
- && !(INTVAL (operands[2]) & 128)
- && GET_MODE (operands[0]) != QImode"
- [(parallel [(set (strict_low_part (match_dup 0))
- (and:QI (match_dup 1)
- (match_dup 2)))
- (clobber (reg:CC 17))])]
- "operands[0] = gen_lowpart (QImode, operands[0]);
- operands[1] = gen_lowpart (QImode, operands[1]);
- operands[2] = gen_lowpart (QImode, operands[2]);")
;; Logical inclusive OR instructions
@@ -8460,8 +8953,7 @@
(ior:QI (match_dup 0)
(match_operand:QI 1 "general_operand" "qmi,qi")))
(clobber (reg:CC 17))]
- "(! TARGET_PARTIAL_REG_STALL || optimize_size)
- && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
+ ""
"or{b}\t{%1, %0|%0, %1}"
[(set_attr "type" "alu1")
(set_attr "mode" "QI")])
@@ -8486,9 +8978,7 @@
(const_int 0)))
(set (strict_low_part (match_dup 0))
(ior:QI (match_dup 0) (match_dup 1)))]
- "(! TARGET_PARTIAL_REG_STALL || optimize_size)
- && ix86_match_ccmode (insn, CCNOmode)
- && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
+ "ix86_match_ccmode (insn, CCNOmode)"
"or{b}\t{%1, %0|%0, %1}"
[(set_attr "type" "alu1")
(set_attr "mode" "QI")])
@@ -8505,118 +8995,6 @@
[(set_attr "type" "alu")
(set_attr "mode" "QI")])
-(define_insn "iorqi_ext_0"
- [(set (zero_extract:SI (match_operand 0 "ext_register_operand" "=Q")
- (const_int 8)
- (const_int 8))
- (ior:SI
- (zero_extract:SI
- (match_operand 1 "ext_register_operand" "0")
- (const_int 8)
- (const_int 8))
- (match_operand 2 "const_int_operand" "n")))
- (clobber (reg:CC 17))]
- "(!TARGET_PARTIAL_REG_STALL || optimize_size)"
- "or{b}\t{%2, %h0|%h0, %2}"
- [(set_attr "type" "alu")
- (set_attr "length_immediate" "1")
- (set_attr "mode" "QI")])
-
-(define_insn "*iorqi_ext_1"
- [(set (zero_extract:SI (match_operand 0 "ext_register_operand" "=Q")
- (const_int 8)
- (const_int 8))
- (ior:SI
- (zero_extract:SI
- (match_operand 1 "ext_register_operand" "0")
- (const_int 8)
- (const_int 8))
- (zero_extend:SI
- (match_operand:QI 2 "general_operand" "Qm"))))
- (clobber (reg:CC 17))]
- "!TARGET_64BIT
- && (!TARGET_PARTIAL_REG_STALL || optimize_size)"
- "or{b}\t{%2, %h0|%h0, %2}"
- [(set_attr "type" "alu")
- (set_attr "length_immediate" "0")
- (set_attr "mode" "QI")])
-
-(define_insn "*iorqi_ext_1_rex64"
- [(set (zero_extract:SI (match_operand 0 "ext_register_operand" "=Q")
- (const_int 8)
- (const_int 8))
- (ior:SI
- (zero_extract:SI
- (match_operand 1 "ext_register_operand" "0")
- (const_int 8)
- (const_int 8))
- (zero_extend:SI
- (match_operand 2 "ext_register_operand" "Q"))))
- (clobber (reg:CC 17))]
- "TARGET_64BIT
- && (!TARGET_PARTIAL_REG_STALL || optimize_size)"
- "or{b}\t{%2, %h0|%h0, %2}"
- [(set_attr "type" "alu")
- (set_attr "length_immediate" "0")
- (set_attr "mode" "QI")])
-
-(define_insn "*iorqi_ext_2"
- [(set (zero_extract:SI (match_operand 0 "ext_register_operand" "=Q")
- (const_int 8)
- (const_int 8))
- (ior:SI
- (zero_extract:SI (match_operand 1 "ext_register_operand" "0")
- (const_int 8)
- (const_int 8))
- (zero_extract:SI (match_operand 2 "ext_register_operand" "Q")
- (const_int 8)
- (const_int 8))))
- (clobber (reg:CC 17))]
- "(!TARGET_PARTIAL_REG_STALL || optimize_size)"
- "ior{b}\t{%h2, %h0|%h0, %h2}"
- [(set_attr "type" "alu")
- (set_attr "length_immediate" "0")
- (set_attr "mode" "QI")])
-
-(define_split
- [(set (match_operand 0 "register_operand" "")
- (ior (match_operand 1 "register_operand" "")
- (match_operand 2 "const_int_operand" "")))
- (clobber (reg:CC 17))]
- "reload_completed
- && QI_REG_P (operands[0])
- && (!TARGET_PARTIAL_REG_STALL || optimize_size)
- && !(INTVAL (operands[2]) & ~(255 << 8))
- && GET_MODE (operands[0]) != QImode"
- [(parallel [(set (zero_extract:SI (match_dup 0) (const_int 8) (const_int 8))
- (ior:SI (zero_extract:SI (match_dup 1)
- (const_int 8) (const_int 8))
- (match_dup 2)))
- (clobber (reg:CC 17))])]
- "operands[0] = gen_lowpart (SImode, operands[0]);
- operands[1] = gen_lowpart (SImode, operands[1]);
- operands[2] = gen_int_mode ((INTVAL (operands[2]) >> 8) & 0xff, SImode);")
-
-;; Since OR can be encoded with sign extended immediate, this is only
-;; profitable when 7th bit is set.
-(define_split
- [(set (match_operand 0 "register_operand" "")
- (ior (match_operand 1 "general_operand" "")
- (match_operand 2 "const_int_operand" "")))
- (clobber (reg:CC 17))]
- "reload_completed
- && ANY_QI_REG_P (operands[0])
- && (!TARGET_PARTIAL_REG_STALL || optimize_size)
- && !(INTVAL (operands[2]) & ~255)
- && (INTVAL (operands[2]) & 128)
- && GET_MODE (operands[0]) != QImode"
- [(parallel [(set (strict_low_part (match_dup 0))
- (ior:QI (match_dup 1)
- (match_dup 2)))
- (clobber (reg:CC 17))])]
- "operands[0] = gen_lowpart (QImode, operands[0]);
- operands[1] = gen_lowpart (QImode, operands[1]);
- operands[2] = gen_lowpart (QImode, operands[2]);")
;; Logical XOR instructions
@@ -8832,77 +9210,11 @@
[(set_attr "type" "alu")
(set_attr "mode" "QI,QI,SI")])
-(define_insn "*xorqi_1_slp"
- [(set (strict_low_part (match_operand:QI 0 "nonimmediate_operand" "+qm,q"))
- (xor:QI (match_dup 0)
- (match_operand:QI 1 "general_operand" "qi,qmi")))
- (clobber (reg:CC 17))]
- "(! TARGET_PARTIAL_REG_STALL || optimize_size)
- && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
- "xor{b}\t{%1, %0|%0, %1}"
- [(set_attr "type" "alu1")
- (set_attr "mode" "QI")])
-
-(define_insn "xorqi_ext_0"
- [(set (zero_extract:SI (match_operand 0 "ext_register_operand" "=Q")
- (const_int 8)
- (const_int 8))
- (xor:SI
- (zero_extract:SI
- (match_operand 1 "ext_register_operand" "0")
- (const_int 8)
- (const_int 8))
- (match_operand 2 "const_int_operand" "n")))
- (clobber (reg:CC 17))]
- "(!TARGET_PARTIAL_REG_STALL || optimize_size)"
- "xor{b}\t{%2, %h0|%h0, %2}"
- [(set_attr "type" "alu")
- (set_attr "length_immediate" "1")
- (set_attr "mode" "QI")])
-
(define_insn "*xorqi_ext_1"
[(set (zero_extract:SI (match_operand 0 "ext_register_operand" "=Q")
(const_int 8)
(const_int 8))
(xor:SI
- (zero_extract:SI
- (match_operand 1 "ext_register_operand" "0")
- (const_int 8)
- (const_int 8))
- (zero_extend:SI
- (match_operand:QI 2 "general_operand" "Qm"))))
- (clobber (reg:CC 17))]
- "!TARGET_64BIT
- && (!TARGET_PARTIAL_REG_STALL || optimize_size)"
- "xor{b}\t{%2, %h0|%h0, %2}"
- [(set_attr "type" "alu")
- (set_attr "length_immediate" "0")
- (set_attr "mode" "QI")])
-
-(define_insn "*xorqi_ext_1_rex64"
- [(set (zero_extract:SI (match_operand 0 "ext_register_operand" "=Q")
- (const_int 8)
- (const_int 8))
- (xor:SI
- (zero_extract:SI
- (match_operand 1 "ext_register_operand" "0")
- (const_int 8)
- (const_int 8))
- (zero_extend:SI
- (match_operand 2 "ext_register_operand" "Q"))))
- (clobber (reg:CC 17))]
- "TARGET_64BIT
- && (!TARGET_PARTIAL_REG_STALL || optimize_size)"
- "xor{b}\t{%2, %h0|%h0, %2}"
- [(set_attr "type" "alu")
- (set_attr "length_immediate" "0")
- (set_attr "mode" "QI")])
-
-(define_insn "*xorqi_ext_2"
- [(set (zero_extract:SI (match_operand 0 "ext_register_operand" "=Q")
- (const_int 8)
- (const_int 8))
- (xor:SI
(zero_extract:SI (match_operand 1 "ext_register_operand" "0")
(const_int 8)
(const_int 8))
@@ -8910,7 +9222,7 @@
(const_int 8)
(const_int 8))))
(clobber (reg:CC 17))]
- "(!TARGET_PARTIAL_REG_STALL || optimize_size)"
+ ""
"xor{b}\t{%h2, %h0|%h0, %h2}"
[(set_attr "type" "alu")
(set_attr "length_immediate" "0")
@@ -8930,20 +9242,6 @@
[(set_attr "type" "alu")
(set_attr "mode" "QI")])
-(define_insn "*xorqi_2_slp"
- [(set (reg 17)
- (compare (xor:QI (match_operand:QI 0 "nonimmediate_operand" "+q,qm")
- (match_operand:QI 1 "general_operand" "qim,qi"))
- (const_int 0)))
- (set (strict_low_part (match_dup 0))
- (xor:QI (match_dup 0) (match_dup 1)))]
- "(! TARGET_PARTIAL_REG_STALL || optimize_size)
- && ix86_match_ccmode (insn, CCNOmode)
- && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
- "xor{b}\t{%1, %0|%0, %1}"
- [(set_attr "type" "alu1")
- (set_attr "mode" "QI")])
-
(define_insn "*xorqi_cc_2"
[(set (reg 17)
(compare
@@ -9018,46 +9316,6 @@
(match_dup 2)))])]
""
"")
-
-(define_split
- [(set (match_operand 0 "register_operand" "")
- (xor (match_operand 1 "register_operand" "")
- (match_operand 2 "const_int_operand" "")))
- (clobber (reg:CC 17))]
- "reload_completed
- && QI_REG_P (operands[0])
- && (!TARGET_PARTIAL_REG_STALL || optimize_size)
- && !(INTVAL (operands[2]) & ~(255 << 8))
- && GET_MODE (operands[0]) != QImode"
- [(parallel [(set (zero_extract:SI (match_dup 0) (const_int 8) (const_int 8))
- (xor:SI (zero_extract:SI (match_dup 1)
- (const_int 8) (const_int 8))
- (match_dup 2)))
- (clobber (reg:CC 17))])]
- "operands[0] = gen_lowpart (SImode, operands[0]);
- operands[1] = gen_lowpart (SImode, operands[1]);
- operands[2] = gen_int_mode ((INTVAL (operands[2]) >> 8) & 0xff, SImode);")
-
-;; Since XOR can be encoded with sign extended immediate, this is only
-;; profitable when 7th bit is set.
-(define_split
- [(set (match_operand 0 "register_operand" "")
- (xor (match_operand 1 "general_operand" "")
- (match_operand 2 "const_int_operand" "")))
- (clobber (reg:CC 17))]
- "reload_completed
- && ANY_QI_REG_P (operands[0])
- && (!TARGET_PARTIAL_REG_STALL || optimize_size)
- && !(INTVAL (operands[2]) & ~255)
- && (INTVAL (operands[2]) & 128)
- && GET_MODE (operands[0]) != QImode"
- [(parallel [(set (strict_low_part (match_dup 0))
- (xor:QI (match_dup 1)
- (match_dup 2)))
- (clobber (reg:CC 17))])]
- "operands[0] = gen_lowpart (QImode, operands[0]);
- operands[1] = gen_lowpart (QImode, operands[1]);
- operands[2] = gen_lowpart (QImode, operands[2]);")
;; Negation instructions
@@ -9261,7 +9519,8 @@
operands[0] = force_reg (SFmode, operands[0]);
emit_move_insn (reg,
gen_lowpart (SFmode,
- gen_int_mode (0x80000000, SImode)));
+ GEN_INT (trunc_int_for_mode (0x80000000,
+ SImode))));
emit_insn (gen_negsf2_ifs (operands[0], operands[1], reg));
if (dest != operands[0])
emit_move_insn (dest, operands[0]);
@@ -9340,22 +9599,22 @@
"#")
(define_split
- [(set (match_operand:SF 0 "fp_register_operand" "")
+ [(set (match_operand:SF 0 "register_operand" "")
(neg:SF (match_operand:SF 1 "register_operand" "")))
(clobber (reg:CC 17))]
- "TARGET_80387 && reload_completed"
+ "TARGET_80387 && FP_REGNO_P (REGNO (operands[0])) && reload_completed"
[(set (match_dup 0)
(neg:SF (match_dup 1)))]
"")
(define_split
- [(set (match_operand:SF 0 "register_and_not_fp_reg_operand" "")
+ [(set (match_operand:SF 0 "register_operand" "")
(neg:SF (match_operand:SF 1 "register_operand" "")))
(clobber (reg:CC 17))]
- "TARGET_80387 && reload_completed"
+ "TARGET_80387 && reload_completed && !FP_REGNO_P (REGNO (operands[0]))"
[(parallel [(set (match_dup 0) (xor:SI (match_dup 0) (match_dup 1)))
(clobber (reg:CC 17))])]
- "operands[1] = gen_int_mode (0x80000000, SImode);
+ "operands[1] = GEN_INT (trunc_int_for_mode (0x80000000, SImode));
operands[0] = gen_rtx_REG (SImode, REGNO (operands[0]));")
(define_split
@@ -9372,7 +9631,7 @@
if (size >= 12)
size = 10;
operands[0] = adjust_address (operands[0], QImode, size - 1);
- operands[1] = gen_int_mode (0x80, QImode);
+ operands[1] = GEN_INT (trunc_int_for_mode (0x80, QImode));
})
(define_expand "negdf2"
@@ -9392,7 +9651,8 @@
in register. */
rtx reg = gen_reg_rtx (DFmode);
#if HOST_BITS_PER_WIDE_INT >= 64
- rtx imm = gen_int_mode (((HOST_WIDE_INT)1) << 63, DImode);
+ rtx imm = GEN_INT (trunc_int_for_mode(((HOST_WIDE_INT)1) << 63,
+ DImode));
#else
rtx imm = immed_double_const (0, 0x80000000, DImode);
#endif
@@ -9428,9 +9688,9 @@
"#")
(define_insn "*negdf2_ifs_rex64"
- [(set (match_operand:DF 0 "nonimmediate_operand" "=Y#f,Y#f,fm#Y")
- (neg:DF (match_operand:DF 1 "nonimmediate_operand" "0,Y#f,0")))
- (use (match_operand:DF 2 "general_operand" "Y,0,*g#Y*r"))
+ [(set (match_operand:DF 0 "nonimmediate_operand" "=Y#fr,Y#fr,fm#Yr,r#Yf")
+ (neg:DF (match_operand:DF 1 "nonimmediate_operand" "0,Y#fr,0,0")))
+ (use (match_operand:DF 2 "general_operand" "Y,0,*g#Yr,*rm"))
(clobber (reg:CC 17))]
"TARGET_64BIT && TARGET_SSE2
&& (reload_in_progress || reload_completed
@@ -9515,22 +9775,23 @@
"#")
(define_split
- [(set (match_operand:DF 0 "fp_register_operand" "")
+ [(set (match_operand:DF 0 "register_operand" "")
(neg:DF (match_operand:DF 1 "register_operand" "")))
(clobber (reg:CC 17))]
- "TARGET_80387 && reload_completed"
+ "TARGET_80387 && FP_REGNO_P (REGNO (operands[0])) && reload_completed"
[(set (match_dup 0)
(neg:DF (match_dup 1)))]
"")
(define_split
- [(set (match_operand:DF 0 "register_and_not_fp_reg_operand" "")
+ [(set (match_operand:DF 0 "register_operand" "")
(neg:DF (match_operand:DF 1 "register_operand" "")))
(clobber (reg:CC 17))]
- "!TARGET_64BIT && TARGET_80387 && reload_completed"
+ "!TARGET_64BIT && TARGET_80387 && reload_completed
+ && !FP_REGNO_P (REGNO (operands[0]))"
[(parallel [(set (match_dup 3) (xor:SI (match_dup 3) (match_dup 4)))
(clobber (reg:CC 17))])]
- "operands[4] = gen_int_mode (0x80000000, SImode);
+ "operands[4] = GEN_INT (trunc_int_for_mode (0x80000000, SImode));
split_di (operands+0, 1, operands+2, operands+3);")
(define_expand "negxf2"
@@ -9559,19 +9820,19 @@
"#")
(define_split
- [(set (match_operand:XF 0 "fp_register_operand" "")
+ [(set (match_operand:XF 0 "register_operand" "")
(neg:XF (match_operand:XF 1 "register_operand" "")))
(clobber (reg:CC 17))]
- "TARGET_80387 && reload_completed"
+ "TARGET_80387 && FP_REGNO_P (REGNO (operands[0])) && reload_completed"
[(set (match_dup 0)
(neg:XF (match_dup 1)))]
"")
(define_split
- [(set (match_operand:XF 0 "register_and_not_fp_reg_operand" "")
+ [(set (match_operand:XF 0 "register_operand" "")
(neg:XF (match_operand:XF 1 "register_operand" "")))
(clobber (reg:CC 17))]
- "TARGET_80387 && reload_completed"
+ "TARGET_80387 && reload_completed && !FP_REGNO_P (REGNO (operands[0]))"
[(parallel [(set (match_dup 0) (xor:SI (match_dup 0) (match_dup 1)))
(clobber (reg:CC 17))])]
"operands[1] = GEN_INT (0x8000);
@@ -9589,19 +9850,19 @@
"#")
(define_split
- [(set (match_operand:TF 0 "fp_register_operand" "")
+ [(set (match_operand:TF 0 "register_operand" "")
(neg:TF (match_operand:TF 1 "register_operand" "")))
(clobber (reg:CC 17))]
- "TARGET_80387 && reload_completed"
+ "TARGET_80387 && FP_REGNO_P (REGNO (operands[0])) && reload_completed"
[(set (match_dup 0)
(neg:TF (match_dup 1)))]
"")
(define_split
- [(set (match_operand:TF 0 "register_and_not_fp_reg_operand" "")
+ [(set (match_operand:TF 0 "register_operand" "")
(neg:TF (match_operand:TF 1 "register_operand" "")))
(clobber (reg:CC 17))]
- "TARGET_80387 && reload_completed"
+ "TARGET_80387 && reload_completed && !FP_REGNO_P (REGNO (operands[0]))"
[(parallel [(set (match_dup 0) (xor:SI (match_dup 0) (match_dup 1)))
(clobber (reg:CC 17))])]
"operands[1] = GEN_INT (0x8000);
@@ -9721,7 +9982,8 @@
operands[0] = force_reg (SFmode, operands[0]);
emit_move_insn (reg,
gen_lowpart (SFmode,
- gen_int_mode (0x80000000, SImode)));
+ GEN_INT (trunc_int_for_mode (0x80000000,
+ SImode))));
emit_insn (gen_abssf2_ifs (operands[0], operands[1], reg));
if (dest != operands[0])
emit_move_insn (dest, operands[0]);
@@ -9789,22 +10051,22 @@
"#")
(define_split
- [(set (match_operand:SF 0 "fp_register_operand" "")
+ [(set (match_operand:SF 0 "register_operand" "")
(abs:SF (match_operand:SF 1 "register_operand" "")))
(clobber (reg:CC 17))]
- "TARGET_80387"
+ "TARGET_80387 && FP_REGNO_P (REGNO (operands[0]))"
[(set (match_dup 0)
(abs:SF (match_dup 1)))]
"")
(define_split
- [(set (match_operand:SF 0 "register_and_not_fp_reg_operand" "")
+ [(set (match_operand:SF 0 "register_operand" "")
(abs:SF (match_operand:SF 1 "register_operand" "")))
(clobber (reg:CC 17))]
- "TARGET_80387 && reload_completed"
+ "TARGET_80387 && reload_completed && !FP_REGNO_P (REGNO (operands[0]))"
[(parallel [(set (match_dup 0) (and:SI (match_dup 0) (match_dup 1)))
(clobber (reg:CC 17))])]
- "operands[1] = gen_int_mode (~0x80000000, SImode);
+ "operands[1] = GEN_INT (trunc_int_for_mode (~0x80000000, SImode));
operands[0] = gen_rtx_REG (SImode, REGNO (operands[0]));")
(define_split
@@ -9821,7 +10083,7 @@
if (size >= 12)
size = 10;
operands[0] = adjust_address (operands[0], QImode, size - 1);
- operands[1] = gen_int_mode (~0x80, QImode);
+ operands[1] = GEN_INT (trunc_int_for_mode (~0x80, QImode));
})
(define_expand "absdf2"
@@ -9841,7 +10103,8 @@
in register. */
rtx reg = gen_reg_rtx (DFmode);
#if HOST_BITS_PER_WIDE_INT >= 64
- rtx imm = gen_int_mode (((HOST_WIDE_INT)1) << 63, DImode);
+ rtx imm = GEN_INT (trunc_int_for_mode(((HOST_WIDE_INT)1) << 63,
+ DImode));
#else
rtx imm = immed_double_const (0, 0x80000000, DImode);
#endif
@@ -9942,22 +10205,23 @@
"#")
(define_split
- [(set (match_operand:DF 0 "fp_register_operand" "")
+ [(set (match_operand:DF 0 "register_operand" "")
(abs:DF (match_operand:DF 1 "register_operand" "")))
(clobber (reg:CC 17))]
- "TARGET_80387 && reload_completed"
+ "TARGET_80387 && FP_REGNO_P (REGNO (operands[0])) && reload_completed"
[(set (match_dup 0)
(abs:DF (match_dup 1)))]
"")
(define_split
- [(set (match_operand:DF 0 "register_and_not_fp_reg_operand" "")
+ [(set (match_operand:DF 0 "register_operand" "")
(abs:DF (match_operand:DF 1 "register_operand" "")))
(clobber (reg:CC 17))]
- "!TARGET_64BIT && TARGET_80387 && reload_completed"
+ "!TARGET_64BIT && TARGET_80387 && reload_completed &&
+ !FP_REGNO_P (REGNO (operands[0]))"
[(parallel [(set (match_dup 3) (and:SI (match_dup 3) (match_dup 4)))
(clobber (reg:CC 17))])]
- "operands[4] = gen_int_mode (~0x80000000, SImode);
+ "operands[4] = GEN_INT (trunc_int_for_mode (~0x80000000, SImode));
split_di (operands+0, 1, operands+2, operands+3);")
(define_expand "absxf2"
@@ -9986,19 +10250,19 @@
"#")
(define_split
- [(set (match_operand:XF 0 "fp_register_operand" "")
+ [(set (match_operand:XF 0 "register_operand" "")
(abs:XF (match_operand:XF 1 "register_operand" "")))
(clobber (reg:CC 17))]
- "TARGET_80387 && reload_completed"
+ "TARGET_80387 && FP_REGNO_P (REGNO (operands[0])) && reload_completed"
[(set (match_dup 0)
(abs:XF (match_dup 1)))]
"")
(define_split
- [(set (match_operand:XF 0 "register_and_not_fp_reg_operand" "")
+ [(set (match_operand:XF 0 "register_operand" "")
(abs:XF (match_operand:XF 1 "register_operand" "")))
(clobber (reg:CC 17))]
- "TARGET_80387 && reload_completed"
+ "TARGET_80387 && reload_completed && !FP_REGNO_P (REGNO (operands[0]))"
[(parallel [(set (match_dup 0) (and:SI (match_dup 0) (match_dup 1)))
(clobber (reg:CC 17))])]
"operands[1] = GEN_INT (~0x8000);
@@ -10013,19 +10277,19 @@
"#")
(define_split
- [(set (match_operand:TF 0 "fp_register_operand" "")
+ [(set (match_operand:TF 0 "register_operand" "")
(abs:TF (match_operand:TF 1 "register_operand" "")))
(clobber (reg:CC 17))]
- "TARGET_80387 && reload_completed"
+ "TARGET_80387 && FP_REGNO_P (REGNO (operands[0])) && reload_completed"
[(set (match_dup 0)
(abs:TF (match_dup 1)))]
"")
(define_split
- [(set (match_operand:TF 0 "register_and_not_any_fp_reg_operand" "")
+ [(set (match_operand:TF 0 "register_operand" "")
(abs:TF (match_operand:TF 1 "register_operand" "")))
(clobber (reg:CC 17))]
- "TARGET_80387 && reload_completed"
+ "TARGET_80387 && reload_completed && !FP_REGNO_P (REGNO (operands[0]))"
[(parallel [(set (match_dup 0) (and:SI (match_dup 0) (match_dup 1)))
(clobber (reg:CC 17))])]
"operands[1] = GEN_INT (~0x8000);
@@ -10379,7 +10643,7 @@
return "sal{q}\t{%b2, %0|%0, %b2}";
else if (GET_CODE (operands[2]) == CONST_INT
&& INTVAL (operands[2]) == 1
- && (TARGET_SHIFT1 || optimize_size))
+ && (TARGET_PENTIUM || TARGET_PENTIUMPRO))
return "sal{q}\t%0";
else
return "sal{q}\t{%2, %0|%0, %2}";
@@ -10408,7 +10672,8 @@
[(set (match_dup 0)
(mult:DI (match_dup 1)
(match_dup 2)))]
- "operands[2] = gen_int_mode (1 << INTVAL (operands[2]), DImode);")
+ "operands[2] = GEN_INT (trunc_int_for_mode (1 << INTVAL (operands[2]),
+ DImode));")
;; This pattern can't accept a variable shift count, since shifts by
;; zero don't affect the flags. We assume that shifts by constant
@@ -10436,7 +10701,7 @@
return "sal{q}\t{%b2, %0|%0, %b2}";
else if (GET_CODE (operands[2]) == CONST_INT
&& INTVAL (operands[2]) == 1
- && (TARGET_SHIFT1 || optimize_size))
+ && (TARGET_PENTIUM || TARGET_PENTIUMPRO))
return "sal{q}\t%0";
else
return "sal{q}\t{%2, %0|%0, %2}";
@@ -10584,7 +10849,7 @@
return "sal{l}\t{%b2, %0|%0, %b2}";
else if (GET_CODE (operands[2]) == CONST_INT
&& INTVAL (operands[2]) == 1
- && (TARGET_SHIFT1 || optimize_size))
+ && (TARGET_PENTIUM || TARGET_PENTIUMPRO))
return "sal{l}\t%0";
else
return "sal{l}\t{%2, %0|%0, %2}";
@@ -10605,7 +10870,7 @@
;; Convert lea to the lea pattern to avoid flags dependency.
(define_split
[(set (match_operand 0 "register_operand" "")
- (ashift (match_operand 1 "index_register_operand" "")
+ (ashift (match_operand 1 "register_operand" "")
(match_operand:QI 2 "const_int_operand" "")))
(clobber (reg:CC 17))]
"reload_completed
@@ -10615,7 +10880,8 @@
rtx pat;
operands[0] = gen_lowpart (SImode, operands[0]);
operands[1] = gen_lowpart (Pmode, operands[1]);
- operands[2] = gen_int_mode (1 << INTVAL (operands[2]), Pmode);
+ operands[2] = GEN_INT (trunc_int_for_mode (1 << INTVAL (operands[2]),
+ Pmode));
pat = gen_rtx_MULT (Pmode, operands[1], operands[2]);
if (Pmode != SImode)
pat = gen_rtx_SUBREG (SImode, pat, 0);
@@ -10623,26 +10889,6 @@
DONE;
})
-;; Rare case of shifting RSP is handled by generating move and shift
-(define_split
- [(set (match_operand 0 "register_operand" "")
- (ashift (match_operand 1 "register_operand" "")
- (match_operand:QI 2 "const_int_operand" "")))
- (clobber (reg:CC 17))]
- "reload_completed
- && true_regnum (operands[0]) != true_regnum (operands[1])"
- [(const_int 0)]
-{
- rtx pat, clob;
- emit_move_insn (operands[1], operands[0]);
- pat = gen_rtx_SET (VOIDmode, operands[0],
- gen_rtx_ASHIFT (GET_MODE (operands[0]),
- operands[0], operands[2]));
- clob = gen_rtx_CLOBBER (VOIDmode, gen_rtx_REG (CCmode, FLAGS_REG));
- emit_insn (gen_rtx_PARALLEL (VOIDmode, gen_rtvec (2, pat, clob)));
- DONE;
-})
-
(define_insn "*ashlsi3_1_zext"
[(set (match_operand:DI 0 "register_operand" "=r,r")
(zero_extend:DI (ashift:SI (match_operand:SI 1 "register_operand" "0,r")
@@ -10665,7 +10911,7 @@
return "sal{l}\t{%b2, %k0|%k0, %b2}";
else if (GET_CODE (operands[2]) == CONST_INT
&& INTVAL (operands[2]) == 1
- && (TARGET_SHIFT1 || optimize_size))
+ && (TARGET_PENTIUM || TARGET_PENTIUMPRO))
return "sal{l}\t%k0";
else
return "sal{l}\t{%2, %k0|%k0, %2}";
@@ -10693,7 +10939,8 @@
[(set (match_dup 0) (zero_extend:DI (subreg:SI (mult:SI (match_dup 1) (match_dup 2)) 0)))]
{
operands[1] = gen_lowpart (Pmode, operands[1]);
- operands[2] = gen_int_mode (1 << INTVAL (operands[2]), Pmode);
+ operands[2] = GEN_INT (trunc_int_for_mode (1 << INTVAL (operands[2]),
+ Pmode));
})
;; This pattern can't accept a variable shift count, since shifts by
@@ -10722,7 +10969,7 @@
return "sal{l}\t{%b2, %0|%0, %b2}";
else if (GET_CODE (operands[2]) == CONST_INT
&& INTVAL (operands[2]) == 1
- && (TARGET_SHIFT1 || optimize_size))
+ && (TARGET_PENTIUM || TARGET_PENTIUMPRO))
return "sal{l}\t%0";
else
return "sal{l}\t{%2, %0|%0, %2}";
@@ -10761,7 +11008,7 @@
return "sal{l}\t{%b2, %k0|%k0, %b2}";
else if (GET_CODE (operands[2]) == CONST_INT
&& INTVAL (operands[2]) == 1
- && (TARGET_SHIFT1 || optimize_size))
+ && (TARGET_PENTIUM || TARGET_PENTIUMPRO))
return "sal{l}\t%k0";
else
return "sal{l}\t{%2, %k0|%k0, %2}";
@@ -10806,7 +11053,7 @@
return "sal{w}\t{%b2, %0|%0, %b2}";
else if (GET_CODE (operands[2]) == CONST_INT
&& INTVAL (operands[2]) == 1
- && (TARGET_SHIFT1 || optimize_size))
+ && (TARGET_PENTIUM || TARGET_PENTIUMPRO))
return "sal{w}\t%0";
else
return "sal{w}\t{%2, %0|%0, %2}";
@@ -10844,7 +11091,7 @@
return "sal{w}\t{%b2, %0|%0, %b2}";
else if (GET_CODE (operands[2]) == CONST_INT
&& INTVAL (operands[2]) == 1
- && (TARGET_SHIFT1 || optimize_size))
+ && (TARGET_PENTIUM || TARGET_PENTIUMPRO))
return "sal{w}\t%0";
else
return "sal{w}\t{%2, %0|%0, %2}";
@@ -10886,7 +11133,7 @@
return "sal{w}\t{%b2, %0|%0, %b2}";
else if (GET_CODE (operands[2]) == CONST_INT
&& INTVAL (operands[2]) == 1
- && (TARGET_SHIFT1 || optimize_size))
+ && (TARGET_PENTIUM || TARGET_PENTIUMPRO))
return "sal{w}\t%0";
else
return "sal{w}\t{%2, %0|%0, %2}";
@@ -10942,7 +11189,7 @@
}
else if (GET_CODE (operands[2]) == CONST_INT
&& INTVAL (operands[2]) == 1
- && (TARGET_SHIFT1 || optimize_size))
+ && (TARGET_PENTIUM || TARGET_PENTIUMPRO))
{
if (get_attr_mode (insn) == MODE_SI)
return "sal{l}\t%0";
@@ -10998,7 +11245,7 @@
}
else if (GET_CODE (operands[2]) == CONST_INT
&& INTVAL (operands[2]) == 1
- && (TARGET_SHIFT1 || optimize_size))
+ && (TARGET_PENTIUM || TARGET_PENTIUMPRO))
{
if (get_attr_mode (insn) == MODE_SI)
return "sal{l}\t%0";
@@ -11050,7 +11297,7 @@
return "sal{b}\t{%b2, %0|%0, %b2}";
else if (GET_CODE (operands[2]) == CONST_INT
&& INTVAL (operands[2]) == 1
- && (TARGET_SHIFT1 || optimize_size))
+ && (TARGET_PENTIUM || TARGET_PENTIUMPRO))
return "sal{b}\t%0";
else
return "sal{b}\t{%2, %0|%0, %2}";
@@ -11106,7 +11353,7 @@
(match_operand:QI 2 "const_int_1_operand" "")))
(clobber (reg:CC 17))]
"TARGET_64BIT && ix86_binary_operator_ok (ASHIFTRT, DImode, operands)
- && (TARGET_SHIFT1 || optimize_size)"
+ && (TARGET_PENTIUM || TARGET_PENTIUMPRO)"
"sar{q}\t%0"
[(set_attr "type" "ishift")
(set (attr "length")
@@ -11138,7 +11385,7 @@
(set (match_operand:DI 0 "nonimmediate_operand" "=rm")
(ashiftrt:DI (match_dup 1) (match_dup 2)))]
"TARGET_64BIT && ix86_match_ccmode (insn, CCGOCmode)
- && (TARGET_SHIFT1 || optimize_size)
+ && (TARGET_PENTIUM || TARGET_PENTIUMPRO)
&& ix86_binary_operator_ok (ASHIFTRT, DImode, operands)"
"sar{q}\t%0"
[(set_attr "type" "ishift")
@@ -11295,7 +11542,7 @@
(match_operand:QI 2 "const_int_1_operand" "")))
(clobber (reg:CC 17))]
"ix86_binary_operator_ok (ASHIFTRT, SImode, operands)
- && (TARGET_SHIFT1 || optimize_size)"
+ && (TARGET_PENTIUM || TARGET_PENTIUMPRO)"
"sar{l}\t%0"
[(set_attr "type" "ishift")
(set (attr "length")
@@ -11309,7 +11556,7 @@
(match_operand:QI 2 "const_int_1_operand" ""))))
(clobber (reg:CC 17))]
"TARGET_64BIT && ix86_binary_operator_ok (ASHIFTRT, SImode, operands)
- && (TARGET_SHIFT1 || optimize_size)"
+ && (TARGET_PENTIUM || TARGET_PENTIUMPRO)"
"sar{l}\t%k0"
[(set_attr "type" "ishift")
(set_attr "length" "2")])
@@ -11350,7 +11597,7 @@
(set (match_operand:SI 0 "nonimmediate_operand" "=rm")
(ashiftrt:SI (match_dup 1) (match_dup 2)))]
"ix86_match_ccmode (insn, CCGOCmode)
- && (TARGET_SHIFT1 || optimize_size)
+ && (TARGET_PENTIUM || TARGET_PENTIUMPRO)
&& ix86_binary_operator_ok (ASHIFTRT, SImode, operands)"
"sar{l}\t%0"
[(set_attr "type" "ishift")
@@ -11368,7 +11615,7 @@
(set (match_operand:DI 0 "register_operand" "=r")
(zero_extend:DI (ashiftrt:SI (match_dup 1) (match_dup 2))))]
"TARGET_64BIT && ix86_match_ccmode (insn, CCmode)
- && (TARGET_SHIFT1 || optimize_size)
+ && (TARGET_PENTIUM || TARGET_PENTIUMPRO)
&& ix86_binary_operator_ok (ASHIFTRT, SImode, operands)"
"sar{l}\t%k0"
[(set_attr "type" "ishift")
@@ -11419,7 +11666,7 @@
(match_operand:QI 2 "const_int_1_operand" "")))
(clobber (reg:CC 17))]
"ix86_binary_operator_ok (ASHIFTRT, HImode, operands)
- && (TARGET_SHIFT1 || optimize_size)"
+ && (TARGET_PENTIUM || TARGET_PENTIUMPRO)"
"sar{w}\t%0"
[(set_attr "type" "ishift")
(set (attr "length")
@@ -11451,7 +11698,7 @@
(set (match_operand:HI 0 "nonimmediate_operand" "=rm")
(ashiftrt:HI (match_dup 1) (match_dup 2)))]
"ix86_match_ccmode (insn, CCGOCmode)
- && (TARGET_SHIFT1 || optimize_size)
+ && (TARGET_PENTIUM || TARGET_PENTIUMPRO)
&& ix86_binary_operator_ok (ASHIFTRT, HImode, operands)"
"sar{w}\t%0"
[(set_attr "type" "ishift")
@@ -11491,7 +11738,7 @@
(match_operand:QI 2 "const_int_1_operand" "")))
(clobber (reg:CC 17))]
"ix86_binary_operator_ok (ASHIFTRT, QImode, operands)
- && (TARGET_SHIFT1 || optimize_size)"
+ && (TARGET_PENTIUM || TARGET_PENTIUMPRO)"
"sar{b}\t%0"
[(set_attr "type" "ishift")
(set (attr "length")
@@ -11499,21 +11746,6 @@
(const_string "2")
(const_string "*")))])
-(define_insn "*ashrqi3_1_one_bit_slp"
- [(set (strict_low_part (match_operand:QI 0 "nonimmediate_operand" "+qm"))
- (ashiftrt:QI (match_dup 0)
- (match_operand:QI 1 "const_int_1_operand" "")))
- (clobber (reg:CC 17))]
- "ix86_binary_operator_ok (ASHIFTRT, QImode, operands)
- && (! TARGET_PARTIAL_REG_STALL || optimize_size)
- && (TARGET_SHIFT1 || optimize_size)"
- "sar{b}\t%0"
- [(set_attr "type" "ishift1")
- (set (attr "length")
- (if_then_else (match_operand 0 "register_operand" "")
- (const_string "2")
- (const_string "*")))])
-
(define_insn "*ashrqi3_1"
[(set (match_operand:QI 0 "nonimmediate_operand" "=qm,qm")
(ashiftrt:QI (match_operand:QI 1 "nonimmediate_operand" "0,0")
@@ -11526,19 +11758,6 @@
[(set_attr "type" "ishift")
(set_attr "mode" "QI")])
-(define_insn "*ashrqi3_1_slp"
- [(set (strict_low_part (match_operand:QI 0 "nonimmediate_operand" "+qm,qm"))
- (ashiftrt:QI (match_dup 0)
- (match_operand:QI 1 "nonmemory_operand" "I,c")))
- (clobber (reg:CC 17))]
- "(! TARGET_PARTIAL_REG_STALL || optimize_size)
- && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
- "@
- sar{b}\t{%1, %0|%0, %1}
- sar{b}\t{%b1, %0|%0, %b1}"
- [(set_attr "type" "ishift1")
- (set_attr "mode" "QI")])
-
;; This pattern can't accept a variable shift count, since shifts by
;; zero don't affect the flags. We assume that shifts by constant
;; zero are optimized away.
@@ -11551,7 +11770,7 @@
(set (match_operand:QI 0 "nonimmediate_operand" "=qm")
(ashiftrt:QI (match_dup 1) (match_dup 2)))]
"ix86_match_ccmode (insn, CCGOCmode)
- && (TARGET_SHIFT1 || optimize_size)
+ && (TARGET_PENTIUM || TARGET_PENTIUMPRO)
&& ix86_binary_operator_ok (ASHIFTRT, QImode, operands)"
"sar{b}\t%0"
[(set_attr "type" "ishift")
@@ -11603,7 +11822,7 @@
(match_operand:QI 2 "const_int_1_operand" "")))
(clobber (reg:CC 17))]
"TARGET_64BIT && ix86_binary_operator_ok (LSHIFTRT, HImode, operands)
- && (TARGET_SHIFT1 || optimize_size)"
+ && (TARGET_PENTIUM || TARGET_PENTIUMPRO)"
"shr{q}\t%0"
[(set_attr "type" "ishift")
(set (attr "length")
@@ -11635,7 +11854,7 @@
(set (match_operand:DI 0 "nonimmediate_operand" "=rm")
(lshiftrt:DI (match_dup 1) (match_dup 2)))]
"TARGET_64BIT && ix86_match_ccmode (insn, CCGOCmode)
- && (TARGET_SHIFT1 || optimize_size)
+ && (TARGET_PENTIUM || TARGET_PENTIUMPRO)
&& ix86_binary_operator_ok (LSHIFTRT, HImode, operands)"
"shr{q}\t%0"
[(set_attr "type" "ishift")
@@ -11713,7 +11932,7 @@
(match_operand:QI 2 "const_int_1_operand" "")))
(clobber (reg:CC 17))]
"ix86_binary_operator_ok (LSHIFTRT, HImode, operands)
- && (TARGET_SHIFT1 || optimize_size)"
+ && (TARGET_PENTIUM || TARGET_PENTIUMPRO)"
"shr{l}\t%0"
[(set_attr "type" "ishift")
(set (attr "length")
@@ -11727,7 +11946,7 @@
(match_operand:QI 2 "const_int_1_operand" "")))
(clobber (reg:CC 17))]
"TARGET_64BIT && ix86_binary_operator_ok (LSHIFTRT, HImode, operands)
- && (TARGET_SHIFT1 || optimize_size)"
+ && (TARGET_PENTIUM || TARGET_PENTIUMPRO)"
"shr{l}\t%k0"
[(set_attr "type" "ishift")
(set_attr "length" "2")])
@@ -11769,7 +11988,7 @@
(set (match_operand:SI 0 "nonimmediate_operand" "=rm")
(lshiftrt:SI (match_dup 1) (match_dup 2)))]
"ix86_match_ccmode (insn, CCGOCmode)
- && (TARGET_SHIFT1 || optimize_size)
+ && (TARGET_PENTIUM || TARGET_PENTIUMPRO)
&& ix86_binary_operator_ok (LSHIFTRT, HImode, operands)"
"shr{l}\t%0"
[(set_attr "type" "ishift")
@@ -11787,7 +12006,7 @@
(set (match_operand:DI 0 "register_operand" "=r")
(lshiftrt:DI (zero_extend:DI (match_dup 1)) (match_dup 2)))]
"TARGET_64BIT && ix86_match_ccmode (insn, CCGOCmode)
- && (TARGET_SHIFT1 || optimize_size)
+ && (TARGET_PENTIUM || TARGET_PENTIUMPRO)
&& ix86_binary_operator_ok (LSHIFTRT, HImode, operands)"
"shr{l}\t%k0"
[(set_attr "type" "ishift")
@@ -11838,7 +12057,7 @@
(match_operand:QI 2 "const_int_1_operand" "")))
(clobber (reg:CC 17))]
"ix86_binary_operator_ok (LSHIFTRT, HImode, operands)
- && (TARGET_SHIFT1 || optimize_size)"
+ && (TARGET_PENTIUM || TARGET_PENTIUMPRO)"
"shr{w}\t%0"
[(set_attr "type" "ishift")
(set (attr "length")
@@ -11870,7 +12089,7 @@
(set (match_operand:HI 0 "nonimmediate_operand" "=rm")
(lshiftrt:HI (match_dup 1) (match_dup 2)))]
"ix86_match_ccmode (insn, CCGOCmode)
- && (TARGET_SHIFT1 || optimize_size)
+ && (TARGET_PENTIUM || TARGET_PENTIUMPRO)
&& ix86_binary_operator_ok (LSHIFTRT, HImode, operands)"
"shr{w}\t%0"
[(set_attr "type" "ishift")
@@ -11910,7 +12129,7 @@
(match_operand:QI 2 "const_int_1_operand" "")))
(clobber (reg:CC 17))]
"ix86_binary_operator_ok (LSHIFTRT, QImode, operands)
- && (TARGET_SHIFT1 || optimize_size)"
+ && (TARGET_PENTIUM || TARGET_PENTIUMPRO)"
"shr{b}\t%0"
[(set_attr "type" "ishift")
(set (attr "length")
@@ -11918,20 +12137,6 @@
(const_string "2")
(const_string "*")))])
-(define_insn "*lshrqi3_1_one_bit_slp"
- [(set (strict_low_part (match_operand:QI 0 "nonimmediate_operand" "+qm"))
- (lshiftrt:QI (match_dup 0)
- (match_operand:QI 1 "const_int_1_operand" "")))
- (clobber (reg:CC 17))]
- "(! TARGET_PARTIAL_REG_STALL || optimize_size)
- && (TARGET_SHIFT1 || optimize_size)"
- "shr{b}\t%0"
- [(set_attr "type" "ishift1")
- (set (attr "length")
- (if_then_else (match_operand 0 "register_operand" "")
- (const_string "2")
- (const_string "*")))])
-
(define_insn "*lshrqi3_1"
[(set (match_operand:QI 0 "nonimmediate_operand" "=qm,qm")
(lshiftrt:QI (match_operand:QI 1 "nonimmediate_operand" "0,0")
@@ -11944,19 +12149,6 @@
[(set_attr "type" "ishift")
(set_attr "mode" "QI")])
-(define_insn "*lshrqi3_1_slp"
- [(set (strict_low_part (match_operand:QI 0 "nonimmediate_operand" "+qm,qm"))
- (lshiftrt:QI (match_dup 0)
- (match_operand:QI 1 "nonmemory_operand" "I,c")))
- (clobber (reg:CC 17))]
- "(! TARGET_PARTIAL_REG_STALL || optimize_size)
- && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
- "@
- shr{b}\t{%1, %0|%0, %1}
- shr{b}\t{%b1, %0|%0, %b1}"
- [(set_attr "type" "ishift1")
- (set_attr "mode" "QI")])
-
;; This pattern can't accept a variable shift count, since shifts by
;; zero don't affect the flags. We assume that shifts by constant
;; zero are optimized away.
@@ -11969,7 +12161,7 @@
(set (match_operand:QI 0 "nonimmediate_operand" "=qm")
(lshiftrt:QI (match_dup 1) (match_dup 2)))]
"ix86_match_ccmode (insn, CCGOCmode)
- && (TARGET_SHIFT1 || optimize_size)
+ && (TARGET_PENTIUM || TARGET_PENTIUMPRO)
&& ix86_binary_operator_ok (LSHIFTRT, QImode, operands)"
"shr{b}\t%0"
[(set_attr "type" "ishift")
@@ -12011,9 +12203,9 @@
(match_operand:QI 2 "const_int_1_operand" "")))
(clobber (reg:CC 17))]
"TARGET_64BIT && ix86_binary_operator_ok (ROTATE, DImode, operands)
- && (TARGET_SHIFT1 || optimize_size)"
+ && (TARGET_PENTIUM || TARGET_PENTIUMPRO)"
"rol{q}\t%0"
- [(set_attr "type" "rotate")
+ [(set_attr "type" "ishift")
(set (attr "length")
(if_then_else (match_operand:DI 0 "register_operand" "")
(const_string "2")
@@ -12028,7 +12220,7 @@
"@
rol{q}\t{%2, %0|%0, %2}
rol{q}\t{%b2, %0|%0, %b2}"
- [(set_attr "type" "rotate")
+ [(set_attr "type" "ishift")
(set_attr "mode" "DI")])
(define_expand "rotlsi3"
@@ -12045,9 +12237,9 @@
(match_operand:QI 2 "const_int_1_operand" "")))
(clobber (reg:CC 17))]
"ix86_binary_operator_ok (ROTATE, SImode, operands)
- && (TARGET_SHIFT1 || optimize_size)"
+ && (TARGET_PENTIUM || TARGET_PENTIUMPRO)"
"rol{l}\t%0"
- [(set_attr "type" "rotate")
+ [(set_attr "type" "ishift")
(set (attr "length")
(if_then_else (match_operand:SI 0 "register_operand" "")
(const_string "2")
@@ -12060,9 +12252,9 @@
(match_operand:QI 2 "const_int_1_operand" ""))))
(clobber (reg:CC 17))]
"TARGET_64BIT && ix86_binary_operator_ok (ROTATE, SImode, operands)
- && (TARGET_SHIFT1 || optimize_size)"
+ && (TARGET_PENTIUM || TARGET_PENTIUMPRO)"
"rol{l}\t%k0"
- [(set_attr "type" "rotate")
+ [(set_attr "type" "ishift")
(set_attr "length" "2")])
(define_insn "*rotlsi3_1"
@@ -12074,7 +12266,7 @@
"@
rol{l}\t{%2, %0|%0, %2}
rol{l}\t{%b2, %0|%0, %b2}"
- [(set_attr "type" "rotate")
+ [(set_attr "type" "ishift")
(set_attr "mode" "SI")])
(define_insn "*rotlsi3_1_zext"
@@ -12087,7 +12279,7 @@
"@
rol{l}\t{%2, %k0|%k0, %2}
rol{l}\t{%b2, %k0|%k0, %b2}"
- [(set_attr "type" "rotate")
+ [(set_attr "type" "ishift")
(set_attr "mode" "SI")])
(define_expand "rotlhi3"
@@ -12104,9 +12296,9 @@
(match_operand:QI 2 "const_int_1_operand" "")))
(clobber (reg:CC 17))]
"ix86_binary_operator_ok (ROTATE, HImode, operands)
- && (TARGET_SHIFT1 || optimize_size)"
+ && (TARGET_PENTIUM || TARGET_PENTIUMPRO)"
"rol{w}\t%0"
- [(set_attr "type" "rotate")
+ [(set_attr "type" "ishift")
(set (attr "length")
(if_then_else (match_operand 0 "register_operand" "")
(const_string "2")
@@ -12121,7 +12313,7 @@
"@
rol{w}\t{%2, %0|%0, %2}
rol{w}\t{%b2, %0|%0, %b2}"
- [(set_attr "type" "rotate")
+ [(set_attr "type" "ishift")
(set_attr "mode" "HI")])
(define_expand "rotlqi3"
@@ -12132,47 +12324,20 @@
"TARGET_QIMODE_MATH"
"ix86_expand_binary_operator (ROTATE, QImode, operands); DONE;")
-(define_insn "*rotlqi3_1_one_bit_slp"
- [(set (strict_low_part (match_operand:QI 0 "nonimmediate_operand" "+qm"))
- (rotate:QI (match_dup 0)
- (match_operand:QI 1 "const_int_1_operand" "")))
- (clobber (reg:CC 17))]
- "(! TARGET_PARTIAL_REG_STALL || optimize_size)
- && (TARGET_SHIFT1 || optimize_size)"
- "rol{b}\t%0"
- [(set_attr "type" "rotate1")
- (set (attr "length")
- (if_then_else (match_operand 0 "register_operand" "")
- (const_string "2")
- (const_string "*")))])
-
(define_insn "*rotlqi3_1_one_bit"
[(set (match_operand:QI 0 "nonimmediate_operand" "=qm")
(rotate:QI (match_operand:QI 1 "nonimmediate_operand" "0")
(match_operand:QI 2 "const_int_1_operand" "")))
(clobber (reg:CC 17))]
"ix86_binary_operator_ok (ROTATE, QImode, operands)
- && (TARGET_SHIFT1 || optimize_size)"
+ && (TARGET_PENTIUM || TARGET_PENTIUMPRO)"
"rol{b}\t%0"
- [(set_attr "type" "rotate")
+ [(set_attr "type" "ishift")
(set (attr "length")
(if_then_else (match_operand 0 "register_operand" "")
(const_string "2")
(const_string "*")))])
-(define_insn "*rotlqi3_1_slp"
- [(set (strict_low_part (match_operand:QI 0 "nonimmediate_operand" "+qm,qm"))
- (rotate:QI (match_dup 0)
- (match_operand:QI 1 "nonmemory_operand" "I,c")))
- (clobber (reg:CC 17))]
- "(! TARGET_PARTIAL_REG_STALL || optimize_size)
- && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
- "@
- rol{b}\t{%1, %0|%0, %1}
- rol{b}\t{%b1, %0|%0, %b1}"
- [(set_attr "type" "rotate1")
- (set_attr "mode" "QI")])
-
(define_insn "*rotlqi3_1"
[(set (match_operand:QI 0 "nonimmediate_operand" "=qm,qm")
(rotate:QI (match_operand:QI 1 "nonimmediate_operand" "0,0")
@@ -12182,7 +12347,7 @@
"@
rol{b}\t{%2, %0|%0, %2}
rol{b}\t{%b2, %0|%0, %b2}"
- [(set_attr "type" "rotate")
+ [(set_attr "type" "ishift")
(set_attr "mode" "QI")])
(define_expand "rotrdi3"
@@ -12199,9 +12364,9 @@
(match_operand:QI 2 "const_int_1_operand" "")))
(clobber (reg:CC 17))]
"TARGET_64BIT && ix86_binary_operator_ok (ROTATERT, DImode, operands)
- && (TARGET_SHIFT1 || optimize_size)"
+ && (TARGET_PENTIUM || TARGET_PENTIUMPRO)"
"ror{q}\t%0"
- [(set_attr "type" "rotate")
+ [(set_attr "type" "ishift")
(set (attr "length")
(if_then_else (match_operand:DI 0 "register_operand" "")
(const_string "2")
@@ -12216,7 +12381,7 @@
"@
ror{q}\t{%2, %0|%0, %2}
ror{q}\t{%b2, %0|%0, %b2}"
- [(set_attr "type" "rotate")
+ [(set_attr "type" "ishift")
(set_attr "mode" "DI")])
(define_expand "rotrsi3"
@@ -12233,9 +12398,9 @@
(match_operand:QI 2 "const_int_1_operand" "")))
(clobber (reg:CC 17))]
"ix86_binary_operator_ok (ROTATERT, SImode, operands)
- && (TARGET_SHIFT1 || optimize_size)"
+ && (TARGET_PENTIUM || TARGET_PENTIUMPRO)"
"ror{l}\t%0"
- [(set_attr "type" "rotate")
+ [(set_attr "type" "ishift")
(set (attr "length")
(if_then_else (match_operand:SI 0 "register_operand" "")
(const_string "2")
@@ -12248,9 +12413,9 @@
(match_operand:QI 2 "const_int_1_operand" ""))))
(clobber (reg:CC 17))]
"TARGET_64BIT && ix86_binary_operator_ok (ROTATERT, SImode, operands)
- && (TARGET_SHIFT1 || optimize_size)"
+ && (TARGET_PENTIUM || TARGET_PENTIUMPRO)"
"ror{l}\t%k0"
- [(set_attr "type" "rotate")
+ [(set_attr "type" "ishift")
(set (attr "length")
(if_then_else (match_operand:SI 0 "register_operand" "")
(const_string "2")
@@ -12265,7 +12430,7 @@
"@
ror{l}\t{%2, %0|%0, %2}
ror{l}\t{%b2, %0|%0, %b2}"
- [(set_attr "type" "rotate")
+ [(set_attr "type" "ishift")
(set_attr "mode" "SI")])
(define_insn "*rotrsi3_1_zext"
@@ -12278,7 +12443,7 @@
"@
ror{l}\t{%2, %k0|%k0, %2}
ror{l}\t{%b2, %k0|%k0, %b2}"
- [(set_attr "type" "rotate")
+ [(set_attr "type" "ishift")
(set_attr "mode" "SI")])
(define_expand "rotrhi3"
@@ -12295,9 +12460,9 @@
(match_operand:QI 2 "const_int_1_operand" "")))
(clobber (reg:CC 17))]
"ix86_binary_operator_ok (ROTATERT, HImode, operands)
- && (TARGET_SHIFT1 || optimize_size)"
+ && (TARGET_PENTIUM || TARGET_PENTIUMPRO)"
"ror{w}\t%0"
- [(set_attr "type" "rotate")
+ [(set_attr "type" "ishift")
(set (attr "length")
(if_then_else (match_operand 0 "register_operand" "")
(const_string "2")
@@ -12312,7 +12477,7 @@
"@
ror{w}\t{%2, %0|%0, %2}
ror{w}\t{%b2, %0|%0, %b2}"
- [(set_attr "type" "rotate")
+ [(set_attr "type" "ishift")
(set_attr "mode" "HI")])
(define_expand "rotrqi3"
@@ -12329,23 +12494,9 @@
(match_operand:QI 2 "const_int_1_operand" "")))
(clobber (reg:CC 17))]
"ix86_binary_operator_ok (ROTATERT, QImode, operands)
- && (TARGET_SHIFT1 || optimize_size)"
+ && (TARGET_PENTIUM || TARGET_PENTIUMPRO)"
"ror{b}\t%0"
- [(set_attr "type" "rotate")
- (set (attr "length")
- (if_then_else (match_operand 0 "register_operand" "")
- (const_string "2")
- (const_string "*")))])
-
-(define_insn "*rotrqi3_1_one_bit_slp"
- [(set (strict_low_part (match_operand:QI 0 "nonimmediate_operand" "+qm"))
- (rotatert:QI (match_dup 0)
- (match_operand:QI 1 "const_int_1_operand" "")))
- (clobber (reg:CC 17))]
- "(! TARGET_PARTIAL_REG_STALL || optimize_size)
- && (TARGET_SHIFT1 || optimize_size)"
- "ror{b}\t%0"
- [(set_attr "type" "rotate1")
+ [(set_attr "type" "ishift")
(set (attr "length")
(if_then_else (match_operand 0 "register_operand" "")
(const_string "2")
@@ -12360,20 +12511,7 @@
"@
ror{b}\t{%2, %0|%0, %2}
ror{b}\t{%b2, %0|%0, %b2}"
- [(set_attr "type" "rotate")
- (set_attr "mode" "QI")])
-
-(define_insn "*rotrqi3_1_slp"
- [(set (strict_low_part (match_operand:QI 0 "nonimmediate_operand" "+qm,qm"))
- (rotatert:QI (match_dup 0)
- (match_operand:QI 1 "nonmemory_operand" "I,c")))
- (clobber (reg:CC 17))]
- "(! TARGET_PARTIAL_REG_STALL || optimize_size)
- && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
- "@
- ror{b}\t{%1, %0|%0, %1}
- ror{b}\t{%b1, %0|%0, %b1}"
- [(set_attr "type" "rotate1")
+ [(set_attr "type" "ishift")
(set_attr "mode" "QI")])
;; Bit set / bit test instructions
@@ -12651,7 +12789,7 @@
(match_operand:SF 3 "nonimmediate_operand" "xm")]))]
"TARGET_SSE && reload_completed"
"cmp%D1ss\t{%3, %0|%0, %3}"
- [(set_attr "type" "ssecmp")
+ [(set_attr "type" "sse")
(set_attr "mode" "SF")])
(define_insn "*sse_setccdf"
@@ -12661,7 +12799,7 @@
(match_operand:DF 3 "nonimmediate_operand" "Ym")]))]
"TARGET_SSE2 && reload_completed"
"cmp%D1sd\t{%3, %0|%0, %3}"
- [(set_attr "type" "ssecmp")
+ [(set_attr "type" "sse")
(set_attr "mode" "DF")])
;; Basic conditional jump instructions.
@@ -12823,14 +12961,13 @@
""
"%+j%C1\t%l0"
[(set_attr "type" "ibr")
- (set_attr "modrm" "0")
- (set (attr "length")
+ (set (attr "prefix_0f")
(if_then_else (and (ge (minus (match_dup 0) (pc))
- (const_int -126))
+ (const_int -128))
(lt (minus (match_dup 0) (pc))
- (const_int 128)))
- (const_int 2)
- (const_int 6)))])
+ (const_int 124)))
+ (const_int 0)
+ (const_int 1)))])
(define_insn "*jcc_2"
[(set (pc)
@@ -12841,14 +12978,13 @@
""
"%+j%c1\t%l0"
[(set_attr "type" "ibr")
- (set_attr "modrm" "0")
- (set (attr "length")
+ (set (attr "prefix_0f")
(if_then_else (and (ge (minus (match_dup 0) (pc))
- (const_int -126))
+ (const_int -128))
(lt (minus (match_dup 0) (pc))
- (const_int 128)))
- (const_int 2)
- (const_int 6)))])
+ (const_int 124)))
+ (const_int 0)
+ (const_int 1)))])
;; In general it is not safe to assume too much about CCmode registers,
;; so simplify-rtx stops when it sees a second one. Under certain
@@ -13108,15 +13244,7 @@
(label_ref (match_operand 0 "" "")))]
""
"jmp\t%l0"
- [(set_attr "type" "ibr")
- (set (attr "length")
- (if_then_else (and (ge (minus (match_dup 0) (pc))
- (const_int -126))
- (lt (minus (match_dup 0) (pc))
- (const_int 128)))
- (const_int 2)
- (const_int 5)))
- (set_attr "modrm" "0")])
+ [(set_attr "type" "ibr")])
(define_expand "indirect_jump"
[(set (pc) (match_operand 0 "nonimmediate_operand" "rm"))]
@@ -13142,34 +13270,29 @@
(use (label_ref (match_operand 1 "" "")))])]
""
{
- /* In PIC mode, the table entries are stored GOT (32-bit) or PC (64-bit)
- relative. Convert the relative address to an absolute address. */
+ /* In PIC mode, the table entries are stored GOT-relative. Convert
+ the relative address to an absolute address. */
if (flag_pic)
{
- rtx op0, op1;
- enum rtx_code code;
-
if (TARGET_64BIT)
+ operands[0] = expand_simple_binop (Pmode, PLUS, operands[0],
+ gen_rtx_LABEL_REF (Pmode, operands[1]),
+ NULL_RTX, 0,
+ OPTAB_DIRECT);
+ else if (HAVE_AS_GOTOFF_IN_DATA)
{
- code = PLUS;
- op0 = operands[0];
- op1 = gen_rtx_LABEL_REF (Pmode, operands[1]);
- }
- else if (TARGET_MACHO || HAVE_AS_GOTOFF_IN_DATA)
- {
- code = PLUS;
- op0 = operands[0];
- op1 = pic_offset_table_rtx;
+ operands[0] = expand_simple_binop (Pmode, PLUS, operands[0],
+ pic_offset_table_rtx, NULL_RTX,
+ 1, OPTAB_DIRECT);
+ current_function_uses_pic_offset_table = 1;
}
else
{
- code = MINUS;
- op0 = pic_offset_table_rtx;
- op1 = operands[0];
+ operands[0] = expand_simple_binop (Pmode, MINUS, pic_offset_table_rtx,
+ operands[0], NULL_RTX, 1,
+ OPTAB_DIRECT);
+ current_function_uses_pic_offset_table = 1;
}
-
- operands[0] = expand_simple_binop (Pmode, code, op0, op1, NULL_RTX, 0,
- OPTAB_DIRECT);
}
})
@@ -13234,17 +13357,14 @@
return "dec{l}\t%1\;%+jne\t%l0";
}
[(set_attr "ppro_uops" "many")
- (set (attr "length")
+ (set (attr "type")
(if_then_else (and (eq_attr "alternative" "0")
(and (ge (minus (match_dup 0) (pc))
- (const_int -126))
+ (const_int -128))
(lt (minus (match_dup 0) (pc))
- (const_int 128))))
- (const_int 2)
- (const_int 16)))
- ;; We don't know the type before shorten branches. Optimistically expect
- ;; the loop instruction to match.
- (set (attr "type") (const_string "ibr"))])
+ (const_int 124))))
+ (const_string "ibr")
+ (const_string "multi")))])
(define_split
[(set (pc)
@@ -13354,8 +13474,21 @@
(match_operand:SI 3 "" "")))])]
"!TARGET_64BIT"
{
- ix86_expand_call (NULL, operands[0], operands[1], operands[2], operands[3]);
- DONE;
+ if (operands[3] == const0_rtx)
+ {
+ emit_insn (gen_call (operands[0], operands[1], constm1_rtx));
+ DONE;
+ }
+ /* Static functions and indirect calls don't need
+ current_function_uses_pic_offset_table. */
+ if (flag_pic
+ && GET_CODE (XEXP (operands[0], 0)) == SYMBOL_REF
+ && ! SYMBOL_REF_FLAG (XEXP (operands[0], 0)))
+ current_function_uses_pic_offset_table = 1;
+ if (! call_insn_operand (XEXP (operands[0], 0), Pmode))
+ XEXP (operands[0], 0) = copy_to_mode_reg (Pmode, XEXP (operands[0], 0));
+ if (TARGET_64BIT)
+ abort();
})
(define_insn "*call_pop_0"
@@ -13397,12 +13530,37 @@
[(call (match_operand:QI 0 "" "")
(match_operand 1 "" ""))
(use (match_operand 2 "" ""))]
+ ;; Operand 1 not used on the i386.
""
{
- ix86_expand_call (NULL, operands[0], operands[1], operands[2], NULL);
- DONE;
+ rtx insn;
+ /* Static functions and indirect calls don't need
+ current_function_uses_pic_offset_table. */
+ if (flag_pic
+ && GET_CODE (XEXP (operands[0], 0)) == SYMBOL_REF
+ && ! SYMBOL_REF_FLAG (XEXP (operands[0], 0)))
+ current_function_uses_pic_offset_table = 1;
+
+ if (! call_insn_operand (XEXP (operands[0], 0), Pmode))
+ XEXP (operands[0], 0) = copy_to_mode_reg (Pmode, XEXP (operands[0], 0));
+ if (TARGET_64BIT && INTVAL (operands[2]) >= 0)
+ {
+ rtx reg = gen_rtx_REG (QImode, 0);
+ emit_move_insn (reg, operands[2]);
+ insn = emit_call_insn (gen_call_exp (operands[0], operands[1]));
+ use_reg (&CALL_INSN_FUNCTION_USAGE (insn), reg);
+ DONE;
+ }
+ insn = emit_call_insn (gen_call_exp (operands[0], operands[1]));
+ DONE;
})
+(define_expand "call_exp"
+ [(call (match_operand:QI 0 "" "")
+ (match_operand 1 "" ""))]
+ ""
+ "")
+
(define_insn "*call_0"
[(call (mem:QI (match_operand 0 "constant_call_address_operand" ""))
(match_operand 1 "" ""))]
@@ -13454,6 +13612,7 @@
[(set_attr "type" "call")])
;; Call subroutine, returning value in operand 0
+;; (which must be a hard register).
(define_expand "call_value_pop"
[(parallel [(set (match_operand 0 "" "")
@@ -13464,9 +13623,20 @@
(match_operand:SI 4 "" "")))])]
"!TARGET_64BIT"
{
- ix86_expand_call (operands[0], operands[1], operands[2],
- operands[3], operands[4]);
- DONE;
+ if (operands[4] == const0_rtx)
+ {
+ emit_insn (gen_call_value (operands[0], operands[1], operands[2],
+ constm1_rtx));
+ DONE;
+ }
+ /* Static functions and indirect calls don't need
+ current_function_uses_pic_offset_table. */
+ if (flag_pic
+ && GET_CODE (XEXP (operands[1], 0)) == SYMBOL_REF
+ && ! SYMBOL_REF_FLAG (XEXP (operands[1], 0)))
+ current_function_uses_pic_offset_table = 1;
+ if (! call_insn_operand (XEXP (operands[1], 0), Pmode))
+ XEXP (operands[1], 0) = copy_to_mode_reg (Pmode, XEXP (operands[1], 0));
})
(define_expand "call_value"
@@ -13477,10 +13647,36 @@
;; Operand 2 not used on the i386.
""
{
- ix86_expand_call (operands[0], operands[1], operands[2], operands[3], NULL);
+ rtx insn;
+ /* Static functions and indirect calls don't need
+ current_function_uses_pic_offset_table. */
+ if (flag_pic
+ && GET_CODE (XEXP (operands[1], 0)) == SYMBOL_REF
+ && ! SYMBOL_REF_FLAG (XEXP (operands[1], 0)))
+ current_function_uses_pic_offset_table = 1;
+ if (! call_insn_operand (XEXP (operands[1], 0), Pmode))
+ XEXP (operands[1], 0) = copy_to_mode_reg (Pmode, XEXP (operands[1], 0));
+ if (TARGET_64BIT && INTVAL (operands[3]) >= 0)
+ {
+ rtx reg = gen_rtx_REG (QImode, 0);
+ emit_move_insn (reg, operands[3]);
+ insn = emit_call_insn (gen_call_value_exp (operands[0], operands[1],
+ operands[2]));
+ use_reg (&CALL_INSN_FUNCTION_USAGE (insn), reg);
+ DONE;
+ }
+ insn = emit_call_insn (gen_call_value_exp (operands[0], operands[1],
+ operands[2]));
DONE;
})
+(define_expand "call_value_exp"
+ [(set (match_operand 0 "" "")
+ (call (match_operand:QI 1 "" "")
+ (match_operand:SI 2 "" "")))]
+ ""
+ "")
+
;; Call subroutine returning any type.
(define_expand "untyped_call"
@@ -13497,10 +13693,12 @@
simply pretend the untyped call returns a complex long double
value. */
- ix86_expand_call ((TARGET_FLOAT_RETURNS_IN_80387
- ? gen_rtx_REG (XCmode, FIRST_FLOAT_REG) : NULL),
- operands[0], const0_rtx, GEN_INT (SSE_REGPARM_MAX - 1),
- NULL);
+ emit_call_insn (TARGET_FLOAT_RETURNS_IN_80387
+ ? gen_call_value (gen_rtx_REG (XCmode, FIRST_FLOAT_REG),
+ operands[0], const0_rtx,
+ GEN_INT (SSE_REGPARM_MAX - 1))
+ : gen_call (operands[0], const0_rtx,
+ GEN_INT (SSE_REGPARM_MAX - 1)));
for (i = 0; i < XVECLEN (operands[2], 0); i++)
{
@@ -13512,7 +13710,7 @@
registers we stored in the result block. We avoid problems by
claiming that all hard registers are used and clobbered at this
point. */
- emit_insn (gen_blockage (const0_rtx));
+ emit_insn (gen_blockage ());
DONE;
})
@@ -13523,7 +13721,7 @@
;; all of memory. This blocks insns from being moved across this point.
(define_insn "blockage"
- [(unspec_volatile [(match_operand 0 "" "")] UNSPECV_BLOCKAGE)]
+ [(unspec_volatile [(const_int 0)] 0)]
""
""
[(set_attr "length" "0")])
@@ -13583,14 +13781,45 @@
""
"ix86_expand_prologue (); DONE;")
-(define_insn "set_got"
+(define_insn "prologue_set_got"
[(set (match_operand:SI 0 "register_operand" "=r")
- (unspec:SI [(const_int 0)] UNSPEC_SET_GOT))
+ (unspec_volatile:SI
+ [(plus:SI (match_dup 0)
+ (plus:SI (match_operand:SI 1 "symbolic_operand" "")
+ (minus:SI (pc) (match_operand 2 "" ""))))] 1))
(clobber (reg:CC 17))]
"!TARGET_64BIT"
- { return output_set_got (operands[0]); }
- [(set_attr "type" "multi")
- (set_attr "length" "12")])
+{
+ if (GET_CODE (operands[2]) == LABEL_REF)
+ operands[2] = XEXP (operands[2], 0);
+ if (TARGET_DEEP_BRANCH_PREDICTION)
+ return "add{l}\t{%1, %0|%0, %1}";
+ else
+ return "add{l}\t{%1+[.-%X2], %0|%0, %a1+(.-%X2)}";
+}
+ [(set_attr "type" "alu")
+ ; Since this insn may have two constant operands, we must set the
+ ; length manually.
+ (set_attr "length_immediate" "4")
+ (set_attr "mode" "SI")])
+
+(define_insn "prologue_get_pc"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec_volatile:SI [(plus:SI (pc) (match_operand 1 "" ""))] 2))]
+ "!TARGET_64BIT"
+{
+ if (GET_CODE (operands[1]) == LABEL_REF)
+ operands[1] = XEXP (operands[1], 0);
+ output_asm_insn ("call\t%X1", operands);
+ if (! TARGET_DEEP_BRANCH_PREDICTION)
+ {
+ ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, "L",
+ CODE_LABEL_NUMBER (operands[1]));
+ return "pop{l}\t%0";
+ }
+ RET;
+}
+ [(set_attr "type" "multi")])
(define_expand "epilogue"
[(const_int 1)]
@@ -13603,10 +13832,11 @@
"ix86_expand_epilogue (0); DONE;")
(define_expand "eh_return"
- [(use (match_operand 0 "register_operand" ""))]
+ [(use (match_operand 0 "register_operand" ""))
+ (use (match_operand 1 "register_operand" ""))]
""
{
- rtx tmp, sa = EH_RETURN_STACKADJ_RTX, ra = operands[0];
+ rtx tmp, sa = operands[0], ra = operands[1];
/* Tricky bit: we write the address of the handler to which we will
be returning into someone else's stack frame, one word below the
@@ -13625,8 +13855,7 @@
})
(define_insn_and_split "eh_return_si"
- [(unspec_volatile [(match_operand:SI 0 "register_operand" "c")]
- UNSPECV_EH_RETURN)]
+ [(unspec_volatile [(match_operand:SI 0 "register_operand" "c")] 13)]
"!TARGET_64BIT"
"#"
"reload_completed"
@@ -13634,8 +13863,7 @@
"ix86_expand_epilogue (2); DONE;")
(define_insn_and_split "eh_return_di"
- [(unspec_volatile [(match_operand:DI 0 "register_operand" "c")]
- UNSPECV_EH_RETURN)]
+ [(unspec_volatile [(match_operand:DI 0 "register_operand" "c")] 13)]
"TARGET_64BIT"
"#"
"reload_completed"
@@ -13651,6 +13879,7 @@
[(set_attr "length_immediate" "0")
(set_attr "length" "1")
(set_attr "modrm" "0")
+ (set_attr "modrm" "0")
(set_attr "athlon_decode" "vector")
(set_attr "ppro_uops" "few")])
@@ -13663,12 +13892,13 @@
[(set_attr "length_immediate" "0")
(set_attr "length" "1")
(set_attr "modrm" "0")
+ (set_attr "modrm" "0")
(set_attr "athlon_decode" "vector")
(set_attr "ppro_uops" "few")])
(define_expand "ffssi2"
[(set (match_operand:SI 0 "nonimmediate_operand" "")
- (ffs:SI (match_operand:SI 1 "nonimmediate_operand" "")))]
+ (ffs:SI (match_operand:SI 1 "general_operand" "")))]
""
{
rtx out = gen_reg_rtx (SImode), tmp = gen_reg_rtx (SImode);
@@ -13757,7 +13987,7 @@
(compare:CCZ (match_operand:SI 1 "nonimmediate_operand" "rm")
(const_int 0)))
(set (match_operand:SI 0 "register_operand" "=r")
- (unspec:SI [(match_dup 1)] UNSPEC_BSF))]
+ (unspec:SI [(match_dup 1)] 5))]
""
"bsf{l}\t{%1, %0|%0, %1}"
[(set_attr "prefix_0f" "1")
@@ -13766,173 +13996,6 @@
;; ffshi2 is not useful -- 4 word prefix ops are needed, which is larger
;; and slower than the two-byte movzx insn needed to do the work in SImode.
-;; Thread-local storage patterns for ELF.
-;;
-;; Note that these code sequences must appear exactly as shown
-;; in order to allow linker relaxation.
-
-(define_insn "*tls_global_dynamic_32_gnu"
- [(set (match_operand:SI 0 "register_operand" "=a")
- (unspec:SI [(match_operand:SI 1 "register_operand" "b")
- (match_operand:SI 2 "tls_symbolic_operand" "")
- (match_operand:SI 3 "call_insn_operand" "")]
- UNSPEC_TLS_GD))
- (clobber (match_scratch:SI 4 "=d"))
- (clobber (match_scratch:SI 5 "=c"))
- (clobber (reg:CC 17))]
- "!TARGET_64BIT && TARGET_GNU_TLS"
- "lea{l}\t{%a2@TLSGD(,%1,1), %0|%0, %a2@TLSGD[%1*1]}\;call\t%P3"
- [(set_attr "type" "multi")
- (set_attr "length" "12")])
-
-(define_insn "*tls_global_dynamic_32_sun"
- [(set (match_operand:SI 0 "register_operand" "=a")
- (unspec:SI [(match_operand:SI 1 "register_operand" "b")
- (match_operand:SI 2 "tls_symbolic_operand" "")
- (match_operand:SI 3 "call_insn_operand" "")]
- UNSPEC_TLS_GD))
- (clobber (match_scratch:SI 4 "=d"))
- (clobber (match_scratch:SI 5 "=c"))
- (clobber (reg:CC 17))]
- "!TARGET_64BIT && TARGET_SUN_TLS"
- "lea{l}\t{%a2@DTLNDX(%1), %4|%4, %a2@DTLNDX[%1]}
- push{l}\t%4\;call\t%a2@TLSPLT\;pop{l}\t%4\;nop"
- [(set_attr "type" "multi")
- (set_attr "length" "14")])
-
-(define_expand "tls_global_dynamic_32"
- [(parallel [(set (match_operand:SI 0 "register_operand" "")
- (unspec:SI
- [(match_dup 2)
- (match_operand:SI 1 "tls_symbolic_operand" "")
- (match_dup 3)]
- UNSPEC_TLS_GD))
- (clobber (match_scratch:SI 4 ""))
- (clobber (match_scratch:SI 5 ""))
- (clobber (reg:CC 17))])]
- ""
-{
- if (flag_pic)
- operands[2] = pic_offset_table_rtx;
- else
- {
- operands[2] = gen_reg_rtx (Pmode);
- emit_insn (gen_set_got (operands[2]));
- }
- operands[3] = ix86_tls_get_addr ();
-})
-
-(define_insn "*tls_global_dynamic_64"
- [(set (match_operand:DI 0 "register_operand" "=a")
- (call (mem:QI (match_operand:DI 2 "call_insn_operand" ""))
- (match_operand:DI 3 "" "")))
- (unspec:DI [(match_operand:DI 1 "tls_symbolic_operand" "")]
- UNSPEC_TLS_GD)]
- "TARGET_64BIT"
- ".byte\t0x66\;lea{q}\t{%a1@TLSGD(%%rip), %%rdi|%%rdi, %a1@TLSGD[%%rip]}\;.word\t0x6666\;rex64\;call\t%P2"
- [(set_attr "type" "multi")
- (set_attr "length" "16")])
-
-(define_expand "tls_global_dynamic_64"
- [(parallel [(set (match_operand:DI 0 "register_operand" "")
- (call (mem:QI (match_dup 2)) (const_int 0)))
- (unspec:DI [(match_operand:DI 1 "tls_symbolic_operand" "")]
- UNSPEC_TLS_GD)])]
- ""
-{
- operands[2] = ix86_tls_get_addr ();
-})
-
-(define_insn "*tls_local_dynamic_base_32_gnu"
- [(set (match_operand:SI 0 "register_operand" "=a")
- (unspec:SI [(match_operand:SI 1 "register_operand" "b")
- (match_operand:SI 2 "call_insn_operand" "")]
- UNSPEC_TLS_LD_BASE))
- (clobber (match_scratch:SI 3 "=d"))
- (clobber (match_scratch:SI 4 "=c"))
- (clobber (reg:CC 17))]
- "!TARGET_64BIT && TARGET_GNU_TLS"
- "lea{l}\t{%&@TLSLDM(%1), %0|%0, %&@TLSLDM[%1]}\;call\t%P2"
- [(set_attr "type" "multi")
- (set_attr "length" "11")])
-
-(define_insn "*tls_local_dynamic_base_32_sun"
- [(set (match_operand:SI 0 "register_operand" "=a")
- (unspec:SI [(match_operand:SI 1 "register_operand" "b")
- (match_operand:SI 2 "call_insn_operand" "")]
- UNSPEC_TLS_LD_BASE))
- (clobber (match_scratch:SI 3 "=d"))
- (clobber (match_scratch:SI 4 "=c"))
- (clobber (reg:CC 17))]
- "!TARGET_64BIT && TARGET_SUN_TLS"
- "lea{l}\t{%&@TMDNX(%1), %3|%3, %&@TMDNX[%1]}
- push{l}\t%3\;call\t%&@TLSPLT\;pop{l}\t%3"
- [(set_attr "type" "multi")
- (set_attr "length" "13")])
-
-(define_expand "tls_local_dynamic_base_32"
- [(parallel [(set (match_operand:SI 0 "register_operand" "")
- (unspec:SI [(match_dup 1) (match_dup 2)]
- UNSPEC_TLS_LD_BASE))
- (clobber (match_scratch:SI 3 ""))
- (clobber (match_scratch:SI 4 ""))
- (clobber (reg:CC 17))])]
- ""
-{
- if (flag_pic)
- operands[1] = pic_offset_table_rtx;
- else
- {
- operands[1] = gen_reg_rtx (Pmode);
- emit_insn (gen_set_got (operands[1]));
- }
- operands[2] = ix86_tls_get_addr ();
-})
-
-(define_insn "*tls_local_dynamic_base_64"
- [(set (match_operand:DI 0 "register_operand" "=a")
- (call (mem:QI (match_operand:DI 1 "call_insn_operand" ""))
- (match_operand:DI 2 "" "")))
- (unspec:DI [(const_int 0)] UNSPEC_TLS_LD_BASE)]
- "TARGET_64BIT"
- "lea{q}\t{%&@TLSLD(%%rip), %%rdi|%%rdi, %&@TLSLD[%%rip]}\;call\t%P1"
- [(set_attr "type" "multi")
- (set_attr "length" "12")])
-
-(define_expand "tls_local_dynamic_base_64"
- [(parallel [(set (match_operand:DI 0 "register_operand" "")
- (call (mem:QI (match_dup 1)) (const_int 0)))
- (unspec:DI [(const_int 0)] UNSPEC_TLS_LD_BASE)])]
- ""
-{
- operands[1] = ix86_tls_get_addr ();
-})
-
-;; Local dynamic of a single variable is a lose. Show combine how
-;; to convert that back to global dynamic.
-
-(define_insn_and_split "*tls_local_dynamic_32_once"
- [(set (match_operand:SI 0 "register_operand" "=a")
- (plus:SI (unspec:SI [(match_operand:SI 1 "register_operand" "b")
- (match_operand:SI 2 "call_insn_operand" "")]
- UNSPEC_TLS_LD_BASE)
- (const:SI (unspec:SI
- [(match_operand:SI 3 "tls_symbolic_operand" "")]
- UNSPEC_DTPOFF))))
- (clobber (match_scratch:SI 4 "=d"))
- (clobber (match_scratch:SI 5 "=c"))
- (clobber (reg:CC 17))]
- ""
- "#"
- ""
- [(parallel [(set (match_dup 0)
- (unspec:SI [(match_dup 1) (match_dup 3) (match_dup 2)]
- UNSPEC_TLS_GD))
- (clobber (match_dup 4))
- (clobber (match_dup 5))
- (clobber (reg:CC 17))])]
- "")
-
;; These patterns match the binary 387 instructions for addM3, subM3,
;; mulM3 and divM3. There are three patterns for each of DFmode and
;; SFmode. The first is the normal insn, the second the same insn but
@@ -13969,9 +14032,7 @@
"* return output_387_binary_op (insn, operands);"
[(set (attr "type")
(if_then_else (eq_attr "alternative" "1")
- (if_then_else (match_operand:SF 3 "mult_operator" "")
- (const_string "ssemul")
- (const_string "sseadd"))
+ (const_string "sse")
(if_then_else (match_operand:SF 3 "mult_operator" "")
(const_string "fmul")
(const_string "fop"))))
@@ -13985,10 +14046,7 @@
"TARGET_SSE_MATH && GET_RTX_CLASS (GET_CODE (operands[3])) == 'c'
&& (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
"* return output_387_binary_op (insn, operands);"
- [(set (attr "type")
- (if_then_else (match_operand:SF 3 "mult_operator" "")
- (const_string "ssemul")
- (const_string "sseadd")))
+ [(set_attr "type" "sse")
(set_attr "mode" "SF")])
(define_insn "*fop_df_comm_nosse"
@@ -14017,9 +14075,7 @@
"* return output_387_binary_op (insn, operands);"
[(set (attr "type")
(if_then_else (eq_attr "alternative" "1")
- (if_then_else (match_operand:SF 3 "mult_operator" "")
- (const_string "ssemul")
- (const_string "sseadd"))
+ (const_string "sse")
(if_then_else (match_operand:SF 3 "mult_operator" "")
(const_string "fmul")
(const_string "fop"))))
@@ -14034,10 +14090,7 @@
&& GET_RTX_CLASS (GET_CODE (operands[3])) == 'c'
&& (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
"* return output_387_binary_op (insn, operands);"
- [(set (attr "type")
- (if_then_else (match_operand:SF 3 "mult_operator" "")
- (const_string "ssemul")
- (const_string "sseadd")))
+ [(set_attr "type" "sse")
(set_attr "mode" "DF")])
(define_insn "*fop_xf_comm"
@@ -14095,14 +14148,8 @@
&& (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
"* return output_387_binary_op (insn, operands);"
[(set (attr "type")
- (cond [(and (eq_attr "alternative" "2")
- (match_operand:SF 3 "mult_operator" ""))
- (const_string "ssemul")
- (and (eq_attr "alternative" "2")
- (match_operand:SF 3 "div_operator" ""))
- (const_string "ssediv")
- (eq_attr "alternative" "2")
- (const_string "sseadd")
+ (cond [(eq_attr "alternative" "2")
+ (const_string "sse")
(match_operand:SF 3 "mult_operator" "")
(const_string "fmul")
(match_operand:SF 3 "div_operator" "")
@@ -14119,13 +14166,7 @@
"TARGET_SSE_MATH
&& GET_RTX_CLASS (GET_CODE (operands[3])) != 'c'"
"* return output_387_binary_op (insn, operands);"
- [(set (attr "type")
- (cond [(match_operand:SF 3 "mult_operator" "")
- (const_string "ssemul")
- (match_operand:SF 3 "div_operator" "")
- (const_string "ssediv")
- ]
- (const_string "sseadd")))
+ [(set_attr "type" "sse")
(set_attr "mode" "SF")])
;; ??? Add SSE splitters for these!
@@ -14177,7 +14218,7 @@
[(set (attr "type")
(cond [(match_operand:DF 3 "mult_operator" "")
(const_string "fmul")
- (match_operand:DF 3 "div_operator" "")
+ (match_operand:DF 3 "div_operator" "")
(const_string "fdiv")
]
(const_string "fop")))
@@ -14194,14 +14235,8 @@
&& (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
"* return output_387_binary_op (insn, operands);"
[(set (attr "type")
- (cond [(and (eq_attr "alternative" "2")
- (match_operand:SF 3 "mult_operator" ""))
- (const_string "ssemul")
- (and (eq_attr "alternative" "2")
- (match_operand:SF 3 "div_operator" ""))
- (const_string "ssediv")
- (eq_attr "alternative" "2")
- (const_string "sseadd")
+ (cond [(eq_attr "alternative" "2")
+ (const_string "sse")
(match_operand:DF 3 "mult_operator" "")
(const_string "fmul")
(match_operand:DF 3 "div_operator" "")
@@ -14218,14 +14253,7 @@
"TARGET_SSE2 && TARGET_SSE_MATH
&& GET_RTX_CLASS (GET_CODE (operands[3])) != 'c'"
"* return output_387_binary_op (insn, operands);"
- [(set_attr "mode" "DF")
- (set (attr "type")
- (cond [(match_operand:SF 3 "mult_operator" "")
- (const_string "ssemul")
- (match_operand:SF 3 "div_operator" "")
- (const_string "ssediv")
- ]
- (const_string "sseadd")))])
+ [(set_attr "type" "sse")])
;; ??? Add SSE splitters for these!
(define_insn "*fop_df_2"
@@ -14732,7 +14760,7 @@
(define_insn "sindf2"
[(set (match_operand:DF 0 "register_operand" "=f")
- (unspec:DF [(match_operand:DF 1 "register_operand" "0")] UNSPEC_SIN))]
+ (unspec:DF [(match_operand:DF 1 "register_operand" "0")] 1))]
"! TARGET_NO_FANCY_MATH_387 && TARGET_80387
&& flag_unsafe_math_optimizations"
"fsin"
@@ -14741,7 +14769,7 @@
(define_insn "sinsf2"
[(set (match_operand:SF 0 "register_operand" "=f")
- (unspec:SF [(match_operand:SF 1 "register_operand" "0")] UNSPEC_SIN))]
+ (unspec:SF [(match_operand:SF 1 "register_operand" "0")] 1))]
"! TARGET_NO_FANCY_MATH_387 && TARGET_80387
&& flag_unsafe_math_optimizations"
"fsin"
@@ -14751,8 +14779,7 @@
(define_insn "*sinextendsfdf2"
[(set (match_operand:DF 0 "register_operand" "=f")
(unspec:DF [(float_extend:DF
- (match_operand:SF 1 "register_operand" "0"))]
- UNSPEC_SIN))]
+ (match_operand:SF 1 "register_operand" "0"))] 1))]
"! TARGET_NO_FANCY_MATH_387 && TARGET_80387
&& flag_unsafe_math_optimizations"
"fsin"
@@ -14761,7 +14788,7 @@
(define_insn "sinxf2"
[(set (match_operand:XF 0 "register_operand" "=f")
- (unspec:XF [(match_operand:XF 1 "register_operand" "0")] UNSPEC_SIN))]
+ (unspec:XF [(match_operand:XF 1 "register_operand" "0")] 1))]
"!TARGET_64BIT && TARGET_80387 && !TARGET_NO_FANCY_MATH_387
&& flag_unsafe_math_optimizations"
"fsin"
@@ -14770,7 +14797,7 @@
(define_insn "sintf2"
[(set (match_operand:TF 0 "register_operand" "=f")
- (unspec:TF [(match_operand:TF 1 "register_operand" "0")] UNSPEC_SIN))]
+ (unspec:TF [(match_operand:TF 1 "register_operand" "0")] 1))]
"! TARGET_NO_FANCY_MATH_387 && TARGET_80387
&& flag_unsafe_math_optimizations"
"fsin"
@@ -14779,7 +14806,7 @@
(define_insn "cosdf2"
[(set (match_operand:DF 0 "register_operand" "=f")
- (unspec:DF [(match_operand:DF 1 "register_operand" "0")] UNSPEC_COS))]
+ (unspec:DF [(match_operand:DF 1 "register_operand" "0")] 2))]
"! TARGET_NO_FANCY_MATH_387 && TARGET_80387
&& flag_unsafe_math_optimizations"
"fcos"
@@ -14788,7 +14815,7 @@
(define_insn "cossf2"
[(set (match_operand:SF 0 "register_operand" "=f")
- (unspec:SF [(match_operand:SF 1 "register_operand" "0")] UNSPEC_COS))]
+ (unspec:SF [(match_operand:SF 1 "register_operand" "0")] 2))]
"! TARGET_NO_FANCY_MATH_387 && TARGET_80387
&& flag_unsafe_math_optimizations"
"fcos"
@@ -14798,8 +14825,7 @@
(define_insn "*cosextendsfdf2"
[(set (match_operand:DF 0 "register_operand" "=f")
(unspec:DF [(float_extend:DF
- (match_operand:SF 1 "register_operand" "0"))]
- UNSPEC_COS))]
+ (match_operand:SF 1 "register_operand" "0"))] 2))]
"! TARGET_NO_FANCY_MATH_387 && TARGET_80387
&& flag_unsafe_math_optimizations"
"fcos"
@@ -14808,8 +14834,8 @@
(define_insn "cosxf2"
[(set (match_operand:XF 0 "register_operand" "=f")
- (unspec:XF [(match_operand:XF 1 "register_operand" "0")] UNSPEC_COS))]
- "!TARGET_64BIT && ! TARGET_NO_FANCY_MATH_387 && TARGET_80387
+ (unspec:XF [(match_operand:XF 1 "register_operand" "0")] 2))]
+ "! TARGET_NO_FANCY_MATH_387 && TARGET_80387
&& flag_unsafe_math_optimizations"
"fcos"
[(set_attr "type" "fpspc")
@@ -14817,7 +14843,7 @@
(define_insn "costf2"
[(set (match_operand:TF 0 "register_operand" "=f")
- (unspec:TF [(match_operand:TF 1 "register_operand" "0")] UNSPEC_COS))]
+ (unspec:TF [(match_operand:TF 1 "register_operand" "0")] 2))]
"! TARGET_NO_FANCY_MATH_387 && TARGET_80387
&& flag_unsafe_math_optimizations"
"fcos"
@@ -15711,7 +15737,7 @@
[(set (match_operand:SI 0 "register_operand" "")
(unspec:SI [(match_operand:BLK 1 "general_operand" "")
(match_operand:QI 2 "immediate_operand" "")
- (match_operand 3 "immediate_operand" "")] UNSPEC_SCAS))]
+ (match_operand 3 "immediate_operand" "")] 0))]
""
{
if (ix86_expand_strlen (operands[0], operands[1], operands[2], operands[3]))
@@ -15724,7 +15750,7 @@
[(set (match_operand:DI 0 "register_operand" "")
(unspec:DI [(match_operand:BLK 1 "general_operand" "")
(match_operand:QI 2 "immediate_operand" "")
- (match_operand 3 "immediate_operand" "")] UNSPEC_SCAS))]
+ (match_operand 3 "immediate_operand" "")] 0))]
""
{
if (ix86_expand_strlen (operands[0], operands[1], operands[2], operands[3]))
@@ -15738,7 +15764,7 @@
(unspec:SI [(mem:BLK (match_operand:SI 5 "register_operand" "1"))
(match_operand:QI 2 "register_operand" "a")
(match_operand:SI 3 "immediate_operand" "i")
- (match_operand:SI 4 "register_operand" "0")] UNSPEC_SCAS))
+ (match_operand:SI 4 "register_operand" "0")] 0))
(use (reg:SI 19))
(clobber (match_operand:SI 1 "register_operand" "=D"))
(clobber (reg:CC 17))]
@@ -15753,7 +15779,7 @@
(unspec:DI [(mem:BLK (match_operand:DI 5 "register_operand" "1"))
(match_operand:QI 2 "register_operand" "a")
(match_operand:DI 3 "immediate_operand" "i")
- (match_operand:DI 4 "register_operand" "0")] UNSPEC_SCAS))
+ (match_operand:DI 4 "register_operand" "0")] 0))
(use (reg:SI 19))
(clobber (match_operand:DI 1 "register_operand" "=D"))
(clobber (reg:CC 17))]
@@ -15869,7 +15895,6 @@
; Since we don't have the proper number of operands for an alu insn,
; fill in all the blanks.
[(set_attr "type" "alu")
- (set_attr "pent_pair" "pu")
(set_attr "memory" "none")
(set_attr "imm_disp" "false")
(set_attr "mode" "DI")
@@ -15912,7 +15937,6 @@
; Since we don't have the proper number of operands for an alu insn,
; fill in all the blanks.
[(set_attr "type" "alu")
- (set_attr "pent_pair" "pu")
(set_attr "memory" "none")
(set_attr "imm_disp" "false")
(set_attr "mode" "SI")
@@ -16019,12 +16043,12 @@
(set_attr "mode" "DF")])
(define_split
- [(set (match_operand:DF 0 "register_and_not_any_fp_reg_operand" "")
+ [(set (match_operand:DF 0 "register_operand" "")
(if_then_else:DF (match_operator 1 "fcmov_comparison_operator"
[(match_operand 4 "" "") (const_int 0)])
(match_operand:DF 2 "nonimmediate_operand" "")
(match_operand:DF 3 "nonimmediate_operand" "")))]
- "!TARGET_64BIT && reload_completed"
+ "!TARGET_64BIT && !ANY_FP_REG_P (operands[0]) && reload_completed"
[(set (match_dup 2)
(if_then_else:SI (match_op_dup 1 [(match_dup 4) (const_int 0)])
(match_dup 5)
@@ -16132,13 +16156,13 @@
;; We can't represent the LT test directly. Do this by swapping the operands.
(define_split
- [(set (match_operand:SF 0 "fp_register_operand" "")
+ [(set (match_operand:SF 0 "register_operand" "")
(if_then_else:SF (lt (match_operand:SF 1 "register_operand" "")
(match_operand:SF 2 "register_operand" ""))
(match_operand:SF 3 "register_operand" "")
(match_operand:SF 4 "register_operand" "")))
(clobber (reg:CC 17))]
- "reload_completed
+ "FP_REG_P (operands[0]) && reload_completed
&& ((operands_match_p (operands[1], operands[3])
&& operands_match_p (operands[2], operands[4]))
|| (operands_match_p (operands[1], operands[4])
@@ -16214,13 +16238,13 @@
;; We can't represent the LT test directly. Do this by swapping the operands.
(define_split
- [(set (match_operand:DF 0 "fp_register_operand" "")
+ [(set (match_operand:DF 0 "register_operand" "")
(if_then_else:DF (lt (match_operand:DF 1 "register_operand" "")
(match_operand:DF 2 "register_operand" ""))
(match_operand:DF 3 "register_operand" "")
(match_operand:DF 4 "register_operand" "")))
(clobber (reg:CC 17))]
- "reload_completed
+ "FP_REG_P (operands[0]) && reload_completed
&& ((operands_match_p (operands[1], operands[3])
&& operands_match_p (operands[2], operands[4]))
|| (operands_match_p (operands[1], operands[4])
@@ -16295,13 +16319,13 @@
(match_dup 2)))])
(define_split
- [(set (match_operand:SF 0 "fp_register_operand" "")
+ [(set (match_operand:SF 0 "register_operand" "")
(if_then_else:SF (gt (match_operand:SF 1 "register_operand" "")
(match_operand:SF 2 "register_operand" ""))
(match_operand:SF 3 "register_operand" "")
(match_operand:SF 4 "register_operand" "")))
(clobber (reg:CC 17))]
- "reload_completed
+ "FP_REG_P (operands[0]) && reload_completed
&& ((operands_match_p (operands[1], operands[3])
&& operands_match_p (operands[2], operands[4]))
|| (operands_match_p (operands[1], operands[4])
@@ -16376,13 +16400,13 @@
(match_dup 2)))])
(define_split
- [(set (match_operand:DF 0 "fp_register_operand" "")
+ [(set (match_operand:DF 0 "register_operand" "")
(if_then_else:DF (gt (match_operand:DF 1 "register_operand" "")
(match_operand:DF 2 "register_operand" ""))
(match_operand:DF 3 "register_operand" "")
(match_operand:DF 4 "register_operand" "")))
(clobber (reg:CC 17))]
- "reload_completed
+ "FP_REG_P (operands[0]) && reload_completed
&& ((operands_match_p (operands[1], operands[3])
&& operands_match_p (operands[2], operands[4]))
|| (operands_match_p (operands[1], operands[4])
@@ -16604,7 +16628,7 @@
;; cmpCC op0, op4 - set op0 to 0 or ffffffff depending on the comparison
;; and op2, op0 - zero op2 if comparison was false
;; nand op0, op3 - load op3 to op0 if comparison was false
-;; or op2, op0 - get the nonzero one into the result.
+;; or op2, op0 - get the non-zero one into the result.
(define_split
[(set (match_operand 0 "register_operand" "")
(if_then_else (match_operator 1 "sse_comparison_operator"
@@ -16720,7 +16744,7 @@
(define_split
[(set (match_operand 0 "register_operand" "")
(if_then_else (match_operator 1 "comparison_operator"
- [(match_operand 4 "nonimmediate_operand" "")
+ [(match_operand 4 "register_operand" "")
(match_operand 5 "nonimmediate_operand" "")])
(match_operand 2 "nonmemory_operand" "")
(match_operand 3 "nonmemory_operand" "")))]
@@ -16732,16 +16756,13 @@
(subreg:TI (match_dup 7) 0)))]
{
PUT_MODE (operands[1], GET_MODE (operands[0]));
- if (!sse_comparison_operator (operands[1], VOIDmode)
- || !rtx_equal_p (operands[0], operands[4]))
+ if (!sse_comparison_operator (operands[1], VOIDmode))
{
rtx tmp = operands[5];
operands[5] = operands[4];
operands[4] = tmp;
PUT_CODE (operands[1], swap_condition (GET_CODE (operands[1])));
}
- if (!rtx_equal_p (operands[0], operands[4]))
- abort ();
if (const0_operand (operands[2], GET_MODE (operands[0])))
{
operands[7] = operands[3];
@@ -16767,7 +16788,7 @@
})
(define_insn "allocate_stack_worker_1"
- [(unspec:SI [(match_operand:SI 0 "register_operand" "a")] UNSPEC_STACK_PROBE)
+ [(unspec:SI [(match_operand:SI 0 "register_operand" "a")] 3)
(set (reg:SI 7) (minus:SI (reg:SI 7) (match_dup 0)))
(clobber (match_dup 0))
(clobber (reg:CC 17))]
@@ -16777,7 +16798,7 @@
(set_attr "length" "5")])
(define_insn "allocate_stack_worker_rex64"
- [(unspec:DI [(match_operand:DI 0 "register_operand" "a")] UNSPEC_STACK_PROBE)
+ [(unspec:DI [(match_operand:DI 0 "register_operand" "a")] 3)
(set (reg:DI 7) (minus:DI (reg:DI 7) (match_dup 0)))
(clobber (match_dup 0))
(clobber (reg:CC 17))]
@@ -16814,7 +16835,7 @@
[(label_ref (match_operand 0 "" ""))]
"!TARGET_64BIT && flag_pic"
{
- emit_insn (gen_set_got (pic_offset_table_rtx));
+ load_pic_register ();
DONE;
})
@@ -16828,8 +16849,7 @@
(clobber (reg:CC 17))]
"! TARGET_PARTIAL_REG_STALL && reload_completed
&& ((GET_MODE (operands[0]) == HImode
- && ((!optimize_size && !TARGET_FAST_PREFIX)
- || GET_CODE (operands[2]) != CONST_INT
+ && (!optimize_size || GET_CODE (operands[2]) != CONST_INT
|| CONST_OK_FOR_LETTER_P (INTVAL (operands[2]), 'K')))
|| (GET_MODE (operands[0]) == QImode
&& (TARGET_PROMOTE_QImode || optimize_size)))"
@@ -16842,10 +16862,6 @@
operands[2] = gen_lowpart (SImode, operands[2]);
PUT_MODE (operands[3], SImode);")
-; Promote the QImode tests, as i386 has encoding of the AND
-; instruction with 32-bit sign-extended immediate and thus the
-; instruction size is unchanged, except in the %eax case for
-; which it is increased by one byte, hence the ! optimize_size.
(define_split
[(set (reg 17)
(compare (and (match_operand 1 "aligned_operand" "")
@@ -16854,44 +16870,39 @@
(set (match_operand 0 "register_operand" "")
(and (match_dup 1) (match_dup 2)))]
"! TARGET_PARTIAL_REG_STALL && reload_completed
- /* Ensure that the operand will remain sign-extended immediate. */
- && ix86_match_ccmode (insn, INTVAL (operands[2]) >= 0 ? CCNOmode : CCZmode)
- && ! optimize_size
- && ((GET_MODE (operands[0]) == HImode && ! TARGET_FAST_PREFIX)
- || (GET_MODE (operands[0]) == QImode && TARGET_PROMOTE_QImode))"
+ && ix86_match_ccmode (insn, CCNOmode)
+ && (GET_MODE (operands[0]) == HImode
+ || (GET_MODE (operands[0]) == QImode
+ && (TARGET_PROMOTE_QImode || optimize_size)))"
[(parallel [(set (reg:CCNO 17)
(compare:CCNO (and:SI (match_dup 1) (match_dup 2))
(const_int 0)))
(set (match_dup 0)
(and:SI (match_dup 1) (match_dup 2)))])]
"operands[2]
- = gen_int_mode (INTVAL (operands[2])
- & GET_MODE_MASK (GET_MODE (operands[0])),
- SImode);
+ = GEN_INT (trunc_int_for_mode (INTVAL (operands[2])
+ & GET_MODE_MASK (GET_MODE (operands[0])),
+ SImode));
operands[0] = gen_lowpart (SImode, operands[0]);
operands[1] = gen_lowpart (SImode, operands[1]);")
-; Don't promote the QImode tests, as i386 doesn't have encoding of
-; the TEST instruction with 32-bit sign-extended immediate and thus
-; the instruction size would at least double, which is not what we
-; want even with ! optimize_size.
(define_split
[(set (reg 17)
- (compare (and (match_operand:HI 0 "aligned_operand" "")
- (match_operand:HI 1 "const_int_operand" ""))
+ (compare (and (match_operand 0 "aligned_operand" "")
+ (match_operand 1 "const_int_operand" ""))
(const_int 0)))]
"! TARGET_PARTIAL_REG_STALL && reload_completed
- /* Ensure that the operand will remain sign-extended immediate. */
- && ix86_match_ccmode (insn, INTVAL (operands[1]) >= 0 ? CCNOmode : CCZmode)
- && ! TARGET_FAST_PREFIX
- && ! optimize_size"
+ && ix86_match_ccmode (insn, CCNOmode)
+ && (GET_MODE (operands[0]) == HImode
+ || (GET_MODE (operands[0]) == QImode
+ && (TARGET_PROMOTE_QImode || optimize_size)))"
[(set (reg:CCNO 17)
(compare:CCNO (and:SI (match_dup 0) (match_dup 1))
(const_int 0)))]
"operands[1]
- = gen_int_mode (INTVAL (operands[1])
- & GET_MODE_MASK (GET_MODE (operands[0])),
- SImode);
+ = GEN_INT (trunc_int_for_mode (INTVAL (operands[1])
+ & GET_MODE_MASK (GET_MODE (operands[0])),
+ SImode));
operands[0] = gen_lowpart (SImode, operands[0]);")
(define_split
@@ -17141,8 +17152,7 @@
(const_int 0)))]
"ix86_match_ccmode (insn, CCNOmode)
&& (true_regnum (operands[0]) != 0
- || (GET_CODE (operands[1]) == CONST_INT
- && CONST_OK_FOR_LETTER_P (INTVAL (operands[1]), 'K')))
+ || CONST_OK_FOR_LETTER_P (INTVAL (operands[1]), 'K'))
&& find_regno_note (insn, REG_DEAD, true_regnum (operands[0]))"
[(parallel
[(set (reg:CCNO 17)
@@ -17365,7 +17375,7 @@
[(set (match_operand:SI 0 "register_operand" "")
(subreg:SI (mult:DI (match_operand:DI 1 "register_operand" "")
(match_operand:DI 2 "const_int_operand" "")) 0))]
- "exact_log2 (INTVAL (operands[2])) >= 0
+ "exact_log2 (INTVAL (operands[1])) >= 0
&& REGNO (operands[0]) == REGNO (operands[1])
&& peep2_regno_dead_p (0, FLAGS_REG)"
[(parallel [(set (match_dup 0) (ashift:SI (match_dup 0) (match_dup 2)))
@@ -17843,92 +17853,52 @@
;; Moves for SSE/MMX regs.
(define_insn "movv4sf_internal"
- [(set (match_operand:V4SF 0 "nonimmediate_operand" "=x,x,m")
- (match_operand:V4SF 1 "vector_move_operand" "C,xm,x"))]
+ [(set (match_operand:V4SF 0 "nonimmediate_operand" "=x,m")
+ (match_operand:V4SF 1 "nonimmediate_operand" "xm,x"))]
"TARGET_SSE"
;; @@@ let's try to use movaps here.
- "@
- xorps\t%0, %0
- movaps\t{%1, %0|%0, %1}
- movaps\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssemov")
- (set_attr "mode" "V4SF")])
+ "movaps\t{%1, %0|%0, %1}"
+ [(set_attr "type" "sse")])
(define_insn "movv4si_internal"
- [(set (match_operand:V4SI 0 "nonimmediate_operand" "=x,x,m")
- (match_operand:V4SI 1 "vector_move_operand" "C,xm,x"))]
+ [(set (match_operand:V4SI 0 "nonimmediate_operand" "=x,m")
+ (match_operand:V4SI 1 "nonimmediate_operand" "xm,x"))]
"TARGET_SSE"
;; @@@ let's try to use movaps here.
- "@
- xorps\t%0, %0
- movaps\t{%1, %0|%0, %1}
- movaps\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssemov")
- (set_attr "mode" "V4SF")])
-
-(define_insn "movv2di_internal"
- [(set (match_operand:V2DI 0 "nonimmediate_operand" "=x,x,m")
- (match_operand:V2DI 1 "vector_move_operand" "C,xm,x"))]
- "TARGET_SSE"
- ;; @@@ let's try to use movaps here.
- "@
- pxor\t%0, %0
- movdqa\t{%1, %0|%0, %1}
- movdqa\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssemov")
- (set_attr "mode" "V4SF")])
+ "movaps\t{%1, %0|%0, %1}"
+ [(set_attr "type" "sse")])
(define_insn "movv8qi_internal"
- [(set (match_operand:V8QI 0 "nonimmediate_operand" "=y,y,m")
- (match_operand:V8QI 1 "vector_move_operand" "C,ym,y"))]
- "TARGET_MMX
- && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
- "@
- pxor\t%0, %0
- movq\t{%1, %0|%0, %1}
- movq\t{%1, %0|%0, %1}"
- [(set_attr "type" "mmxmov")
- (set_attr "mode" "DI")])
+ [(set (match_operand:V8QI 0 "nonimmediate_operand" "=y,m")
+ (match_operand:V8QI 1 "nonimmediate_operand" "ym,y"))]
+ "TARGET_MMX"
+ "movq\t{%1, %0|%0, %1}"
+ [(set_attr "type" "mmx")])
(define_insn "movv4hi_internal"
- [(set (match_operand:V4HI 0 "nonimmediate_operand" "=y,y,m")
- (match_operand:V4HI 1 "vector_move_operand" "C,ym,y"))]
- "TARGET_MMX
- && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
- "@
- pxor\t%0, %0
- movq\t{%1, %0|%0, %1}
- movq\t{%1, %0|%0, %1}"
- [(set_attr "type" "mmxmov")
- (set_attr "mode" "DI")])
+ [(set (match_operand:V4HI 0 "nonimmediate_operand" "=y,m")
+ (match_operand:V4HI 1 "nonimmediate_operand" "ym,y"))]
+ "TARGET_MMX"
+ "movq\t{%1, %0|%0, %1}"
+ [(set_attr "type" "mmx")])
(define_insn "movv2si_internal"
- [(set (match_operand:V2SI 0 "nonimmediate_operand" "=y,y,m")
- (match_operand:V2SI 1 "vector_move_operand" "C,ym,y"))]
- "TARGET_MMX
- && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
- "@
- pxor\t%0, %0
- movq\t{%1, %0|%0, %1}
- movq\t{%1, %0|%0, %1}"
- [(set_attr "type" "mmxcvt")
- (set_attr "mode" "DI")])
+ [(set (match_operand:V2SI 0 "nonimmediate_operand" "=y,m")
+ (match_operand:V2SI 1 "nonimmediate_operand" "ym,y"))]
+ "TARGET_MMX"
+ "movq\t{%1, %0|%0, %1}"
+ [(set_attr "type" "mmx")])
(define_insn "movv2sf_internal"
- [(set (match_operand:V2SF 0 "nonimmediate_operand" "=y,y,m")
- (match_operand:V2SF 1 "vector_move_operand" "C,ym,y"))]
- "TARGET_3DNOW
- && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
- "@
- pxor\t%0, %0
- movq\t{%1, %0|%0, %1}
- movq\t{%1, %0|%0, %1}"
- [(set_attr "type" "mmxcvt")
- (set_attr "mode" "DI")])
+ [(set (match_operand:V2SF 0 "nonimmediate_operand" "=y,m")
+ (match_operand:V2SF 1 "nonimmediate_operand" "ym,y"))]
+ "TARGET_3DNOW"
+ "movq\\t{%1, %0|%0, %1}"
+ [(set_attr "type" "mmx")])
(define_expand "movti"
- [(set (match_operand:TI 0 "nonimmediate_operand" "")
- (match_operand:TI 1 "nonimmediate_operand" ""))]
+ [(set (match_operand:TI 0 "general_operand" "")
+ (match_operand:TI 1 "general_operand" ""))]
"TARGET_SSE || TARGET_64BIT"
{
if (TARGET_64BIT)
@@ -17938,72 +17908,9 @@
DONE;
})
-(define_insn "movv2df_internal"
- [(set (match_operand:V2DF 0 "nonimmediate_operand" "=x,x,m")
- (match_operand:V2DF 1 "vector_move_operand" "C,xm,x"))]
- "TARGET_SSE2
- && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
- "@
- xorpd\t%0, %0
- movapd\t{%1, %0|%0, %1}
- movapd\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssemov")
- (set_attr "mode" "V2DF")])
-
-(define_insn "movv8hi_internal"
- [(set (match_operand:V8HI 0 "nonimmediate_operand" "=x,x,m")
- (match_operand:V8HI 1 "vector_move_operand" "C,xm,x"))]
- "TARGET_SSE2
- && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
- "@
- xorps\t%0, %0
- movaps\t{%1, %0|%0, %1}
- movaps\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssemov")
- (set_attr "mode" "V4SF")])
-
-(define_insn "movv16qi_internal"
- [(set (match_operand:V16QI 0 "nonimmediate_operand" "=x,x,m")
- (match_operand:V16QI 1 "vector_move_operand" "C,xm,x"))]
- "TARGET_SSE2
- && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
- "@
- xorps\t%0, %0
- movaps\t{%1, %0|%0, %1}
- movaps\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssemov")
- (set_attr "mode" "V4SF")])
-
-(define_expand "movv2df"
- [(set (match_operand:V2DF 0 "nonimmediate_operand" "")
- (match_operand:V2DF 1 "nonimmediate_operand" ""))]
- "TARGET_SSE2"
-{
- ix86_expand_vector_move (V2DFmode, operands);
- DONE;
-})
-
-(define_expand "movv8hi"
- [(set (match_operand:V8HI 0 "nonimmediate_operand" "")
- (match_operand:V8HI 1 "nonimmediate_operand" ""))]
- "TARGET_SSE2"
-{
- ix86_expand_vector_move (V8HImode, operands);
- DONE;
-})
-
-(define_expand "movv16qi"
- [(set (match_operand:V16QI 0 "nonimmediate_operand" "")
- (match_operand:V16QI 1 "nonimmediate_operand" ""))]
- "TARGET_SSE2"
-{
- ix86_expand_vector_move (V16QImode, operands);
- DONE;
-})
-
(define_expand "movv4sf"
- [(set (match_operand:V4SF 0 "nonimmediate_operand" "")
- (match_operand:V4SF 1 "nonimmediate_operand" ""))]
+ [(set (match_operand:V4SF 0 "general_operand" "")
+ (match_operand:V4SF 1 "general_operand" ""))]
"TARGET_SSE"
{
ix86_expand_vector_move (V4SFmode, operands);
@@ -18011,26 +17918,17 @@
})
(define_expand "movv4si"
- [(set (match_operand:V4SI 0 "nonimmediate_operand" "")
- (match_operand:V4SI 1 "nonimmediate_operand" ""))]
- "TARGET_SSE"
+ [(set (match_operand:V4SI 0 "general_operand" "")
+ (match_operand:V4SI 1 "general_operand" ""))]
+ "TARGET_MMX"
{
ix86_expand_vector_move (V4SImode, operands);
DONE;
})
-(define_expand "movv2di"
- [(set (match_operand:V2DI 0 "nonimmediate_operand" "")
- (match_operand:V2DI 1 "nonimmediate_operand" ""))]
- "TARGET_SSE"
-{
- ix86_expand_vector_move (V2DImode, operands);
- DONE;
-})
-
(define_expand "movv2si"
- [(set (match_operand:V2SI 0 "nonimmediate_operand" "")
- (match_operand:V2SI 1 "nonimmediate_operand" ""))]
+ [(set (match_operand:V2SI 0 "general_operand" "")
+ (match_operand:V2SI 1 "general_operand" ""))]
"TARGET_MMX"
{
ix86_expand_vector_move (V2SImode, operands);
@@ -18038,8 +17936,8 @@
})
(define_expand "movv4hi"
- [(set (match_operand:V4HI 0 "nonimmediate_operand" "")
- (match_operand:V4HI 1 "nonimmediate_operand" ""))]
+ [(set (match_operand:V4HI 0 "general_operand" "")
+ (match_operand:V4HI 1 "general_operand" ""))]
"TARGET_MMX"
{
ix86_expand_vector_move (V4HImode, operands);
@@ -18047,8 +17945,8 @@
})
(define_expand "movv8qi"
- [(set (match_operand:V8QI 0 "nonimmediate_operand" "")
- (match_operand:V8QI 1 "nonimmediate_operand" ""))]
+ [(set (match_operand:V8QI 0 "general_operand" "")
+ (match_operand:V8QI 1 "general_operand" ""))]
"TARGET_MMX"
{
ix86_expand_vector_move (V8QImode, operands);
@@ -18056,97 +17954,14 @@
})
(define_expand "movv2sf"
- [(set (match_operand:V2SF 0 "nonimmediate_operand" "")
- (match_operand:V2SF 1 "nonimmediate_operand" ""))]
+ [(set (match_operand:V2SF 0 "general_operand" "")
+ (match_operand:V2SF 1 "general_operand" ""))]
"TARGET_3DNOW"
{
ix86_expand_vector_move (V2SFmode, operands);
DONE;
})
-(define_insn "*pushv2df"
- [(set (match_operand:V2DF 0 "push_operand" "=<")
- (match_operand:V2DF 1 "register_operand" "x"))]
- "TARGET_SSE"
- "#")
-
-(define_insn "*pushv2di"
- [(set (match_operand:V2DI 0 "push_operand" "=<")
- (match_operand:V2DI 1 "register_operand" "x"))]
- "TARGET_SSE2"
- "#")
-
-(define_insn "*pushv8hi"
- [(set (match_operand:V8HI 0 "push_operand" "=<")
- (match_operand:V8HI 1 "register_operand" "x"))]
- "TARGET_SSE2"
- "#")
-
-(define_insn "*pushv16qi"
- [(set (match_operand:V16QI 0 "push_operand" "=<")
- (match_operand:V16QI 1 "register_operand" "x"))]
- "TARGET_SSE2"
- "#")
-
-(define_insn "*pushv4sf"
- [(set (match_operand:V4SF 0 "push_operand" "=<")
- (match_operand:V4SF 1 "register_operand" "x"))]
- "TARGET_SSE"
- "#")
-
-(define_insn "*pushv4si"
- [(set (match_operand:V4SI 0 "push_operand" "=<")
- (match_operand:V4SI 1 "register_operand" "x"))]
- "TARGET_SSE2"
- "#")
-
-(define_insn "*pushv2si"
- [(set (match_operand:V2SI 0 "push_operand" "=<")
- (match_operand:V2SI 1 "register_operand" "y"))]
- "TARGET_MMX"
- "#")
-
-(define_insn "*pushv4hi"
- [(set (match_operand:V4HI 0 "push_operand" "=<")
- (match_operand:V4HI 1 "register_operand" "y"))]
- "TARGET_MMX"
- "#")
-
-(define_insn "*pushv8qi"
- [(set (match_operand:V8QI 0 "push_operand" "=<")
- (match_operand:V8QI 1 "register_operand" "y"))]
- "TARGET_MMX"
- "#")
-
-(define_insn "*pushv2sf"
- [(set (match_operand:V2SF 0 "push_operand" "=<")
- (match_operand:V2SF 1 "register_operand" "y"))]
- "TARGET_3DNOW"
- "#")
-
-(define_split
- [(set (match_operand 0 "push_operand" "")
- (match_operand 1 "register_operand" ""))]
- "!TARGET_64BIT && reload_completed
- && (SSE_REG_P (operands[1]) || MMX_REG_P (operands[1]))"
- [(set (reg:SI 7) (plus:SI (reg:SI 7) (match_dup 3)))
- (set (match_dup 2) (match_dup 1))]
- "operands[2] = change_address (operands[0], GET_MODE (operands[0]),
- stack_pointer_rtx);
- operands[3] = GEN_INT (-GET_MODE_SIZE (GET_MODE (operands[0])));")
-
-(define_split
- [(set (match_operand 0 "push_operand" "")
- (match_operand 1 "register_operand" ""))]
- "TARGET_64BIT && reload_completed
- && (SSE_REG_P (operands[1]) || MMX_REG_P (operands[1]))"
- [(set (reg:DI 7) (plus:DI (reg:DI 7) (match_dup 3)))
- (set (match_dup 2) (match_dup 1))]
- "operands[2] = change_address (operands[0], GET_MODE (operands[0]),
- stack_pointer_rtx);
- operands[3] = GEN_INT (-GET_MODE_SIZE (GET_MODE (operands[0])));")
-
-
(define_insn_and_split "*pushti"
[(set (match_operand:TI 0 "push_operand" "=<")
(match_operand:TI 1 "nonmemory_operand" "x"))]
@@ -18156,51 +17971,7 @@
[(set (reg:SI 7) (plus:SI (reg:SI 7) (const_int -16)))
(set (mem:TI (reg:SI 7)) (match_dup 1))]
""
- [(set_attr "type" "multi")])
-
-(define_insn_and_split "*pushv2df"
- [(set (match_operand:V2DF 0 "push_operand" "=<")
- (match_operand:V2DF 1 "nonmemory_operand" "x"))]
- "TARGET_SSE2"
- "#"
- ""
- [(set (reg:SI 7) (plus:SI (reg:SI 7) (const_int -16)))
- (set (mem:V2DF (reg:SI 7)) (match_dup 1))]
- ""
- [(set_attr "type" "multi")])
-
-(define_insn_and_split "*pushv2di"
- [(set (match_operand:V2DI 0 "push_operand" "=<")
- (match_operand:V2DI 1 "nonmemory_operand" "x"))]
- "TARGET_SSE2"
- "#"
- ""
- [(set (reg:SI 7) (plus:SI (reg:SI 7) (const_int -16)))
- (set (mem:V2DI (reg:SI 7)) (match_dup 1))]
- ""
- [(set_attr "type" "multi")])
-
-(define_insn_and_split "*pushv8hi"
- [(set (match_operand:V8HI 0 "push_operand" "=<")
- (match_operand:V8HI 1 "nonmemory_operand" "x"))]
- "TARGET_SSE2"
- "#"
- ""
- [(set (reg:SI 7) (plus:SI (reg:SI 7) (const_int -16)))
- (set (mem:V8HI (reg:SI 7)) (match_dup 1))]
- ""
- [(set_attr "type" "multi")])
-
-(define_insn_and_split "*pushv16qi"
- [(set (match_operand:V16QI 0 "push_operand" "=<")
- (match_operand:V16QI 1 "nonmemory_operand" "x"))]
- "TARGET_SSE2"
- "#"
- ""
- [(set (reg:SI 7) (plus:SI (reg:SI 7) (const_int -16)))
- (set (mem:V16QI (reg:SI 7)) (match_dup 1))]
- ""
- [(set_attr "type" "multi")])
+ [(set_attr "type" "sse")])
(define_insn_and_split "*pushv4sf"
[(set (match_operand:V4SF 0 "push_operand" "=<")
@@ -18211,7 +17982,7 @@
[(set (reg:SI 7) (plus:SI (reg:SI 7) (const_int -16)))
(set (mem:V4SF (reg:SI 7)) (match_dup 1))]
""
- [(set_attr "type" "multi")])
+ [(set_attr "type" "sse")])
(define_insn_and_split "*pushv4si"
[(set (match_operand:V4SI 0 "push_operand" "=<")
@@ -18222,7 +17993,7 @@
[(set (reg:SI 7) (plus:SI (reg:SI 7) (const_int -16)))
(set (mem:V4SI (reg:SI 7)) (match_dup 1))]
""
- [(set_attr "type" "multi")])
+ [(set_attr "type" "sse")])
(define_insn_and_split "*pushv2si"
[(set (match_operand:V2SI 0 "push_operand" "=<")
@@ -18270,19 +18041,17 @@
(define_insn "movti_internal"
[(set (match_operand:TI 0 "nonimmediate_operand" "=x,x,m")
- (match_operand:TI 1 "vector_move_operand" "C,xm,x"))]
- "TARGET_SSE && !TARGET_64BIT
- && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
+ (match_operand:TI 1 "general_operand" "O,xm,x"))]
+ "TARGET_SSE && !TARGET_64BIT"
"@
xorps\t%0, %0
movaps\t{%1, %0|%0, %1}
movaps\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssemov,ssemov,ssemov")
- (set_attr "mode" "V4SF")])
+ [(set_attr "type" "sse")])
(define_insn "*movti_rex64"
[(set (match_operand:TI 0 "nonimmediate_operand" "=r,o,x,mx,x")
- (match_operand:TI 1 "general_operand" "riFo,riF,C,x,m"))]
+ (match_operand:TI 1 "general_operand" "riFo,riF,O,x,m"))]
"TARGET_64BIT
&& (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
"@
@@ -18291,8 +18060,8 @@
xorps\t%0, %0
movaps\\t{%1, %0|%0, %1}
movaps\\t{%1, %0|%0, %1}"
- [(set_attr "type" "*,*,ssemov,ssemov,ssemov")
- (set_attr "mode" "V4SF")])
+ [(set_attr "type" "*,*,sse,sse,sse")
+ (set_attr "mode" "TI")])
(define_split
[(set (match_operand:TI 0 "nonimmediate_operand" "")
@@ -18304,116 +18073,74 @@
;; These two patterns are useful for specifying exactly whether to use
;; movaps or movups
-(define_expand "sse_movaps"
- [(set (match_operand:V4SF 0 "nonimmediate_operand" "")
- (unspec:V4SF [(match_operand:V4SF 1 "nonimmediate_operand" "")]
- UNSPEC_MOVA))]
+(define_insn "sse_movaps"
+ [(set (match_operand:V4SF 0 "nonimmediate_operand" "=x,m")
+ (unspec:V4SF
+ [(match_operand:V4SF 1 "nonimmediate_operand" "xm,x")] 38))]
"TARGET_SSE"
-{
- if (GET_CODE (operands[0]) == MEM && GET_CODE (operands[1]) == MEM)
- {
- rtx tmp = gen_reg_rtx (V4SFmode);
- emit_insn (gen_sse_movaps (tmp, operands[1]));
- emit_move_insn (operands[0], tmp);
- DONE;
- }
-})
+ "@
+ movaps\t{%1, %0|%0, %1}
+ movaps\t{%1, %0|%0, %1}"
+ [(set_attr "type" "sse")])
-(define_insn "*sse_movaps_1"
+(define_insn "sse_movups"
[(set (match_operand:V4SF 0 "nonimmediate_operand" "=x,m")
- (unspec:V4SF [(match_operand:V4SF 1 "nonimmediate_operand" "xm,x")]
- UNSPEC_MOVA))]
- "TARGET_SSE
- && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
- "movaps\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssemov,ssemov")
- (set_attr "mode" "V4SF")])
-
-(define_expand "sse_movups"
- [(set (match_operand:V4SF 0 "nonimmediate_operand" "")
- (unspec:V4SF [(match_operand:V4SF 1 "nonimmediate_operand" "")]
- UNSPEC_MOVU))]
+ (unspec:V4SF
+ [(match_operand:V4SF 1 "nonimmediate_operand" "xm,x")] 39))]
"TARGET_SSE"
-{
- if (GET_CODE (operands[0]) == MEM && GET_CODE (operands[1]) == MEM)
- {
- rtx tmp = gen_reg_rtx (V4SFmode);
- emit_insn (gen_sse_movups (tmp, operands[1]));
- emit_move_insn (operands[0], tmp);
- DONE;
- }
-})
+ "@
+ movups\t{%1, %0|%0, %1}
+ movups\t{%1, %0|%0, %1}"
+ [(set_attr "type" "sse")])
-(define_insn "*sse_movups_1"
- [(set (match_operand:V4SF 0 "nonimmediate_operand" "=x,m")
- (unspec:V4SF [(match_operand:V4SF 1 "nonimmediate_operand" "xm,x")]
- UNSPEC_MOVU))]
- "TARGET_SSE
- && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
- "movups\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt,ssecvt")
- (set_attr "mode" "V4SF")])
;; SSE Strange Moves.
(define_insn "sse_movmskps"
[(set (match_operand:SI 0 "register_operand" "=r")
- (unspec:SI [(match_operand:V4SF 1 "register_operand" "x")]
- UNSPEC_MOVMSK))]
+ (unspec:SI [(match_operand:V4SF 1 "register_operand" "x")] 33))]
"TARGET_SSE"
"movmskps\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "V4SF")])
+ [(set_attr "type" "sse")])
(define_insn "mmx_pmovmskb"
[(set (match_operand:SI 0 "register_operand" "=r")
- (unspec:SI [(match_operand:V8QI 1 "register_operand" "y")]
- UNSPEC_MOVMSK))]
+ (unspec:SI [(match_operand:V8QI 1 "register_operand" "y")] 33))]
"TARGET_SSE || TARGET_3DNOW_A"
"pmovmskb\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "V4SF")])
-
+ [(set_attr "type" "sse")])
(define_insn "mmx_maskmovq"
[(set (mem:V8QI (match_operand:SI 0 "register_operand" "D"))
(unspec:V8QI [(match_operand:V8QI 1 "register_operand" "y")
- (match_operand:V8QI 2 "register_operand" "y")]
- UNSPEC_MASKMOV))]
+ (match_operand:V8QI 2 "register_operand" "y")] 32))]
"(TARGET_SSE || TARGET_3DNOW_A) && !TARGET_64BIT"
;; @@@ check ordering of operands in intel/nonintel syntax
"maskmovq\t{%2, %1|%1, %2}"
- [(set_attr "type" "mmxcvt")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "sse")])
(define_insn "mmx_maskmovq_rex"
[(set (mem:V8QI (match_operand:DI 0 "register_operand" "D"))
(unspec:V8QI [(match_operand:V8QI 1 "register_operand" "y")
- (match_operand:V8QI 2 "register_operand" "y")]
- UNSPEC_MASKMOV))]
+ (match_operand:V8QI 2 "register_operand" "y")] 32))]
"(TARGET_SSE || TARGET_3DNOW_A) && TARGET_64BIT"
;; @@@ check ordering of operands in intel/nonintel syntax
"maskmovq\t{%2, %1|%1, %2}"
- [(set_attr "type" "mmxcvt")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "sse")])
(define_insn "sse_movntv4sf"
[(set (match_operand:V4SF 0 "memory_operand" "=m")
- (unspec:V4SF [(match_operand:V4SF 1 "register_operand" "x")]
- UNSPEC_MOVNT))]
+ (unspec:V4SF [(match_operand:V4SF 1 "register_operand" "x")] 34))]
"TARGET_SSE"
"movntps\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssemov")
- (set_attr "mode" "V4SF")])
+ [(set_attr "type" "sse")])
(define_insn "sse_movntdi"
[(set (match_operand:DI 0 "memory_operand" "=m")
- (unspec:DI [(match_operand:DI 1 "register_operand" "y")]
- UNSPEC_MOVNT))]
+ (unspec:DI [(match_operand:DI 1 "register_operand" "y")] 34))]
"TARGET_SSE || TARGET_3DNOW_A"
"movntq\t{%1, %0|%0, %1}"
- [(set_attr "type" "mmxmov")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "sse")])
(define_insn "sse_movhlps"
[(set (match_operand:V4SF 0 "register_operand" "=x")
@@ -18427,8 +18154,7 @@
(const_int 3)))]
"TARGET_SSE"
"movhlps\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "V4SF")])
+ [(set_attr "type" "sse")])
(define_insn "sse_movlhps"
[(set (match_operand:V4SF 0 "register_operand" "=x")
@@ -18442,8 +18168,7 @@
(const_int 12)))]
"TARGET_SSE"
"movlhps\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "V4SF")])
+ [(set_attr "type" "sse")])
(define_insn "sse_movhps"
[(set (match_operand:V4SF 0 "nonimmediate_operand" "=x,m")
@@ -18454,8 +18179,7 @@
"TARGET_SSE
&& (GET_CODE (operands[1]) == MEM || GET_CODE (operands[2]) == MEM)"
"movhps\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "V4SF")])
+ [(set_attr "type" "sse")])
(define_insn "sse_movlps"
[(set (match_operand:V4SF 0 "nonimmediate_operand" "=x,m")
@@ -18466,29 +18190,17 @@
"TARGET_SSE
&& (GET_CODE (operands[1]) == MEM || GET_CODE (operands[2]) == MEM)"
"movlps\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "V4SF")])
+ [(set_attr "type" "sse")])
-(define_expand "sse_loadss"
- [(match_operand:V4SF 0 "register_operand" "")
- (match_operand:SF 1 "memory_operand" "")]
- "TARGET_SSE"
-{
- emit_insn (gen_sse_loadss_1 (operands[0], operands[1],
- CONST0_RTX (V4SFmode)));
- DONE;
-})
-
-(define_insn "sse_loadss_1"
+(define_insn "sse_loadss"
[(set (match_operand:V4SF 0 "register_operand" "=x")
(vec_merge:V4SF
- (vec_duplicate:V4SF (match_operand:SF 1 "memory_operand" "m"))
- (match_operand:V4SF 2 "const0_operand" "X")
+ (match_operand:V4SF 1 "memory_operand" "m")
+ (vec_duplicate:V4SF (float:SF (const_int 0)))
(const_int 1)))]
"TARGET_SSE"
"movss\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssemov")
- (set_attr "mode" "SF")])
+ [(set_attr "type" "sse")])
(define_insn "sse_movss"
[(set (match_operand:V4SF 0 "register_operand" "=x")
@@ -18498,8 +18210,7 @@
(const_int 1)))]
"TARGET_SSE"
"movss\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssemov")
- (set_attr "mode" "SF")])
+ [(set_attr "type" "sse")])
(define_insn "sse_storess"
[(set (match_operand:SF 0 "memory_operand" "=m")
@@ -18508,20 +18219,17 @@
(parallel [(const_int 0)])))]
"TARGET_SSE"
"movss\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssemov")
- (set_attr "mode" "SF")])
+ [(set_attr "type" "sse")])
(define_insn "sse_shufps"
[(set (match_operand:V4SF 0 "register_operand" "=x")
(unspec:V4SF [(match_operand:V4SF 1 "register_operand" "0")
(match_operand:V4SF 2 "nonimmediate_operand" "xm")
- (match_operand:SI 3 "immediate_operand" "i")]
- UNSPEC_SHUFFLE))]
+ (match_operand:SI 3 "immediate_operand" "i")] 41))]
"TARGET_SSE"
;; @@@ check operand order for intel/nonintel syntax
"shufps\t{%3, %2, %0|%0, %2, %3}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "V4SF")])
+ [(set_attr "type" "sse")])
;; SSE arithmetic
@@ -18532,8 +18240,7 @@
(match_operand:V4SF 2 "nonimmediate_operand" "xm")))]
"TARGET_SSE"
"addps\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseadd")
- (set_attr "mode" "V4SF")])
+ [(set_attr "type" "sse")])
(define_insn "vmaddv4sf3"
[(set (match_operand:V4SF 0 "register_operand" "=x")
@@ -18544,8 +18251,7 @@
(const_int 1)))]
"TARGET_SSE"
"addss\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseadd")
- (set_attr "mode" "SF")])
+ [(set_attr "type" "sse")])
(define_insn "subv4sf3"
[(set (match_operand:V4SF 0 "register_operand" "=x")
@@ -18553,8 +18259,7 @@
(match_operand:V4SF 2 "nonimmediate_operand" "xm")))]
"TARGET_SSE"
"subps\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseadd")
- (set_attr "mode" "V4SF")])
+ [(set_attr "type" "sse")])
(define_insn "vmsubv4sf3"
[(set (match_operand:V4SF 0 "register_operand" "=x")
@@ -18565,8 +18270,7 @@
(const_int 1)))]
"TARGET_SSE"
"subss\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseadd")
- (set_attr "mode" "SF")])
+ [(set_attr "type" "sse")])
(define_insn "mulv4sf3"
[(set (match_operand:V4SF 0 "register_operand" "=x")
@@ -18574,8 +18278,7 @@
(match_operand:V4SF 2 "nonimmediate_operand" "xm")))]
"TARGET_SSE"
"mulps\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssemul")
- (set_attr "mode" "V4SF")])
+ [(set_attr "type" "sse")])
(define_insn "vmmulv4sf3"
[(set (match_operand:V4SF 0 "register_operand" "=x")
@@ -18586,8 +18289,7 @@
(const_int 1)))]
"TARGET_SSE"
"mulss\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssemul")
- (set_attr "mode" "SF")])
+ [(set_attr "type" "sse")])
(define_insn "divv4sf3"
[(set (match_operand:V4SF 0 "register_operand" "=x")
@@ -18595,8 +18297,7 @@
(match_operand:V4SF 2 "nonimmediate_operand" "xm")))]
"TARGET_SSE"
"divps\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssediv")
- (set_attr "mode" "V4SF")])
+ [(set_attr "type" "sse")])
(define_insn "vmdivv4sf3"
[(set (match_operand:V4SF 0 "register_operand" "=x")
@@ -18607,8 +18308,7 @@
(const_int 1)))]
"TARGET_SSE"
"divss\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssediv")
- (set_attr "mode" "SF")])
+ [(set_attr "type" "sse")])
;; SSE square root/reciprocal
@@ -18616,52 +18316,45 @@
(define_insn "rcpv4sf2"
[(set (match_operand:V4SF 0 "register_operand" "=x")
(unspec:V4SF
- [(match_operand:V4SF 1 "nonimmediate_operand" "xm")] UNSPEC_RCP))]
+ [(match_operand:V4SF 1 "nonimmediate_operand" "xm")] 42))]
"TARGET_SSE"
"rcpps\t{%1, %0|%0, %1}"
- [(set_attr "type" "sse")
- (set_attr "mode" "V4SF")])
+ [(set_attr "type" "sse")])
(define_insn "vmrcpv4sf2"
[(set (match_operand:V4SF 0 "register_operand" "=x")
(vec_merge:V4SF
- (unspec:V4SF [(match_operand:V4SF 1 "nonimmediate_operand" "xm")]
- UNSPEC_RCP)
+ (unspec:V4SF [(match_operand:V4SF 1 "nonimmediate_operand" "xm")] 42)
(match_operand:V4SF 2 "register_operand" "0")
(const_int 1)))]
"TARGET_SSE"
"rcpss\t{%1, %0|%0, %1}"
- [(set_attr "type" "sse")
- (set_attr "mode" "SF")])
+ [(set_attr "type" "sse")])
(define_insn "rsqrtv4sf2"
[(set (match_operand:V4SF 0 "register_operand" "=x")
(unspec:V4SF
- [(match_operand:V4SF 1 "nonimmediate_operand" "xm")] UNSPEC_RSQRT))]
+ [(match_operand:V4SF 1 "nonimmediate_operand" "xm")] 43))]
"TARGET_SSE"
"rsqrtps\t{%1, %0|%0, %1}"
- [(set_attr "type" "sse")
- (set_attr "mode" "V4SF")])
+ [(set_attr "type" "sse")])
(define_insn "vmrsqrtv4sf2"
[(set (match_operand:V4SF 0 "register_operand" "=x")
(vec_merge:V4SF
- (unspec:V4SF [(match_operand:V4SF 1 "nonimmediate_operand" "xm")]
- UNSPEC_RSQRT)
+ (unspec:V4SF [(match_operand:V4SF 1 "nonimmediate_operand" "xm")] 43)
(match_operand:V4SF 2 "register_operand" "0")
(const_int 1)))]
"TARGET_SSE"
"rsqrtss\t{%1, %0|%0, %1}"
- [(set_attr "type" "sse")
- (set_attr "mode" "SF")])
+ [(set_attr "type" "sse")])
(define_insn "sqrtv4sf2"
[(set (match_operand:V4SF 0 "register_operand" "=x")
(sqrt:V4SF (match_operand:V4SF 1 "nonimmediate_operand" "xm")))]
"TARGET_SSE"
"sqrtps\t{%1, %0|%0, %1}"
- [(set_attr "type" "sse")
- (set_attr "mode" "V4SF")])
+ [(set_attr "type" "sse")])
(define_insn "vmsqrtv4sf2"
[(set (match_operand:V4SF 0 "register_operand" "=x")
@@ -18671,358 +18364,206 @@
(const_int 1)))]
"TARGET_SSE"
"sqrtss\t{%1, %0|%0, %1}"
- [(set_attr "type" "sse")
- (set_attr "mode" "SF")])
+ [(set_attr "type" "sse")])
;; SSE logical operations.
-;; SSE defines logical operations on floating point values. This brings
-;; interesting challenge to RTL representation where logicals are only valid
-;; on integral types. We deal with this by representing the floating point
-;; logical as logical on arguments casted to TImode as this is what hardware
-;; really does. Unfortunately hardware requires the type information to be
-;; present and thus we must avoid subregs from being simplified and elliminated
-;; in later compilation phases.
-;;
-;; We have following variants from each instruction:
-;; sse_andsf3 - the operation taking V4SF vector operands
-;; and doing TImode cast on them
-;; *sse_andsf3_memory - the operation taking one memory operand casted to
-;; TImode, since backend insist on elliminating casts
-;; on memory operands
-;; sse_andti3_sf_1 - the operation taking SF scalar operands.
-;; We can not accept memory operand here as instruction reads
-;; whole scalar. This is generated only post reload by GCC
-;; scalar float operations that expands to logicals (fabs)
-;; sse_andti3_sf_2 - the operation taking SF scalar input and TImode
-;; memory operand. Eventually combine can be able
-;; to synthetize these using splitter.
-;; sse2_anddf3, *sse2_anddf3_memory
-;;
-;;
;; These are not called andti3 etc. because we really really don't want
;; the compiler to widen DImode ands to TImode ands and then try to move
;; into DImode subregs of SSE registers, and them together, and move out
;; of DImode subregs again!
-;; SSE1 single precision floating point logical operation
-(define_expand "sse_andv4sf3"
- [(set (subreg:TI (match_operand:V4SF 0 "register_operand" "") 0)
- (and:TI (subreg:TI (match_operand:V4SF 1 "register_operand" "") 0)
- (subreg:TI (match_operand:V4SF 2 "nonimmediate_operand" "") 0)))]
- "TARGET_SSE"
- "")
-
-(define_insn "*sse_andv4sf3"
- [(set (subreg:TI (match_operand:V4SF 0 "register_operand" "=x") 0)
- (and:TI (match_operand:TI 1 "nonimmediate_operand" "%0")
- (match_operand:TI 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE
- && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
- "andps\t{%2, %0|%0, %2}"
- [(set_attr "type" "sselog")
- (set_attr "mode" "V4SF")])
-(define_insn "*sse_andsf3"
- [(set (subreg:TI (match_operand:SF 0 "register_operand" "=x") 0)
- (and:TI (match_operand:TI 1 "nonimmediate_operand" "%0")
- (match_operand:TI 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE
- && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
- "andps\t{%2, %0|%0, %2}"
- [(set_attr "type" "sselog")
- (set_attr "mode" "V4SF")])
-
-(define_expand "sse_nandv4sf3"
- [(set (subreg:TI (match_operand:V4SF 0 "register_operand" "") 0)
- (and:TI (not:TI (subreg:TI (match_operand:V4SF 1 "register_operand" "") 0))
- (subreg:TI (match_operand:V4SF 2 "nonimmediate_operand" "") 0)))]
- "TARGET_SSE"
- "")
+(define_insn "*sse_andti3_df_1"
+ [(set (subreg:TI (match_operand:DF 0 "register_operand" "=Y") 0)
+ (and:TI (subreg:TI (match_operand:DF 1 "register_operand" "%0") 0)
+ (subreg:TI (match_operand:DF 2 "register_operand" "Y") 0)))]
+ "TARGET_SSE2"
+ "andpd\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sse")])
-(define_insn "*sse_nandv4sf3"
- [(set (subreg:TI (match_operand:V4SF 0 "register_operand" "=x") 0)
- (and:TI (not:TI (match_operand:TI 1 "register_operand" "0"))
- (match_operand:TI 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE"
- "andnps\t{%2, %0|%0, %2}"
- [(set_attr "type" "sselog")
- (set_attr "mode" "V4SF")])
+(define_insn "*sse_andti3_df_2"
+ [(set (subreg:TI (match_operand:DF 0 "register_operand" "=Y") 0)
+ (and:TI (subreg:TI (match_operand:DF 1 "register_operand" "0") 0)
+ (match_operand:TI 2 "nonimmediate_operand" "Ym")))]
+ "TARGET_SSE2"
+ "andpd\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sse")])
-(define_insn "*sse_nandsf3"
+(define_insn "*sse_andti3_sf_1"
[(set (subreg:TI (match_operand:SF 0 "register_operand" "=x") 0)
- (and:TI (not:TI (match_operand:TI 1 "register_operand" "0"))
- (match_operand:TI 2 "nonimmediate_operand" "xm")))]
+ (and:TI (subreg:TI (match_operand:SF 1 "register_operand" "%0") 0)
+ (subreg:TI (match_operand:SF 2 "register_operand" "x") 0)))]
"TARGET_SSE"
- "andnps\t{%2, %0|%0, %2}"
- [(set_attr "type" "sselog")
- (set_attr "mode" "V4SF")])
-
-(define_expand "sse_iorv4sf3"
- [(set (subreg:TI (match_operand:V4SF 0 "register_operand" "") 0)
- (ior:TI (subreg:TI (match_operand:V4SF 1 "register_operand" "") 0)
- (subreg:TI (match_operand:V4SF 2 "nonimmediate_operand" "") 0)))]
- "TARGET_SSE"
- "")
-
-(define_insn "*sse_iorv4sf3"
- [(set (subreg:TI (match_operand:V4SF 0 "register_operand" "=x") 0)
- (ior:TI (match_operand:TI 1 "nonimmediate_operand" "%0")
- (match_operand:TI 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE
- && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
- "orps\t{%2, %0|%0, %2}"
- [(set_attr "type" "sselog")
- (set_attr "mode" "V4SF")])
+ "andps\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sse")])
-(define_insn "*sse_iorsf3"
+(define_insn "*sse_andti3_sf_2"
[(set (subreg:TI (match_operand:SF 0 "register_operand" "=x") 0)
- (ior:TI (match_operand:TI 1 "nonimmediate_operand" "%0")
+ (and:TI (subreg:TI (match_operand:SF 1 "register_operand" "0") 0)
(match_operand:TI 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE
- && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
- "orps\t{%2, %0|%0, %2}"
- [(set_attr "type" "sselog")
- (set_attr "mode" "V4SF")])
-
-(define_expand "sse_xorv4sf3"
- [(set (subreg:TI (match_operand:V4SF 0 "register_operand" "") 0)
- (xor:TI (subreg:TI (match_operand:V4SF 1 "register_operand" "") 0)
- (subreg:TI (match_operand:V4SF 2 "nonimmediate_operand" "") 0)))]
- "TARGET_SSE
- && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
- "")
+ "TARGET_SSE"
+ "andps\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sse")])
-(define_insn "*sse_xorv4sf3"
- [(set (subreg:TI (match_operand:V4SF 0 "register_operand" "=x") 0)
- (xor:TI (match_operand:TI 1 "nonimmediate_operand" "%0")
+(define_insn "sse_andti3"
+ [(set (match_operand:TI 0 "register_operand" "=x")
+ (and:TI (match_operand:TI 1 "nonimmediate_operand" "%0")
(match_operand:TI 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE
+ "TARGET_SSE && !TARGET_SSE2
&& (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
- "xorps\t{%2, %0|%0, %2}"
- [(set_attr "type" "sselog")
- (set_attr "mode" "V4SF")])
+ "andps\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sse")])
-(define_insn "*sse_xorsf3"
- [(set (subreg:TI (match_operand:SF 0 "register_operand" "=x") 0)
- (xor:TI (match_operand:TI 1 "nonimmediate_operand" "%0")
+(define_insn "*sse_andti3_sse2"
+ [(set (match_operand:TI 0 "register_operand" "=x")
+ (and:TI (match_operand:TI 1 "nonimmediate_operand" "%0")
(match_operand:TI 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE
+ "TARGET_SSE2
&& (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
- "xorps\t{%2, %0|%0, %2}"
- [(set_attr "type" "sselog")
- (set_attr "mode" "V4SF")])
-
-;; SSE2 double precision floating point logical operation
+ "pand\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sse")])
-(define_expand "sse2_andv2df3"
- [(set (subreg:TI (match_operand:V2DF 0 "register_operand" "") 0)
- (and:TI (subreg:TI (match_operand:V2DF 1 "register_operand" "") 0)
- (subreg:TI (match_operand:V2DF 2 "nonimmediate_operand" "") 0)))]
+(define_insn "*sse_nandti3_df"
+ [(set (subreg:TI (match_operand:DF 0 "register_operand" "=Y") 0)
+ (and:TI (not:TI (subreg:TI (match_operand:DF 1 "register_operand" "0") 0))
+ (match_operand:TI 2 "nonimmediate_operand" "Ym")))]
"TARGET_SSE2"
- "")
+ "andnpd\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sse")])
-(define_insn "*sse2_andv2df3"
- [(set (subreg:TI (match_operand:V2DF 0 "register_operand" "=x") 0)
- (and:TI (match_operand:TI 1 "nonimmediate_operand" "%0")
+(define_insn "*sse_nandti3_sf"
+ [(set (subreg:TI (match_operand:SF 0 "register_operand" "=x") 0)
+ (and:TI (not:TI (subreg:TI (match_operand:SF 1 "register_operand" "0") 0))
(match_operand:TI 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2
- && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
- "andpd\t{%2, %0|%0, %2}"
- [(set_attr "type" "sselog")
- (set_attr "mode" "V2DF")])
+ "TARGET_SSE"
+ "andnps\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sse")])
-(define_insn "*sse2_andv2df3"
- [(set (subreg:TI (match_operand:DF 0 "register_operand" "=x") 0)
- (and:TI (match_operand:TI 1 "nonimmediate_operand" "%0")
+(define_insn "sse_nandti3"
+ [(set (match_operand:TI 0 "register_operand" "=x")
+ (and:TI (not:TI (match_operand:TI 1 "register_operand" "0"))
(match_operand:TI 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2
- && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
- "andpd\t{%2, %0|%0, %2}"
- [(set_attr "type" "sselog")
- (set_attr "mode" "V2DF")])
+ "TARGET_SSE && !TARGET_SSE2"
+ "andnps\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sse")])
-(define_expand "sse2_nandv2df3"
- [(set (subreg:TI (match_operand:V2DF 0 "register_operand" "") 0)
- (and:TI (not:TI (subreg:TI (match_operand:V2DF 1 "register_operand" "") 0))
- (subreg:TI (match_operand:V2DF 2 "nonimmediate_operand" "") 0)))]
+(define_insn "*sse_nandti3_sse2"
+ [(set (match_operand:TI 0 "register_operand" "=x")
+ (and:TI (not:TI (match_operand:TI 1 "register_operand" "0"))
+ (match_operand:TI 2 "nonimmediate_operand" "xm")))]
"TARGET_SSE2"
- "")
+ "pnand\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sse")])
-(define_insn "*sse2_nandv2df3"
- [(set (subreg:TI (match_operand:V2DF 0 "register_operand" "=x") 0)
- (and:TI (not:TI (match_operand:TI 1 "register_operand" "0"))
- (match_operand:TI 2 "nonimmediate_operand" "xm")))]
+(define_insn "*sse_iorti3_df_1"
+ [(set (subreg:TI (match_operand:DF 0 "register_operand" "=Y") 0)
+ (ior:TI (subreg:TI (match_operand:DF 1 "register_operand" "%0") 0)
+ (subreg:TI (match_operand:DF 2 "register_operand" "Y") 0)))]
"TARGET_SSE2"
- "andnpd\t{%2, %0|%0, %2}"
- [(set_attr "type" "sselog")
- (set_attr "mode" "V2DF")])
+ "orpd\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sse")])
-(define_insn "*sse_nandti3_df"
+(define_insn "*sse_iorti3_df_2"
[(set (subreg:TI (match_operand:DF 0 "register_operand" "=Y") 0)
- (and:TI (not:TI (match_operand:TI 1 "register_operand" "0"))
+ (ior:TI (subreg:TI (match_operand:DF 1 "register_operand" "0") 0)
(match_operand:TI 2 "nonimmediate_operand" "Ym")))]
"TARGET_SSE2"
- "andnpd\t{%2, %0|%0, %2}"
- [(set_attr "type" "sselog")
- (set_attr "mode" "V2DF")])
+ "orpd\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sse")])
-(define_expand "sse2_iorv2df3"
- [(set (subreg:TI (match_operand:V2DF 0 "register_operand" "") 0)
- (ior:TI (subreg:TI (match_operand:V2DF 1 "register_operand" "") 0)
- (subreg:TI (match_operand:V2DF 2 "nonimmediate_operand" "") 0)))]
- "TARGET_SSE2"
- "")
+(define_insn "*sse_iorti3_sf_1"
+ [(set (subreg:TI (match_operand:SF 0 "register_operand" "=x") 0)
+ (ior:TI (subreg:TI (match_operand:SF 1 "register_operand" "%0") 0)
+ (subreg:TI (match_operand:SF 2 "register_operand" "x") 0)))]
+ "TARGET_SSE"
+ "orps\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sse")])
+
+(define_insn "*sse_iorti3_sf_2"
+ [(set (subreg:TI (match_operand:SF 0 "register_operand" "=x") 0)
+ (ior:TI (subreg:TI (match_operand:SF 1 "register_operand" "0") 0)
+ (match_operand:TI 2 "nonimmediate_operand" "xm")))]
+ "TARGET_SSE"
+ "orps\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sse")])
-(define_insn "*sse2_iorv2df3"
- [(set (subreg:TI (match_operand:V2DF 0 "register_operand" "=x") 0)
+(define_insn "sse_iorti3"
+ [(set (match_operand:TI 0 "register_operand" "=x")
(ior:TI (match_operand:TI 1 "nonimmediate_operand" "%0")
(match_operand:TI 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2
+ "TARGET_SSE && !TARGET_SSE2
&& (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
- "orpd\t{%2, %0|%0, %2}"
- [(set_attr "type" "sselog")
- (set_attr "mode" "V2DF")])
+ "orps\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sse")])
-(define_insn "*sse2_iordf3"
- [(set (subreg:TI (match_operand:DF 0 "register_operand" "=x") 0)
+(define_insn "*sse_iorti3_sse2"
+ [(set (match_operand:TI 0 "register_operand" "=x")
(ior:TI (match_operand:TI 1 "nonimmediate_operand" "%0")
(match_operand:TI 2 "nonimmediate_operand" "xm")))]
"TARGET_SSE2
&& (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
- "orpd\t{%2, %0|%0, %2}"
- [(set_attr "type" "sselog")
- (set_attr "mode" "V2DF")])
+ "por\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sse")])
-(define_expand "sse2_xorv2df3"
- [(set (subreg:TI (match_operand:V2DF 0 "register_operand" "") 0)
- (xor:TI (subreg:TI (match_operand:V2DF 1 "nonimmediate_operand" "") 0)
- (subreg:TI (match_operand:V2DF 2 "nonimmediate_operand" "") 0)))]
+(define_insn "*sse_xorti3_df_1"
+ [(set (subreg:TI (match_operand:DF 0 "register_operand" "=Y") 0)
+ (xor:TI (subreg:TI (match_operand:DF 1 "register_operand" "%0") 0)
+ (subreg:TI (match_operand:DF 2 "register_operand" "Y") 0)))]
"TARGET_SSE2"
- "")
-
-(define_insn "*sse2_xorv2df3"
- [(set (subreg:TI (match_operand:V2DF 0 "register_operand" "=x") 0)
- (xor:TI (match_operand:TI 1 "nonimmediate_operand" "%0")
- (match_operand:TI 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2
- && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
"xorpd\t{%2, %0|%0, %2}"
- [(set_attr "type" "sselog")
- (set_attr "mode" "V2DF")])
+ [(set_attr "type" "sse")])
-(define_insn "*sse2_xordf3"
- [(set (subreg:TI (match_operand:DF 0 "register_operand" "=x") 0)
- (xor:TI (match_operand:TI 1 "nonimmediate_operand" "%0")
- (match_operand:TI 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2
- && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
+(define_insn "*sse_xorti3_df_2"
+ [(set (subreg:TI (match_operand:DF 0 "register_operand" "=Y") 0)
+ (xor:TI (subreg:TI (match_operand:DF 1 "register_operand" "0") 0)
+ (match_operand:TI 2 "nonimmediate_operand" "Ym")))]
+ "TARGET_SSE2"
"xorpd\t{%2, %0|%0, %2}"
- [(set_attr "type" "sselog")
- (set_attr "mode" "V2DF")])
-
-;; SSE2 integral logicals. These patterns must always come after floating
-;; point ones since we don't want compiler to use integer opcodes on floating
-;; point SSE values to avoid matching of subregs in the match_operand.
-(define_insn "*sse2_andti3"
- [(set (match_operand:TI 0 "register_operand" "=x")
- (and:TI (match_operand:TI 1 "nonimmediate_operand" "%0")
- (match_operand:TI 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2
- && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
- "pand\t{%2, %0|%0, %2}"
- [(set_attr "type" "sselog")
- (set_attr "mode" "TI")])
+ [(set_attr "type" "sse")])
-(define_insn "sse2_andv2di3"
- [(set (match_operand:V2DI 0 "register_operand" "=x")
- (and:V2DI (match_operand:V2DI 1 "nonimmediate_operand" "%0")
- (match_operand:V2DI 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2
- && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
- "pand\t{%2, %0|%0, %2}"
- [(set_attr "type" "sselog")
- (set_attr "mode" "TI")])
+(define_insn "*sse_xorti3_sf_1"
+ [(set (subreg:TI (match_operand:SF 0 "register_operand" "=x") 0)
+ (xor:TI (subreg:TI (match_operand:SF 1 "register_operand" "%0") 0)
+ (subreg:TI (match_operand:SF 2 "register_operand" "x") 0)))]
+ "TARGET_SSE"
+ "xorps\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sse")])
-(define_insn "*sse2_nandti3"
- [(set (match_operand:TI 0 "register_operand" "=x")
- (and:TI (not:TI (match_operand:TI 1 "register_operand" "0"))
+(define_insn "*sse_xorti3_sf_2"
+ [(set (subreg:TI (match_operand:SF 0 "register_operand" "=x") 0)
+ (xor:TI (subreg:TI (match_operand:SF 1 "register_operand" "0") 0)
(match_operand:TI 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2"
- "pandn\t{%2, %0|%0, %2}"
- [(set_attr "type" "sselog")
- (set_attr "mode" "TI")])
-
-(define_insn "sse2_nandv2di3"
- [(set (match_operand:V2DI 0 "register_operand" "=x")
- (and:V2DI (not:V2DI (match_operand:V2DI 1 "nonimmediate_operand" "0"))
- (match_operand:V2DI 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2
- && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
- "pandn\t{%2, %0|%0, %2}"
- [(set_attr "type" "sselog")
- (set_attr "mode" "TI")])
+ "TARGET_SSE"
+ "xorps\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sse")])
-(define_insn "*sse2_iorti3"
+(define_insn "sse_xorti3"
[(set (match_operand:TI 0 "register_operand" "=x")
- (ior:TI (match_operand:TI 1 "nonimmediate_operand" "%0")
+ (xor:TI (match_operand:TI 1 "nonimmediate_operand" "%0")
(match_operand:TI 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2
- && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
- "por\t{%2, %0|%0, %2}"
- [(set_attr "type" "sselog")
- (set_attr "mode" "TI")])
-
-(define_insn "sse2_iorv2di3"
- [(set (match_operand:V2DI 0 "register_operand" "=x")
- (ior:V2DI (match_operand:V2DI 1 "nonimmediate_operand" "%0")
- (match_operand:V2DI 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2
+ "TARGET_SSE && !TARGET_SSE2
&& (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
- "por\t{%2, %0|%0, %2}"
- [(set_attr "type" "sselog")
- (set_attr "mode" "TI")])
+ "xorps\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sse")])
-(define_insn "*sse2_xorti3"
+(define_insn "*sse_xorti3_sse2"
[(set (match_operand:TI 0 "register_operand" "=x")
(xor:TI (match_operand:TI 1 "nonimmediate_operand" "%0")
(match_operand:TI 2 "nonimmediate_operand" "xm")))]
"TARGET_SSE2
&& (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
"pxor\t{%2, %0|%0, %2}"
- [(set_attr "type" "sselog")
- (set_attr "mode" "TI")])
-
-(define_insn "sse2_xorv2di3"
- [(set (match_operand:V2DI 0 "register_operand" "=x")
- (xor:V2DI (match_operand:V2DI 1 "nonimmediate_operand" "%0")
- (match_operand:V2DI 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2
- && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
- "pxor\t{%2, %0|%0, %2}"
- [(set_attr "type" "sselog")
- (set_attr "mode" "TI")])
+ [(set_attr "type" "sse")])
;; Use xor, but don't show input operands so they aren't live before
;; this insn.
(define_insn "sse_clrv4sf"
[(set (match_operand:V4SF 0 "register_operand" "=x")
- (unspec:V4SF [(const_int 0)] UNSPEC_NOP))]
+ (unspec:V4SF [(const_int 0)] 45))]
"TARGET_SSE"
"xorps\t{%0, %0|%0, %0}"
- [(set_attr "type" "sselog")
- (set_attr "memory" "none")
- (set_attr "mode" "V4SF")])
-
-;; Use xor, but don't show input operands so they aren't live before
-;; this insn.
-(define_insn "sse_clrv2df"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (unspec:V2DF [(const_int 0)] UNSPEC_NOP))]
- "TARGET_SSE2"
- "xorpd\t{%0, %0|%0, %0}"
- [(set_attr "type" "sselog")
- (set_attr "memory" "none")
- (set_attr "mode" "V4SF")])
+ [(set_attr "type" "sse")
+ (set_attr "memory" "none")])
;; SSE mask-generating compares
@@ -19033,8 +18574,7 @@
(match_operand:V4SF 2 "register_operand" "x")]))]
"TARGET_SSE"
"cmp%D3ps\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssecmp")
- (set_attr "mode" "V4SF")])
+ [(set_attr "type" "sse")])
(define_insn "maskncmpv4sf3"
[(set (match_operand:V4SI 0 "register_operand" "=x")
@@ -19049,8 +18589,7 @@
else
return "cmpn%D3ps\t{%2, %0|%0, %2}";
}
- [(set_attr "type" "ssecmp")
- (set_attr "mode" "V4SF")])
+ [(set_attr "type" "sse")])
(define_insn "vmmaskcmpv4sf3"
[(set (match_operand:V4SI 0 "register_operand" "=x")
@@ -19058,12 +18597,11 @@
(match_operator:V4SI 3 "sse_comparison_operator"
[(match_operand:V4SF 1 "register_operand" "0")
(match_operand:V4SF 2 "register_operand" "x")])
- (subreg:V4SI (match_dup 1) 0)
+ (match_dup 1)
(const_int 1)))]
"TARGET_SSE"
"cmp%D3ss\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssecmp")
- (set_attr "mode" "SF")])
+ [(set_attr "type" "sse")])
(define_insn "vmmaskncmpv4sf3"
[(set (match_operand:V4SI 0 "register_operand" "=x")
@@ -19081,34 +18619,33 @@
else
return "cmpn%D3ss\t{%2, %0|%0, %2}";
}
- [(set_attr "type" "ssecmp")
- (set_attr "mode" "SF")])
+ [(set_attr "type" "sse")])
(define_insn "sse_comi"
[(set (reg:CCFP 17)
- (compare:CCFP (vec_select:SF
- (match_operand:V4SF 0 "register_operand" "x")
- (parallel [(const_int 0)]))
- (vec_select:SF
- (match_operand:V4SF 1 "register_operand" "x")
- (parallel [(const_int 0)]))))]
+ (match_operator:CCFP 2 "sse_comparison_operator"
+ [(vec_select:SF
+ (match_operand:V4SF 0 "register_operand" "x")
+ (parallel [(const_int 0)]))
+ (vec_select:SF
+ (match_operand:V4SF 1 "register_operand" "x")
+ (parallel [(const_int 0)]))]))]
"TARGET_SSE"
"comiss\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecmp")
- (set_attr "mode" "SF")])
+ [(set_attr "type" "sse")])
(define_insn "sse_ucomi"
[(set (reg:CCFPU 17)
- (compare:CCFPU (vec_select:SF
- (match_operand:V4SF 0 "register_operand" "x")
- (parallel [(const_int 0)]))
- (vec_select:SF
- (match_operand:V4SF 1 "register_operand" "x")
- (parallel [(const_int 0)]))))]
+ (match_operator:CCFPU 2 "sse_comparison_operator"
+ [(vec_select:SF
+ (match_operand:V4SF 0 "register_operand" "x")
+ (parallel [(const_int 0)]))
+ (vec_select:SF
+ (match_operand:V4SF 1 "register_operand" "x")
+ (parallel [(const_int 0)]))]))]
"TARGET_SSE"
"ucomiss\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecmp")
- (set_attr "mode" "SF")])
+ [(set_attr "type" "sse")])
;; SSE unpack
@@ -19129,8 +18666,7 @@
(const_int 5)))]
"TARGET_SSE"
"unpckhps\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "V4SF")])
+ [(set_attr "type" "sse")])
(define_insn "sse_unpcklps"
[(set (match_operand:V4SF 0 "register_operand" "=x")
@@ -19148,8 +18684,7 @@
(const_int 5)))]
"TARGET_SSE"
"unpcklps\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "V4SF")])
+ [(set_attr "type" "sse")])
;; SSE min/max
@@ -19160,8 +18695,7 @@
(match_operand:V4SF 2 "nonimmediate_operand" "xm")))]
"TARGET_SSE"
"maxps\t{%2, %0|%0, %2}"
- [(set_attr "type" "sse")
- (set_attr "mode" "V4SF")])
+ [(set_attr "type" "sse")])
(define_insn "vmsmaxv4sf3"
[(set (match_operand:V4SF 0 "register_operand" "=x")
@@ -19172,8 +18706,7 @@
(const_int 1)))]
"TARGET_SSE"
"maxss\t{%2, %0|%0, %2}"
- [(set_attr "type" "sse")
- (set_attr "mode" "SF")])
+ [(set_attr "type" "sse")])
(define_insn "sminv4sf3"
[(set (match_operand:V4SF 0 "register_operand" "=x")
@@ -19181,8 +18714,7 @@
(match_operand:V4SF 2 "nonimmediate_operand" "xm")))]
"TARGET_SSE"
"minps\t{%2, %0|%0, %2}"
- [(set_attr "type" "sse")
- (set_attr "mode" "V4SF")])
+ [(set_attr "type" "sse")])
(define_insn "vmsminv4sf3"
[(set (match_operand:V4SF 0 "register_operand" "=x")
@@ -19193,8 +18725,8 @@
(const_int 1)))]
"TARGET_SSE"
"minss\t{%2, %0|%0, %2}"
- [(set_attr "type" "sse")
- (set_attr "mode" "SF")])
+ [(set_attr "type" "sse")])
+
;; SSE <-> integer/MMX conversions
@@ -19207,8 +18739,7 @@
(const_int 12)))]
"TARGET_SSE"
"cvtpi2ps\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "V4SF")])
+ [(set_attr "type" "sse")])
(define_insn "cvtps2pi"
[(set (match_operand:V2SI 0 "register_operand" "=y")
@@ -19217,19 +18748,16 @@
(parallel [(const_int 0) (const_int 1)])))]
"TARGET_SSE"
"cvtps2pi\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "V4SF")])
+ [(set_attr "type" "sse")])
(define_insn "cvttps2pi"
[(set (match_operand:V2SI 0 "register_operand" "=y")
(vec_select:V2SI
- (unspec:V4SI [(match_operand:V4SF 1 "nonimmediate_operand" "xm")]
- UNSPEC_FIX)
+ (unspec:V4SI [(match_operand:V4SF 1 "nonimmediate_operand" "xm")] 30)
(parallel [(const_int 0) (const_int 1)])))]
"TARGET_SSE"
"cvttps2pi\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "SF")])
+ [(set_attr "type" "sse")])
(define_insn "cvtsi2ss"
[(set (match_operand:V4SF 0 "register_operand" "=x")
@@ -19240,21 +18768,7 @@
(const_int 14)))]
"TARGET_SSE"
"cvtsi2ss\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "SF")])
-
-(define_insn "cvtsi2ssq"
- [(set (match_operand:V4SF 0 "register_operand" "=x,x")
- (vec_merge:V4SF
- (match_operand:V4SF 1 "register_operand" "0,0")
- (vec_duplicate:V4SF
- (float:SF (match_operand:DI 2 "nonimmediate_operand" "r,rm")))
- (const_int 14)))]
- "TARGET_SSE && TARGET_64BIT"
- "cvtsi2ssq\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssecvt")
- (set_attr "athlon_decode" "vector,vector")
- (set_attr "mode" "SF")])
+ [(set_attr "type" "sse")])
(define_insn "cvtss2si"
[(set (match_operand:SI 0 "register_operand" "=r")
@@ -19263,42 +18777,16 @@
(parallel [(const_int 0)])))]
"TARGET_SSE"
"cvtss2si\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "SF")])
-
-(define_insn "cvtss2siq"
- [(set (match_operand:DI 0 "register_operand" "=r,r")
- (vec_select:DI
- (fix:V4DI (match_operand:V4SF 1 "nonimmediate_operand" "x,m"))
- (parallel [(const_int 0)])))]
- "TARGET_SSE"
- "cvtss2siq\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt")
- (set_attr "athlon_decode" "vector,vector")
- (set_attr "mode" "SF")])
+ [(set_attr "type" "sse")])
(define_insn "cvttss2si"
[(set (match_operand:SI 0 "register_operand" "=r")
(vec_select:SI
- (unspec:V4SI [(match_operand:V4SF 1 "nonimmediate_operand" "xm")]
- UNSPEC_FIX)
+ (unspec:V4SI [(match_operand:V4SF 1 "nonimmediate_operand" "xm")] 30)
(parallel [(const_int 0)])))]
"TARGET_SSE"
"cvttss2si\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "SF")])
-
-(define_insn "cvttss2siq"
- [(set (match_operand:DI 0 "register_operand" "=r,r")
- (vec_select:DI
- (unspec:V4DI [(match_operand:V4SF 1 "nonimmediate_operand" "x,xm")]
- UNSPEC_FIX)
- (parallel [(const_int 0)])))]
- "TARGET_SSE && TARGET_64BIT"
- "cvttss2siq\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "SF")
- (set_attr "athlon_decode" "vector,vector")])
+ [(set_attr "type" "sse")])
;; MMX insns
@@ -19307,77 +18795,59 @@
(define_insn "addv8qi3"
[(set (match_operand:V8QI 0 "register_operand" "=y")
- (plus:V8QI (match_operand:V8QI 1 "register_operand" "%0")
+ (plus:V8QI (match_operand:V8QI 1 "register_operand" "0")
(match_operand:V8QI 2 "nonimmediate_operand" "ym")))]
"TARGET_MMX"
"paddb\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxadd")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "mmx")])
(define_insn "addv4hi3"
[(set (match_operand:V4HI 0 "register_operand" "=y")
- (plus:V4HI (match_operand:V4HI 1 "register_operand" "%0")
+ (plus:V4HI (match_operand:V4HI 1 "register_operand" "0")
(match_operand:V4HI 2 "nonimmediate_operand" "ym")))]
"TARGET_MMX"
"paddw\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxadd")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "mmx")])
(define_insn "addv2si3"
[(set (match_operand:V2SI 0 "register_operand" "=y")
- (plus:V2SI (match_operand:V2SI 1 "register_operand" "%0")
+ (plus:V2SI (match_operand:V2SI 1 "register_operand" "0")
(match_operand:V2SI 2 "nonimmediate_operand" "ym")))]
"TARGET_MMX"
"paddd\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxadd")
- (set_attr "mode" "DI")])
-
-(define_insn "mmx_adddi3"
- [(set (match_operand:DI 0 "register_operand" "=y")
- (unspec:DI
- [(plus:DI (match_operand:DI 1 "register_operand" "%0")
- (match_operand:DI 2 "nonimmediate_operand" "ym"))]
- UNSPEC_NOP))]
- "TARGET_MMX"
- "paddq\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxadd")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "mmx")])
(define_insn "ssaddv8qi3"
[(set (match_operand:V8QI 0 "register_operand" "=y")
- (ss_plus:V8QI (match_operand:V8QI 1 "register_operand" "%0")
+ (ss_plus:V8QI (match_operand:V8QI 1 "register_operand" "0")
(match_operand:V8QI 2 "nonimmediate_operand" "ym")))]
"TARGET_MMX"
"paddsb\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxadd")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "mmx")])
(define_insn "ssaddv4hi3"
[(set (match_operand:V4HI 0 "register_operand" "=y")
- (ss_plus:V4HI (match_operand:V4HI 1 "register_operand" "%0")
+ (ss_plus:V4HI (match_operand:V4HI 1 "register_operand" "0")
(match_operand:V4HI 2 "nonimmediate_operand" "ym")))]
"TARGET_MMX"
"paddsw\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxadd")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "mmx")])
(define_insn "usaddv8qi3"
[(set (match_operand:V8QI 0 "register_operand" "=y")
- (us_plus:V8QI (match_operand:V8QI 1 "register_operand" "%0")
+ (us_plus:V8QI (match_operand:V8QI 1 "register_operand" "0")
(match_operand:V8QI 2 "nonimmediate_operand" "ym")))]
"TARGET_MMX"
"paddusb\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxadd")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "mmx")])
(define_insn "usaddv4hi3"
[(set (match_operand:V4HI 0 "register_operand" "=y")
- (us_plus:V4HI (match_operand:V4HI 1 "register_operand" "%0")
+ (us_plus:V4HI (match_operand:V4HI 1 "register_operand" "0")
(match_operand:V4HI 2 "nonimmediate_operand" "ym")))]
"TARGET_MMX"
"paddusw\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxadd")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "mmx")])
(define_insn "subv8qi3"
[(set (match_operand:V8QI 0 "register_operand" "=y")
@@ -19385,8 +18855,7 @@
(match_operand:V8QI 2 "nonimmediate_operand" "ym")))]
"TARGET_MMX"
"psubb\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxadd")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "mmx")])
(define_insn "subv4hi3"
[(set (match_operand:V4HI 0 "register_operand" "=y")
@@ -19394,8 +18863,7 @@
(match_operand:V4HI 2 "nonimmediate_operand" "ym")))]
"TARGET_MMX"
"psubw\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxadd")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "mmx")])
(define_insn "subv2si3"
[(set (match_operand:V2SI 0 "register_operand" "=y")
@@ -19403,19 +18871,7 @@
(match_operand:V2SI 2 "nonimmediate_operand" "ym")))]
"TARGET_MMX"
"psubd\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxadd")
- (set_attr "mode" "DI")])
-
-(define_insn "mmx_subdi3"
- [(set (match_operand:DI 0 "register_operand" "=y")
- (unspec:DI
- [(minus:DI (match_operand:DI 1 "register_operand" "0")
- (match_operand:DI 2 "nonimmediate_operand" "ym"))]
- UNSPEC_NOP))]
- "TARGET_MMX"
- "psubq\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxadd")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "mmx")])
(define_insn "sssubv8qi3"
[(set (match_operand:V8QI 0 "register_operand" "=y")
@@ -19423,8 +18879,7 @@
(match_operand:V8QI 2 "nonimmediate_operand" "ym")))]
"TARGET_MMX"
"psubsb\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxadd")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "mmx")])
(define_insn "sssubv4hi3"
[(set (match_operand:V4HI 0 "register_operand" "=y")
@@ -19432,8 +18887,7 @@
(match_operand:V4HI 2 "nonimmediate_operand" "ym")))]
"TARGET_MMX"
"psubsw\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxadd")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "mmx")])
(define_insn "ussubv8qi3"
[(set (match_operand:V8QI 0 "register_operand" "=y")
@@ -19441,8 +18895,7 @@
(match_operand:V8QI 2 "nonimmediate_operand" "ym")))]
"TARGET_MMX"
"psubusb\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxadd")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "mmx")])
(define_insn "ussubv4hi3"
[(set (match_operand:V4HI 0 "register_operand" "=y")
@@ -19450,8 +18903,7 @@
(match_operand:V4HI 2 "nonimmediate_operand" "ym")))]
"TARGET_MMX"
"psubusw\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxadd")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "mmx")])
(define_insn "mulv4hi3"
[(set (match_operand:V4HI 0 "register_operand" "=y")
@@ -19459,8 +18911,7 @@
(match_operand:V4HI 2 "nonimmediate_operand" "ym")))]
"TARGET_MMX"
"pmullw\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxmul")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "mmx")])
(define_insn "smulv4hi3_highpart"
[(set (match_operand:V4HI 0 "register_operand" "=y")
@@ -19473,8 +18924,7 @@
(const_int 16))))]
"TARGET_MMX"
"pmulhw\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxmul")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "mmx")])
(define_insn "umulv4hi3_highpart"
[(set (match_operand:V4HI 0 "register_operand" "=y")
@@ -19487,8 +18937,7 @@
(const_int 16))))]
"TARGET_SSE || TARGET_3DNOW_A"
"pmulhuw\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxmul")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "mmx")])
(define_insn "mmx_pmaddwd"
[(set (match_operand:V2SI 0 "register_operand" "=y")
@@ -19509,8 +18958,7 @@
(const_int 3)]))))))]
"TARGET_MMX"
"pmaddwd\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxmul")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "mmx")])
;; MMX logical operations
@@ -19520,58 +18968,49 @@
(define_insn "mmx_iordi3"
[(set (match_operand:DI 0 "register_operand" "=y")
(unspec:DI
- [(ior:DI (match_operand:DI 1 "register_operand" "%0")
- (match_operand:DI 2 "nonimmediate_operand" "ym"))]
- UNSPEC_NOP))]
+ [(ior:DI (match_operand:DI 1 "register_operand" "0")
+ (match_operand:DI 2 "nonimmediate_operand" "ym"))] 45))]
"TARGET_MMX"
"por\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxadd")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "mmx")])
(define_insn "mmx_xordi3"
[(set (match_operand:DI 0 "register_operand" "=y")
(unspec:DI
- [(xor:DI (match_operand:DI 1 "register_operand" "%0")
- (match_operand:DI 2 "nonimmediate_operand" "ym"))]
- UNSPEC_NOP))]
+ [(xor:DI (match_operand:DI 1 "register_operand" "0")
+ (match_operand:DI 2 "nonimmediate_operand" "ym"))] 45))]
"TARGET_MMX"
"pxor\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxadd")
- (set_attr "mode" "DI")
+ [(set_attr "type" "mmx")
(set_attr "memory" "none")])
;; Same as pxor, but don't show input operands so that we don't think
;; they are live.
(define_insn "mmx_clrdi"
[(set (match_operand:DI 0 "register_operand" "=y")
- (unspec:DI [(const_int 0)] UNSPEC_NOP))]
+ (unspec:DI [(const_int 0)] 45))]
"TARGET_MMX"
"pxor\t{%0, %0|%0, %0}"
- [(set_attr "type" "mmxadd")
- (set_attr "mode" "DI")
+ [(set_attr "type" "mmx")
(set_attr "memory" "none")])
(define_insn "mmx_anddi3"
[(set (match_operand:DI 0 "register_operand" "=y")
(unspec:DI
- [(and:DI (match_operand:DI 1 "register_operand" "%0")
- (match_operand:DI 2 "nonimmediate_operand" "ym"))]
- UNSPEC_NOP))]
+ [(and:DI (match_operand:DI 1 "register_operand" "0")
+ (match_operand:DI 2 "nonimmediate_operand" "ym"))] 45))]
"TARGET_MMX"
"pand\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxadd")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "mmx")])
(define_insn "mmx_nanddi3"
[(set (match_operand:DI 0 "register_operand" "=y")
(unspec:DI
[(and:DI (not:DI (match_operand:DI 1 "register_operand" "0"))
- (match_operand:DI 2 "nonimmediate_operand" "ym"))]
- UNSPEC_NOP))]
+ (match_operand:DI 2 "nonimmediate_operand" "ym"))] 45))]
"TARGET_MMX"
"pandn\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxadd")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "mmx")])
;; MMX unsigned averages/sum of absolute differences
@@ -19593,8 +19032,7 @@
(const_int 1)))]
"TARGET_SSE || TARGET_3DNOW_A"
"pavgb\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxshft")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "sse")])
(define_insn "mmx_uavgv4hi3"
[(set (match_operand:V4HI 0 "register_operand" "=y")
@@ -19609,18 +19047,15 @@
(const_int 1)))]
"TARGET_SSE || TARGET_3DNOW_A"
"pavgw\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxshft")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "sse")])
(define_insn "mmx_psadbw"
- [(set (match_operand:DI 0 "register_operand" "=y")
- (unspec:DI [(match_operand:V8QI 1 "register_operand" "0")
- (match_operand:V8QI 2 "nonimmediate_operand" "ym")]
- UNSPEC_PSADBW))]
+ [(set (match_operand:V8QI 0 "register_operand" "=y")
+ (abs:V8QI (minus:V8QI (match_operand:V8QI 1 "register_operand" "0")
+ (match_operand:V8QI 2 "nonimmediate_operand" "ym"))))]
"TARGET_SSE || TARGET_3DNOW_A"
"psadbw\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxshft")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "sse")])
;; MMX insert/extract/shuffle
@@ -19633,8 +19068,7 @@
(match_operand:SI 3 "immediate_operand" "i")))]
"TARGET_SSE || TARGET_3DNOW_A"
"pinsrw\t{%3, %2, %0|%0, %2, %3}"
- [(set_attr "type" "mmxcvt")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "sse")])
(define_insn "mmx_pextrw"
[(set (match_operand:SI 0 "register_operand" "=r")
@@ -19643,18 +19077,15 @@
[(match_operand:SI 2 "immediate_operand" "i")]))))]
"TARGET_SSE || TARGET_3DNOW_A"
"pextrw\t{%2, %1, %0|%0, %1, %2}"
- [(set_attr "type" "mmxcvt")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "sse")])
(define_insn "mmx_pshufw"
[(set (match_operand:V4HI 0 "register_operand" "=y")
(unspec:V4HI [(match_operand:V4HI 1 "register_operand" "0")
- (match_operand:SI 2 "immediate_operand" "i")]
- UNSPEC_SHUFFLE))]
+ (match_operand:SI 2 "immediate_operand" "i")] 41))]
"TARGET_SSE || TARGET_3DNOW_A"
"pshufw\t{%2, %1, %0|%0, %1, %2}"
- [(set_attr "type" "mmxcvt")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "sse")])
;; MMX mask-generating comparisons
@@ -19665,8 +19096,7 @@
(match_operand:V8QI 2 "nonimmediate_operand" "ym")))]
"TARGET_MMX"
"pcmpeqb\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxcmp")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "mmx")])
(define_insn "eqv4hi3"
[(set (match_operand:V4HI 0 "register_operand" "=y")
@@ -19674,8 +19104,7 @@
(match_operand:V4HI 2 "nonimmediate_operand" "ym")))]
"TARGET_MMX"
"pcmpeqw\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxcmp")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "mmx")])
(define_insn "eqv2si3"
[(set (match_operand:V2SI 0 "register_operand" "=y")
@@ -19683,8 +19112,7 @@
(match_operand:V2SI 2 "nonimmediate_operand" "ym")))]
"TARGET_MMX"
"pcmpeqd\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxcmp")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "mmx")])
(define_insn "gtv8qi3"
[(set (match_operand:V8QI 0 "register_operand" "=y")
@@ -19692,8 +19120,7 @@
(match_operand:V8QI 2 "nonimmediate_operand" "ym")))]
"TARGET_MMX"
"pcmpgtb\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxcmp")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "mmx")])
(define_insn "gtv4hi3"
[(set (match_operand:V4HI 0 "register_operand" "=y")
@@ -19701,8 +19128,7 @@
(match_operand:V4HI 2 "nonimmediate_operand" "ym")))]
"TARGET_MMX"
"pcmpgtw\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxcmp")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "mmx")])
(define_insn "gtv2si3"
[(set (match_operand:V2SI 0 "register_operand" "=y")
@@ -19710,8 +19136,7 @@
(match_operand:V2SI 2 "nonimmediate_operand" "ym")))]
"TARGET_MMX"
"pcmpgtd\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxcmp")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "mmx")])
;; MMX max/min insns
@@ -19722,8 +19147,7 @@
(match_operand:V8QI 2 "nonimmediate_operand" "ym")))]
"TARGET_SSE || TARGET_3DNOW_A"
"pmaxub\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxadd")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "sse")])
(define_insn "smaxv4hi3"
[(set (match_operand:V4HI 0 "register_operand" "=y")
@@ -19731,8 +19155,7 @@
(match_operand:V4HI 2 "nonimmediate_operand" "ym")))]
"TARGET_SSE || TARGET_3DNOW_A"
"pmaxsw\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxadd")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "sse")])
(define_insn "uminv8qi3"
[(set (match_operand:V8QI 0 "register_operand" "=y")
@@ -19740,8 +19163,7 @@
(match_operand:V8QI 2 "nonimmediate_operand" "ym")))]
"TARGET_SSE || TARGET_3DNOW_A"
"pminub\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxadd")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "sse")])
(define_insn "sminv4hi3"
[(set (match_operand:V4HI 0 "register_operand" "=y")
@@ -19749,8 +19171,7 @@
(match_operand:V4HI 2 "nonimmediate_operand" "ym")))]
"TARGET_SSE || TARGET_3DNOW_A"
"pminsw\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxadd")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "sse")])
;; MMX shifts
@@ -19761,8 +19182,7 @@
(match_operand:DI 2 "nonmemory_operand" "yi")))]
"TARGET_MMX"
"psraw\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxshft")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "mmx")])
(define_insn "ashrv2si3"
[(set (match_operand:V2SI 0 "register_operand" "=y")
@@ -19770,8 +19190,7 @@
(match_operand:DI 2 "nonmemory_operand" "yi")))]
"TARGET_MMX"
"psrad\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxshft")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "mmx")])
(define_insn "lshrv4hi3"
[(set (match_operand:V4HI 0 "register_operand" "=y")
@@ -19779,8 +19198,7 @@
(match_operand:DI 2 "nonmemory_operand" "yi")))]
"TARGET_MMX"
"psrlw\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxshft")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "mmx")])
(define_insn "lshrv2si3"
[(set (match_operand:V2SI 0 "register_operand" "=y")
@@ -19788,20 +19206,17 @@
(match_operand:DI 2 "nonmemory_operand" "yi")))]
"TARGET_MMX"
"psrld\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxshft")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "mmx")])
;; See logical MMX insns.
(define_insn "mmx_lshrdi3"
[(set (match_operand:DI 0 "register_operand" "=y")
(unspec:DI
[(lshiftrt:DI (match_operand:DI 1 "register_operand" "0")
- (match_operand:DI 2 "nonmemory_operand" "yi"))]
- UNSPEC_NOP))]
+ (match_operand:DI 2 "nonmemory_operand" "yi"))] 45))]
"TARGET_MMX"
"psrlq\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxshft")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "mmx")])
(define_insn "ashlv4hi3"
[(set (match_operand:V4HI 0 "register_operand" "=y")
@@ -19809,8 +19224,7 @@
(match_operand:DI 2 "nonmemory_operand" "yi")))]
"TARGET_MMX"
"psllw\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxshft")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "mmx")])
(define_insn "ashlv2si3"
[(set (match_operand:V2SI 0 "register_operand" "=y")
@@ -19818,20 +19232,17 @@
(match_operand:DI 2 "nonmemory_operand" "yi")))]
"TARGET_MMX"
"pslld\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxshft")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "mmx")])
;; See logical MMX insns.
(define_insn "mmx_ashldi3"
[(set (match_operand:DI 0 "register_operand" "=y")
(unspec:DI
[(ashift:DI (match_operand:DI 1 "register_operand" "0")
- (match_operand:DI 2 "nonmemory_operand" "yi"))]
- UNSPEC_NOP))]
+ (match_operand:DI 2 "nonmemory_operand" "yi"))] 45))]
"TARGET_MMX"
"psllq\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxshft")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "mmx")])
;; MMX pack/unpack insns.
@@ -19843,8 +19254,7 @@
(ss_truncate:V4QI (match_operand:V4HI 2 "register_operand" "y"))))]
"TARGET_MMX"
"packsswb\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxshft")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "mmx")])
(define_insn "mmx_packssdw"
[(set (match_operand:V4HI 0 "register_operand" "=y")
@@ -19853,8 +19263,7 @@
(ss_truncate:V2HI (match_operand:V2SI 2 "register_operand" "y"))))]
"TARGET_MMX"
"packssdw\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxshft")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "mmx")])
(define_insn "mmx_packuswb"
[(set (match_operand:V8QI 0 "register_operand" "=y")
@@ -19863,8 +19272,7 @@
(us_truncate:V4QI (match_operand:V4HI 2 "register_operand" "y"))))]
"TARGET_MMX"
"packuswb\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxshft")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "mmx")])
(define_insn "mmx_punpckhbw"
[(set (match_operand:V8QI 0 "register_operand" "=y")
@@ -19890,8 +19298,7 @@
(const_int 85)))]
"TARGET_MMX"
"punpckhbw\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxcvt")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "mmx")])
(define_insn "mmx_punpckhwd"
[(set (match_operand:V4HI 0 "register_operand" "=y")
@@ -19909,21 +19316,21 @@
(const_int 5)))]
"TARGET_MMX"
"punpckhwd\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxcvt")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "mmx")])
(define_insn "mmx_punpckhdq"
[(set (match_operand:V2SI 0 "register_operand" "=y")
(vec_merge:V2SI
- (match_operand:V2SI 1 "register_operand" "0")
+ (vec_select:V2SI (match_operand:V2SI 1 "register_operand" "0")
+ (parallel [(const_int 0)
+ (const_int 1)]))
(vec_select:V2SI (match_operand:V2SI 2 "register_operand" "y")
(parallel [(const_int 1)
(const_int 0)]))
(const_int 1)))]
"TARGET_MMX"
"punpckhdq\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxcvt")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "mmx")])
(define_insn "mmx_punpcklbw"
[(set (match_operand:V8QI 0 "register_operand" "=y")
@@ -19949,8 +19356,7 @@
(const_int 85)))]
"TARGET_MMX"
"punpcklbw\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxcvt")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "mmx")])
(define_insn "mmx_punpcklwd"
[(set (match_operand:V4HI 0 "register_operand" "=y")
@@ -19968,8 +19374,7 @@
(const_int 5)))]
"TARGET_MMX"
"punpcklwd\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxcvt")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "mmx")])
(define_insn "mmx_punpckldq"
[(set (match_operand:V2SI 0 "register_operand" "=y")
@@ -19977,18 +19382,19 @@
(vec_select:V2SI (match_operand:V2SI 1 "register_operand" "0")
(parallel [(const_int 1)
(const_int 0)]))
- (match_operand:V2SI 2 "register_operand" "y")
+ (vec_select:V2SI (match_operand:V2SI 2 "register_operand" "y")
+ (parallel [(const_int 0)
+ (const_int 1)]))
(const_int 1)))]
"TARGET_MMX"
"punpckldq\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxcvt")
- (set_attr "mode" "DI")])
+ [(set_attr "type" "mmx")])
;; Miscellaneous stuff
(define_insn "emms"
- [(unspec_volatile [(const_int 0)] UNSPECV_EMMS)
+ [(unspec_volatile [(const_int 0)] 31)
(clobber (reg:XF 8))
(clobber (reg:XF 9))
(clobber (reg:XF 10))
@@ -20011,24 +19417,23 @@
(set_attr "memory" "unknown")])
(define_insn "ldmxcsr"
- [(unspec_volatile [(match_operand:SI 0 "memory_operand" "m")]
- UNSPECV_LDMXCSR)]
- "TARGET_SSE"
+ [(unspec_volatile [(match_operand:SI 0 "memory_operand" "m")] 37)]
+ "TARGET_MMX"
"ldmxcsr\t%0"
- [(set_attr "type" "sse")
+ [(set_attr "type" "mmx")
(set_attr "memory" "load")])
(define_insn "stmxcsr"
[(set (match_operand:SI 0 "memory_operand" "=m")
- (unspec_volatile:SI [(const_int 0)] UNSPECV_STMXCSR))]
- "TARGET_SSE"
+ (unspec_volatile:SI [(const_int 0)] 40))]
+ "TARGET_MMX"
"stmxcsr\t%0"
- [(set_attr "type" "sse")
+ [(set_attr "type" "mmx")
(set_attr "memory" "store")])
(define_expand "sfence"
[(set (match_dup 0)
- (unspec:BLK [(match_dup 0)] UNSPEC_SFENCE))]
+ (unspec:BLK [(match_dup 0)] 44))]
"TARGET_SSE || TARGET_3DNOW_A"
{
operands[0] = gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (Pmode));
@@ -20037,7 +19442,7 @@
(define_insn "*sfence_insn"
[(set (match_operand:BLK 0 "" "")
- (unspec:BLK [(match_dup 0)] UNSPEC_SFENCE))]
+ (unspec:BLK [(match_dup 0)] 44))]
"TARGET_SSE || TARGET_3DNOW_A"
"sfence"
[(set_attr "type" "sse")
@@ -20052,7 +19457,7 @@
(reg:DI 25)
(reg:DI 26)
(reg:DI 27)
- (reg:DI 28)] UNSPEC_SSE_PROLOGUE_SAVE))
+ (reg:DI 28)] 13))
(use (match_operand:DI 1 "register_operand" ""))
(use (match_operand:DI 2 "immediate_operand" ""))
(use (label_ref:DI (match_operand 3 "" "")))])]
@@ -20069,7 +19474,7 @@
(reg:DI 25)
(reg:DI 26)
(reg:DI 27)
- (reg:DI 28)] UNSPEC_SSE_PROLOGUE_SAVE))
+ (reg:DI 28)] 13))
(use (match_operand:DI 1 "register_operand" "r"))
(use (match_operand:DI 2 "const_int_operand" "i"))
(use (label_ref:DI (match_operand 3 "" "X")))]
@@ -20112,8 +19517,7 @@
(match_operand:V2SF 2 "nonimmediate_operand" "ym")))]
"TARGET_3DNOW"
"pfadd\\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxadd")
- (set_attr "mode" "V2SF")])
+ [(set_attr "type" "mmx")])
(define_insn "subv2sf3"
[(set (match_operand:V2SF 0 "register_operand" "=y")
@@ -20121,8 +19525,7 @@
(match_operand:V2SF 2 "nonimmediate_operand" "ym")))]
"TARGET_3DNOW"
"pfsub\\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxadd")
- (set_attr "mode" "V2SF")])
+ [(set_attr "type" "mmx")])
(define_insn "subrv2sf3"
[(set (match_operand:V2SF 0 "register_operand" "=y")
@@ -20130,8 +19533,7 @@
(match_operand:V2SF 1 "register_operand" "0")))]
"TARGET_3DNOW"
"pfsubr\\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxadd")
- (set_attr "mode" "V2SF")])
+ [(set_attr "type" "mmx")])
(define_insn "gtv2sf3"
[(set (match_operand:V2SI 0 "register_operand" "=y")
@@ -20139,8 +19541,7 @@
(match_operand:V2SF 2 "nonimmediate_operand" "ym")))]
"TARGET_3DNOW"
"pfcmpgt\\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxcmp")
- (set_attr "mode" "V2SF")])
+ [(set_attr "type" "mmx")])
(define_insn "gev2sf3"
[(set (match_operand:V2SI 0 "register_operand" "=y")
@@ -20148,8 +19549,7 @@
(match_operand:V2SF 2 "nonimmediate_operand" "ym")))]
"TARGET_3DNOW"
"pfcmpge\\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxcmp")
- (set_attr "mode" "V2SF")])
+ [(set_attr "type" "mmx")])
(define_insn "eqv2sf3"
[(set (match_operand:V2SI 0 "register_operand" "=y")
@@ -20157,8 +19557,7 @@
(match_operand:V2SF 2 "nonimmediate_operand" "ym")))]
"TARGET_3DNOW"
"pfcmpeq\\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxcmp")
- (set_attr "mode" "V2SF")])
+ [(set_attr "type" "mmx")])
(define_insn "pfmaxv2sf3"
[(set (match_operand:V2SF 0 "register_operand" "=y")
@@ -20166,8 +19565,7 @@
(match_operand:V2SF 2 "nonimmediate_operand" "ym")))]
"TARGET_3DNOW"
"pfmax\\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxadd")
- (set_attr "mode" "V2SF")])
+ [(set_attr "type" "mmx")])
(define_insn "pfminv2sf3"
[(set (match_operand:V2SF 0 "register_operand" "=y")
@@ -20175,8 +19573,7 @@
(match_operand:V2SF 2 "nonimmediate_operand" "ym")))]
"TARGET_3DNOW"
"pfmin\\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxadd")
- (set_attr "mode" "V2SF")])
+ [(set_attr "type" "mmx")])
(define_insn "mulv2sf3"
[(set (match_operand:V2SF 0 "register_operand" "=y")
@@ -20184,11 +19581,10 @@
(match_operand:V2SF 2 "nonimmediate_operand" "ym")))]
"TARGET_3DNOW"
"pfmul\\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxmul")
- (set_attr "mode" "V2SF")])
+ [(set_attr "type" "mmx")])
(define_insn "femms"
- [(unspec_volatile [(const_int 0)] UNSPECV_FEMMS)
+ [(unspec_volatile [(const_int 0)] 46)
(clobber (reg:XF 8))
(clobber (reg:XF 9))
(clobber (reg:XF 10))
@@ -20207,16 +19603,14 @@
(clobber (reg:DI 36))]
"TARGET_3DNOW"
"femms"
- [(set_attr "type" "mmx")
- (set_attr "memory" "none")])
+ [(set_attr "type" "mmx")])
(define_insn "pf2id"
[(set (match_operand:V2SI 0 "register_operand" "=y")
(fix:V2SI (match_operand:V2SF 1 "nonimmediate_operand" "ym")))]
"TARGET_3DNOW"
"pf2id\\t{%1, %0|%0, %1}"
- [(set_attr "type" "mmxcvt")
- (set_attr "mode" "V2SF")])
+ [(set_attr "type" "mmx")])
(define_insn "pf2iw"
[(set (match_operand:V2SI 0 "register_operand" "=y")
@@ -20225,8 +19619,7 @@
(fix:V2SI (match_operand:V2SF 1 "nonimmediate_operand" "ym")))))]
"TARGET_3DNOW_A"
"pf2iw\\t{%1, %0|%0, %1}"
- [(set_attr "type" "mmxcvt")
- (set_attr "mode" "V2SF")])
+ [(set_attr "type" "mmx")])
(define_insn "pfacc"
[(set (match_operand:V2SF 0 "register_operand" "=y")
@@ -20243,8 +19636,7 @@
(parallel [(const_int 1)])))))]
"TARGET_3DNOW"
"pfacc\\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxadd")
- (set_attr "mode" "V2SF")])
+ [(set_attr "type" "mmx")])
(define_insn "pfnacc"
[(set (match_operand:V2SF 0 "register_operand" "=y")
@@ -20261,8 +19653,7 @@
(parallel [(const_int 1)])))))]
"TARGET_3DNOW_A"
"pfnacc\\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxadd")
- (set_attr "mode" "V2SF")])
+ [(set_attr "type" "mmx")])
(define_insn "pfpnacc"
[(set (match_operand:V2SF 0 "register_operand" "=y")
@@ -20279,8 +19670,7 @@
(parallel [(const_int 1)])))))]
"TARGET_3DNOW_A"
"pfpnacc\\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxadd")
- (set_attr "mode" "V2SF")])
+ [(set_attr "type" "mmx")])
(define_insn "pi2fw"
[(set (match_operand:V2SF 0 "register_operand" "=y")
@@ -20296,16 +19686,14 @@
(parallel [(const_int 1)])))))))]
"TARGET_3DNOW_A"
"pi2fw\\t{%1, %0|%0, %1}"
- [(set_attr "type" "mmxcvt")
- (set_attr "mode" "V2SF")])
+ [(set_attr "type" "mmx")])
(define_insn "floatv2si2"
[(set (match_operand:V2SF 0 "register_operand" "=y")
(float:V2SF (match_operand:V2SI 1 "nonimmediate_operand" "ym")))]
"TARGET_3DNOW"
"pi2fd\\t{%1, %0|%0, %1}"
- [(set_attr "type" "mmxcvt")
- (set_attr "mode" "V2SF")])
+ [(set_attr "type" "mmx")])
;; This insn is identical to pavgb in operation, but the opcode is
;; different. To avoid accidentally matching pavgb, use an unspec.
@@ -20314,62 +19702,50 @@
[(set (match_operand:V8QI 0 "register_operand" "=y")
(unspec:V8QI
[(match_operand:V8QI 1 "register_operand" "0")
- (match_operand:V8QI 2 "nonimmediate_operand" "ym")]
- UNSPEC_PAVGUSB))]
+ (match_operand:V8QI 2 "nonimmediate_operand" "ym")] 49))]
"TARGET_3DNOW"
"pavgusb\\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxshft")
- (set_attr "mode" "TI")])
+ [(set_attr "type" "mmx")])
;; 3DNow reciprical and sqrt
(define_insn "pfrcpv2sf2"
[(set (match_operand:V2SF 0 "register_operand" "=y")
- (unspec:V2SF [(match_operand:V2SF 1 "nonimmediate_operand" "ym")]
- UNSPEC_PFRCP))]
+ (unspec:V2SF [(match_operand:V2SF 1 "nonimmediate_operand" "ym")] 50))]
"TARGET_3DNOW"
"pfrcp\\t{%1, %0|%0, %1}"
- [(set_attr "type" "mmx")
- (set_attr "mode" "TI")])
+ [(set_attr "type" "mmx")])
(define_insn "pfrcpit1v2sf3"
[(set (match_operand:V2SF 0 "register_operand" "=y")
(unspec:V2SF [(match_operand:V2SF 1 "register_operand" "0")
- (match_operand:V2SF 2 "nonimmediate_operand" "ym")]
- UNSPEC_PFRCPIT1))]
+ (match_operand:V2SF 2 "nonimmediate_operand" "ym")] 51))]
"TARGET_3DNOW"
"pfrcpit1\\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmx")
- (set_attr "mode" "TI")])
+ [(set_attr "type" "mmx")])
(define_insn "pfrcpit2v2sf3"
[(set (match_operand:V2SF 0 "register_operand" "=y")
(unspec:V2SF [(match_operand:V2SF 1 "register_operand" "0")
- (match_operand:V2SF 2 "nonimmediate_operand" "ym")]
- UNSPEC_PFRCPIT2))]
+ (match_operand:V2SF 2 "nonimmediate_operand" "ym")] 52))]
"TARGET_3DNOW"
"pfrcpit2\\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmx")
- (set_attr "mode" "TI")])
+ [(set_attr "type" "mmx")])
(define_insn "pfrsqrtv2sf2"
[(set (match_operand:V2SF 0 "register_operand" "=y")
- (unspec:V2SF [(match_operand:V2SF 1 "nonimmediate_operand" "ym")]
- UNSPEC_PFRSQRT))]
+ (unspec:V2SF [(match_operand:V2SF 1 "nonimmediate_operand" "ym")] 53))]
"TARGET_3DNOW"
- "pfrsqrt\\t{%1, %0|%0, %1}"
- [(set_attr "type" "mmx")
- (set_attr "mode" "TI")])
+ "pfrsqrt\\t{%1, %0|%0, %1}"
+ [(set_attr "type" "mmx")])
(define_insn "pfrsqit1v2sf3"
[(set (match_operand:V2SF 0 "register_operand" "=y")
(unspec:V2SF [(match_operand:V2SF 1 "register_operand" "0")
- (match_operand:V2SF 2 "nonimmediate_operand" "ym")]
- UNSPEC_PFRSQIT1))]
+ (match_operand:V2SF 2 "nonimmediate_operand" "ym")] 54))]
"TARGET_3DNOW"
"pfrsqit1\\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmx")
- (set_attr "mode" "TI")])
+ [(set_attr "type" "mmx")])
(define_insn "pmulhrwv4hi3"
[(set (match_operand:V4HI 0 "register_operand" "=y")
@@ -20388,8 +19764,7 @@
(const_int 16))))]
"TARGET_3DNOW"
"pmulhrw\\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxmul")
- (set_attr "mode" "TI")])
+ [(set_attr "type" "mmx")])
(define_insn "pswapdv2si2"
[(set (match_operand:V2SI 0 "register_operand" "=y")
@@ -20397,8 +19772,7 @@
(parallel [(const_int 1) (const_int 0)])))]
"TARGET_3DNOW_A"
"pswapd\\t{%1, %0|%0, %1}"
- [(set_attr "type" "mmxcvt")
- (set_attr "mode" "TI")])
+ [(set_attr "type" "mmx")])
(define_insn "pswapdv2sf2"
[(set (match_operand:V2SF 0 "register_operand" "=y")
@@ -20406,8 +19780,7 @@
(parallel [(const_int 1) (const_int 0)])))]
"TARGET_3DNOW_A"
"pswapd\\t{%1, %0|%0, %1}"
- [(set_attr "type" "mmxcvt")
- (set_attr "mode" "TI")])
+ [(set_attr "type" "mmx")])
(define_expand "prefetch"
[(prefetch (match_operand 0 "address_operand" "")
@@ -20470,8 +19843,7 @@
return patterns[locality];
}
- [(set_attr "type" "sse")
- (set_attr "memory" "none")])
+ [(set_attr "type" "sse")])
(define_insn "*prefetch_3dnow"
[(prefetch (match_operand:SI 0 "address_operand" "p")
@@ -20498,1577 +19870,4 @@
else
return "prefetchw\t%a0";
}
- [(set_attr "type" "mmx")
- (set_attr "memory" "none")])
-
-;; SSE2 support
-
-(define_insn "addv2df3"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (plus:V2DF (match_operand:V2DF 1 "register_operand" "0")
- (match_operand:V2DF 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2"
- "addpd\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseadd")
- (set_attr "mode" "V2DF")])
-
-(define_insn "vmaddv2df3"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (vec_merge:V2DF (plus:V2DF (match_operand:V2DF 1 "register_operand" "0")
- (match_operand:V2DF 2 "nonimmediate_operand" "xm"))
- (match_dup 1)
- (const_int 1)))]
- "TARGET_SSE2"
- "addsd\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseadd")
- (set_attr "mode" "DF")])
-
-(define_insn "subv2df3"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (minus:V2DF (match_operand:V2DF 1 "register_operand" "0")
- (match_operand:V2DF 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2"
- "subpd\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseadd")
- (set_attr "mode" "V2DF")])
-
-(define_insn "vmsubv2df3"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (vec_merge:V2DF (minus:V2DF (match_operand:V2DF 1 "register_operand" "0")
- (match_operand:V2DF 2 "nonimmediate_operand" "xm"))
- (match_dup 1)
- (const_int 1)))]
- "TARGET_SSE2"
- "subsd\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseadd")
- (set_attr "mode" "DF")])
-
-(define_insn "mulv2df3"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (mult:V2DF (match_operand:V2DF 1 "register_operand" "0")
- (match_operand:V2DF 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2"
- "mulpd\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssemul")
- (set_attr "mode" "V2DF")])
-
-(define_insn "vmmulv2df3"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (vec_merge:V2DF (mult:V2DF (match_operand:V2DF 1 "register_operand" "0")
- (match_operand:V2DF 2 "nonimmediate_operand" "xm"))
- (match_dup 1)
- (const_int 1)))]
- "TARGET_SSE2"
- "mulsd\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssemul")
- (set_attr "mode" "DF")])
-
-(define_insn "divv2df3"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (div:V2DF (match_operand:V2DF 1 "register_operand" "0")
- (match_operand:V2DF 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2"
- "divpd\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssediv")
- (set_attr "mode" "V2DF")])
-
-(define_insn "vmdivv2df3"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (vec_merge:V2DF (div:V2DF (match_operand:V2DF 1 "register_operand" "0")
- (match_operand:V2DF 2 "nonimmediate_operand" "xm"))
- (match_dup 1)
- (const_int 1)))]
- "TARGET_SSE2"
- "divsd\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssediv")
- (set_attr "mode" "DF")])
-
-;; SSE min/max
-
-(define_insn "smaxv2df3"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (smax:V2DF (match_operand:V2DF 1 "register_operand" "0")
- (match_operand:V2DF 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2"
- "maxpd\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseadd")
- (set_attr "mode" "V2DF")])
-
-(define_insn "vmsmaxv2df3"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (vec_merge:V2DF (smax:V2DF (match_operand:V2DF 1 "register_operand" "0")
- (match_operand:V2DF 2 "nonimmediate_operand" "xm"))
- (match_dup 1)
- (const_int 1)))]
- "TARGET_SSE2"
- "maxsd\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseadd")
- (set_attr "mode" "DF")])
-
-(define_insn "sminv2df3"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (smin:V2DF (match_operand:V2DF 1 "register_operand" "0")
- (match_operand:V2DF 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2"
- "minpd\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseadd")
- (set_attr "mode" "V2DF")])
-
-(define_insn "vmsminv2df3"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (vec_merge:V2DF (smin:V2DF (match_operand:V2DF 1 "register_operand" "0")
- (match_operand:V2DF 2 "nonimmediate_operand" "xm"))
- (match_dup 1)
- (const_int 1)))]
- "TARGET_SSE2"
- "minsd\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseadd")
- (set_attr "mode" "DF")])
-;; SSE2 square root. There doesn't appear to be an extension for the
-;; reciprocal/rsqrt instructions if the Intel manual is to be believed.
-
-(define_insn "sqrtv2df2"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (sqrt:V2DF (match_operand:V2DF 1 "register_operand" "xm")))]
- "TARGET_SSE2"
- "sqrtpd\t{%1, %0|%0, %1}"
- [(set_attr "type" "sse")
- (set_attr "mode" "V2DF")])
-
-(define_insn "vmsqrtv2df2"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (vec_merge:V2DF (sqrt:V2DF (match_operand:V2DF 1 "register_operand" "xm"))
- (match_operand:V2DF 2 "register_operand" "0")
- (const_int 1)))]
- "TARGET_SSE2"
- "sqrtsd\t{%1, %0|%0, %1}"
- [(set_attr "type" "sse")
- (set_attr "mode" "SF")])
-
-;; SSE mask-generating compares
-
-(define_insn "maskcmpv2df3"
- [(set (match_operand:V2DI 0 "register_operand" "=x")
- (match_operator:V2DI 3 "sse_comparison_operator"
- [(match_operand:V2DF 1 "register_operand" "0")
- (match_operand:V2DF 2 "nonimmediate_operand" "x")]))]
- "TARGET_SSE2"
- "cmp%D3pd\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssecmp")
- (set_attr "mode" "V2DF")])
-
-(define_insn "maskncmpv2df3"
- [(set (match_operand:V2DI 0 "register_operand" "=x")
- (not:V2DI
- (match_operator:V2DI 3 "sse_comparison_operator"
- [(match_operand:V2DF 1 "register_operand" "0")
- (match_operand:V2DF 2 "nonimmediate_operand" "x")])))]
- "TARGET_SSE2"
-{
- if (GET_CODE (operands[3]) == UNORDERED)
- return "cmpordps\t{%2, %0|%0, %2}";
- else
- return "cmpn%D3pd\t{%2, %0|%0, %2}";
-}
- [(set_attr "type" "ssecmp")
- (set_attr "mode" "V2DF")])
-
-(define_insn "vmmaskcmpv2df3"
- [(set (match_operand:V2DI 0 "register_operand" "=x")
- (vec_merge:V2DI
- (match_operator:V2DI 3 "sse_comparison_operator"
- [(match_operand:V2DF 1 "register_operand" "0")
- (match_operand:V2DF 2 "nonimmediate_operand" "x")])
- (subreg:V2DI (match_dup 1) 0)
- (const_int 1)))]
- "TARGET_SSE2"
- "cmp%D3sd\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssecmp")
- (set_attr "mode" "DF")])
-
-(define_insn "vmmaskncmpv2df3"
- [(set (match_operand:V2DI 0 "register_operand" "=x")
- (vec_merge:V2DI
- (not:V2DI
- (match_operator:V2DI 3 "sse_comparison_operator"
- [(match_operand:V2DF 1 "register_operand" "0")
- (match_operand:V2DF 2 "nonimmediate_operand" "x")]))
- (subreg:V2DI (match_dup 1) 0)
- (const_int 1)))]
- "TARGET_SSE2"
-{
- if (GET_CODE (operands[3]) == UNORDERED)
- return "cmpordsd\t{%2, %0|%0, %2}";
- else
- return "cmpn%D3sd\t{%2, %0|%0, %2}";
-}
- [(set_attr "type" "ssecmp")
- (set_attr "mode" "DF")])
-
-(define_insn "sse2_comi"
- [(set (reg:CCFP 17)
- (compare:CCFP (vec_select:DF
- (match_operand:V2DF 0 "register_operand" "x")
- (parallel [(const_int 0)]))
- (vec_select:DF
- (match_operand:V2DF 1 "register_operand" "x")
- (parallel [(const_int 0)]))))]
- "TARGET_SSE2"
- "comisd\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecmp")
- (set_attr "mode" "DF")])
-
-(define_insn "sse2_ucomi"
- [(set (reg:CCFPU 17)
- (compare:CCFPU (vec_select:DF
- (match_operand:V2DF 0 "register_operand" "x")
- (parallel [(const_int 0)]))
- (vec_select:DF
- (match_operand:V2DF 1 "register_operand" "x")
- (parallel [(const_int 0)]))))]
- "TARGET_SSE2"
- "ucomisd\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecmp")
- (set_attr "mode" "DF")])
-
-;; SSE Strange Moves.
-
-(define_insn "sse2_movmskpd"
- [(set (match_operand:SI 0 "register_operand" "=r")
- (unspec:SI [(match_operand:V2DF 1 "register_operand" "x")]
- UNSPEC_MOVMSK))]
- "TARGET_SSE2"
- "movmskpd\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "V2DF")])
-
-(define_insn "sse2_pmovmskb"
- [(set (match_operand:SI 0 "register_operand" "=r")
- (unspec:SI [(match_operand:V16QI 1 "register_operand" "x")]
- UNSPEC_MOVMSK))]
- "TARGET_SSE2"
- "pmovmskb\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "V2DF")])
-
-(define_insn "sse2_maskmovdqu"
- [(set (mem:V16QI (match_operand:SI 0 "register_operand" "D"))
- (unspec:V16QI [(match_operand:V16QI 1 "register_operand" "x")
- (match_operand:V16QI 2 "register_operand" "x")]
- UNSPEC_MASKMOV))]
- "TARGET_SSE2"
- ;; @@@ check ordering of operands in intel/nonintel syntax
- "maskmovdqu\t{%2, %1|%1, %2}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "TI")])
-
-(define_insn "sse2_maskmovdqu_rex64"
- [(set (mem:V16QI (match_operand:DI 0 "register_operand" "D"))
- (unspec:V16QI [(match_operand:V16QI 1 "register_operand" "x")
- (match_operand:V16QI 2 "register_operand" "x")]
- UNSPEC_MASKMOV))]
- "TARGET_SSE2"
- ;; @@@ check ordering of operands in intel/nonintel syntax
- "maskmovdqu\t{%2, %1|%1, %2}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "TI")])
-
-(define_insn "sse2_movntv2df"
- [(set (match_operand:V2DF 0 "memory_operand" "=m")
- (unspec:V2DF [(match_operand:V2DF 1 "register_operand" "x")]
- UNSPEC_MOVNT))]
- "TARGET_SSE2"
- "movntpd\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "V2DF")])
-
-(define_insn "sse2_movntv2di"
- [(set (match_operand:V2DI 0 "memory_operand" "=m")
- (unspec:V2DI [(match_operand:V2DI 1 "register_operand" "x")]
- UNSPEC_MOVNT))]
- "TARGET_SSE2"
- "movntdq\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "TI")])
-
-(define_insn "sse2_movntsi"
- [(set (match_operand:SI 0 "memory_operand" "=m")
- (unspec:SI [(match_operand:SI 1 "register_operand" "r")]
- UNSPEC_MOVNT))]
- "TARGET_SSE2"
- "movnti\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "V2DF")])
-
-;; SSE <-> integer/MMX conversions
-
-;; Conversions between SI and SF
-
-(define_insn "cvtdq2ps"
- [(set (match_operand:V4SF 0 "register_operand" "=x")
- (float:V4SF (match_operand:V4SI 1 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2"
- "cvtdq2ps\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "V2DF")])
-
-(define_insn "cvtps2dq"
- [(set (match_operand:V4SI 0 "register_operand" "=x")
- (fix:V4SI (match_operand:V4SF 1 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2"
- "cvtps2dq\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "TI")])
-
-(define_insn "cvttps2dq"
- [(set (match_operand:V4SI 0 "register_operand" "=x")
- (unspec:V4SI [(match_operand:V4SF 1 "nonimmediate_operand" "xm")]
- UNSPEC_FIX))]
- "TARGET_SSE2"
- "cvttps2dq\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "TI")])
-
-;; Conversions between SI and DF
-
-(define_insn "cvtdq2pd"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (float:V2DF (vec_select:V2SI
- (match_operand:V4SI 1 "nonimmediate_operand" "xm")
- (parallel
- [(const_int 0)
- (const_int 1)]))))]
- "TARGET_SSE2"
- "cvtdq2pd\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "V2DF")])
-
-(define_insn "cvtpd2dq"
- [(set (match_operand:V4SI 0 "register_operand" "=x")
- (vec_concat:V4SI
- (fix:V2SI (match_operand:V2DF 1 "nonimmediate_operand" "xm"))
- (const_vector:V2SI [(const_int 0) (const_int 0)])))]
- "TARGET_SSE2"
- "cvtpd2dq\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "TI")])
-
-(define_insn "cvttpd2dq"
- [(set (match_operand:V4SI 0 "register_operand" "=x")
- (vec_concat:V4SI
- (unspec:V2SI [(match_operand:V2DF 1 "nonimmediate_operand" "xm")]
- UNSPEC_FIX)
- (const_vector:V2SI [(const_int 0) (const_int 0)])))]
- "TARGET_SSE2"
- "cvttpd2dq\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "TI")])
-
-(define_insn "cvtpd2pi"
- [(set (match_operand:V2SI 0 "register_operand" "=y")
- (fix:V2SI (match_operand:V2DF 1 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2"
- "cvtpd2pi\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "TI")])
-
-(define_insn "cvttpd2pi"
- [(set (match_operand:V2SI 0 "register_operand" "=y")
- (unspec:V2SI [(match_operand:V2DF 1 "nonimmediate_operand" "xm")]
- UNSPEC_FIX))]
- "TARGET_SSE2"
- "cvttpd2pi\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "TI")])
-
-(define_insn "cvtpi2pd"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (float:V2DF (match_operand:V2SI 1 "nonimmediate_operand" "ym")))]
- "TARGET_SSE2"
- "cvtpi2pd\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "TI")])
-
-;; Conversions between SI and DF
-
-(define_insn "cvtsd2si"
- [(set (match_operand:SI 0 "register_operand" "=r")
- (fix:SI (vec_select:DF (match_operand:V2DF 1 "register_operand" "xm")
- (parallel [(const_int 0)]))))]
- "TARGET_SSE2"
- "cvtsd2si\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "SI")])
-
-(define_insn "cvtsd2siq"
- [(set (match_operand:DI 0 "register_operand" "=r")
- (fix:DI (vec_select:DF (match_operand:V2DF 1 "register_operand" "xm")
- (parallel [(const_int 0)]))))]
- "TARGET_SSE2 && TARGET_64BIT"
- "cvtsd2siq\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "SI")])
-
-(define_insn "cvttsd2si"
- [(set (match_operand:SI 0 "register_operand" "=r")
- (unspec:SI [(vec_select:DF (match_operand:V2DF 1 "register_operand" "xm")
- (parallel [(const_int 0)]))] UNSPEC_FIX))]
- "TARGET_SSE2"
- "cvttsd2si\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "SI")])
-
-(define_insn "cvttsd2siq"
- [(set (match_operand:DI 0 "register_operand" "=r,r")
- (unspec:DI [(vec_select:DF (match_operand:V2DF 1 "register_operand" "x,xm")
- (parallel [(const_int 0)]))] UNSPEC_FIX))]
- "TARGET_SSE2 && TARGET_64BIT"
- "cvttsd2siq\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "DI")
- (set_attr "athlon_decode" "vector,vector")])
-
-(define_insn "cvtsi2sd"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (vec_merge:V2DF (match_operand:V2DF 1 "register_operand" "0")
- (vec_duplicate:V2DF
- (float:DF
- (match_operand:SI 2 "nonimmediate_operand" "rm")))
- (const_int 2)))]
- "TARGET_SSE2"
- "cvtsi2sd\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "DF")])
-
-(define_insn "cvtsi2sdq"
- [(set (match_operand:V2DF 0 "register_operand" "=x,x")
- (vec_merge:V2DF (match_operand:V2DF 1 "register_operand" "0,0")
- (vec_duplicate:V2DF
- (float:DF
- (match_operand:DI 2 "nonimmediate_operand" "r,rm")))
- (const_int 2)))]
- "TARGET_SSE2 && TARGET_64BIT"
- "cvtsi2sdq\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "DF")
- (set_attr "athlon_decode" "vector,direct")])
-
-;; Conversions between SF and DF
-
-(define_insn "cvtsd2ss"
- [(set (match_operand:V4SF 0 "register_operand" "=x")
- (vec_merge:V4SF (match_operand:V4SF 1 "register_operand" "0")
- (vec_duplicate:V4SF
- (float_truncate:V2SF
- (match_operand:V2DF 2 "register_operand" "xm")))
- (const_int 14)))]
- "TARGET_SSE2"
- "cvtsd2ss\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "SF")])
-
-(define_insn "cvtss2sd"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (vec_merge:V2DF (match_operand:V2DF 1 "register_operand" "0")
- (float_extend:V2DF
- (vec_select:V2SF
- (match_operand:V4SF 2 "register_operand" "xm")
- (parallel [(const_int 0)
- (const_int 1)])))
- (const_int 2)))]
- "TARGET_SSE2"
- "cvtss2sd\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "DF")])
-
-(define_insn "cvtpd2ps"
- [(set (match_operand:V4SF 0 "register_operand" "=x")
- (subreg:V4SF
- (vec_concat:V4SI
- (subreg:V2SI (float_truncate:V2SF
- (match_operand:V2DF 1 "nonimmediate_operand" "xm")) 0)
- (const_vector:V2SI [(const_int 0) (const_int 0)])) 0))]
- "TARGET_SSE2"
- "cvtpd2ps\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "V4SF")])
-
-(define_insn "cvtps2pd"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (float_extend:V2DF
- (vec_select:V2SF (match_operand:V4SF 1 "nonimmediate_operand" "xm")
- (parallel [(const_int 0)
- (const_int 1)]))))]
- "TARGET_SSE2"
- "cvtps2pd\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "V2DF")])
-
-;; SSE2 variants of MMX insns
-
-;; MMX arithmetic
-
-(define_insn "addv16qi3"
- [(set (match_operand:V16QI 0 "register_operand" "=x")
- (plus:V16QI (match_operand:V16QI 1 "register_operand" "%0")
- (match_operand:V16QI 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2"
- "paddb\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseiadd")
- (set_attr "mode" "TI")])
-
-(define_insn "addv8hi3"
- [(set (match_operand:V8HI 0 "register_operand" "=x")
- (plus:V8HI (match_operand:V8HI 1 "register_operand" "%0")
- (match_operand:V8HI 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2"
- "paddw\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseiadd")
- (set_attr "mode" "TI")])
-
-(define_insn "addv4si3"
- [(set (match_operand:V4SI 0 "register_operand" "=x")
- (plus:V4SI (match_operand:V4SI 1 "register_operand" "%0")
- (match_operand:V4SI 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2"
- "paddd\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseiadd")
- (set_attr "mode" "TI")])
-
-(define_insn "addv2di3"
- [(set (match_operand:V2DI 0 "register_operand" "=x")
- (plus:V2DI (match_operand:V2DI 1 "register_operand" "%0")
- (match_operand:V2DI 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2"
- "paddq\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseiadd")
- (set_attr "mode" "TI")])
-
-(define_insn "ssaddv16qi3"
- [(set (match_operand:V16QI 0 "register_operand" "=x")
- (ss_plus:V16QI (match_operand:V16QI 1 "register_operand" "%0")
- (match_operand:V16QI 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2"
- "paddsb\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseiadd")
- (set_attr "mode" "TI")])
-
-(define_insn "ssaddv8hi3"
- [(set (match_operand:V8HI 0 "register_operand" "=x")
- (ss_plus:V8HI (match_operand:V8HI 1 "register_operand" "%0")
- (match_operand:V8HI 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2"
- "paddsw\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseiadd")
- (set_attr "mode" "TI")])
-
-(define_insn "usaddv16qi3"
- [(set (match_operand:V16QI 0 "register_operand" "=x")
- (us_plus:V16QI (match_operand:V16QI 1 "register_operand" "%0")
- (match_operand:V16QI 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2"
- "paddusb\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseiadd")
- (set_attr "mode" "TI")])
-
-(define_insn "usaddv8hi3"
- [(set (match_operand:V8HI 0 "register_operand" "=x")
- (us_plus:V8HI (match_operand:V8HI 1 "register_operand" "%0")
- (match_operand:V8HI 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2"
- "paddusw\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseiadd")
- (set_attr "mode" "TI")])
-
-(define_insn "subv16qi3"
- [(set (match_operand:V16QI 0 "register_operand" "=x")
- (minus:V16QI (match_operand:V16QI 1 "register_operand" "0")
- (match_operand:V16QI 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2"
- "psubb\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseiadd")
- (set_attr "mode" "TI")])
-
-(define_insn "subv8hi3"
- [(set (match_operand:V8HI 0 "register_operand" "=x")
- (minus:V8HI (match_operand:V8HI 1 "register_operand" "0")
- (match_operand:V8HI 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2"
- "psubw\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseiadd")
- (set_attr "mode" "TI")])
-
-(define_insn "subv4si3"
- [(set (match_operand:V4SI 0 "register_operand" "=x")
- (minus:V4SI (match_operand:V4SI 1 "register_operand" "0")
- (match_operand:V4SI 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2"
- "psubd\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseiadd")
- (set_attr "mode" "TI")])
-
-(define_insn "subv2di3"
- [(set (match_operand:V2DI 0 "register_operand" "=x")
- (minus:V2DI (match_operand:V2DI 1 "register_operand" "0")
- (match_operand:V2DI 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2"
- "psubq\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseiadd")
- (set_attr "mode" "TI")])
-
-(define_insn "sssubv16qi3"
- [(set (match_operand:V16QI 0 "register_operand" "=x")
- (ss_minus:V16QI (match_operand:V16QI 1 "register_operand" "0")
- (match_operand:V16QI 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2"
- "psubsb\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseiadd")
- (set_attr "mode" "TI")])
-
-(define_insn "sssubv8hi3"
- [(set (match_operand:V8HI 0 "register_operand" "=x")
- (ss_minus:V8HI (match_operand:V8HI 1 "register_operand" "0")
- (match_operand:V8HI 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2"
- "psubsw\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseiadd")
- (set_attr "mode" "TI")])
-
-(define_insn "ussubv16qi3"
- [(set (match_operand:V16QI 0 "register_operand" "=x")
- (us_minus:V16QI (match_operand:V16QI 1 "register_operand" "0")
- (match_operand:V16QI 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2"
- "psubusb\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseiadd")
- (set_attr "mode" "TI")])
-
-(define_insn "ussubv8hi3"
- [(set (match_operand:V8HI 0 "register_operand" "=x")
- (us_minus:V8HI (match_operand:V8HI 1 "register_operand" "0")
- (match_operand:V8HI 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2"
- "psubusw\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseiadd")
- (set_attr "mode" "TI")])
-
-(define_insn "mulv8hi3"
- [(set (match_operand:V8HI 0 "register_operand" "=x")
- (mult:V8HI (match_operand:V8HI 1 "register_operand" "0")
- (match_operand:V8HI 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2"
- "pmullw\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseimul")
- (set_attr "mode" "TI")])
-
-(define_insn "smulv8hi3_highpart"
- [(set (match_operand:V8HI 0 "register_operand" "=x")
- (truncate:V8HI
- (lshiftrt:V8SI
- (mult:V8SI (sign_extend:V8SI (match_operand:V8HI 1 "register_operand" "0"))
- (sign_extend:V8SI (match_operand:V8HI 2 "nonimmediate_operand" "xm")))
- (const_int 16))))]
- "TARGET_SSE2"
- "pmulhw\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseimul")
- (set_attr "mode" "TI")])
-
-(define_insn "umulv8hi3_highpart"
- [(set (match_operand:V8HI 0 "register_operand" "=x")
- (truncate:V8HI
- (lshiftrt:V8SI
- (mult:V8SI (zero_extend:V8SI (match_operand:V8HI 1 "register_operand" "0"))
- (zero_extend:V8SI (match_operand:V8HI 2 "nonimmediate_operand" "xm")))
- (const_int 16))))]
- "TARGET_SSE2"
- "pmulhuw\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseimul")
- (set_attr "mode" "TI")])
-
-(define_insn "sse2_umulsidi3"
- [(set (match_operand:DI 0 "register_operand" "=y")
- (mult:DI (zero_extend:DI (vec_select:SI
- (match_operand:V2SI 1 "register_operand" "0")
- (parallel [(const_int 0)])))
- (zero_extend:DI (vec_select:SI
- (match_operand:V2SI 2 "nonimmediate_operand" "ym")
- (parallel [(const_int 0)])))))]
- "TARGET_SSE2"
- "pmuludq\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseimul")
- (set_attr "mode" "TI")])
-
-(define_insn "sse2_umulv2siv2di3"
- [(set (match_operand:V2DI 0 "register_operand" "=x")
- (mult:V2DI (zero_extend:V2DI
- (vec_select:V2SI
- (match_operand:V4SI 1 "register_operand" "0")
- (parallel [(const_int 0) (const_int 2)])))
- (zero_extend:V2DI
- (vec_select:V2SI
- (match_operand:V4SI 2 "nonimmediate_operand" "xm")
- (parallel [(const_int 0) (const_int 2)])))))]
- "TARGET_SSE2"
- "pmuludq\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseimul")
- (set_attr "mode" "TI")])
-
-(define_insn "sse2_pmaddwd"
- [(set (match_operand:V4SI 0 "register_operand" "=x")
- (plus:V4SI
- (mult:V4SI
- (sign_extend:V4SI (vec_select:V4HI (match_operand:V8HI 1 "register_operand" "0")
- (parallel [(const_int 0)
- (const_int 2)
- (const_int 4)
- (const_int 6)])))
- (sign_extend:V4SI (vec_select:V4HI (match_operand:V8HI 2 "nonimmediate_operand" "xm")
- (parallel [(const_int 0)
- (const_int 2)
- (const_int 4)
- (const_int 6)]))))
- (mult:V4SI
- (sign_extend:V4SI (vec_select:V4HI (match_dup 1)
- (parallel [(const_int 1)
- (const_int 3)
- (const_int 5)
- (const_int 7)])))
- (sign_extend:V4SI (vec_select:V4HI (match_dup 2)
- (parallel [(const_int 1)
- (const_int 3)
- (const_int 5)
- (const_int 7)]))))))]
- "TARGET_SSE2"
- "pmaddwd\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseiadd")
- (set_attr "mode" "TI")])
-
-;; Same as pxor, but don't show input operands so that we don't think
-;; they are live.
-(define_insn "sse2_clrti"
- [(set (match_operand:TI 0 "register_operand" "=x") (const_int 0))]
- "TARGET_SSE2"
- "pxor\t{%0, %0|%0, %0}"
- [(set_attr "type" "sseiadd")
- (set_attr "memory" "none")
- (set_attr "mode" "TI")])
-
-;; MMX unsigned averages/sum of absolute differences
-
-(define_insn "sse2_uavgv16qi3"
- [(set (match_operand:V16QI 0 "register_operand" "=x")
- (ashiftrt:V16QI
- (plus:V16QI (plus:V16QI
- (match_operand:V16QI 1 "register_operand" "0")
- (match_operand:V16QI 2 "nonimmediate_operand" "xm"))
- (const_vector:V16QI [(const_int 1) (const_int 1)
- (const_int 1) (const_int 1)
- (const_int 1) (const_int 1)
- (const_int 1) (const_int 1)
- (const_int 1) (const_int 1)
- (const_int 1) (const_int 1)
- (const_int 1) (const_int 1)
- (const_int 1) (const_int 1)]))
- (const_int 1)))]
- "TARGET_SSE2"
- "pavgb\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseiadd")
- (set_attr "mode" "TI")])
-
-(define_insn "sse2_uavgv8hi3"
- [(set (match_operand:V8HI 0 "register_operand" "=x")
- (ashiftrt:V8HI
- (plus:V8HI (plus:V8HI
- (match_operand:V8HI 1 "register_operand" "0")
- (match_operand:V8HI 2 "nonimmediate_operand" "xm"))
- (const_vector:V8HI [(const_int 1) (const_int 1)
- (const_int 1) (const_int 1)
- (const_int 1) (const_int 1)
- (const_int 1) (const_int 1)]))
- (const_int 1)))]
- "TARGET_SSE2"
- "pavgw\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseiadd")
- (set_attr "mode" "TI")])
-
-;; @@@ this isn't the right representation.
-(define_insn "sse2_psadbw"
- [(set (match_operand:V2DI 0 "register_operand" "=x")
- (unspec:V2DI [(match_operand:V16QI 1 "register_operand" "0")
- (match_operand:V16QI 2 "nonimmediate_operand" "xm")]
- UNSPEC_PSADBW))]
- "TARGET_SSE2"
- "psadbw\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseiadd")
- (set_attr "mode" "TI")])
-
-
-;; MMX insert/extract/shuffle
-
-(define_insn "sse2_pinsrw"
- [(set (match_operand:V8HI 0 "register_operand" "=x")
- (vec_merge:V8HI (match_operand:V8HI 1 "register_operand" "0")
- (vec_duplicate:V8HI
- (truncate:HI
- (match_operand:SI 2 "nonimmediate_operand" "rm")))
- (match_operand:SI 3 "immediate_operand" "i")))]
- "TARGET_SSE2"
- "pinsrw\t{%3, %2, %0|%0, %2, %3}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "TI")])
-
-(define_insn "sse2_pextrw"
- [(set (match_operand:SI 0 "register_operand" "=r")
- (zero_extend:SI
- (vec_select:HI (match_operand:V8HI 1 "register_operand" "x")
- (parallel
- [(match_operand:SI 2 "immediate_operand" "i")]))))]
- "TARGET_SSE2"
- "pextrw\t{%2, %1, %0|%0, %1, %2}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "TI")])
-
-(define_insn "sse2_pshufd"
- [(set (match_operand:V4SI 0 "register_operand" "=x")
- (unspec:V4SI [(match_operand:V4SI 1 "register_operand" "0")
- (match_operand:SI 2 "immediate_operand" "i")]
- UNSPEC_SHUFFLE))]
- "TARGET_SSE2"
- "pshufd\t{%2, %1, %0|%0, %1, %2}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "TI")])
-
-(define_insn "sse2_pshuflw"
- [(set (match_operand:V8HI 0 "register_operand" "=x")
- (unspec:V8HI [(match_operand:V8HI 1 "register_operand" "0")
- (match_operand:SI 2 "immediate_operand" "i")]
- UNSPEC_PSHUFLW))]
- "TARGET_SSE2"
- "pshuflw\t{%2, %1, %0|%0, %1, %2}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "TI")])
-
-(define_insn "sse2_pshufhw"
- [(set (match_operand:V8HI 0 "register_operand" "=x")
- (unspec:V8HI [(match_operand:V8HI 1 "register_operand" "0")
- (match_operand:SI 2 "immediate_operand" "i")]
- UNSPEC_PSHUFHW))]
- "TARGET_SSE2"
- "pshufhw\t{%2, %1, %0|%0, %1, %2}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "TI")])
-
-;; MMX mask-generating comparisons
-
-(define_insn "eqv16qi3"
- [(set (match_operand:V16QI 0 "register_operand" "=x")
- (eq:V16QI (match_operand:V16QI 1 "register_operand" "0")
- (match_operand:V16QI 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2"
- "pcmpeqb\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssecmp")
- (set_attr "mode" "TI")])
-
-(define_insn "eqv8hi3"
- [(set (match_operand:V8HI 0 "register_operand" "=x")
- (eq:V8HI (match_operand:V8HI 1 "register_operand" "0")
- (match_operand:V8HI 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2"
- "pcmpeqw\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssecmp")
- (set_attr "mode" "TI")])
-
-(define_insn "eqv4si3"
- [(set (match_operand:V4SI 0 "register_operand" "=x")
- (eq:V4SI (match_operand:V4SI 1 "register_operand" "0")
- (match_operand:V4SI 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2"
- "pcmpeqd\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssecmp")
- (set_attr "mode" "TI")])
-
-(define_insn "gtv16qi3"
- [(set (match_operand:V16QI 0 "register_operand" "=x")
- (gt:V16QI (match_operand:V16QI 1 "register_operand" "0")
- (match_operand:V16QI 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2"
- "pcmpgtb\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssecmp")
- (set_attr "mode" "TI")])
-
-(define_insn "gtv8hi3"
- [(set (match_operand:V8HI 0 "register_operand" "=x")
- (gt:V8HI (match_operand:V8HI 1 "register_operand" "0")
- (match_operand:V8HI 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2"
- "pcmpgtw\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssecmp")
- (set_attr "mode" "TI")])
-
-(define_insn "gtv4si3"
- [(set (match_operand:V4SI 0 "register_operand" "=x")
- (gt:V4SI (match_operand:V4SI 1 "register_operand" "0")
- (match_operand:V4SI 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2"
- "pcmpgtd\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssecmp")
- (set_attr "mode" "TI")])
-
-
-;; MMX max/min insns
-
-(define_insn "umaxv16qi3"
- [(set (match_operand:V16QI 0 "register_operand" "=x")
- (umax:V16QI (match_operand:V16QI 1 "register_operand" "0")
- (match_operand:V16QI 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2"
- "pmaxub\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseiadd")
- (set_attr "mode" "TI")])
-
-(define_insn "smaxv8hi3"
- [(set (match_operand:V8HI 0 "register_operand" "=x")
- (smax:V8HI (match_operand:V8HI 1 "register_operand" "0")
- (match_operand:V8HI 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2"
- "pmaxsw\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseiadd")
- (set_attr "mode" "TI")])
-
-(define_insn "uminv16qi3"
- [(set (match_operand:V16QI 0 "register_operand" "=x")
- (umin:V16QI (match_operand:V16QI 1 "register_operand" "0")
- (match_operand:V16QI 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2"
- "pminub\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseiadd")
- (set_attr "mode" "TI")])
-
-(define_insn "sminv8hi3"
- [(set (match_operand:V8HI 0 "register_operand" "=x")
- (smin:V8HI (match_operand:V8HI 1 "register_operand" "0")
- (match_operand:V8HI 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2"
- "pminsw\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseiadd")
- (set_attr "mode" "TI")])
-
-
-;; MMX shifts
-
-(define_insn "ashrv8hi3"
- [(set (match_operand:V8HI 0 "register_operand" "=x")
- (ashiftrt:V8HI (match_operand:V8HI 1 "register_operand" "0")
- (match_operand:TI 2 "nonmemory_operand" "xi")))]
- "TARGET_SSE2"
- "psraw\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseishft")
- (set_attr "mode" "TI")])
-
-(define_insn "ashrv4si3"
- [(set (match_operand:V4SI 0 "register_operand" "=x")
- (ashiftrt:V4SI (match_operand:V4SI 1 "register_operand" "0")
- (match_operand:TI 2 "nonmemory_operand" "xi")))]
- "TARGET_SSE2"
- "psrad\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseishft")
- (set_attr "mode" "TI")])
-
-(define_insn "lshrv8hi3"
- [(set (match_operand:V8HI 0 "register_operand" "=x")
- (lshiftrt:V8HI (match_operand:V8HI 1 "register_operand" "0")
- (match_operand:TI 2 "nonmemory_operand" "xi")))]
- "TARGET_SSE2"
- "psrlw\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseishft")
- (set_attr "mode" "TI")])
-
-(define_insn "lshrv4si3"
- [(set (match_operand:V4SI 0 "register_operand" "=x")
- (lshiftrt:V4SI (match_operand:V4SI 1 "register_operand" "0")
- (match_operand:TI 2 "nonmemory_operand" "xi")))]
- "TARGET_SSE2"
- "psrld\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseishft")
- (set_attr "mode" "TI")])
-
-(define_insn "lshrv2di3"
- [(set (match_operand:V2DI 0 "register_operand" "=x")
- (lshiftrt:V2DI (match_operand:V2DI 1 "register_operand" "0")
- (match_operand:TI 2 "nonmemory_operand" "xi")))]
- "TARGET_SSE2"
- "psrlq\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseishft")
- (set_attr "mode" "TI")])
-
-(define_insn "ashlv8hi3"
- [(set (match_operand:V8HI 0 "register_operand" "=x")
- (ashift:V8HI (match_operand:V8HI 1 "register_operand" "0")
- (match_operand:TI 2 "nonmemory_operand" "xi")))]
- "TARGET_SSE2"
- "psllw\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseishft")
- (set_attr "mode" "TI")])
-
-(define_insn "ashlv4si3"
- [(set (match_operand:V4SI 0 "register_operand" "=x")
- (ashift:V4SI (match_operand:V4SI 1 "register_operand" "0")
- (match_operand:TI 2 "nonmemory_operand" "xi")))]
- "TARGET_SSE2"
- "pslld\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseishft")
- (set_attr "mode" "TI")])
-
-(define_insn "ashlv2di3"
- [(set (match_operand:V2DI 0 "register_operand" "=x")
- (ashift:V2DI (match_operand:V2DI 1 "register_operand" "0")
- (match_operand:TI 2 "nonmemory_operand" "xi")))]
- "TARGET_SSE2"
- "psllq\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseishft")
- (set_attr "mode" "TI")])
-
-(define_insn "ashrv8hi3_ti"
- [(set (match_operand:V8HI 0 "register_operand" "=x")
- (ashiftrt:V8HI (match_operand:V8HI 1 "register_operand" "0")
- (subreg:TI (match_operand:V2DI 2 "nonmemory_operand" "xi") 0)))]
- "TARGET_SSE2"
- "psraw\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseishft")
- (set_attr "mode" "TI")])
-
-(define_insn "ashrv4si3_ti"
- [(set (match_operand:V4SI 0 "register_operand" "=x")
- (ashiftrt:V4SI (match_operand:V4SI 1 "register_operand" "0")
- (subreg:TI (match_operand:V2DI 2 "nonmemory_operand" "xi") 0)))]
- "TARGET_SSE2"
- "psrad\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseishft")
- (set_attr "mode" "TI")])
-
-(define_insn "lshrv8hi3_ti"
- [(set (match_operand:V8HI 0 "register_operand" "=x")
- (lshiftrt:V8HI (match_operand:V8HI 1 "register_operand" "0")
- (subreg:TI (match_operand:V2DI 2 "nonmemory_operand" "xi") 0)))]
- "TARGET_SSE2"
- "psrlw\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseishft")
- (set_attr "mode" "TI")])
-
-(define_insn "lshrv4si3_ti"
- [(set (match_operand:V4SI 0 "register_operand" "=x")
- (lshiftrt:V4SI (match_operand:V4SI 1 "register_operand" "0")
- (subreg:TI (match_operand:V2DI 2 "nonmemory_operand" "xi") 0)))]
- "TARGET_SSE2"
- "psrld\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseishft")
- (set_attr "mode" "TI")])
-
-(define_insn "lshrv2di3_ti"
- [(set (match_operand:V2DI 0 "register_operand" "=x")
- (lshiftrt:V2DI (match_operand:V2DI 1 "register_operand" "0")
- (subreg:TI (match_operand:V2DI 2 "nonmemory_operand" "xi") 0)))]
- "TARGET_SSE2"
- "psrlq\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseishft")
- (set_attr "mode" "TI")])
-
-(define_insn "ashlv8hi3_ti"
- [(set (match_operand:V8HI 0 "register_operand" "=x")
- (ashift:V8HI (match_operand:V8HI 1 "register_operand" "0")
- (subreg:TI (match_operand:V2DI 2 "nonmemory_operand" "xi") 0)))]
- "TARGET_SSE2"
- "psllw\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseishft")
- (set_attr "mode" "TI")])
-
-(define_insn "ashlv4si3_ti"
- [(set (match_operand:V4SI 0 "register_operand" "=x")
- (ashift:V4SI (match_operand:V4SI 1 "register_operand" "0")
- (subreg:TI (match_operand:V2DI 2 "nonmemory_operand" "xi") 0)))]
- "TARGET_SSE2"
- "pslld\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseishft")
- (set_attr "mode" "TI")])
-
-(define_insn "ashlv2di3_ti"
- [(set (match_operand:V2DI 0 "register_operand" "=x")
- (ashift:V2DI (match_operand:V2DI 1 "register_operand" "0")
- (subreg:TI (match_operand:V2DI 2 "nonmemory_operand" "xi") 0)))]
- "TARGET_SSE2"
- "psllq\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseishft")
- (set_attr "mode" "TI")])
-
-;; See logical MMX insns for the reason for the unspec. Strictly speaking
-;; we wouldn't need here it since we never generate TImode arithmetic.
-
-;; There has to be some kind of prize for the weirdest new instruction...
-(define_insn "sse2_ashlti3"
- [(set (match_operand:TI 0 "register_operand" "=x")
- (unspec:TI
- [(ashift:TI (match_operand:TI 1 "register_operand" "0")
- (mult:SI (match_operand:SI 2 "immediate_operand" "i")
- (const_int 8)))] UNSPEC_NOP))]
- "TARGET_SSE2"
- "pslldq\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseishft")
- (set_attr "mode" "TI")])
-
-(define_insn "sse2_lshrti3"
- [(set (match_operand:TI 0 "register_operand" "=x")
- (unspec:TI
- [(lshiftrt:TI (match_operand:TI 1 "register_operand" "0")
- (mult:SI (match_operand:SI 2 "immediate_operand" "i")
- (const_int 8)))] UNSPEC_NOP))]
- "TARGET_SSE2"
- "psrldq\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseishft")
- (set_attr "mode" "TI")])
-
-;; SSE unpack
-
-(define_insn "sse2_unpckhpd"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (vec_concat:V2DF
- (vec_select:V2DF (match_operand:V2DF 1 "register_operand" "0")
- (parallel [(const_int 1)]))
- (vec_select:V2DF (match_operand:V2DF 2 "register_operand" "x")
- (parallel [(const_int 0)]))))]
- "TARGET_SSE2"
- "unpckhpd\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "TI")])
-
-(define_insn "sse2_unpcklpd"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (vec_concat:V2DF
- (vec_select:V2DF (match_operand:V2DF 1 "register_operand" "0")
- (parallel [(const_int 0)]))
- (vec_select:V2DF (match_operand:V2DF 2 "register_operand" "x")
- (parallel [(const_int 1)]))))]
- "TARGET_SSE2"
- "unpcklpd\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "TI")])
-
-;; MMX pack/unpack insns.
-
-(define_insn "sse2_packsswb"
- [(set (match_operand:V16QI 0 "register_operand" "=x")
- (vec_concat:V16QI
- (ss_truncate:V8QI (match_operand:V8HI 1 "register_operand" "0"))
- (ss_truncate:V8QI (match_operand:V8HI 2 "register_operand" "x"))))]
- "TARGET_SSE2"
- "packsswb\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "TI")])
-
-(define_insn "sse2_packssdw"
- [(set (match_operand:V8HI 0 "register_operand" "=x")
- (vec_concat:V8HI
- (ss_truncate:V4HI (match_operand:V4SI 1 "register_operand" "0"))
- (ss_truncate:V4HI (match_operand:V4SI 2 "register_operand" "x"))))]
- "TARGET_SSE2"
- "packssdw\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "TI")])
-
-(define_insn "sse2_packuswb"
- [(set (match_operand:V16QI 0 "register_operand" "=x")
- (vec_concat:V16QI
- (us_truncate:V8QI (match_operand:V8HI 1 "register_operand" "0"))
- (us_truncate:V8QI (match_operand:V8HI 2 "register_operand" "x"))))]
- "TARGET_SSE2"
- "packuswb\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "TI")])
-
-(define_insn "sse2_punpckhbw"
- [(set (match_operand:V16QI 0 "register_operand" "=x")
- (vec_merge:V16QI
- (vec_select:V16QI (match_operand:V16QI 1 "register_operand" "0")
- (parallel [(const_int 8) (const_int 0)
- (const_int 9) (const_int 1)
- (const_int 10) (const_int 2)
- (const_int 11) (const_int 3)
- (const_int 12) (const_int 4)
- (const_int 13) (const_int 5)
- (const_int 14) (const_int 6)
- (const_int 15) (const_int 7)]))
- (vec_select:V16QI (match_operand:V16QI 2 "register_operand" "x")
- (parallel [(const_int 0) (const_int 8)
- (const_int 1) (const_int 9)
- (const_int 2) (const_int 10)
- (const_int 3) (const_int 11)
- (const_int 4) (const_int 12)
- (const_int 5) (const_int 13)
- (const_int 6) (const_int 14)
- (const_int 7) (const_int 15)]))
- (const_int 21845)))]
- "TARGET_SSE2"
- "punpckhbw\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "TI")])
-
-(define_insn "sse2_punpckhwd"
- [(set (match_operand:V8HI 0 "register_operand" "=x")
- (vec_merge:V8HI
- (vec_select:V8HI (match_operand:V8HI 1 "register_operand" "0")
- (parallel [(const_int 4) (const_int 0)
- (const_int 5) (const_int 1)
- (const_int 6) (const_int 2)
- (const_int 7) (const_int 3)]))
- (vec_select:V8HI (match_operand:V8HI 2 "register_operand" "x")
- (parallel [(const_int 0) (const_int 4)
- (const_int 1) (const_int 5)
- (const_int 2) (const_int 6)
- (const_int 3) (const_int 7)]))
- (const_int 85)))]
- "TARGET_SSE2"
- "punpckhwd\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "TI")])
-
-(define_insn "sse2_punpckhdq"
- [(set (match_operand:V4SI 0 "register_operand" "=x")
- (vec_merge:V4SI
- (vec_select:V4SI (match_operand:V4SI 1 "register_operand" "0")
- (parallel [(const_int 2) (const_int 0)
- (const_int 3) (const_int 1)]))
- (vec_select:V4SI (match_operand:V4SI 2 "register_operand" "x")
- (parallel [(const_int 0) (const_int 2)
- (const_int 1) (const_int 3)]))
- (const_int 5)))]
- "TARGET_SSE2"
- "punpckhdq\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "TI")])
-
-(define_insn "sse2_punpcklbw"
- [(set (match_operand:V16QI 0 "register_operand" "=x")
- (vec_merge:V16QI
- (vec_select:V16QI (match_operand:V16QI 1 "register_operand" "0")
- (parallel [(const_int 0) (const_int 8)
- (const_int 1) (const_int 9)
- (const_int 2) (const_int 10)
- (const_int 3) (const_int 11)
- (const_int 4) (const_int 12)
- (const_int 5) (const_int 13)
- (const_int 6) (const_int 14)
- (const_int 7) (const_int 15)]))
- (vec_select:V16QI (match_operand:V16QI 2 "register_operand" "x")
- (parallel [(const_int 8) (const_int 0)
- (const_int 9) (const_int 1)
- (const_int 10) (const_int 2)
- (const_int 11) (const_int 3)
- (const_int 12) (const_int 4)
- (const_int 13) (const_int 5)
- (const_int 14) (const_int 6)
- (const_int 15) (const_int 7)]))
- (const_int 21845)))]
- "TARGET_SSE2"
- "punpcklbw\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "TI")])
-
-(define_insn "sse2_punpcklwd"
- [(set (match_operand:V8HI 0 "register_operand" "=x")
- (vec_merge:V8HI
- (vec_select:V8HI (match_operand:V8HI 1 "register_operand" "0")
- (parallel [(const_int 0) (const_int 4)
- (const_int 1) (const_int 5)
- (const_int 2) (const_int 6)
- (const_int 3) (const_int 7)]))
- (vec_select:V8HI (match_operand:V8HI 2 "register_operand" "x")
- (parallel [(const_int 4) (const_int 0)
- (const_int 5) (const_int 1)
- (const_int 6) (const_int 2)
- (const_int 7) (const_int 3)]))
- (const_int 85)))]
- "TARGET_SSE2"
- "punpcklwd\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "TI")])
-
-(define_insn "sse2_punpckldq"
- [(set (match_operand:V4SI 0 "register_operand" "=x")
- (vec_merge:V4SI
- (vec_select:V4SI (match_operand:V4SI 1 "register_operand" "0")
- (parallel [(const_int 0) (const_int 2)
- (const_int 1) (const_int 3)]))
- (vec_select:V4SI (match_operand:V4SI 2 "register_operand" "x")
- (parallel [(const_int 2) (const_int 0)
- (const_int 3) (const_int 1)]))
- (const_int 5)))]
- "TARGET_SSE2"
- "punpckldq\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "TI")])
-
-(define_insn "sse2_punpcklqdq"
- [(set (match_operand:V2DI 0 "register_operand" "=x")
- (vec_merge:V2DI
- (vec_select:V2DI (match_operand:V2DI 2 "register_operand" "x")
- (parallel [(const_int 1)
- (const_int 0)]))
- (match_operand:V2DI 1 "register_operand" "0")
- (const_int 1)))]
- "TARGET_SSE2"
- "punpcklqdq\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "TI")])
-
-(define_insn "sse2_punpckhqdq"
- [(set (match_operand:V2DI 0 "register_operand" "=x")
- (vec_merge:V2DI
- (match_operand:V2DI 1 "register_operand" "0")
- (vec_select:V2DI (match_operand:V2DI 2 "register_operand" "x")
- (parallel [(const_int 1)
- (const_int 0)]))
- (const_int 1)))]
- "TARGET_SSE2"
- "punpckhqdq\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "TI")])
-
-;; SSE2 moves
-
-(define_insn "sse2_movapd"
- [(set (match_operand:V2DF 0 "nonimmediate_operand" "=x,m")
- (unspec:V2DF [(match_operand:V2DF 1 "nonimmediate_operand" "xm,x")]
- UNSPEC_MOVA))]
- "TARGET_SSE2
- && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
- "movapd\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssemov")
- (set_attr "mode" "V2DF")])
-
-(define_insn "sse2_movupd"
- [(set (match_operand:V2DF 0 "nonimmediate_operand" "=x,m")
- (unspec:V2DF [(match_operand:V2DF 1 "nonimmediate_operand" "xm,x")]
- UNSPEC_MOVU))]
- "TARGET_SSE2
- && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
- "movupd\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "V2DF")])
-
-(define_insn "sse2_movdqa"
- [(set (match_operand:V16QI 0 "nonimmediate_operand" "=x,m")
- (unspec:V16QI [(match_operand:V16QI 1 "nonimmediate_operand" "xm,x")]
- UNSPEC_MOVA))]
- "TARGET_SSE2
- && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
- "movdqa\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssemov")
- (set_attr "mode" "TI")])
-
-(define_insn "sse2_movdqu"
- [(set (match_operand:V16QI 0 "nonimmediate_operand" "=x,m")
- (unspec:V16QI [(match_operand:V16QI 1 "nonimmediate_operand" "xm,x")]
- UNSPEC_MOVU))]
- "TARGET_SSE2
- && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
- "movdqu\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "TI")])
-
-(define_insn "sse2_movdq2q"
- [(set (match_operand:DI 0 "nonimmediate_operand" "=m,y")
- (vec_select:DI (match_operand:V2DI 1 "register_operand" "x,x")
- (parallel [(const_int 0)])))]
- "TARGET_SSE2 && !TARGET_64BIT"
- "@
- movq\t{%1, %0|%0, %1}
- movdq2q\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "TI")])
-
-(define_insn "sse2_movdq2q_rex64"
- [(set (match_operand:DI 0 "nonimmediate_operand" "=m,y,r")
- (vec_select:DI (match_operand:V2DI 1 "register_operand" "x,x,x")
- (parallel [(const_int 0)])))]
- "TARGET_SSE2 && TARGET_64BIT"
- "@
- movq\t{%1, %0|%0, %1}
- movdq2q\t{%1, %0|%0, %1}
- movd\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "TI")])
-
-(define_insn "sse2_movq2dq"
- [(set (match_operand:V2DI 0 "register_operand" "=x,?x")
- (vec_concat:V2DI (match_operand:DI 1 "nonimmediate_operand" "m,y")
- (const_int 0)))]
- "TARGET_SSE2 && !TARGET_64BIT"
- "@
- movq\t{%1, %0|%0, %1}
- movq2dq\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt,ssemov")
- (set_attr "mode" "TI")])
-
-(define_insn "sse2_movq2dq_rex64"
- [(set (match_operand:V2DI 0 "register_operand" "=x,?x,?x")
- (vec_concat:V2DI (match_operand:DI 1 "nonimmediate_operand" "m,y,r")
- (const_int 0)))]
- "TARGET_SSE2 && TARGET_64BIT"
- "@
- movq\t{%1, %0|%0, %1}
- movq2dq\t{%1, %0|%0, %1}
- movd\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt,ssemov,ssecvt")
- (set_attr "mode" "TI")])
-
-(define_insn "sse2_movq"
- [(set (match_operand:V2DI 0 "register_operand" "=x")
- (vec_concat:V2DI (vec_select:DI
- (match_operand:V2DI 1 "nonimmediate_operand" "xm")
- (parallel [(const_int 0)]))
- (const_int 0)))]
- "TARGET_SSE2"
- "movq\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssemov")
- (set_attr "mode" "TI")])
-
-(define_insn "sse2_loadd"
- [(set (match_operand:V4SI 0 "register_operand" "=x")
- (vec_merge:V4SI
- (vec_duplicate:V4SI (match_operand:SI 1 "nonimmediate_operand" "mr"))
- (const_vector:V4SI [(const_int 0)
- (const_int 0)
- (const_int 0)
- (const_int 0)])
- (const_int 1)))]
- "TARGET_SSE2"
- "movd\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssemov")
- (set_attr "mode" "TI")])
-
-(define_insn "sse2_stored"
- [(set (match_operand:SI 0 "nonimmediate_operand" "=mr")
- (vec_select:SI
- (match_operand:V4SI 1 "register_operand" "x")
- (parallel [(const_int 0)])))]
- "TARGET_SSE2"
- "movd\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssemov")
- (set_attr "mode" "TI")])
-
-(define_insn "sse2_movhpd"
- [(set (match_operand:V2DF 0 "nonimmediate_operand" "=x,m")
- (vec_merge:V2DF
- (match_operand:V2DF 1 "nonimmediate_operand" "0,0")
- (match_operand:V2DF 2 "nonimmediate_operand" "m,x")
- (const_int 2)))]
- "TARGET_SSE2 && (GET_CODE (operands[1]) == MEM || GET_CODE (operands[2]) == MEM)"
- "movhpd\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "V2DF")])
-
-(define_insn "sse2_movlpd"
- [(set (match_operand:V2DF 0 "nonimmediate_operand" "=x,m")
- (vec_merge:V2DF
- (match_operand:V2DF 1 "nonimmediate_operand" "0,0")
- (match_operand:V2DF 2 "nonimmediate_operand" "m,x")
- (const_int 1)))]
- "TARGET_SSE2 && (GET_CODE (operands[1]) == MEM || GET_CODE (operands[2]) == MEM)"
- "movlpd\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "V2DF")])
-
-(define_expand "sse2_loadsd"
- [(match_operand:V2DF 0 "register_operand" "")
- (match_operand:DF 1 "memory_operand" "")]
- "TARGET_SSE2"
-{
- emit_insn (gen_sse2_loadsd_1 (operands[0], operands[1],
- CONST0_RTX (V2DFmode)));
- DONE;
-})
-
-(define_insn "sse2_loadsd_1"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (vec_merge:V2DF
- (vec_duplicate:V2DF (match_operand:DF 1 "memory_operand" "m"))
- (match_operand:V2DF 2 "const0_operand" "X")
- (const_int 1)))]
- "TARGET_SSE2"
- "movsd\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "DF")])
-
-(define_insn "sse2_movsd"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (vec_merge:V2DF
- (match_operand:V2DF 1 "register_operand" "0")
- (match_operand:V2DF 2 "register_operand" "x")
- (const_int 1)))]
- "TARGET_SSE2"
- "movsd\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "DF")])
-
-(define_insn "sse2_storesd"
- [(set (match_operand:DF 0 "memory_operand" "=m")
- (vec_select:DF
- (match_operand:V2DF 1 "register_operand" "x")
- (parallel [(const_int 0)])))]
- "TARGET_SSE2"
- "movsd\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "DF")])
-
-(define_insn "sse2_shufpd"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (unspec:V2DF [(match_operand:V2DF 1 "register_operand" "0")
- (match_operand:V2DF 2 "nonimmediate_operand" "xm")
- (match_operand:SI 3 "immediate_operand" "i")]
- UNSPEC_SHUFFLE))]
- "TARGET_SSE2"
- ;; @@@ check operand order for intel/nonintel syntax
- "shufpd\t{%3, %2, %0|%0, %2, %3}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "V2DF")])
-
-(define_insn "sse2_clflush"
- [(unspec_volatile [(match_operand 0 "address_operand" "p")]
- UNSPECV_CLFLUSH)]
- "TARGET_SSE2"
- "clflush %0"
- [(set_attr "type" "sse")
- (set_attr "memory" "unknown")])
-
-(define_expand "sse2_mfence"
- [(set (match_dup 0)
- (unspec:BLK [(match_dup 0)] UNSPEC_MFENCE))]
- "TARGET_SSE2"
-{
- operands[0] = gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (Pmode));
- MEM_VOLATILE_P (operands[0]) = 1;
-})
-
-(define_insn "*mfence_insn"
- [(set (match_operand:BLK 0 "" "")
- (unspec:BLK [(match_dup 0)] UNSPEC_MFENCE))]
- "TARGET_SSE2"
- "mfence"
- [(set_attr "type" "sse")
- (set_attr "memory" "unknown")])
-
-(define_expand "sse2_lfence"
- [(set (match_dup 0)
- (unspec:BLK [(match_dup 0)] UNSPEC_LFENCE))]
- "TARGET_SSE2"
-{
- operands[0] = gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (Pmode));
- MEM_VOLATILE_P (operands[0]) = 1;
-})
-
-(define_insn "*lfence_insn"
- [(set (match_operand:BLK 0 "" "")
- (unspec:BLK [(match_dup 0)] UNSPEC_LFENCE))]
- "TARGET_SSE2"
- "lfence"
- [(set_attr "type" "sse")
- (set_attr "memory" "unknown")])
+ [(set_attr "type" "mmx")])
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/x86-64.h b/contrib/gcc/config/i386/x86-64.h
index 37a2a30..72b3dc7 100644
--- a/contrib/gcc/config/i386/x86-64.h
+++ b/contrib/gcc/config/i386/x86-64.h
@@ -19,6 +19,8 @@ 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. */
+/* $FreeBSD$ */
+
#undef ASM_COMMENT_START
#define ASM_COMMENT_START "#"
@@ -27,10 +29,18 @@ Boston, MA 02111-1307, USA. */
(TARGET_64BIT ? dbx64_register_map[n] : svr4_dbx_register_map[n])
/* Output assembler code to FILE to call the profiler. */
-#define NO_PROFILE_COUNTERS
-
-#undef MCOUNT_NAME
-#define MCOUNT_NAME "mcount"
+#define NO_PROFILE_COUNTERS 1
+
+#undef FUNCTION_PROFILER
+#define FUNCTION_PROFILER(FILE, LABELNO) \
+{ \
+ if (TARGET_64BIT && flag_pic) \
+ fprintf (FILE, "\tcall\t*mcount@PLT\n"); \
+ else if (flag_pic) \
+ fprintf (FILE, "\tcall\t*mcount@GOT(%%ebx)\n"); \
+ else \
+ fprintf (FILE, "\tcall\tmcount\n"); \
+}
#undef SIZE_TYPE
#define SIZE_TYPE (TARGET_64BIT ? "long unsigned int" : "unsigned int")
@@ -65,20 +75,13 @@ Boston, MA 02111-1307, USA. */
This is used to align code labels according to Intel recommendations. */
-#define ASM_OUTPUT_MAX_SKIP_ALIGN(FILE,LOG,MAX_SKIP) \
- do { \
- if ((LOG) != 0) { \
- if ((MAX_SKIP) == 0) fprintf ((FILE), "\t.p2align %d\n", (LOG)); \
- else fprintf ((FILE), "\t.p2align %d,,%d\n", (LOG), (MAX_SKIP)); \
- } \
- } while (0)
-
/* i386 System V Release 4 uses DWARF debugging info.
x86-64 ABI specifies DWARF2. */
+#undef DWARF2_DEBUGGING_INFO
#undef DWARF_DEBUGGING_INFO
-#define DWARF2_DEBUGGING_INFO 1
+#define DWARF2_DEBUGGING_INFO
#define DWARF2_UNWIND_INFO 1
/* Incorrectly autodetected in cross compilation. */
#undef HAVE_AS_DWARF2_DEBUG_LINE
diff --git a/contrib/gcc/config/sparc/freebsd.h b/contrib/gcc/config/sparc/freebsd.h
index b2809dd..ad52ef4 100644
--- a/contrib/gcc/config/sparc/freebsd.h
+++ b/contrib/gcc/config/sparc/freebsd.h
@@ -1,4 +1,4 @@
-/* Definitions for Sun SPARC64 running FreeBSD using the ELF format
+/* Definitions for Sun Sparc64 running FreeBSD using the ELF format
Copyright (C) 2001, 2002 Free Software Foundation, Inc.
Contributed by David E. O'Brien <obrien@FreeBSD.org> and BSDi.
@@ -18,6 +18,8 @@ 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, 675 Mass Ave, Cambridge, MA 02139, USA. */
+/* $FreeBSD$ */
+
/* FreeBSD needs the platform name (sparc64) defined.
Emacs needs to know if the arch is 64 or 32-bits. */
@@ -27,7 +29,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
/* Because we include sparc/sysv4.h. */
#undef CPP_PREDEFINES
-/* Do not define it here, we now use TARGET_OS_CPP_BUILTINS. */
+#define CPP_PREDEFINES FBSD_CPP_PREDEFINES
#define LINK_SPEC "%(link_arch) \
%{!mno-relax:%{!r:-relax}} \
@@ -53,11 +55,14 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
We use the GCC defaults instead. */
#undef WCHAR_TYPE
+#undef WCHAR_UNSIGNED
+#define WCHAR_UNSIGNED 0
+
#undef WCHAR_TYPE_SIZE
#define WCHAR_TYPE_SIZE 32
-/* Define for support of TFmode long double.
- SPARC ABI says that long double is 4 words. */
+/* Define for support of TFmode long double and REAL_ARITHMETIC.
+ Sparc ABI says that long double is 4 words. */
#undef LONG_DOUBLE_TYPE_SIZE
#define LONG_DOUBLE_TYPE_SIZE (TARGET_LONG_DOUBLE_128 ? 128 : 64)
diff --git a/contrib/gcc/configure b/contrib/gcc/configure
index 5f00c79..89d3372 100755
--- a/contrib/gcc/configure
+++ b/contrib/gcc/configure
@@ -34,15 +34,10 @@ ac_help="$ac_help
--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"
+ Categories are: misc,tree,rtl,gc,gcac; default
+ is misc,tree,gc"
ac_help="$ac_help
- --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"
+ --disable-cpp don't provide a user-visible C preprocessor"
ac_help="$ac_help
--with-cpp-install-dir=DIR
install the user visible C preprocessor in DIR
@@ -64,8 +59,6 @@ ac_help="$ac_help
ac_help="$ac_help
--with-libiconv-prefix=DIR search for libiconv in DIR/include and DIR/lib"
ac_help="$ac_help
- --enable-initfini-array use .init_array/.fini_array sections"
-ac_help="$ac_help
--enable-nls use Native Language Support (default)"
ac_help="$ac_help
--with-libiconv-prefix=DIR search for libiconv in DIR/include and DIR/lib"
@@ -94,8 +87,6 @@ ac_help="$ac_help
--enable-sjlj-exceptions
arrange to use setjmp/longjmp exception handling"
ac_help="$ac_help
- --enable-libunwind-exceptions force use libunwind for exceptions"
-ac_help="$ac_help
--enable-version-specific-runtime-libs
specify that runtime libraries should be
installed in a compiler-specific directory"
@@ -118,6 +109,7 @@ program_suffix=NONE
program_transform_name=s,x,x,
silent=
site=
+sitefile=
srcdir=
target=NONE
verbose=
@@ -232,6 +224,7 @@ Configuration:
--help print this message
--no-create do not create output files
--quiet, --silent do not print \`checking...' messages
+ --site-file=FILE use FILE as the site file
--version print the version of autoconf that created configure
Directory and file names:
--prefix=PREFIX install architecture-independent files in PREFIX
@@ -402,6 +395,11 @@ EOF
-site=* | --site=* | --sit=*)
site="$ac_optarg" ;;
+ -site-file | --site-file | --site-fil | --site-fi | --site-f)
+ ac_prev=sitefile ;;
+ -site-file=* | --site-file=* | --site-fil=* | --site-fi=* | --site-f=*)
+ sitefile="$ac_optarg" ;;
+
-srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
ac_prev=srcdir ;;
-srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
@@ -567,12 +565,16 @@ fi
srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
# Prefer explicitly selected file to automatically selected ones.
-if test -z "$CONFIG_SITE"; then
- if test "x$prefix" != xNONE; then
- CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
- else
- CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
+if test -z "$sitefile"; then
+ if test -z "$CONFIG_SITE"; then
+ if test "x$prefix" != xNONE; then
+ CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
+ else
+ CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
+ fi
fi
+else
+ CONFIG_SITE="$sitefile"
fi
for ac_site_file in $CONFIG_SITE; do
if test -r "$ac_site_file"; then
@@ -627,7 +629,7 @@ copy=cp
# - two terminals occur directly after each other
# - the path contains an element with a dot in it
echo $ac_n "checking LIBRARY_PATH variable""... $ac_c" 1>&6
-echo "configure:631: checking LIBRARY_PATH variable" >&5
+echo "configure:633: checking LIBRARY_PATH variable" >&5
case ${LIBRARY_PATH} in
[:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
library_path_setting="contains current directory"
@@ -652,7 +654,7 @@ fi
# - two terminals occur directly after each other
# - the path contains an element with a dot in it
echo $ac_n "checking GCC_EXEC_PREFIX variable""... $ac_c" 1>&6
-echo "configure:656: checking GCC_EXEC_PREFIX variable" >&5
+echo "configure:658: checking GCC_EXEC_PREFIX variable" >&5
case ${GCC_EXEC_PREFIX} in
[:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
gcc_exec_prefix_setting="contains current directory"
@@ -791,6 +793,206 @@ if test x${gcc_gxx_include_dir} = x; then
fi
fi
+# Determine whether or not multilibs are enabled.
+# Check whether --enable-multilib or --disable-multilib was given.
+if test "${enable_multilib+set}" = set; then
+ enableval="$enable_multilib"
+ :
+else
+ enable_multilib=yes
+fi
+
+
+
+# Enable expensive internal checks
+# Check whether --enable-checking or --disable-checking was given.
+if test "${enable_checking+set}" = set; then
+ enableval="$enable_checking"
+ ac_checking=
+ac_tree_checking=
+ac_rtl_checking=
+ac_gc_checking=
+ac_gc_always_collect=
+case "${enableval}" in
+yes) ac_checking=1 ; ac_tree_checking=1 ; ac_gc_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 ;;
+ rtl) ac_rtl_checking=1 ;;
+ gc) ac_gc_checking=1 ;;
+ gcac) ac_gc_always_collect=1 ;;
+ *) { echo "configure: error: unknown check category $check" 1>&2; exit 1; } ;;
+ esac
+ done
+ ;;
+esac
+
+fi
+
+if test x$ac_checking != x ; then
+ cat >> confdefs.h <<\EOF
+#define ENABLE_CHECKING 1
+EOF
+
+fi
+if test x$ac_tree_checking != x ; then
+ cat >> confdefs.h <<\EOF
+#define ENABLE_TREE_CHECKING 1
+EOF
+
+fi
+if test x$ac_rtl_checking != x ; then
+ cat >> confdefs.h <<\EOF
+#define ENABLE_RTL_CHECKING 1
+EOF
+
+fi
+if test x$ac_gc_checking != x ; then
+ cat >> confdefs.h <<\EOF
+#define ENABLE_GC_CHECKING 1
+EOF
+
+fi
+if test x$ac_gc_always_collect != x ; then
+ cat >> confdefs.h <<\EOF
+#define ENABLE_GC_ALWAYS_COLLECT 1
+EOF
+
+fi
+
+
+# Check whether --enable-cpp or --disable-cpp was given.
+if test "${enable_cpp+set}" = set; then
+ enableval="$enable_cpp"
+ :
+else
+ enable_cpp=yes
+fi
+
+
+# Check whether --with-cpp_install_dir or --without-cpp_install_dir was given.
+if test "${with_cpp_install_dir+set}" = set; then
+ withval="$with_cpp_install_dir"
+ if test x$withval = xyes; then
+ { echo "configure: error: option --with-cpp-install-dir requires an argument" 1>&2; exit 1; }
+elif test x$withval != xno; then
+ cpp_install_dir=$withval
+fi
+fi
+
+
+# Enable __cxa_atexit for C++.
+# Check whether --enable-__cxa_atexit or --disable-__cxa_atexit was given.
+if test "${enable___cxa_atexit+set}" = set; then
+ enableval="$enable___cxa_atexit"
+ :
+fi
+
+if test x$enable___cxa_atexit = xyes; then
+ cat >> confdefs.h <<\EOF
+#define DEFAULT_USE_CXA_ATEXIT 1
+EOF
+
+fi
+
+# Enable Multibyte Characters for C/C++
+# Check whether --enable-c-mbchar or --disable-c-mbchar was given.
+if test "${enable_c_mbchar+set}" = set; then
+ enableval="$enable_c_mbchar"
+ if test x$enable_c_mbchar != xno; then
+ cat >> confdefs.h <<\EOF
+#define MULTIBYTE_CHARS 1
+EOF
+
+fi
+fi
+
+
+# Enable threads
+# Pass with no value to take the default
+# Pass with a value to specify a thread package
+# Check whether --enable-threads or --disable-threads was given.
+if test "${enable_threads+set}" = set; then
+ enableval="$enable_threads"
+ :
+else
+ enable_threads=''
+fi
+
+
+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
+
+# Check whether --enable-objc-gc or --disable-objc-gc was given.
+if test "${enable_objc_gc+set}" = set; then
+ enableval="$enable_objc_gc"
+ if test x$enable_objc_gc = xno; then
+ objc_boehm_gc=''
+else
+ objc_boehm_gc=1
+fi
+else
+ objc_boehm_gc=''
+fi
+
+
+# Check whether --with-dwarf2 or --without-dwarf2 was given.
+if test "${with_dwarf2+set}" = set; then
+ withval="$with_dwarf2"
+ dwarf2="$with_dwarf2"
+else
+ dwarf2=no
+fi
+
+
+# Check whether --enable-shared or --disable-shared was given.
+if test "${enable_shared+set}" = set; then
+ enableval="$enable_shared"
+
+ 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
+
+else
+ enable_shared=yes
+fi
+
+
+
# Determine the host, build, and target systems
ac_aux_dir=
for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
@@ -839,7 +1041,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
fi
echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:843: checking host system type" >&5
+echo "configure:1045: checking host system type" >&5
host_alias=$host
case "$host_alias" in
@@ -860,7 +1062,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$host" 1>&6
echo $ac_n "checking target system type""... $ac_c" 1>&6
-echo "configure:864: checking target system type" >&5
+echo "configure:1066: checking target system type" >&5
target_alias=$target
case "$target_alias" in
@@ -878,7 +1080,7 @@ target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$target" 1>&6
echo $ac_n "checking build system type""... $ac_c" 1>&6
-echo "configure:882: checking build system type" >&5
+echo "configure:1084: checking build system type" >&5
build_alias=$build
case "$build_alias" in
@@ -926,7 +1128,7 @@ test "$program_transform_name" = "" && program_transform_name="s,x,x,"
# Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:930: checking for $ac_word" >&5
+echo "configure:1132: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -956,7 +1158,7 @@ if test -z "$CC"; then
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:960: checking for $ac_word" >&5
+echo "configure:1162: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1007,7 +1209,7 @@ fi
# Extract the first word of "cl", so it can be a program name with args.
set dummy cl; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1011: checking for $ac_word" >&5
+echo "configure:1213: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1039,7 +1241,7 @@ fi
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1043: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:1245: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
ac_ext=c
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -1050,12 +1252,12 @@ cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext << EOF
-#line 1054 "configure"
+#line 1256 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:1059: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1261: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
ac_cv_prog_cc_works=yes
# If we can't run a trivial program, we are probably using a cross compiler.
if (./conftest; exit) 2>/dev/null; then
@@ -1081,12 +1283,12 @@ if test $ac_cv_prog_cc_works = no; then
{ echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1085: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1287: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
cross_compiling=$ac_cv_prog_cc_cross
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:1090: checking whether we are using GNU C" >&5
+echo "configure:1292: checking whether we are using GNU C" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1095,7 +1297,7 @@ else
yes;
#endif
EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1099: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1301: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gcc=yes
else
ac_cv_prog_gcc=no
@@ -1114,7 +1316,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
ac_save_CFLAGS="$CFLAGS"
CFLAGS=
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1118: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1320: checking whether ${CC-cc} accepts -g" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1147,10 +1349,10 @@ fi
if test "x$CC" != xcc; then
echo $ac_n "checking whether $CC and cc understand -c and -o together""... $ac_c" 1>&6
-echo "configure:1151: checking whether $CC and cc understand -c and -o together" >&5
+echo "configure:1353: checking whether $CC and cc understand -c and -o together" >&5
else
echo $ac_n "checking whether cc understands -c and -o together""... $ac_c" 1>&6
-echo "configure:1154: checking whether cc understands -c and -o together" >&5
+echo "configure:1356: checking whether cc understands -c and -o together" >&5
fi
set dummy $CC; ac_cc="`echo $2 |
sed -e 's/[^a-zA-Z0-9_]/_/g' -e 's/^[0-9]/_/'`"
@@ -1162,16 +1364,16 @@ else
# We do the test twice because some compilers refuse to overwrite an
# existing .o file with -o, though they will create one.
ac_try='${CC-cc} -c conftest.c -o conftest.o 1>&5'
-if { (eval echo configure:1166: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } &&
- test -f conftest.o && { (eval echo configure:1167: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; };
+if { (eval echo configure:1368: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } &&
+ test -f conftest.o && { (eval echo configure:1369: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; };
then
eval ac_cv_prog_cc_${ac_cc}_c_o=yes
if test "x$CC" != xcc; then
# Test first that cc exists at all.
- if { ac_try='cc -c conftest.c 1>&5'; { (eval echo configure:1172: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
+ if { ac_try='cc -c conftest.c 1>&5'; { (eval echo configure:1374: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
ac_try='cc -c conftest.c -o conftest.o 1>&5'
- if { (eval echo configure:1174: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } &&
- test -f conftest.o && { (eval echo configure:1175: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; };
+ if { (eval echo configure:1376: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } &&
+ test -f conftest.o && { (eval echo configure:1377: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; };
then
# cc works too.
:
@@ -1217,7 +1419,7 @@ fi
# Extract the first word of "${ac_tool_prefix}gnatbind", so it can be a program name with args.
set dummy ${ac_tool_prefix}gnatbind; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1221: checking for $ac_word" >&5
+echo "configure:1423: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_GNATBIND'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1249,7 +1451,7 @@ if test -n "$ac_tool_prefix"; then
# Extract the first word of "gnatbind", so it can be a program name with args.
set dummy gnatbind; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1253: checking for $ac_word" >&5
+echo "configure:1455: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_GNATBIND'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1282,7 +1484,7 @@ fi
fi
echo $ac_n "checking for compiler driver that understands Ada""... $ac_c" 1>&6
-echo "configure:1286: checking for compiler driver that understands Ada" >&5
+echo "configure:1488: checking for compiler driver that understands Ada" >&5
if eval "test \"`echo '$''{'gcc_cv_prog_adac'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1291,7 +1493,10 @@ procedure conftest is begin null; end conftest;
EOF
gcc_cv_prog_adac=no
# Have to do ac_tool_prefix and user overrides by hand.
-for cand in ${ADAC+"$ADAC"} ${CC+"$CC"} \
+user_adac=$ADAC
+user_cc=$CC
+for cand in ${ac_tool_prefix}$user_adac $user_adac \
+ ${ac_tool_prefix}$user_cc $user_cc \
${ac_tool_prefix}gcc gcc \
${ac_tool_prefix}cc cc \
${ac_tool_prefix}gnatgcc gnatgcc \
@@ -1324,21 +1529,21 @@ fi
echo $ac_n "checking whether ${CC-cc} accepts -Wno-long-long""... $ac_c" 1>&6
-echo "configure:1328: checking whether ${CC-cc} accepts -Wno-long-long" >&5
+echo "configure:1533: checking whether ${CC-cc} accepts -Wno-long-long" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cc_no_long_long'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
save_CFLAGS="$CFLAGS"
CFLAGS="-Wno-long-long"
cat > conftest.$ac_ext <<EOF
-#line 1335 "configure"
+#line 1540 "configure"
#include "confdefs.h"
int main() {
; return 0; }
EOF
-if { (eval echo configure:1342: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1547: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_prog_cc_no_long_long=yes
else
@@ -1355,7 +1560,7 @@ echo "$ac_t""$ac_cv_prog_cc_no_long_long" 1>&6
if test x$have_gnat != xno ; then
echo $ac_n "checking whether ${ADAC} accepts -Wno-long-long""... $ac_c" 1>&6
-echo "configure:1359: checking whether ${ADAC} accepts -Wno-long-long" >&5
+echo "configure:1564: checking whether ${ADAC} accepts -Wno-long-long" >&5
if eval "test \"`echo '$''{'ac_cv_prog_adac_no_long_long'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1383,7 +1588,7 @@ fi
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:1387: checking how to run the C preprocessor" >&5
+echo "configure:1592: checking how to run the C preprocessor" >&5
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
@@ -1398,13 +1603,13 @@ else
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp.
cat > conftest.$ac_ext <<EOF
-#line 1402 "configure"
+#line 1607 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1408: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1613: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
@@ -1415,13 +1620,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -E -traditional-cpp"
cat > conftest.$ac_ext <<EOF
-#line 1419 "configure"
+#line 1624 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1425: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1630: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
@@ -1432,13 +1637,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -nologo -E"
cat > conftest.$ac_ext <<EOF
-#line 1436 "configure"
+#line 1641 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1442: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1647: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
@@ -1463,21 +1668,21 @@ fi
echo "$ac_t""$CPP" 1>&6
echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:1467: checking for inline" >&5
+echo "configure:1672: checking for inline" >&5
if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_cv_c_inline=no
for ac_kw in inline __inline__ __inline; do
cat > conftest.$ac_ext <<EOF
-#line 1474 "configure"
+#line 1679 "configure"
#include "confdefs.h"
int main() {
} $ac_kw foo() {
; return 0; }
EOF
-if { (eval echo configure:1481: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1686: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_inline=$ac_kw; break
else
@@ -1503,19 +1708,19 @@ EOF
esac
echo $ac_n "checking for volatile""... $ac_c" 1>&6
-echo "configure:1507: checking for volatile" >&5
+echo "configure:1712: checking for volatile" >&5
if eval "test \"`echo '$''{'gcc_cv_c_volatile'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1512 "configure"
+#line 1717 "configure"
#include "confdefs.h"
int main() {
volatile int foo;
; return 0; }
EOF
-if { (eval echo configure:1519: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1724: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gcc_cv_c_volatile=yes
else
@@ -1537,7 +1742,7 @@ fi
echo $ac_n "checking for long double""... $ac_c" 1>&6
-echo "configure:1541: checking for long double" >&5
+echo "configure:1746: checking for long double" >&5
if eval "test \"`echo '$''{'gcc_cv_c_long_double'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1545,7 +1750,7 @@ else
gcc_cv_c_long_double=yes
else
cat > conftest.$ac_ext <<EOF
-#line 1549 "configure"
+#line 1754 "configure"
#include "confdefs.h"
int main() {
@@ -1555,7 +1760,7 @@ long double foo = 0.0;
switch (0) case 0: case (sizeof(long double) >= sizeof(double)):;
; return 0; }
EOF
-if { (eval echo configure:1559: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1764: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gcc_cv_c_long_double=yes
else
@@ -1577,19 +1782,19 @@ EOF
fi
echo $ac_n "checking for long long int""... $ac_c" 1>&6
-echo "configure:1581: checking for long long int" >&5
+echo "configure:1786: checking for long long int" >&5
if eval "test \"`echo '$''{'ac_cv_c_long_long'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1586 "configure"
+#line 1791 "configure"
#include "confdefs.h"
int main() {
long long int i;
; return 0; }
EOF
-if { (eval echo configure:1593: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1798: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_long_long=yes
else
@@ -1609,19 +1814,19 @@ EOF
fi
echo $ac_n "checking for __int64""... $ac_c" 1>&6
-echo "configure:1613: checking for __int64" >&5
+echo "configure:1818: checking for __int64" >&5
if eval "test \"`echo '$''{'ac_cv_c___int64'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1618 "configure"
+#line 1823 "configure"
#include "confdefs.h"
int main() {
__int64 i;
; return 0; }
EOF
-if { (eval echo configure:1625: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1830: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c___int64=yes
else
@@ -1642,19 +1847,19 @@ EOF
fi
echo $ac_n "checking for built-in _Bool""... $ac_c" 1>&6
-echo "configure:1646: checking for built-in _Bool" >&5
+echo "configure:1851: checking for built-in _Bool" >&5
if eval "test \"`echo '$''{'gcc_cv_c__bool'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1651 "configure"
+#line 1856 "configure"
#include "confdefs.h"
int main() {
_Bool foo;
; return 0; }
EOF
-if { (eval echo configure:1658: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1863: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gcc_cv_c__bool=yes
else
@@ -1678,13 +1883,13 @@ fi
# sizeof(char) is 1 by definition.
echo $ac_n "checking size of short""... $ac_c" 1>&6
-echo "configure:1682: checking size of short" >&5
+echo "configure:1887: checking size of short" >&5
if eval "test \"`echo '$''{'ac_cv_sizeof_short'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
for ac_size in 4 8 1 2 16 ; do # List sizes in rough order of prevalence.
cat > conftest.$ac_ext <<EOF
-#line 1688 "configure"
+#line 1893 "configure"
#include "confdefs.h"
#include "confdefs.h"
#include <sys/types.h>
@@ -1694,7 +1899,7 @@ int main() {
switch (0) case 0: case (sizeof (short) == $ac_size):;
; return 0; }
EOF
-if { (eval echo configure:1698: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1903: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_sizeof_short=$ac_size
else
@@ -1717,13 +1922,13 @@ EOF
echo $ac_n "checking size of int""... $ac_c" 1>&6
-echo "configure:1721: checking size of int" >&5
+echo "configure:1926: checking size of int" >&5
if eval "test \"`echo '$''{'ac_cv_sizeof_int'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
for ac_size in 4 8 1 2 16 ; do # List sizes in rough order of prevalence.
cat > conftest.$ac_ext <<EOF
-#line 1727 "configure"
+#line 1932 "configure"
#include "confdefs.h"
#include "confdefs.h"
#include <sys/types.h>
@@ -1733,7 +1938,7 @@ int main() {
switch (0) case 0: case (sizeof (int) == $ac_size):;
; return 0; }
EOF
-if { (eval echo configure:1737: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1942: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_sizeof_int=$ac_size
else
@@ -1756,13 +1961,13 @@ EOF
echo $ac_n "checking size of long""... $ac_c" 1>&6
-echo "configure:1760: checking size of long" >&5
+echo "configure:1965: checking size of long" >&5
if eval "test \"`echo '$''{'ac_cv_sizeof_long'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
for ac_size in 4 8 1 2 16 ; do # List sizes in rough order of prevalence.
cat > conftest.$ac_ext <<EOF
-#line 1766 "configure"
+#line 1971 "configure"
#include "confdefs.h"
#include "confdefs.h"
#include <sys/types.h>
@@ -1772,7 +1977,7 @@ int main() {
switch (0) case 0: case (sizeof (long) == $ac_size):;
; return 0; }
EOF
-if { (eval echo configure:1776: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1981: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_sizeof_long=$ac_size
else
@@ -1796,13 +2001,13 @@ EOF
if test $ac_cv_c_long_long = yes; then
echo $ac_n "checking size of long long""... $ac_c" 1>&6
-echo "configure:1800: checking size of long long" >&5
+echo "configure:2005: checking size of long long" >&5
if eval "test \"`echo '$''{'ac_cv_sizeof_long_long'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
for ac_size in 4 8 1 2 16 ; do # List sizes in rough order of prevalence.
cat > conftest.$ac_ext <<EOF
-#line 1806 "configure"
+#line 2011 "configure"
#include "confdefs.h"
#include "confdefs.h"
#include <sys/types.h>
@@ -1812,7 +2017,7 @@ int main() {
switch (0) case 0: case (sizeof (long long) == $ac_size):;
; return 0; }
EOF
-if { (eval echo configure:1816: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2021: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_sizeof_long_long=$ac_size
else
@@ -1837,13 +2042,13 @@ EOF
fi
if test $ac_cv_c___int64 = yes; then
echo $ac_n "checking size of __int64""... $ac_c" 1>&6
-echo "configure:1841: checking size of __int64" >&5
+echo "configure:2046: checking size of __int64" >&5
if eval "test \"`echo '$''{'ac_cv_sizeof___int64'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
for ac_size in 4 8 1 2 16 ; do # List sizes in rough order of prevalence.
cat > conftest.$ac_ext <<EOF
-#line 1847 "configure"
+#line 2052 "configure"
#include "confdefs.h"
#include "confdefs.h"
#include <sys/types.h>
@@ -1853,7 +2058,7 @@ int main() {
switch (0) case 0: case (sizeof (__int64) == $ac_size):;
; return 0; }
EOF
-if { (eval echo configure:1857: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2062: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_sizeof___int64=$ac_size
else
@@ -1878,12 +2083,12 @@ EOF
fi
echo $ac_n "checking execution character set""... $ac_c" 1>&6
-echo "configure:1882: checking execution character set" >&5
+echo "configure:2087: checking execution character set" >&5
if eval "test \"`echo '$''{'ac_cv_c_charset'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1887 "configure"
+#line 2092 "configure"
#include "confdefs.h"
#if '\n' == 0x0A && ' ' == 0x20 && '0' == 0x30 \
&& 'A' == 0x41 && 'a' == 0x61 && '!' == 0x21
@@ -1899,7 +2104,7 @@ rm -f conftest*
if test x${ac_cv_c_charset+set} != xset; then
cat > conftest.$ac_ext <<EOF
-#line 1903 "configure"
+#line 2108 "configure"
#include "confdefs.h"
#if '\n' == 0x15 && ' ' == 0x40 && '0' == 0xF0 \
&& 'A' == 0xC1 && 'a' == 0x81 && '!' == 0x5A
@@ -1938,314 +2143,6 @@ if test "x$GCC" = "xyes"; then
fi
-# Determine whether or not multilibs are enabled.
-# Check whether --enable-multilib or --disable-multilib was given.
-if test "${enable_multilib+set}" = set; then
- enableval="$enable_multilib"
- :
-else
- enable_multilib=yes
-fi
-
-
-
-# Enable expensive internal checks
-# Check whether --enable-checking or --disable-checking was given.
-if test "${enable_checking+set}" = set; then
- enableval="$enable_checking"
- 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 ;;
- *) { echo "configure: error: unknown check category $check" 1>&2; exit 1; } ;;
- esac
- done
- ;;
-esac
-
-fi
-
-nocommon_flag=""
-if test x$ac_checking != x ; then
- cat >> confdefs.h <<\EOF
-#define ENABLE_CHECKING 1
-EOF
-
- nocommon_flag=-fno-common
-fi
-
-if test x$ac_tree_checking != x ; then
- cat >> confdefs.h <<\EOF
-#define ENABLE_TREE_CHECKING 1
-EOF
-
-fi
-if test x$ac_rtl_checking != x ; then
- cat >> confdefs.h <<\EOF
-#define ENABLE_RTL_CHECKING 1
-EOF
-
-fi
-if test x$ac_rtlflag_checking != x ; then
- cat >> confdefs.h <<\EOF
-#define ENABLE_RTL_FLAG_CHECKING 1
-EOF
-
-fi
-if test x$ac_gc_checking != x ; then
- cat >> confdefs.h <<\EOF
-#define ENABLE_GC_CHECKING 1
-EOF
-
-fi
-if test x$ac_gc_always_collect != x ; then
- cat >> confdefs.h <<\EOF
-#define ENABLE_GC_ALWAYS_COLLECT 1
-EOF
-
-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_safe=`echo "valgrind.h" | sed 'y%./+-%__p_%'`
-echo $ac_n "checking for valgrind.h""... $ac_c" 1>&6
-echo "configure:2034: checking for valgrind.h" >&5
-if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 2039 "configure"
-#include "confdefs.h"
-#include <valgrind.h>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2044: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
- rm -rf conftest*
- eval "ac_cv_header_$ac_safe=yes"
-else
- echo "$ac_err" >&5
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- have_valgrind_h=yes
-else
- echo "$ac_t""no" 1>&6
-have_valgrind_h=no
-fi
-
- # Extract the first word of "valgrind", so it can be a program name with args.
-set dummy valgrind; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2069: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_path_valgrind_path'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- case "$valgrind_path" in
- /*)
- ac_cv_path_valgrind_path="$valgrind_path" # Let the user override the test with a path.
- ;;
- *)
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
- for ac_dir in $PATH; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- if $ac_dir/$ac_word --version | grep valgrind- >/dev/null 2>&1; then
- ac_cv_path_valgrind_path="$ac_dir/$ac_word"
- break
- fi
- fi
- done
- IFS="$ac_save_ifs"
- ;;
-esac
-fi
-valgrind_path="$ac_cv_path_valgrind_path"
-if test -n "$valgrind_path"; then
- echo "$ac_t""$valgrind_path" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-
- if test "x$valgrind_path" = "x" || test $have_valgrind_h = no; then
- { echo "configure: error: *** Can't find both valgrind and valgrind.h" 1>&2; exit 1; }
- fi
- valgrind_path_defines=-DVALGRIND_PATH='\"'$valgrind_path'\"'
- valgrind_command="$valgrind_path -q"
- cat >> confdefs.h <<\EOF
-#define ENABLE_VALGRIND_CHECKING 1
-EOF
-
-fi
-
-
-
-# Enable code coverage collection
-# Check whether --enable-coverage or --disable-coverage was given.
-if test "${enable_coverage+set}" = set; then
- enableval="$enable_coverage"
- case "${enableval}" in
-yes|noopt)
- coverage_flags="-fprofile-arcs -ftest-coverage -O0"
- ;;
-opt)
- coverage_flags="-fprofile-arcs -ftest-coverage -O2"
- ;;
-*)
- { echo "configure: error: unknown coverage setting $enableval" 1>&2; exit 1; }
- ;;
-esac
-else
- coverage_flags=""
-fi
-
-
-
-# Check whether --with-cpp_install_dir or --without-cpp_install_dir was given.
-if test "${with_cpp_install_dir+set}" = set; then
- withval="$with_cpp_install_dir"
- if test x$withval = xyes; then
- { echo "configure: error: option --with-cpp-install-dir requires an argument" 1>&2; exit 1; }
-elif test x$withval != xno; then
- cpp_install_dir=$withval
-fi
-fi
-
-
-# Enable __cxa_atexit for C++.
-# Check whether --enable-__cxa_atexit or --disable-__cxa_atexit was given.
-if test "${enable___cxa_atexit+set}" = set; then
- enableval="$enable___cxa_atexit"
- :
-fi
-
-if test x$enable___cxa_atexit = xyes; then
- cat >> confdefs.h <<\EOF
-#define DEFAULT_USE_CXA_ATEXIT 1
-EOF
-
-fi
-
-# Enable Multibyte Characters for C/C++
-# Check whether --enable-c-mbchar or --disable-c-mbchar was given.
-if test "${enable_c_mbchar+set}" = set; then
- enableval="$enable_c_mbchar"
- if test x$enable_c_mbchar != xno; then
- cat >> confdefs.h <<\EOF
-#define MULTIBYTE_CHARS 1
-EOF
-
-fi
-fi
-
-
-# Enable threads
-# Pass with no value to take the default
-# Pass with a value to specify a thread package
-# Check whether --enable-threads or --disable-threads was given.
-if test "${enable_threads+set}" = set; then
- enableval="$enable_threads"
- :
-else
- enable_threads=''
-fi
-
-
-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
-
-# Check whether --enable-objc-gc or --disable-objc-gc was given.
-if test "${enable_objc_gc+set}" = set; then
- enableval="$enable_objc_gc"
- if test x$enable_objc_gc = xno; then
- objc_boehm_gc=''
-else
- objc_boehm_gc=1
-fi
-else
- objc_boehm_gc=''
-fi
-
-
-# Check whether --with-dwarf2 or --without-dwarf2 was given.
-if test "${with_dwarf2+set}" = set; then
- withval="$with_dwarf2"
- dwarf2="$with_dwarf2"
-else
- dwarf2=no
-fi
-
-
-# Check whether --enable-shared or --disable-shared was given.
-if test "${enable_shared+set}" = set; then
- enableval="$enable_shared"
-
- 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
-
-else
- enable_shared=yes
-fi
-
-
-
# Stage specific cflags for build.
stage1_cflags=
case $build in
@@ -2268,7 +2165,7 @@ esac
echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:2272: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:2169: checking whether ${MAKE-make} sets \${MAKE}" >&5
set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2296,7 +2193,7 @@ fi
echo $ac_n "checking whether a default assembler was specified""... $ac_c" 1>&6
-echo "configure:2300: checking whether a default assembler was specified" >&5
+echo "configure:2197: checking whether a default assembler was specified" >&5
if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
if test x"$gas_flag" = x"no"; then
echo "$ac_t""yes ($DEFAULT_ASSEMBLER)" 1>&6
@@ -2308,7 +2205,7 @@ else
fi
echo $ac_n "checking whether a default linker was specified""... $ac_c" 1>&6
-echo "configure:2312: checking whether a default linker was specified" >&5
+echo "configure:2209: checking whether a default linker was specified" >&5
if test x"${DEFAULT_LINKER+set}" = x"set"; then
if test x"$gnu_ld_flag" = x"no"; then
echo "$ac_t""yes ($DEFAULT_LINKER)" 1>&6
@@ -2320,12 +2217,12 @@ else
fi
echo $ac_n "checking for GNU C library""... $ac_c" 1>&6
-echo "configure:2324: checking for GNU C library" >&5
+echo "configure:2221: checking for GNU C library" >&5
if eval "test \"`echo '$''{'gcc_cv_glibc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2329 "configure"
+#line 2226 "configure"
#include "confdefs.h"
#include <features.h>
int main() {
@@ -2335,7 +2232,7 @@ int main() {
#endif
; return 0; }
EOF
-if { (eval echo configure:2339: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2236: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gcc_cv_glibc=yes
else
@@ -2361,7 +2258,7 @@ do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2365: checking for $ac_word" >&5
+echo "configure:2262: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_AWK'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2391,7 +2288,7 @@ test -n "$AWK" && break
done
echo $ac_n "checking whether ln works""... $ac_c" 1>&6
-echo "configure:2395: checking whether ln works" >&5
+echo "configure:2292: checking whether ln works" >&5
if eval "test \"`echo '$''{'gcc_cv_prog_LN'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2423,7 +2320,7 @@ else
fi
echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
-echo "configure:2427: checking whether ln -s works" >&5
+echo "configure:2324: checking whether ln -s works" >&5
if eval "test \"`echo '$''{'gcc_cv_prog_LN_S'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2457,7 +2354,7 @@ fi
# Extract the first word of "ranlib", so it can be a program name with args.
set dummy ranlib; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2461: checking for $ac_word" >&5
+echo "configure:2358: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2495,7 +2392,7 @@ fi
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
# ./install, which can be erroneously created by make from ./install.sh.
echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:2499: checking for a BSD compatible install" >&5
+echo "configure:2396: checking for a BSD compatible install" >&5
if test -z "$INSTALL"; then
if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2546,12 +2443,12 @@ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:2550: checking for ANSI C header files" >&5
+echo "configure:2447: checking for ANSI C header files" >&5
if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2555 "configure"
+#line 2452 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
@@ -2559,7 +2456,7 @@ else
#include <float.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2563: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2460: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -2576,7 +2473,7 @@ rm -f conftest*
if test $ac_cv_header_stdc = yes; then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 2580 "configure"
+#line 2477 "configure"
#include "confdefs.h"
#include <string.h>
EOF
@@ -2594,7 +2491,7 @@ fi
if test $ac_cv_header_stdc = yes; then
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 2598 "configure"
+#line 2495 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
@@ -2615,7 +2512,7 @@ if test "$cross_compiling" = yes; then
:
else
cat > conftest.$ac_ext <<EOF
-#line 2619 "configure"
+#line 2516 "configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -2626,7 +2523,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
exit (0); }
EOF
-if { (eval echo configure:2630: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:2527: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
@@ -2650,12 +2547,12 @@ EOF
fi
echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
-echo "configure:2654: checking whether time.h and sys/time.h may both be included" >&5
+echo "configure:2551: checking whether time.h and sys/time.h may both be included" >&5
if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2659 "configure"
+#line 2556 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/time.h>
@@ -2664,7 +2561,7 @@ int main() {
struct tm *tp;
; return 0; }
EOF
-if { (eval echo configure:2668: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2565: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_header_time=yes
else
@@ -2685,19 +2582,19 @@ EOF
fi
echo $ac_n "checking for working stdbool.h""... $ac_c" 1>&6
-echo "configure:2689: checking for working stdbool.h" >&5
+echo "configure:2586: checking for working stdbool.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_stdbool_h'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2694 "configure"
+#line 2591 "configure"
#include "confdefs.h"
#include <stdbool.h>
int main() {
bool foo = false;
; return 0; }
EOF
-if { (eval echo configure:2701: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2598: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_header_stdbool_h=yes
else
@@ -2718,12 +2615,12 @@ EOF
fi
echo $ac_n "checking whether string.h and strings.h may both be included""... $ac_c" 1>&6
-echo "configure:2722: checking whether string.h and strings.h may both be included" >&5
+echo "configure:2619: checking whether string.h and strings.h may both be included" >&5
if eval "test \"`echo '$''{'gcc_cv_header_string'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2727 "configure"
+#line 2624 "configure"
#include "confdefs.h"
#include <string.h>
#include <strings.h>
@@ -2731,7 +2628,7 @@ int main() {
; return 0; }
EOF
-if { (eval echo configure:2735: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2632: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gcc_cv_header_string=yes
else
@@ -2752,12 +2649,12 @@ EOF
fi
echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6
-echo "configure:2756: checking for sys/wait.h that is POSIX.1 compatible" >&5
+echo "configure:2653: checking for sys/wait.h that is POSIX.1 compatible" >&5
if eval "test \"`echo '$''{'ac_cv_header_sys_wait_h'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2761 "configure"
+#line 2658 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/wait.h>
@@ -2773,7 +2670,7 @@ wait (&s);
s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
; return 0; }
EOF
-if { (eval echo configure:2777: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2674: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_header_sys_wait_h=yes
else
@@ -2794,23 +2691,23 @@ EOF
fi
for ac_hdr in 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 \
+ fcntl.h unistd.h sys/file.h sys/time.h \
sys/resource.h sys/param.h sys/times.h sys/stat.h \
direct.h malloc.h langinfo.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2804: checking for $ac_hdr" >&5
+echo "configure:2701: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2809 "configure"
+#line 2706 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2814: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2711: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -2840,17 +2737,17 @@ done
# Check for thread headers.
ac_safe=`echo "thread.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for thread.h""... $ac_c" 1>&6
-echo "configure:2844: checking for thread.h" >&5
+echo "configure:2741: checking for thread.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2849 "configure"
+#line 2746 "configure"
#include "confdefs.h"
#include <thread.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2854: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2751: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -2874,17 +2771,17 @@ fi
ac_safe=`echo "pthread.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for pthread.h""... $ac_c" 1>&6
-echo "configure:2878: checking for pthread.h" >&5
+echo "configure:2775: checking for pthread.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2883 "configure"
+#line 2780 "configure"
#include "confdefs.h"
#include <pthread.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2888: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2785: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -2909,12 +2806,12 @@ fi
# These tests can't be done till we know if we have limits.h.
echo $ac_n "checking for CHAR_BIT""... $ac_c" 1>&6
-echo "configure:2913: checking for CHAR_BIT" >&5
+echo "configure:2810: checking for CHAR_BIT" >&5
if eval "test \"`echo '$''{'gcc_cv_decl_char_bit'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2918 "configure"
+#line 2815 "configure"
#include "confdefs.h"
#ifdef HAVE_LIMITS_H
#include <limits.h>
@@ -2939,7 +2836,7 @@ fi
echo "$ac_t""$gcc_cv_decl_char_bit" 1>&6
if test $gcc_cv_decl_char_bit = no; then
echo $ac_n "checking number of bits in a byte""... $ac_c" 1>&6
-echo "configure:2943: checking number of bits in a byte" >&5
+echo "configure:2840: checking number of bits in a byte" >&5
if eval "test \"`echo '$''{'gcc_cv_c_nbby'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2947,7 +2844,7 @@ else
gcc_cv_c_nbby=
while test $i -lt 65; do
cat > conftest.$ac_ext <<EOF
-#line 2951 "configure"
+#line 2848 "configure"
#include "confdefs.h"
int main() {
@@ -2957,7 +2854,7 @@ switch(0) {
; }
; return 0; }
EOF
-if { (eval echo configure:2961: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2858: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gcc_cv_c_nbby=$i; break
else
@@ -2982,7 +2879,7 @@ EOF
fi
fi
echo $ac_n "checking byte ordering""... $ac_c" 1>&6
-echo "configure:2986: checking byte ordering" >&5
+echo "configure:2883: checking byte ordering" >&5
if eval "test \"`echo '$''{'ac_cv_c_compile_endian'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2996,7 +2893,7 @@ ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$a
cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext <<EOF
-#line 3000 "configure"
+#line 2897 "configure"
#include "confdefs.h"
#ifdef HAVE_LIMITS_H
@@ -3016,7 +2913,7 @@ cat > conftest.$ac_ext <<EOF
'X', '\n'
};
EOF
-if { (eval echo configure:3020: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2917: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
od -c conftest.o |
sed 's/^[0-7]*[ ]*/ /
s/\*/./g
@@ -3055,7 +2952,7 @@ EOF
fi
echo $ac_n "checking floating point format""... $ac_c" 1>&6
-echo "configure:3059: checking floating point format" >&5
+echo "configure:2956: checking floating point format" >&5
if eval "test \"`echo '$''{'ac_cv_c_float_format'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3068,7 +2965,7 @@ ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$a
cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext <<EOF
-#line 3072 "configure"
+#line 2969 "configure"
#include "confdefs.h"
/* This will not work unless sizeof(double) == 8. */
extern char sizeof_double_must_be_8 [sizeof(double) == 8 ? 1 : -1];
@@ -3090,7 +2987,7 @@ struct possibility table [] =
C(-5.22995989424860458374e+10) /* IBMHEXFP - s/390 format, EBCDIC */
};
EOF
-if { (eval echo configure:3094: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2991: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
od -c conftest.o |
sed 's/^[0-7]*[ ]*/ /
s/\*/./g
@@ -3179,7 +3076,7 @@ fi
# Extract the first word of "mktemp", so it can be a program name with args.
set dummy mktemp; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3183: checking for $ac_word" >&5
+echo "configure:3080: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_have_mktemp_command'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3218,7 +3115,7 @@ else
# Extract the first word of "makeinfo", so it can be a program name with args.
set dummy makeinfo; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3222: checking for $ac_word" >&5
+echo "configure:3119: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_MAKEINFO'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3247,16 +3144,16 @@ fi
if test -n "$MAKEINFO"; then
# Found it, now check the version.
echo $ac_n "checking for modern makeinfo""... $ac_c" 1>&6
-echo "configure:3251: checking for modern makeinfo" >&5
+echo "configure:3148: checking for modern makeinfo" >&5
if eval "test \"`echo '$''{'gcc_cv_prog_makeinfo_modern'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_prog_version=`$MAKEINFO --version 2>&1 |
sed -n 's/^.*GNU texinfo.* \([0-9][0-9.]*\).*$/\1/p'`
- echo "configure:3257: version of makeinfo is $ac_prog_version" >&5
+ echo "configure:3154: version of makeinfo is $ac_prog_version" >&5
case $ac_prog_version in
'') gcc_cv_prog_makeinfo_modern=no;;
- 4.[2-9]*)
+ 4.[1-9]*)
gcc_cv_prog_makeinfo_modern=yes;;
*) gcc_cv_prog_makeinfo_modern=no;;
esac
@@ -3281,7 +3178,7 @@ fi
# Is pod2man recent enough to regenerate manpages?
echo $ac_n "checking for recent Pod::Man""... $ac_c" 1>&6
-echo "configure:3285: checking for recent Pod::Man" >&5
+echo "configure:3182: checking for recent Pod::Man" >&5
if (perl -e 'use 1.10 Pod::Man') >/dev/null 2>&1; then
echo "$ac_t""yes" 1>&6
GENERATED_MANPAGES=generated-manpages
@@ -3297,7 +3194,7 @@ else
# Extract the first word of "flex", so it can be a program name with args.
set dummy flex; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3301: checking for $ac_word" >&5
+echo "configure:3198: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_FLEX'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3314,7 +3211,7 @@ else
fi
done
IFS="$ac_save_ifs"
- test -z "$ac_cv_prog_FLEX" && ac_cv_prog_FLEX="${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing flex"
+ test -z "$ac_cv_prog_FLEX" && ac_cv_prog_FLEX="false"
fi
fi
FLEX="$ac_cv_prog_FLEX"
@@ -3334,7 +3231,7 @@ else
# Extract the first word of "bison", so it can be a program name with args.
set dummy bison; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3338: checking for $ac_word" >&5
+echo "configure:3235: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_BISON'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3351,7 +3248,7 @@ else
fi
done
IFS="$ac_save_ifs"
- test -z "$ac_cv_prog_BISON" && ac_cv_prog_BISON="${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing bison"
+ test -z "$ac_cv_prog_BISON" && ac_cv_prog_BISON="false"
fi
fi
BISON="$ac_cv_prog_BISON"
@@ -3366,7 +3263,7 @@ fi
# These libraries may be used by collect2.
# We may need a special search path to get them linked.
echo $ac_n "checking for collect2 libraries""... $ac_c" 1>&6
-echo "configure:3370: checking for collect2 libraries" >&5
+echo "configure:3267: checking for collect2 libraries" >&5
if eval "test \"`echo '$''{'gcc_cv_collect2_libs'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3377,7 +3274,7 @@ for libs in '' -lld -lmld \
do
LIBS="$libs"
cat > conftest.$ac_ext <<EOF
-#line 3381 "configure"
+#line 3278 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3388,7 +3285,7 @@ int main() {
ldopen()
; return 0; }
EOF
-if { (eval echo configure:3392: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3289: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gcc_cv_collect2_libs="$libs"; break
else
@@ -3414,14 +3311,14 @@ save_LIBS="$LIBS"
LIBS=
echo $ac_n "checking for library containing exc_resume""... $ac_c" 1>&6
-echo "configure:3418: checking for library containing exc_resume" >&5
+echo "configure:3315: checking for library containing exc_resume" >&5
if eval "test \"`echo '$''{'ac_cv_search_exc_resume'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_func_search_save_LIBS="$LIBS"
ac_cv_search_exc_resume="no"
cat > conftest.$ac_ext <<EOF
-#line 3425 "configure"
+#line 3322 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3432,7 +3329,7 @@ int main() {
exc_resume()
; return 0; }
EOF
-if { (eval echo configure:3436: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3333: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_search_exc_resume="none required"
else
@@ -3443,7 +3340,7 @@ rm -f conftest*
test "$ac_cv_search_exc_resume" = "no" && for i in exc; do
LIBS="-l$i $ac_func_search_save_LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3447 "configure"
+#line 3344 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3454,7 +3351,7 @@ int main() {
exc_resume()
; return 0; }
EOF
-if { (eval echo configure:3458: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3355: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_search_exc_resume="-l$i"
break
@@ -3478,87 +3375,17 @@ GNAT_LIBEXC="$LIBS"
LIBS="$save_LIBS"
-# 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=
-
-echo $ac_n "checking for library containing ldexp""... $ac_c" 1>&6
-echo "configure:3488: checking for library containing ldexp" >&5
-if eval "test \"`echo '$''{'ac_cv_search_ldexp'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- ac_func_search_save_LIBS="$LIBS"
-ac_cv_search_ldexp="no"
-cat > conftest.$ac_ext <<EOF
-#line 3495 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error. */
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char ldexp();
-
-int main() {
-ldexp()
-; return 0; }
-EOF
-if { (eval echo configure:3506: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- ac_cv_search_ldexp="none required"
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
-fi
-rm -f conftest*
-test "$ac_cv_search_ldexp" = "no" && for i in m; do
-LIBS="-l$i $ac_func_search_save_LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 3517 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error. */
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char ldexp();
-
-int main() {
-ldexp()
-; return 0; }
-EOF
-if { (eval echo configure:3528: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- ac_cv_search_ldexp="-l$i"
-break
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
-fi
-rm -f conftest*
-done
-LIBS="$ac_func_search_save_LIBS"
-fi
-
-echo "$ac_t""$ac_cv_search_ldexp" 1>&6
-if test "$ac_cv_search_ldexp" != "no"; then
- test "$ac_cv_search_ldexp" = "none required" || LIBS="$ac_cv_search_ldexp $LIBS"
-
-else :
-
-fi
-LDEXP_LIB="$LIBS"
-LIBS="$save_LIBS"
-
-
# See if the stage1 system preprocessor understands the ANSI C
# preprocessor stringification operator. (Used by symcat.h.)
echo $ac_n "checking for preprocessor stringizing operator""... $ac_c" 1>&6
-echo "configure:3557: checking for preprocessor stringizing operator" >&5
+echo "configure:3384: checking for preprocessor stringizing operator" >&5
if eval "test \"`echo '$''{'ac_cv_c_stringize'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3562 "configure"
+#line 3389 "configure"
#include "confdefs.h"
#define x(y) #y
@@ -3591,12 +3418,12 @@ echo "$ac_t""${ac_cv_c_stringize}" 1>&6
# Use <inttypes.h> only if it exists,
# doesn't clash with <sys/types.h>, and declares intmax_t.
echo $ac_n "checking for inttypes.h""... $ac_c" 1>&6
-echo "configure:3595: checking for inttypes.h" >&5
+echo "configure:3422: checking for inttypes.h" >&5
if eval "test \"`echo '$''{'gcc_cv_header_inttypes_h'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3600 "configure"
+#line 3427 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <inttypes.h>
@@ -3604,7 +3431,7 @@ int main() {
intmax_t i = -1;
; return 0; }
EOF
-if { (eval echo configure:3608: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3435: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gcc_cv_header_inttypes_h=yes
else
@@ -3627,16 +3454,15 @@ fi
for ac_func in 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
+ fwrite_unlocked fprintf_unlocked getrusage nl_langinfo lstat
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3635: checking for $ac_func" >&5
+echo "configure:3461: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3640 "configure"
+#line 3466 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -3659,7 +3485,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:3663: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3489: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -3685,12 +3511,12 @@ done
echo $ac_n "checking for ssize_t""... $ac_c" 1>&6
-echo "configure:3689: checking for ssize_t" >&5
+echo "configure:3515: checking for ssize_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_ssize_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3694 "configure"
+#line 3520 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -3721,12 +3547,12 @@ fi
# Try to determine the array type of the second argument of getgroups
# for the target system (int or gid_t).
echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6
-echo "configure:3725: checking for uid_t in sys/types.h" >&5
+echo "configure:3551: checking for uid_t in sys/types.h" >&5
if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3730 "configure"
+#line 3556 "configure"
#include "confdefs.h"
#include <sys/types.h>
EOF
@@ -3755,7 +3581,7 @@ EOF
fi
echo $ac_n "checking type of array argument to getgroups""... $ac_c" 1>&6
-echo "configure:3759: checking type of array argument to getgroups" >&5
+echo "configure:3585: checking type of array argument to getgroups" >&5
if eval "test \"`echo '$''{'ac_cv_type_getgroups'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3763,7 +3589,7 @@ else
ac_cv_type_getgroups=cross
else
cat > conftest.$ac_ext <<EOF
-#line 3767 "configure"
+#line 3593 "configure"
#include "confdefs.h"
/* Thanks to Mike Rendell for this test. */
@@ -3788,7 +3614,7 @@ main()
}
EOF
-if { (eval echo configure:3792: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3618: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_type_getgroups=gid_t
else
@@ -3802,7 +3628,7 @@ fi
if test $ac_cv_type_getgroups = cross; then
cat > conftest.$ac_ext <<EOF
-#line 3806 "configure"
+#line 3632 "configure"
#include "confdefs.h"
#include <unistd.h>
EOF
@@ -3843,7 +3669,7 @@ fi
echo $ac_n "checking whether the printf functions support %p""... $ac_c" 1>&6
-echo "configure:3847: checking whether the printf functions support %p" >&5
+echo "configure:3673: checking whether the printf functions support %p" >&5
if eval "test \"`echo '$''{'gcc_cv_func_printf_ptr'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3851,7 +3677,7 @@ else
gcc_cv_func_printf_ptr=no
else
cat > conftest.$ac_ext <<EOF
-#line 3855 "configure"
+#line 3681 "configure"
#include "confdefs.h"
#include <stdio.h>
@@ -3864,7 +3690,7 @@ int main()
return (p != q);
}
EOF
-if { (eval echo configure:3868: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3694: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
gcc_cv_func_printf_ptr=yes
else
@@ -3887,135 +3713,6 @@ EOF
fi
-if test $ac_cv_header_sys_mman_h != yes \
- || test $ac_cv_func_mmap != yes; then
- gcc_cv_func_mmap_file=no
- gcc_cv_func_mmap_dev_zero=no
- gcc_cv_func_mmap_anon=no
-else
- echo $ac_n "checking whether read-only mmap of a plain file works""... $ac_c" 1>&6
-echo "configure:3898: checking whether read-only mmap of a plain file works" >&5
-if eval "test \"`echo '$''{'gcc_cv_func_mmap_file'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- # Add a system to this blacklist if
- # mmap(0, stat_size, PROT_READ, MAP_PRIVATE, fd, 0) doesn't return a
- # memory area containing the same data that you'd get if you applied
- # read() to the same fd. The only system known to have a problem here
- # is VMS, where text files have record structure.
- case "$host_os" in
- vms*)
- gcc_cv_func_mmap_file=no ;;
- *)
- gcc_cv_func_mmap_file=yes;;
- esac
-fi
-
-echo "$ac_t""$gcc_cv_func_mmap_file" 1>&6
- echo $ac_n "checking whether mmap from /dev/zero works""... $ac_c" 1>&6
-echo "configure:3917: checking whether mmap from /dev/zero works" >&5
-if eval "test \"`echo '$''{'gcc_cv_func_mmap_dev_zero'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- # Add a system to this blacklist if it has mmap() but /dev/zero
- # does not exist, or if mmapping /dev/zero does not give anonymous
- # zeroed pages with both the following properties:
- # 1. If you map N consecutive pages in with one call, and then
- # unmap any subset of those pages, the pages that were not
- # explicitly unmapped remain accessible.
- # 2. If you map two adjacent blocks of memory and then unmap them
- # both at once, they must both go away.
- # Systems known to be in this category are Windows (all variants),
- # VMS, and Darwin.
- case "$host_os" in
- vms* | cygwin* | pe | mingw* | darwin*)
- gcc_cv_func_mmap_dev_zero=no ;;
- *)
- gcc_cv_func_mmap_dev_zero=yes;;
- esac
-fi
-
-echo "$ac_t""$gcc_cv_func_mmap_dev_zero" 1>&6
-
- # Unlike /dev/zero, the MAP_ANON(YMOUS) defines can be probed for.
- echo $ac_n "checking for MAP_ANON(YMOUS)""... $ac_c" 1>&6
-echo "configure:3943: checking for MAP_ANON(YMOUS)" >&5
-if eval "test \"`echo '$''{'gcc_cv_decl_map_anon'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 3948 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#include <sys/mman.h>
-#include <unistd.h>
-
-#ifndef MAP_ANONYMOUS
-#define MAP_ANONYMOUS MAP_ANON
-#endif
-
-int main() {
-int n = MAP_ANONYMOUS;
-; return 0; }
-EOF
-if { (eval echo configure:3962: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- gcc_cv_decl_map_anon=yes
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- gcc_cv_decl_map_anon=no
-fi
-rm -f conftest*
-fi
-
-echo "$ac_t""$gcc_cv_decl_map_anon" 1>&6
-
- if test $gcc_cv_decl_map_anon = no; then
- gcc_cv_func_mmap_anon=no
- else
- echo $ac_n "checking whether mmap with MAP_ANON(YMOUS) works""... $ac_c" 1>&6
-echo "configure:3980: checking whether mmap with MAP_ANON(YMOUS) works" >&5
-if eval "test \"`echo '$''{'gcc_cv_func_mmap_anon'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- # Add a system to this blacklist if it has mmap() and MAP_ANON or
- # MAP_ANONYMOUS, but using mmap(..., MAP_PRIVATE|MAP_ANONYMOUS, -1, 0)
- # doesn't give anonymous zeroed pages with the same properties listed
- # above for use of /dev/zero.
- # Systems known to be in this category are Windows, VMS, and SCO Unix.
- case "$host_os" in
- vms* | cygwin* | pe | mingw* | sco* | udk* )
- gcc_cv_func_mmap_anon=no ;;
- *)
- gcc_cv_func_mmap_anon=yes;;
- esac
-fi
-
-echo "$ac_t""$gcc_cv_func_mmap_anon" 1>&6
- fi
-fi
-
-if test $gcc_cv_func_mmap_file = yes; then
- cat >> confdefs.h <<\EOF
-#define HAVE_MMAP_FILE 1
-EOF
-
-fi
-if test $gcc_cv_func_mmap_dev_zero = yes; then
- cat >> confdefs.h <<\EOF
-#define HAVE_MMAP_DEV_ZERO 1
-EOF
-
-fi
-if test $gcc_cv_func_mmap_anon = yes; then
- cat >> confdefs.h <<\EOF
-#define HAVE_MMAP_ANON 1
-EOF
-
-fi
-
case "${host}" in
*-*-uwin*)
@@ -4031,12 +3728,12 @@ case "${host}" in
;;
esac
echo $ac_n "checking for pid_t""... $ac_c" 1>&6
-echo "configure:4035: checking for pid_t" >&5
+echo "configure:3732: checking for pid_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4040 "configure"
+#line 3737 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -4065,17 +3762,17 @@ fi
ac_safe=`echo "vfork.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for vfork.h""... $ac_c" 1>&6
-echo "configure:4069: checking for vfork.h" >&5
+echo "configure:3766: checking for vfork.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4074 "configure"
+#line 3771 "configure"
#include "confdefs.h"
#include <vfork.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4079: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3776: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -4100,18 +3797,18 @@ else
fi
echo $ac_n "checking for working vfork""... $ac_c" 1>&6
-echo "configure:4104: checking for working vfork" >&5
+echo "configure:3801: checking for working vfork" >&5
if eval "test \"`echo '$''{'ac_cv_func_vfork_works'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
if test "$cross_compiling" = yes; then
echo $ac_n "checking for vfork""... $ac_c" 1>&6
-echo "configure:4110: checking for vfork" >&5
+echo "configure:3807: checking for vfork" >&5
if eval "test \"`echo '$''{'ac_cv_func_vfork'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4115 "configure"
+#line 3812 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char vfork(); below. */
@@ -4134,7 +3831,7 @@ vfork();
; return 0; }
EOF
-if { (eval echo configure:4138: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3835: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_vfork=yes"
else
@@ -4156,7 +3853,7 @@ fi
ac_cv_func_vfork_works=$ac_cv_func_vfork
else
cat > conftest.$ac_ext <<EOF
-#line 4160 "configure"
+#line 3857 "configure"
#include "confdefs.h"
/* Thanks to Paul Eggert for this test. */
#include <stdio.h>
@@ -4251,7 +3948,7 @@ main() {
}
}
EOF
-if { (eval echo configure:4255: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3952: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_func_vfork_works=yes
else
@@ -4273,6 +3970,472 @@ EOF
fi
+for ac_func in getpagesize
+do
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:3977: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 3982 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func(); below. */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error. */
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
+
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+$ac_func();
+#endif
+
+; return 0; }
+EOF
+if { (eval echo configure:4005: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
+fi
+done
+
+# The test program for the next two tests is the same except for one
+# set of ifdefs.
+cat >ct-mmap.inc <<'EOF'
+#include <sys/types.h>
+#include <sys/mman.h>
+#include <fcntl.h>
+#include <signal.h>
+#include <setjmp.h>
+#include <stdio.h>
+
+#if !defined (MAP_ANONYMOUS) && defined (MAP_ANON)
+# define MAP_ANONYMOUS MAP_ANON
+#endif
+
+/* This mess was copied from the GNU getpagesize.h. */
+#ifndef HAVE_GETPAGESIZE
+# ifdef HAVE_UNISTD_H
+# include <unistd.h>
+# endif
+
+/* Assume that all systems that can run configure have sys/param.h. */
+# ifndef HAVE_SYS_PARAM_H
+# define HAVE_SYS_PARAM_H 1
+# endif
+
+# ifdef _SC_PAGESIZE
+# define getpagesize() sysconf(_SC_PAGESIZE)
+# else /* no _SC_PAGESIZE */
+# ifdef HAVE_SYS_PARAM_H
+# include <sys/param.h>
+# ifdef EXEC_PAGESIZE
+# define getpagesize() EXEC_PAGESIZE
+# else /* no EXEC_PAGESIZE */
+# ifdef NBPG
+# define getpagesize() NBPG * CLSIZE
+# ifndef CLSIZE
+# define CLSIZE 1
+# endif /* no CLSIZE */
+# else /* no NBPG */
+# ifdef NBPC
+# define getpagesize() NBPC
+# else /* no NBPC */
+# ifdef PAGESIZE
+# define getpagesize() PAGESIZE
+# endif /* PAGESIZE */
+# endif /* no NBPC */
+# endif /* no NBPG */
+# endif /* no EXEC_PAGESIZE */
+# else /* no HAVE_SYS_PARAM_H */
+# define getpagesize() 8192 /* punt totally */
+# endif /* no HAVE_SYS_PARAM_H */
+# endif /* no _SC_PAGESIZE */
+
+#endif /* no HAVE_GETPAGESIZE */
+
+#ifndef MAP_FAILED
+# define MAP_FAILED -1
+#endif
+
+#undef perror_exit
+#define perror_exit(str, val) \
+ do { perror(str); exit(val); } while (0)
+
+/* Some versions of cygwin mmap require that munmap is called with the
+ same parameters as mmap. GCC expects that this is not the case.
+ Test for various forms of this problem. Warning - icky signal games. */
+
+static sigset_t unblock_sigsegv;
+static jmp_buf r;
+static size_t pg;
+static int devzero;
+
+static char *
+anonmap (size)
+ size_t size;
+{
+#ifdef USE_MAP_ANON
+ return (char *) mmap (0, size, PROT_READ|PROT_WRITE,
+ MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
+#else
+ return (char *) mmap (0, size, PROT_READ|PROT_WRITE,
+ MAP_PRIVATE, devzero, 0);
+#endif
+}
+
+static void
+sigsegv (unused)
+ int unused;
+{
+ sigprocmask (SIG_UNBLOCK, &unblock_sigsegv, 0);
+ longjmp (r, 1);
+}
+
+/* Basic functionality test. */
+void
+test_0 ()
+{
+ char *x = anonmap (pg);
+ if (x == (char *) MAP_FAILED)
+ perror_exit("test 0 mmap", 2);
+
+ *(int *)x += 1;
+
+ if (munmap(x, pg) < 0)
+ perror_exit("test 0 munmap", 3);
+}
+
+/* 1. If we map a 2-page region and unmap its second page, the first page
+ must remain. */
+static void
+test_1 ()
+{
+ char *x = anonmap (pg * 2);
+ if (x == (char *)MAP_FAILED)
+ perror_exit ("test 1 mmap", 4);
+
+ signal (SIGSEGV, sigsegv);
+ if (setjmp (r))
+ perror_exit ("test 1 fault", 5);
+
+ x[0] = 1;
+ x[pg] = 1;
+
+ if (munmap (x + pg, pg) < 0)
+ perror_exit ("test 1 munmap 1", 6);
+ x[0] = 2;
+
+ if (setjmp (r) == 0)
+ {
+ x[pg] = 1;
+ perror_exit ("test 1 no fault", 7);
+ }
+ if (munmap (x, pg) < 0)
+ perror_exit ("test 1 munmap 2", 8);
+}
+
+/* 2. If we map a 2-page region and unmap its first page, the second
+ page must remain. */
+static void
+test_2 ()
+{
+ char *x = anonmap (pg * 2);
+ if (x == (char *)MAP_FAILED)
+ perror_exit ("test 2 mmap", 9);
+
+ signal (SIGSEGV, sigsegv);
+ if (setjmp (r))
+ perror_exit ("test 2 fault", 10);
+
+ x[0] = 1;
+ x[pg] = 1;
+
+ if (munmap (x, pg) < 0)
+ perror_exit ("test 2 munmap 1", 11);
+
+ x[pg] = 2;
+
+ if (setjmp (r) == 0)
+ {
+ x[0] = 1;
+ perror_exit ("test 2 no fault", 12);
+ }
+
+ if (munmap (x+pg, pg) < 0)
+ perror_exit ("test 2 munmap 2", 13);
+}
+
+/* 3. If we map two adjacent 1-page regions and unmap them both with
+ one munmap, both must go away.
+
+ Getting two adjacent 1-page regions with two mmap calls is slightly
+ tricky. All OS's tested skip over already-allocated blocks; therefore
+ we have been careful to unmap all allocated regions in previous tests.
+ HP/UX allocates pages backward in memory. No OS has yet been observed
+ to be so perverse as to leave unmapped space between consecutive calls
+ to mmap. */
+
+static void
+test_3 ()
+{
+ char *x, *y, *z;
+
+ x = anonmap (pg);
+ if (x == (char *)MAP_FAILED)
+ perror_exit ("test 3 mmap 1", 14);
+ y = anonmap (pg);
+ if (y == (char *)MAP_FAILED)
+ perror_exit ("test 3 mmap 2", 15);
+
+ if (y != x + pg)
+ {
+ if (y == x - pg)
+ z = y, y = x, x = z;
+ else
+ {
+ fprintf (stderr, "test 3 nonconsecutive pages - %lx, %lx\n",
+ (unsigned long)x, (unsigned long)y);
+ exit (16);
+ }
+ }
+
+ signal (SIGSEGV, sigsegv);
+ if (setjmp (r))
+ perror_exit ("test 3 fault", 17);
+
+ x[0] = 1;
+ y[0] = 1;
+
+ if (munmap (x, pg*2) < 0)
+ perror_exit ("test 3 munmap", 18);
+
+ if (setjmp (r) == 0)
+ {
+ x[0] = 1;
+ perror_exit ("test 3 no fault 1", 19);
+ }
+
+ signal (SIGSEGV, sigsegv);
+ if (setjmp (r) == 0)
+ {
+ y[0] = 1;
+ perror_exit ("test 3 no fault 2", 20);
+ }
+}
+
+int
+main ()
+{
+ sigemptyset (&unblock_sigsegv);
+ sigaddset (&unblock_sigsegv, SIGSEGV);
+ pg = getpagesize ();
+#ifndef USE_MAP_ANON
+ devzero = open ("/dev/zero", O_RDWR);
+ if (devzero < 0)
+ perror_exit ("open /dev/zero", 1);
+#endif
+
+ test_0();
+ test_1();
+ test_2();
+ test_3();
+
+ exit(0);
+}
+EOF
+
+echo $ac_n "checking for working mmap from /dev/zero""... $ac_c" 1>&6
+echo "configure:4276: checking for working mmap from /dev/zero" >&5
+if eval "test \"`echo '$''{'ac_cv_func_mmap_dev_zero'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test "$cross_compiling" = yes; then
+ # If this is not cygwin, and /dev/zero is a character device, it's probably
+ # safe to assume it works.
+ case "$host_os" in
+ cygwin* | win32 | pe | mingw* ) ac_cv_func_mmap_dev_zero=buggy ;;
+ * ) if test -c /dev/zero
+ then ac_cv_func_mmap_dev_zero=yes
+ else ac_cv_func_mmap_dev_zero=no
+ fi ;;
+ esac
+else
+ cat > conftest.$ac_ext <<EOF
+#line 4292 "configure"
+#include "confdefs.h"
+#include "ct-mmap.inc"
+EOF
+if { (eval echo configure:4296: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
+ ac_cv_func_mmap_dev_zero=yes
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ if test $? -lt 4
+ then ac_cv_func_mmap_dev_zero=no
+ else ac_cv_func_mmap_dev_zero=buggy
+ fi
+fi
+rm -fr conftest*
+fi
+
+
+fi
+
+echo "$ac_t""$ac_cv_func_mmap_dev_zero" 1>&6
+if test $ac_cv_func_mmap_dev_zero = yes; then
+ cat >> confdefs.h <<\EOF
+#define HAVE_MMAP_DEV_ZERO 1
+EOF
+
+fi
+
+echo $ac_n "checking for working mmap with MAP_ANON(YMOUS)""... $ac_c" 1>&6
+echo "configure:4323: checking for working mmap with MAP_ANON(YMOUS)" >&5
+if eval "test \"`echo '$''{'ac_cv_func_mmap_anon'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test "$cross_compiling" = yes; then
+ # Unlike /dev/zero, it is not safe to assume MAP_ANON(YMOUS) works
+ # just because it's there. Some SCO Un*xen define it but don't implement it.
+ ac_cv_func_mmap_anon=no
+else
+ cat > conftest.$ac_ext <<EOF
+#line 4333 "configure"
+#include "confdefs.h"
+#define USE_MAP_ANON
+#include "ct-mmap.inc"
+EOF
+if { (eval echo configure:4338: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
+ ac_cv_func_mmap_anon=yes
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ if test $? -lt 4
+ then ac_cv_func_mmap_anon=no
+ else ac_cv_func_mmap_anon=buggy
+ fi
+fi
+rm -fr conftest*
+fi
+
+
+fi
+
+echo "$ac_t""$ac_cv_func_mmap_anon" 1>&6
+if test $ac_cv_func_mmap_anon = yes; then
+ cat >> confdefs.h <<\EOF
+#define HAVE_MMAP_ANON 1
+EOF
+
+fi
+rm -f ct-mmap.inc
+
+echo $ac_n "checking for working mmap of a file""... $ac_c" 1>&6
+echo "configure:4366: checking for working mmap of a file" >&5
+if eval "test \"`echo '$''{'ac_cv_func_mmap_file'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ # Create a file one thousand bytes long.
+for i in 1 2 3 4 5 6 7 8 9 0
+do for j in 1 2 3 4 5 6 7 8 9 0
+do echo $i $j xxxxx
+done
+done > conftestdata$$
+
+if test "$cross_compiling" = yes; then
+ ac_cv_func_mmap_file=no
+else
+ cat > conftest.$ac_ext <<EOF
+#line 4381 "configure"
+#include "confdefs.h"
+
+/* Test by Zack Weinberg. Modified from MMAP_ANYWHERE test by
+ Richard Henderson and Alexandre Oliva.
+ Check whether read-only mmap of a plain file works. */
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <sys/mman.h>
+
+int main()
+{
+ char *x;
+ int fd;
+ struct stat st;
+
+ fd = open("conftestdata$$", O_RDONLY);
+ if (fd < 0)
+ exit(1);
+
+ if (fstat (fd, &st))
+ exit(2);
+
+ x = (char*)mmap(0, st.st_size, PROT_READ, MAP_PRIVATE, fd, 0);
+ if (x == (char *) -1)
+ exit(3);
+
+ if (x[0] != '1' || x[1] != ' ' || x[2] != '1' || x[3] != ' ')
+ exit(4);
+
+ if (munmap(x, st.st_size) < 0)
+ exit(5);
+
+ exit(0);
+}
+EOF
+if { (eval echo configure:4418: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
+ ac_cv_func_mmap_file=yes
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ ac_cv_func_mmap_file=no
+fi
+rm -fr conftest*
+fi
+
+fi
+
+echo "$ac_t""$ac_cv_func_mmap_file" 1>&6
+if test $ac_cv_func_mmap_file = yes; then
+ cat >> confdefs.h <<\EOF
+#define HAVE_MMAP_FILE 1
+EOF
+
+fi
+
@@ -4290,7 +4453,7 @@ fi
echo $ac_n "checking for iconv""... $ac_c" 1>&6
-echo "configure:4294: checking for iconv" >&5
+echo "configure:4457: checking for iconv" >&5
if eval "test \"`echo '$''{'am_cv_func_iconv'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -4298,7 +4461,7 @@ else
am_cv_func_iconv="no, consider installing GNU libiconv"
am_cv_lib_iconv=no
cat > conftest.$ac_ext <<EOF
-#line 4302 "configure"
+#line 4465 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <iconv.h>
@@ -4308,7 +4471,7 @@ iconv_t cd = iconv_open("","");
iconv_close(cd);
; return 0; }
EOF
-if { (eval echo configure:4312: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4475: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
am_cv_func_iconv=yes
else
@@ -4320,7 +4483,7 @@ rm -f conftest*
am_save_LIBS="$LIBS"
LIBS="$LIBS $am_cv_libiconv_ldpath -liconv"
cat > conftest.$ac_ext <<EOF
-#line 4324 "configure"
+#line 4487 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <iconv.h>
@@ -4330,7 +4493,7 @@ iconv_t cd = iconv_open("","");
iconv_close(cd);
; return 0; }
EOF
-if { (eval echo configure:4334: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4497: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
am_cv_lib_iconv=yes
am_cv_func_iconv=yes
@@ -4351,13 +4514,13 @@ echo "$ac_t""$am_cv_func_iconv" 1>&6
EOF
echo $ac_n "checking for iconv declaration""... $ac_c" 1>&6
-echo "configure:4355: checking for iconv declaration" >&5
+echo "configure:4518: checking for iconv declaration" >&5
if eval "test \"`echo '$''{'am_cv_proto_iconv'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4361 "configure"
+#line 4524 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -4376,7 +4539,7 @@ int main() {
; return 0; }
EOF
-if { (eval echo configure:4380: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4543: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
am_cv_proto_iconv_arg1=""
else
@@ -4409,17 +4572,17 @@ saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -I${srcdir} -I${srcdir}/../include"
for ac_func in getenv atol sbrk abort atof getcwd getwd \
strsignal putc_unlocked fputs_unlocked fwrite_unlocked \
- fprintf_unlocked strstr errno vasprintf \
+ fprintf_unlocked strstr errno \
malloc realloc calloc free basename getopt clock
do
ac_tr_decl=HAVE_DECL_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
echo $ac_n "checking whether $ac_func is declared""... $ac_c" 1>&6
-echo "configure:4418: checking whether $ac_func is declared" >&5
+echo "configure:4581: checking whether $ac_func is declared" >&5
if eval "test \"`echo '$''{'gcc_cv_have_decl_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4423 "configure"
+#line 4586 "configure"
#include "confdefs.h"
#undef $ac_tr_decl
#define $ac_tr_decl 1
@@ -4433,7 +4596,7 @@ char *(*pfn) = (char *(*)) $ac_func ;
#endif
; return 0; }
EOF
-if { (eval echo configure:4437: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4600: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
eval "gcc_cv_have_decl_$ac_func=yes"
else
@@ -4503,9 +4666,6 @@ EOF
cat >> confdefs.h <<\EOF
#define HAVE_DECL_ERRNO 1
EOF
- cat >> confdefs.h <<\EOF
-#define HAVE_DECL_VASPRINTF 1
-EOF
\
cat >> confdefs.h <<\EOF
#define HAVE_DECL_MALLOC 1
@@ -4535,12 +4695,12 @@ for ac_func in getrlimit setrlimit getrusage
do
ac_tr_decl=HAVE_DECL_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
echo $ac_n "checking whether $ac_func is declared""... $ac_c" 1>&6
-echo "configure:4539: checking whether $ac_func is declared" >&5
+echo "configure:4699: checking whether $ac_func is declared" >&5
if eval "test \"`echo '$''{'gcc_cv_have_decl_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4544 "configure"
+#line 4704 "configure"
#include "confdefs.h"
#undef $ac_tr_decl
#define $ac_tr_decl 1
@@ -4558,7 +4718,7 @@ char *(*pfn) = (char *(*)) $ac_func ;
#endif
; return 0; }
EOF
-if { (eval echo configure:4562: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4722: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
eval "gcc_cv_have_decl_$ac_func=yes"
else
@@ -4596,43 +4756,16 @@ EOF
fi
-cat > conftest.$ac_ext <<EOF
-#line 4601 "configure"
-#include "confdefs.h"
-
-#include "ansidecl.h"
-#include "system.h"
-#ifdef HAVE_SYS_RESOURCE_H
-#include <sys/resource.h>
-#endif
-
-int main() {
-rlim_t l = 0;
-; return 0; }
-EOF
-if { (eval echo configure:4614: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- :
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- cat >> confdefs.h <<\EOF
-#define rlim_t long
-EOF
-
-fi
-rm -f conftest*
-
for ac_func in times
do
ac_tr_decl=HAVE_DECL_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
echo $ac_n "checking whether $ac_func is declared""... $ac_c" 1>&6
-echo "configure:4631: checking whether $ac_func is declared" >&5
+echo "configure:4764: checking whether $ac_func is declared" >&5
if eval "test \"`echo '$''{'gcc_cv_have_decl_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4636 "configure"
+#line 4769 "configure"
#include "confdefs.h"
#undef $ac_tr_decl
#define $ac_tr_decl 1
@@ -4650,7 +4783,7 @@ char *(*pfn) = (char *(*)) $ac_func ;
#endif
; return 0; }
EOF
-if { (eval echo configure:4654: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4787: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
eval "gcc_cv_have_decl_$ac_func=yes"
else
@@ -4684,13 +4817,13 @@ fi
# More time-related stuff.
echo $ac_n "checking for struct tms""... $ac_c" 1>&6
-echo "configure:4688: checking for struct tms" >&5
+echo "configure:4821: checking for struct tms" >&5
if eval "test \"`echo '$''{'ac_cv_struct_tms'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4694 "configure"
+#line 4827 "configure"
#include "confdefs.h"
#include "ansidecl.h"
@@ -4703,7 +4836,7 @@ int main() {
struct tms tms;
; return 0; }
EOF
-if { (eval echo configure:4707: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4840: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_struct_tms=yes
else
@@ -4726,13 +4859,13 @@ fi
# use gcc_cv_* here because this doesn't match the behavior of AC_CHECK_TYPE.
# revisit after autoconf 2.50.
echo $ac_n "checking for clock_t""... $ac_c" 1>&6
-echo "configure:4730: checking for clock_t" >&5
+echo "configure:4863: checking for clock_t" >&5
if eval "test \"`echo '$''{'gcc_cv_type_clock_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4736 "configure"
+#line 4869 "configure"
#include "confdefs.h"
#include "ansidecl.h"
@@ -4742,7 +4875,7 @@ int main() {
clock_t x;
; return 0; }
EOF
-if { (eval echo configure:4746: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4879: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gcc_cv_type_clock_t=yes
else
@@ -4762,57 +4895,17 @@ EOF
fi
-# Check whether --enable-initfini-array or --disable-initfini-array was given.
-if test "${enable_initfini_array+set}" = set; then
- enableval="$enable_initfini_array"
- gcc_cv_initfinit_array=$enableval
-else
- echo $ac_n "checking for .preinit_array/.init_array/.fini_array support""... $ac_c" 1>&6
-echo "configure:4772: checking for .preinit_array/.init_array/.fini_array support" >&5
-if eval "test \"`echo '$''{'gcc_cv_initfinit_array'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.c <<EOF
-static int x = -1;
-int main (void) { return x; }
-int foo (void) { x = 0; }
-int (*fp) (void) __attribute__ ((section (".init_array"))) = foo;
-EOF
- if { ac_try='${CC-cc} -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD'; { (eval echo configure:4782: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }
- then
- if ./conftest; then
- gcc_cv_initfinit_array=yes
- else
- gcc_cv_initfinit_array=no
- fi
- else
- gcc_cv_initfinit_array=no
- fi
- rm -f conftest*
-fi
-
-echo "$ac_t""$gcc_cv_initfinit_array" 1>&6
-
- if test $gcc_cv_initfinit_array = yes; then
- cat >> confdefs.h <<\EOF
-#define HAVE_INITFINI_ARRAY 1
-EOF
-
- fi
-fi
-
-
# Restore CFLAGS from before the gcc_AC_NEED_DECLARATIONS tests.
CFLAGS="$saved_CFLAGS"
# mkdir takes a single argument on some systems.
echo $ac_n "checking if mkdir takes one argument""... $ac_c" 1>&6
-echo "configure:4811: checking if mkdir takes one argument" >&5
+echo "configure:4904: checking if mkdir takes one argument" >&5
if eval "test \"`echo '$''{'gcc_cv_mkdir_takes_one_arg'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4816 "configure"
+#line 4909 "configure"
#include "confdefs.h"
#include <sys/types.h>
@@ -4829,7 +4922,7 @@ int main() {
mkdir ("foo", 0);
; return 0; }
EOF
-if { (eval echo configure:4833: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4926: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gcc_cv_mkdir_takes_one_arg=no
else
@@ -4856,7 +4949,6 @@ objext='.o'
-target_gtfiles=
build_xm_file=
build_xm_defines=
build_install_headers_dir=install-headers-tar
@@ -4898,6 +4990,21 @@ if test x"$dwarf2" = xyes
then tm_file="$tm_file tm-dwarf2.h"
fi
+if test x$float_format = x
+then float_format=i64
+fi
+
+if test $float_format = none
+then float_h_file=Makefile.in
+else float_h_file=float-$float_format.h
+fi
+
+# Handle cpp installation.
+if test x$enable_cpp != xno
+then
+ tmake_file="$tmake_file t-install-cpp"
+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."
@@ -4985,20 +5092,6 @@ if test x$thread_file = x; then
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}
-
- cat >> confdefs.h <<EOF
-#define EXTRA_MODES_FILE "$extra_modes"
-EOF
-
- cat >> confdefs.h <<\EOF
-#define EXTRA_CC_MODES 1
-EOF
-
-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
@@ -5033,7 +5126,7 @@ else
cd ..
rm -rf $tempdir
build_auto=auto-build.h
- FORBUILD=../$build_alias
+ FORBUILD=../$build
fi
@@ -5097,14 +5190,14 @@ fi
echo $ac_n "checking for library containing strerror""... $ac_c" 1>&6
-echo "configure:5101: checking for library containing strerror" >&5
+echo "configure:5194: checking for library containing strerror" >&5
if eval "test \"`echo '$''{'ac_cv_search_strerror'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_func_search_save_LIBS="$LIBS"
ac_cv_search_strerror="no"
cat > conftest.$ac_ext <<EOF
-#line 5108 "configure"
+#line 5201 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -5115,7 +5208,7 @@ int main() {
strerror()
; return 0; }
EOF
-if { (eval echo configure:5119: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5212: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_search_strerror="none required"
else
@@ -5126,7 +5219,7 @@ rm -f conftest*
test "$ac_cv_search_strerror" = "no" && for i in cposix; do
LIBS="-l$i $ac_func_search_save_LIBS"
cat > conftest.$ac_ext <<EOF
-#line 5130 "configure"
+#line 5223 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -5137,7 +5230,7 @@ int main() {
strerror()
; return 0; }
EOF
-if { (eval echo configure:5141: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5234: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_search_strerror="-l$i"
break
@@ -5160,12 +5253,12 @@ fi
echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:5164: checking for working const" >&5
+echo "configure:5257: checking for working const" >&5
if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5169 "configure"
+#line 5262 "configure"
#include "confdefs.h"
int main() {
@@ -5214,7 +5307,7 @@ ccp = (char const *const *) p;
; return 0; }
EOF
-if { (eval echo configure:5218: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5311: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_const=yes
else
@@ -5235,12 +5328,12 @@ EOF
fi
echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:5239: checking for off_t" >&5
+echo "configure:5332: checking for off_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5244 "configure"
+#line 5337 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -5268,12 +5361,12 @@ EOF
fi
echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:5272: checking for size_t" >&5
+echo "configure:5365: checking for size_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5277 "configure"
+#line 5370 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -5303,19 +5396,19 @@ fi
# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
# for constant arguments. Useless!
echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6
-echo "configure:5307: checking for working alloca.h" >&5
+echo "configure:5400: checking for working alloca.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5312 "configure"
+#line 5405 "configure"
#include "confdefs.h"
#include <alloca.h>
int main() {
char *p = alloca(2 * sizeof(int));
; return 0; }
EOF
-if { (eval echo configure:5319: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5412: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_header_alloca_h=yes
else
@@ -5336,12 +5429,12 @@ EOF
fi
echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:5340: checking for alloca" >&5
+echo "configure:5433: checking for alloca" >&5
if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5345 "configure"
+#line 5438 "configure"
#include "confdefs.h"
#ifdef __GNUC__
@@ -5369,7 +5462,7 @@ int main() {
char *p = (char *) alloca(1);
; return 0; }
EOF
-if { (eval echo configure:5373: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5466: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_func_alloca_works=yes
else
@@ -5401,12 +5494,12 @@ EOF
echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:5405: checking whether alloca needs Cray hooks" >&5
+echo "configure:5498: checking whether alloca needs Cray hooks" >&5
if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5410 "configure"
+#line 5503 "configure"
#include "confdefs.h"
#if defined(CRAY) && ! defined(CRAY2)
webecray
@@ -5431,12 +5524,12 @@ echo "$ac_t""$ac_cv_os_cray" 1>&6
if test $ac_cv_os_cray = yes; then
for ac_func in _getb67 GETB67 getb67; do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5435: checking for $ac_func" >&5
+echo "configure:5528: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5440 "configure"
+#line 5533 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -5459,7 +5552,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:5463: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5556: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -5486,7 +5579,7 @@ done
fi
echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:5490: checking stack direction for C alloca" >&5
+echo "configure:5583: checking stack direction for C alloca" >&5
if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -5494,7 +5587,7 @@ else
ac_cv_c_stack_direction=0
else
cat > conftest.$ac_ext <<EOF
-#line 5498 "configure"
+#line 5591 "configure"
#include "confdefs.h"
find_stack_direction ()
{
@@ -5513,7 +5606,7 @@ main ()
exit (find_stack_direction() < 0);
}
EOF
-if { (eval echo configure:5517: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:5610: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_c_stack_direction=1
else
@@ -5536,12 +5629,12 @@ fi
echo $ac_n "checking whether we are using the GNU C Library 2.1 or newer""... $ac_c" 1>&6
-echo "configure:5540: checking whether we are using the GNU C Library 2.1 or newer" >&5
+echo "configure:5633: checking whether we are using the GNU C Library 2.1 or newer" >&5
if eval "test \"`echo '$''{'ac_cv_gnu_library_2_1'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5545 "configure"
+#line 5638 "configure"
#include "confdefs.h"
#include <features.h>
@@ -5577,17 +5670,17 @@ stdlib.h string.h unistd.h sys/param.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5581: checking for $ac_hdr" >&5
+echo "configure:5674: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5586 "configure"
+#line 5679 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5591: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5684: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -5618,12 +5711,12 @@ getgid getuid mempcpy munmap putenv setenv setlocale stpcpy strchr strcasecmp \
strdup strtoul tsearch __argz_count __argz_stringify __argz_next
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5622: checking for $ac_func" >&5
+echo "configure:5715: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5627 "configure"
+#line 5720 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -5646,7 +5739,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:5650: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5743: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -5687,7 +5780,7 @@ fi
echo $ac_n "checking for iconv""... $ac_c" 1>&6
-echo "configure:5691: checking for iconv" >&5
+echo "configure:5784: checking for iconv" >&5
if eval "test \"`echo '$''{'am_cv_func_iconv'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -5695,7 +5788,7 @@ else
am_cv_func_iconv="no, consider installing GNU libiconv"
am_cv_lib_iconv=no
cat > conftest.$ac_ext <<EOF
-#line 5699 "configure"
+#line 5792 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <iconv.h>
@@ -5705,7 +5798,7 @@ iconv_t cd = iconv_open("","");
iconv_close(cd);
; return 0; }
EOF
-if { (eval echo configure:5709: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5802: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
am_cv_func_iconv=yes
else
@@ -5717,7 +5810,7 @@ rm -f conftest*
am_save_LIBS="$LIBS"
LIBS="$LIBS $am_cv_libiconv_ldpath -liconv"
cat > conftest.$ac_ext <<EOF
-#line 5721 "configure"
+#line 5814 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <iconv.h>
@@ -5727,7 +5820,7 @@ iconv_t cd = iconv_open("","");
iconv_close(cd);
; return 0; }
EOF
-if { (eval echo configure:5731: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5824: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
am_cv_lib_iconv=yes
am_cv_func_iconv=yes
@@ -5748,13 +5841,13 @@ echo "$ac_t""$am_cv_func_iconv" 1>&6
EOF
echo $ac_n "checking for iconv declaration""... $ac_c" 1>&6
-echo "configure:5752: checking for iconv declaration" >&5
+echo "configure:5845: checking for iconv declaration" >&5
if eval "test \"`echo '$''{'am_cv_proto_iconv'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5758 "configure"
+#line 5851 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -5773,7 +5866,7 @@ int main() {
; return 0; }
EOF
-if { (eval echo configure:5777: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5870: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
am_cv_proto_iconv_arg1=""
else
@@ -5802,19 +5895,19 @@ EOF
echo $ac_n "checking for nl_langinfo and CODESET""... $ac_c" 1>&6
-echo "configure:5806: checking for nl_langinfo and CODESET" >&5
+echo "configure:5899: checking for nl_langinfo and CODESET" >&5
if eval "test \"`echo '$''{'am_cv_langinfo_codeset'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5811 "configure"
+#line 5904 "configure"
#include "confdefs.h"
#include <langinfo.h>
int main() {
char* cs = nl_langinfo(CODESET);
; return 0; }
EOF
-if { (eval echo configure:5818: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5911: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
am_cv_langinfo_codeset=yes
else
@@ -5837,19 +5930,19 @@ EOF
if test $ac_cv_header_locale_h = yes; then
echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6
-echo "configure:5841: checking for LC_MESSAGES" >&5
+echo "configure:5934: checking for LC_MESSAGES" >&5
if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5846 "configure"
+#line 5939 "configure"
#include "confdefs.h"
#include <locale.h>
int main() {
return LC_MESSAGES
; return 0; }
EOF
-if { (eval echo configure:5853: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5946: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
am_cv_val_LC_MESSAGES=yes
else
@@ -5870,7 +5963,7 @@ EOF
fi
fi
echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6
-echo "configure:5874: checking whether NLS is requested" >&5
+echo "configure:5967: checking whether NLS is requested" >&5
# Check whether --enable-nls or --disable-nls was given.
if test "${enable_nls+set}" = set; then
enableval="$enable_nls"
@@ -5893,7 +5986,7 @@ fi
EOF
echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6
-echo "configure:5897: checking whether included gettext is requested" >&5
+echo "configure:5990: checking whether included gettext is requested" >&5
# Check whether --with-included-gettext or --without-included-gettext was given.
if test "${with_included_gettext+set}" = set; then
withval="$with_included_gettext"
@@ -5913,17 +6006,17 @@ fi
ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for libintl.h""... $ac_c" 1>&6
-echo "configure:5917: checking for libintl.h" >&5
+echo "configure:6010: checking for libintl.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5922 "configure"
+#line 6015 "configure"
#include "confdefs.h"
#include <libintl.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5927: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6020: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -5944,12 +6037,12 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
EOF
echo $ac_n "checking for GNU gettext in libc""... $ac_c" 1>&6
-echo "configure:5948: checking for GNU gettext in libc" >&5
+echo "configure:6041: checking for GNU gettext in libc" >&5
if eval "test \"`echo '$''{'gt_cv_func_gnugettext1_libc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5953 "configure"
+#line 6046 "configure"
#include "confdefs.h"
#include <libintl.h>
extern int _nl_msg_cat_cntr;
@@ -5958,7 +6051,7 @@ bindtextdomain ("", "");
return (int) gettext ("") + _nl_msg_cat_cntr
; return 0; }
EOF
-if { (eval echo configure:5962: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6055: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gt_cv_func_gnugettext1_libc=yes
else
@@ -5974,14 +6067,14 @@ echo "$ac_t""$gt_cv_func_gnugettext1_libc" 1>&6
if test "$gt_cv_func_gnugettext1_libc" != "yes"; then
echo $ac_n "checking for GNU gettext in libintl""... $ac_c" 1>&6
-echo "configure:5978: checking for GNU gettext in libintl" >&5
+echo "configure:6071: checking for GNU gettext in libintl" >&5
if eval "test \"`echo '$''{'gt_cv_func_gnugettext1_libintl'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
gt_save_LIBS="$LIBS"
LIBS="$LIBS -lintl $LIBICONV"
cat > conftest.$ac_ext <<EOF
-#line 5985 "configure"
+#line 6078 "configure"
#include "confdefs.h"
#include <libintl.h>
extern int _nl_msg_cat_cntr;
@@ -5990,7 +6083,7 @@ bindtextdomain ("", "");
return (int) gettext ("") + _nl_msg_cat_cntr
; return 0; }
EOF
-if { (eval echo configure:5994: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6087: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gt_cv_func_gnugettext1_libintl=yes
else
@@ -6023,12 +6116,12 @@ EOF
for ac_func in dcgettext
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6027: checking for $ac_func" >&5
+echo "configure:6120: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 6032 "configure"
+#line 6125 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6051,7 +6144,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6055: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6148: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -6080,7 +6173,7 @@ done
# Extract the first word of "msgfmt", so it can be a program name with args.
set dummy msgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:6084: checking for $ac_word" >&5
+echo "configure:6177: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -6114,7 +6207,7 @@ fi
# Extract the first word of "gmsgfmt", so it can be a program name with args.
set dummy gmsgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:6118: checking for $ac_word" >&5
+echo "configure:6211: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -6151,7 +6244,7 @@ fi
# Extract the first word of "xgettext", so it can be a program name with args.
set dummy xgettext; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:6155: checking for $ac_word" >&5
+echo "configure:6248: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -6201,7 +6294,7 @@ fi
# Extract the first word of "msgfmt", so it can be a program name with args.
set dummy msgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:6205: checking for $ac_word" >&5
+echo "configure:6298: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -6235,7 +6328,7 @@ fi
# Extract the first word of "gmsgfmt", so it can be a program name with args.
set dummy gmsgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:6239: checking for $ac_word" >&5
+echo "configure:6332: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -6271,7 +6364,7 @@ fi
# Extract the first word of "xgettext", so it can be a program name with args.
set dummy xgettext; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:6275: checking for $ac_word" >&5
+echo "configure:6368: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -6343,7 +6436,7 @@ do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:6347: checking for $ac_word" >&5
+echo "configure:6440: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_INTLBISON'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -6376,7 +6469,7 @@ done
ac_verc_fail=yes
else
echo $ac_n "checking version of bison""... $ac_c" 1>&6
-echo "configure:6380: checking version of bison" >&5
+echo "configure:6473: checking version of bison" >&5
ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
case $ac_prog_version in
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
@@ -6421,7 +6514,7 @@ EOF
if test "x$CATOBJEXT" != x; then
echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6
-echo "configure:6425: checking for catalogs to be installed" >&5
+echo "configure:6518: checking for catalogs to be installed" >&5
# Look for .po and .gmo files in the source directory.
CATALOGS=
XLINGUAS=
@@ -6479,7 +6572,7 @@ fi
case $host_os in
win32 | pe | cygwin* | mingw32* | uwin*)
echo $ac_n "checking whether windows registry support is requested""... $ac_c" 1>&6
-echo "configure:6483: checking whether windows registry support is requested" >&5
+echo "configure:6576: checking whether windows registry support is requested" >&5
if test "x$enable_win32_registry" != xno; then
cat >> confdefs.h <<\EOF
#define ENABLE_WIN32_REGISTRY 1
@@ -6488,14 +6581,14 @@ EOF
echo "$ac_t""yes" 1>&6
echo $ac_n "checking for library containing RegOpenKeyExA""... $ac_c" 1>&6
-echo "configure:6492: checking for library containing RegOpenKeyExA" >&5
+echo "configure:6585: checking for library containing RegOpenKeyExA" >&5
if eval "test \"`echo '$''{'ac_cv_search_RegOpenKeyExA'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_func_search_save_LIBS="$LIBS"
ac_cv_search_RegOpenKeyExA="no"
cat > conftest.$ac_ext <<EOF
-#line 6499 "configure"
+#line 6592 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -6506,7 +6599,7 @@ int main() {
RegOpenKeyExA()
; return 0; }
EOF
-if { (eval echo configure:6510: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6603: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_search_RegOpenKeyExA="none required"
else
@@ -6517,7 +6610,7 @@ rm -f conftest*
test "$ac_cv_search_RegOpenKeyExA" = "no" && for i in advapi32; do
LIBS="-l$i $ac_func_search_save_LIBS"
cat > conftest.$ac_ext <<EOF
-#line 6521 "configure"
+#line 6614 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -6528,7 +6621,7 @@ int main() {
RegOpenKeyExA()
; return 0; }
EOF
-if { (eval echo configure:6532: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6625: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_search_RegOpenKeyExA="-l$i"
break
@@ -6570,7 +6663,7 @@ esac
if test "x$enable_win32_registry" != xno; then
echo $ac_n "checking registry key on windows hosts""... $ac_c" 1>&6
-echo "configure:6574: checking registry key on windows hosts" >&5
+echo "configure:6667: checking registry key on windows hosts" >&5
cat >> confdefs.h <<EOF
#define WIN32_REGISTRY_KEY "$gcc_cv_win32_registry_key"
EOF
@@ -6581,9 +6674,9 @@ fi
esac
# Get an absolute path to the GCC top-level source directory
-holddir=`${PWDCMD-pwd}`
+holddir=`pwd`
cd $srcdir
-topdir=`${PWDCMD-pwd}`
+topdir=`pwd`
cd $holddir
# Conditionalize the makefile for this host machine.
@@ -6645,7 +6738,7 @@ for f in $tm_file; do
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} $f" ;;
*) tm_file_list="${tm_file_list} \$(srcdir)/config/$f" ;;
esac
done
@@ -6660,10 +6753,8 @@ 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 )
+ auto-host.h | defaults.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
@@ -6673,10 +6764,8 @@ 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 )
+ auto-build.h | auto-host.h | defaults.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
@@ -6691,11 +6780,6 @@ 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
@@ -6722,8 +6806,8 @@ fi
# FIXME.
# These are the normal (build=host) settings:
-BUILD_PREFIX=
-BUILD_PREFIX_1=ignore-
+HOST_PREFIX=
+HOST_PREFIX_1=ignore-
HOST_CC='$(CC)'
HOST_CFLAGS='$(ALL_CFLAGS)'
@@ -6733,8 +6817,8 @@ STMP_FIXPROTO=stmp-fixproto
# And these apply if build != host.
if test x$build != x$host
then
- BUILD_PREFIX=build-
- BUILD_PREFIX_1=build-
+ HOST_PREFIX=build-
+ HOST_PREFIX_1=build-
HOST_CC='$(CC_FOR_BUILD)'
HOST_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD) $(XCFLAGS)'
@@ -6784,7 +6868,7 @@ fi
# Figure out what assembler we will be using.
echo $ac_n "checking what assembler to use""... $ac_c" 1>&6
-echo "configure:6788: checking what assembler to use" >&5
+echo "configure:6872: checking what assembler to use" >&5
gcc_cv_as=
gcc_cv_gas_major_version=
gcc_cv_gas_minor_version=
@@ -6878,7 +6962,7 @@ fi
# Figure out what linker we will be using.
echo $ac_n "checking what linker to use""... $ac_c" 1>&6
-echo "configure:6882: checking what linker to use" >&5
+echo "configure:6966: checking what linker to use" >&5
gcc_cv_ld=
gcc_cv_gld_major_version=
gcc_cv_gld_minor_version=
@@ -6971,7 +7055,7 @@ fi
# Figure out what nm we will be using.
echo $ac_n "checking what nm to use""... $ac_c" 1>&6
-echo "configure:6975: checking what nm to use" >&5
+echo "configure:7059: checking what nm to use" >&5
if test -x nm$host_exeext; then
gcc_cv_nm=./nm$host_exeext
elif test "x$program_prefix" != xNONE; then
@@ -6983,7 +7067,7 @@ echo "$ac_t""$gcc_cv_nm" 1>&6
# Figure out what objdump we will be using.
echo $ac_n "checking what objdump to use""... $ac_c" 1>&6
-echo "configure:6987: checking what objdump to use" >&5
+echo "configure:7071: checking what objdump to use" >&5
if test -x objdump$host_exeext; then
gcc_cv_objdump=./objdump$host_exeext
elif test "x$program_prefix" != xNONE; then
@@ -6995,7 +7079,7 @@ echo "$ac_t""$gcc_cv_objdump" 1>&6
# Figure out what assembler alignment features are present.
echo $ac_n "checking assembler alignment features""... $ac_c" 1>&6
-echo "configure:6999: checking assembler alignment features" >&5
+echo "configure:7083: checking assembler alignment features" >&5
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.
@@ -7043,7 +7127,7 @@ fi
echo "$ac_t""$gcc_cv_as_alignment_features" 1>&6
echo $ac_n "checking assembler subsection support""... $ac_c" 1>&6
-echo "configure:7047: checking assembler subsection support" >&5
+echo "configure:7131: checking assembler subsection support" >&5
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
@@ -7083,7 +7167,7 @@ fi
echo "$ac_t""$gcc_cv_as_subsections" 1>&6
echo $ac_n "checking assembler weak support""... $ac_c" 1>&6
-echo "configure:7087: checking assembler weak support" >&5
+echo "configure:7171: checking assembler weak support" >&5
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
@@ -7106,7 +7190,7 @@ fi
echo "$ac_t""$gcc_cv_as_weak" 1>&6
echo $ac_n "checking assembler hidden support""... $ac_c" 1>&6
-echo "configure:7110: checking assembler hidden support" >&5
+echo "configure:7194: checking assembler hidden support" >&5
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 \
@@ -7127,13 +7211,13 @@ elif test x$gcc_cv_as != x; then
fi
rm -f conftest.s conftest.o conftest.nm1 conftest.nm2
- # GNU LD versions before 2.12.1 have buggy support for STV_HIDDEN.
+ # 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
- 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'`
+ 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
@@ -7158,6 +7242,7 @@ elif test x$gcc_cv_as != x; then
fi
fi
fi
+
if test x"$gcc_cv_as_hidden" = xyes; then
cat >> confdefs.h <<\EOF
#define HAVE_GAS_HIDDEN 1
@@ -7166,23 +7251,10 @@ EOF
fi
echo "$ac_t""$gcc_cv_as_hidden" 1>&6
libgcc_visibility=$gcc_cv_as_hidden
-case "$target" in
- mips-sgi-irix6*)
- if test x"$gnu_ld_flag" = x"no"; then
- # Even if using gas with .hidden support, the resulting object files
- # cannot be linked with the IRIX 6 O32 linker. With the N32 and
- # N64 linkers, the problem is that the linker refuses to accept
- # -call_shared (passed by default to the linker) and -r (used to
- # link the object file generated without .hidden directives with
- # one that hides symbols), so we also lose.
- libgcc_visibility=no
- fi
- ;;
-esac
echo $ac_n "checking assembler leb128 support""... $ac_c" 1>&6
-echo "configure:7186: checking assembler leb128 support" >&5
+echo "configure:7258: checking assembler leb128 support" >&5
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
@@ -7227,7 +7299,7 @@ fi
echo "$ac_t""$gcc_cv_as_leb128" 1>&6
echo $ac_n "checking assembler eh_frame optimization""... $ac_c" 1>&6
-echo "configure:7231: checking assembler eh_frame optimization" >&5
+echo "configure:7303: checking assembler eh_frame optimization" >&5
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
@@ -7308,7 +7380,7 @@ fi
echo "$ac_t""$gcc_cv_as_eh_frame" 1>&6
echo $ac_n "checking assembler section merging support""... $ac_c" 1>&6
-echo "configure:7312: checking assembler section merging support" >&5
+echo "configure:7384: checking assembler section merging support" >&5
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
@@ -7330,151 +7402,11 @@ EOF
fi
echo "$ac_t""$gcc_cv_as_shf_merge" 1>&6
-echo $ac_n "checking assembler thread-local storage support""... $ac_c" 1>&6
-echo "configure:7335: checking assembler thread-local storage support" >&5
-gcc_cv_as_tls=no
-conftest_s=
-tls_first_major=
-tls_first_minor=
-case "$target" in
- 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-*-*)
- 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
- cat >> confdefs.h <<\EOF
-#define HAVE_AS_TLS 1
-EOF
-
-fi
-echo "$ac_t""$gcc_cv_as_tls" 1>&6
-
case "$target" in
# All TARGET_ABI_OSF targets.
alpha*-*-osf* | alpha*-*-linux* | alpha*-*-*bsd*)
echo $ac_n "checking assembler supports explicit relocations""... $ac_c" 1>&6
-echo "configure:7478: checking assembler supports explicit relocations" >&5
+echo "configure:7410: checking assembler supports explicit relocations" >&5
if eval "test \"`echo '$''{'gcc_cv_as_explicit_relocs'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -7524,7 +7456,7 @@ EOF
;;
sparc*-*-*)
echo $ac_n "checking assembler .register pseudo-op support""... $ac_c" 1>&6
-echo "configure:7528: checking assembler .register pseudo-op support" >&5
+echo "configure:7460: checking assembler .register pseudo-op support" >&5
if eval "test \"`echo '$''{'gcc_cv_as_register_pseudo_op'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -7552,7 +7484,7 @@ EOF
fi
echo $ac_n "checking assembler supports -relax""... $ac_c" 1>&6
-echo "configure:7556: checking assembler supports -relax" >&5
+echo "configure:7488: checking assembler supports -relax" >&5
if eval "test \"`echo '$''{'gcc_cv_as_relax_opt'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -7580,7 +7512,7 @@ EOF
fi
echo $ac_n "checking assembler and linker support unaligned pc related relocs""... $ac_c" 1>&6
-echo "configure:7584: checking assembler and linker support unaligned pc related relocs" >&5
+echo "configure:7516: checking assembler and linker support unaligned pc related relocs" >&5
if eval "test \"`echo '$''{'gcc_cv_as_sparc_ua_pcrel'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -7607,7 +7539,7 @@ EOF
fi
echo $ac_n "checking assembler and linker support unaligned pc related relocs against hidden symbols""... $ac_c" 1>&6
-echo "configure:7611: checking assembler and linker support unaligned pc related relocs against hidden symbols" >&5
+echo "configure:7543: checking assembler and linker support unaligned pc related relocs against hidden symbols" >&5
if eval "test \"`echo '$''{'gcc_cv_as_sparc_ua_pcrel_hidden'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -7647,7 +7579,7 @@ EOF
fi
echo $ac_n "checking for assembler offsetable %lo() support""... $ac_c" 1>&6
-echo "configure:7651: checking for assembler offsetable %lo() support" >&5
+echo "configure:7584: checking for assembler offsetable %lo() support" >&5
if eval "test \"`echo '$''{'gcc_cv_as_offsetable_lo10'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -7686,7 +7618,7 @@ EOF
i[34567]86-*-* | x86_64-*-*)
echo $ac_n "checking assembler instructions""... $ac_c" 1>&6
-echo "configure:7690: checking assembler instructions" >&5
+echo "configure:7624: checking assembler instructions" >&5
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
@@ -7713,7 +7645,7 @@ EOF
echo "$ac_t""$gcc_cv_as_instructions" 1>&6
echo $ac_n "checking assembler GOTOFF in data directives""... $ac_c" 1>&6
-echo "configure:7717: checking assembler GOTOFF in data directives" >&5
+echo "configure:7651: checking assembler GOTOFF in data directives" >&5
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
@@ -7740,52 +7672,10 @@ EOF
echo "$ac_t""$gcc_cv_as_gotoff_in_data" 1>&6
;;
-
- ia64*-*-*)
- echo $ac_n "checking assembler supports ltoffx and ldxmov""... $ac_c" 1>&6
-echo "configure:7747: checking assembler supports ltoffx and ldxmov" >&5
-if eval "test \"`echo '$''{'gcc_cv_as_ltoffx_ldxmov_relocs'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
-
- 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'
- .text
- addl r15 = @ltoffx(x#), gp
- ;;
- ld8.mov r16 = [r15], x#
-EOF
- 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
-
-fi
-
-echo "$ac_t""$gcc_cv_as_ltoffx_ldxmov_relocs" 1>&6
- if test "x$gcc_cv_as_ltoffx_ldxmov_relocs" = xyes; then
- cat >> confdefs.h <<\EOF
-#define HAVE_AS_LTOFFX_LDXMOV_RELOCS 1
-EOF
-
- fi
- ;;
esac
echo $ac_n "checking assembler dwarf2 debug_line support""... $ac_c" 1>&6
-echo "configure:7789: checking assembler dwarf2 debug_line support" >&5
+echo "configure:7681: checking assembler dwarf2 debug_line support" >&5
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
@@ -7794,8 +7684,7 @@ gcc_cv_as_dwarf2_debug_line=no
# ??? 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*-*-*)
+ i?86*-*-* | mips*-*-* | alpha*-*-* | powerpc*-*-* | sparc*-*-* | m68*-*-* | x86_64*-*-*)
insn="nop"
;;
ia64*-*-*)
@@ -7842,7 +7731,7 @@ fi
echo "$ac_t""$gcc_cv_as_dwarf2_debug_line" 1>&6
echo $ac_n "checking assembler --gdwarf2 support""... $ac_c" 1>&6
-echo "configure:7846: checking assembler --gdwarf2 support" >&5
+echo "configure:7737: checking assembler --gdwarf2 support" >&5
gcc_cv_as_gdwarf2_flag=no
if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x;
then
@@ -7851,7 +7740,7 @@ then
-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"
+ gcc_cv_as_gdwarf2_debug_flag="yes"
fi
elif test x$gcc_cv_as != x -a x"$insn" != x ; then
echo '' > conftest.s
@@ -7871,7 +7760,7 @@ fi
echo "$ac_t""$gcc_cv_as_gdwarf2_flag" 1>&6
echo $ac_n "checking assembler --gstabs support""... $ac_c" 1>&6
-echo "configure:7875: checking assembler --gstabs support" >&5
+echo "configure:7766: checking assembler --gstabs support" >&5
gcc_cv_as_gstabs_flag=no
if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x;
then
@@ -7880,20 +7769,13 @@ then
-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"
+ gcc_cv_as_gstabs_debug_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
@@ -7905,46 +7787,8 @@ EOF
fi
echo "$ac_t""$gcc_cv_as_gstabs_flag" 1>&6
-echo $ac_n "checking linker read-only and read-write section mixing""... $ac_c" 1>&6
-echo "configure:7910: checking linker read-only and read-write section mixing" >&5
-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
- rm -f conftest.* conftest[123].*
-fi
-if test x$gcc_cv_ld_ro_rw_mix = xread-write; then
- cat >> confdefs.h <<\EOF
-#define HAVE_LD_RO_RW_SECTION_MIXING 1
-EOF
-
-fi
-echo "$ac_t""$gcc_cv_ld_ro_rw_mix" 1>&6
-
echo $ac_n "checking linker PT_GNU_EH_FRAME support""... $ac_c" 1>&6
-echo "configure:7948: checking linker PT_GNU_EH_FRAME support" >&5
+echo "configure:7794: checking linker PT_GNU_EH_FRAME support" >&5
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
@@ -7956,48 +7800,97 @@ elif test x$gcc_cv_ld != x; then
gcc_cv_ld_eh_frame_hdr=yes
fi
fi
-if test x"$gcc_cv_ld_eh_frame_hdr" = xyes; then
- cat >> confdefs.h <<\EOF
-#define HAVE_LD_EH_FRAME_HDR 1
-EOF
-
-fi
echo "$ac_t""$gcc_cv_ld_eh_frame_hdr" 1>&6
-
-# Miscellaneous target-specific checks.
-case "$target" in
- mips*-*-*)
- echo $ac_n "checking whether libgloss uses STARTUP directives consistently""... $ac_c" 1>&6
-echo "configure:7972: checking whether libgloss uses STARTUP directives consistently" >&5
- 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
+if test x"$gcc_cv_ld_eh_frame_hdr" = xyes; then
+ echo $ac_n "checking whether linker eh_frame optimizations work properly""... $ac_c" 1>&6
+echo "configure:7809: checking whether linker eh_frame optimizations work properly" >&5
+ gcc_cv_ld_eh_frame_hdr_works=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 13 -o "$gcc_cv_gld_major_version" -gt 2 && grep 'EMUL = elf' ../ld/Makefile > /dev/null; then
+ gcc_cv_ld_eh_frame_hdr_works=yes
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
+ elif test x$gcc_cv_ld != x; then
+ for gcc_WS in 4 8; do
+ cat > conftest.s <<EOF
+ .text
+.LFB1: .skip 64
+.LFE1:
+.LFB2: .skip 64
+.LFE2:
+.LFB3: .skip 64
+.LFE3:
+ .section .eh_frame,"aw",@progbits
+.Lframe1:
+ .4byte .LECIE1-.LSCIE1
+.LSCIE1:
+ .4byte 0x0
+ .byte 0x1
+ .ascii "zR\0"
+ .uleb128 0x1
+ .sleb128 -4
+ .byte 0x8
+ .uleb128 0x1
+ .byte 0x50
+ .byte 0xc
+ .uleb128 0x4
+ .uleb128 0x4
+ .byte 0x88
+ .uleb128 0x1
+ .balign ${gcc_WS}
+.LECIE1:
+.LSFDE1:
+ .4byte .LEFDE1-.LASFDE1
+.LASFDE1:
+ .4byte .LASFDE1-.Lframe1
+ .${gcc_WS}byte .LFB1
+ .${gcc_WS}byte .LFE1-.LFB1
+ .uleb128 0x0
+ .balign ${gcc_WS}
+.LEFDE1:
+.LSFDE2:
+ .4byte .LEFDE2-.LASFDE2
+.LASFDE2:
+ .4byte .LASFDE2-.Lframe1
+ .${gcc_WS}byte .LFB2
+ .${gcc_WS}byte .LFE2-.LFB2
+ .uleb128 0x0
+ .balign ${gcc_WS}
+.LEFDE2:
+.LSFDE3:
+ .4byte .LEFDE3-.LASFDE3
+.LASFDE3:
+ .4byte .LASFDE3-.Lframe1
+ .${gcc_WS}byte .LFB3
+ .${gcc_WS}byte .LFE3-.LFB3
+ .uleb128 0x0
+ .balign ${gcc_WS}
+.LEFDE3:
+ .4byte 0
+EOF
+ if ($gcc_cv_as -o conftest.o conftest.s; exit $?) 1>&5 2>&1; then
+ if ($gcc_cv_ld --eh-frame-hdr -shared -o conftest.so conftest.o; exit $?) 1>&5 2>&1; then
+ if $gcc_cv_objdump -h conftest.so 2>&5 \
+ | grep 'eh_frame_hdr[ ]*0*[01][048cC][ ]' 1>&5 2>&1; then
+ gcc_cv_ld_eh_frame_hdr_works=yes; break
+ else
+ $gcc_cv_objdump -h conftest.so 2>/dev/null | grep eh_frame_hdr 1>&5 2>&1
+ fi
+ fi
fi
+ rm -f conftest.*
done
- if test x"$gcc_cv_mips_libgloss_startup" = xyes; then
- cat >> confdefs.h <<\EOF
-#define HAVE_MIPS_LIBGLOSS_STARTUP_DIRECTIVES 1
+ fi
+ echo "$ac_t""$gcc_cv_ld_eh_frame_hdr_works" 1>&6
+fi
+if test x"$gcc_cv_ld_eh_frame_hdr" = xyes \
+ && test x"$gcc_cv_ld_eh_frame_hdr_works" = xyes; then
+ cat >> confdefs.h <<\EOF
+#define HAVE_LD_EH_FRAME_HDR 1
EOF
- fi
- echo "$ac_t""$gcc_cv_mips_libgloss_startup" 1>&6
- ;;
-esac
+fi
-if test "$prefix" != "/usr" && test "x$prefix" != "x$local_prefix" ; then
+if test "$prefix" != "/usr" && test "$prefix" != "/usr/local" ; then
cat >> confdefs.h <<EOF
#define PREFIX_INCLUDE_DIR "$prefix/include"
EOF
@@ -8018,8 +7911,8 @@ if test x"${enable_languages+set}" != xset; then
enable_languages=all
fi
else
- if test x"${enable_languages}" = x \
- || test x"${enable_languages}" = xyes;
+ if test x"${enable_languages}" = x ||
+ test x"${enable_languages}" = xyes;
then
{ echo "configure: error: --enable-languages needs at least one language argument" 1>&2; exit 1; }
fi
@@ -8057,8 +7950,6 @@ do
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
@@ -8082,7 +7973,6 @@ do
*,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)
@@ -8099,35 +7989,6 @@ do
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
- { echo "configure: error:
-The following requested languages were not found:${missing_languages}
-The following languages were available: c${found_languages}" 1>&2; exit 1; }
-fi
-
# Make gthr-default.h if we have a thread file.
gthread_flags=
if test $thread_file != single; then
@@ -8172,7 +8033,7 @@ fi
echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6
-echo "configure:8176: checking whether to enable maintainer-specific portions of Makefiles" >&5
+echo "configure:8039: checking whether to enable maintainer-specific portions of Makefiles" >&5
# Check whether --enable-maintainer-mode or --disable-maintainer-mode was given.
if test "${enable_maintainer_mode+set}" = set; then
enableval="$enable_maintainer_mode"
@@ -8202,22 +8063,6 @@ EOF
fi
-# Use libunwind based exception handling.
-# Check whether --enable-libunwind-exceptions or --disable-libunwind-exceptions was given.
-if test "${enable_libunwind_exceptions+set}" = set; then
- enableval="$enable_libunwind_exceptions"
- use_libunwind_exceptions=$enableval
-else
- use_libunwind_exceptions=no
-fi
-
-if test x"$use_libunwind_exceptions" = xyes; then
- cat >> confdefs.h <<\EOF
-#define USE_LIBUNWIND_EXCEPTIONS 1
-EOF
-
-fi
-
# 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.
@@ -8243,14 +8088,9 @@ all_languages=
all_boot_languages=
all_compilers=
all_stagestuff=
-all_outputs='Makefile intl/Makefile fixinc/Makefile gccbug mklibgcc mkheaders'
+all_outputs='Makefile intl/Makefile fixinc/Makefile gccbug mklibgcc'
# 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
@@ -8271,7 +8111,6 @@ do
compilers=
stagestuff=
outputs=
- gtfiles=
. ${srcdir}/$s/config-lang.in
if test "x$language" = x
then
@@ -8290,32 +8129,9 @@ do
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
@@ -8438,7 +8254,8 @@ fi
-objdir=`${PWDCMD-pwd}`
+# Nothing to do for FLOAT_H, float_format already handled.
+objdir=`pwd`
# Process the language and host/target makefile fragments.
@@ -8508,11 +8325,6 @@ ${CONFIG_SHELL-/bin/sh} $srcdir/configure.frag $srcdir "$subdirs" "$dep_host_xma
-
-
-
-
-
# Echo that links are built
if test x$host = x$target
then
@@ -8681,6 +8493,8 @@ s%@includedir@%$includedir%g
s%@oldincludedir@%$oldincludedir%g
s%@infodir@%$infodir%g
s%@mandir@%$mandir%g
+s%@enable_multilib@%$enable_multilib%g
+s%@enable_shared@%$enable_shared%g
s%@host@%$host%g
s%@host_alias@%$host_alias%g
s%@host_cpu@%$host_cpu%g
@@ -8704,13 +8518,6 @@ s%@ADAC@%$ADAC%g
s%@strict1_warn@%$strict1_warn%g
s%@CPP@%$CPP%g
s%@warn_cflags@%$warn_cflags%g
-s%@enable_multilib@%$enable_multilib%g
-s%@nocommon_flag@%$nocommon_flag%g
-s%@valgrind_path@%$valgrind_path%g
-s%@valgrind_path_defines@%$valgrind_path_defines%g
-s%@valgrind_command@%$valgrind_command%g
-s%@coverage_flags@%$coverage_flags%g
-s%@enable_shared@%$enable_shared%g
s%@stage1_cflags@%$stage1_cflags%g
s%@SET_MAKE@%$SET_MAKE%g
s%@AWK@%$AWK%g
@@ -8728,13 +8535,10 @@ s%@FLEX@%$FLEX%g
s%@BISON@%$BISON%g
s%@COLLECT2_LIBS@%$COLLECT2_LIBS%g
s%@GNAT_LIBEXC@%$GNAT_LIBEXC%g
-s%@LDEXP_LIB@%$LDEXP_LIB%g
s%@TARGET_GETGROUPS_T@%$TARGET_GETGROUPS_T%g
s%@LIBICONV@%$LIBICONV%g
-s%@gcc_cv_initfinit_array@%$gcc_cv_initfinit_array%g
s%@manext@%$manext%g
s%@objext@%$objext%g
-s%@extra_modes_file@%$extra_modes_file%g
s%@FORBUILD@%$FORBUILD%g
s%@PACKAGE@%$PACKAGE%g
s%@VERSION@%$VERSION%g
@@ -8762,8 +8566,8 @@ s%@CROSS@%$CROSS%g
s%@ALL@%$ALL%g
s%@SYSTEM_HEADER_DIR@%$SYSTEM_HEADER_DIR%g
s%@inhibit_libc@%$inhibit_libc%g
-s%@BUILD_PREFIX@%$BUILD_PREFIX%g
-s%@BUILD_PREFIX_1@%$BUILD_PREFIX_1%g
+s%@HOST_PREFIX@%$HOST_PREFIX%g
+s%@HOST_PREFIX_1@%$HOST_PREFIX_1%g
s%@HOST_CC@%$HOST_CC%g
s%@HOST_CFLAGS@%$HOST_CFLAGS%g
s%@STMP_FIXINC@%$STMP_FIXINC%g
@@ -8782,12 +8586,8 @@ s%@dollar@%$dollar%g
s%@slibdir@%$slibdir%g
s%@objdir@%$objdir%g
s%@subdirs@%$subdirs%g
-s%@srcdir@%$srcdir%g
s%@all_boot_languages@%$all_boot_languages%g
s%@all_compilers@%$all_compilers%g
-s%@all_gtfiles@%$all_gtfiles%g
-s%@all_gtfiles_files_langs@%$all_gtfiles_files_langs%g
-s%@all_gtfiles_files_files@%$all_gtfiles_files_files%g
s%@all_lang_makefiles@%$all_lang_makefiles%g
s%@all_languages@%$all_languages%g
s%@all_stagestuff@%$all_stagestuff%g
@@ -8834,7 +8634,6 @@ s%@symbolic_link@%$symbolic_link%g
s%@thread_file@%$thread_file%g
s%@tm_file_list@%$tm_file_list%g
s%@tm_file@%$tm_file%g
-s%@tm_defines@%$tm_defines%g
s%@tm_p_file_list@%$tm_p_file_list%g
s%@tm_p_file@%$tm_p_file%g
s%@xm_file@%$xm_file%g
@@ -9103,7 +8902,7 @@ esac
if test "$symbolic_link" = "ln -s"; then
for d in .. ${subdirs} fixinc ; do
if test $d != ..; then
- STARTDIR=`${PWDCMD-pwd}`
+ STARTDIR=`pwd`
cd $d
for t in stage1 stage2 stage3 stage4 include
do
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/decl.c b/contrib/gcc/cp/decl.c
index be31ac2..e17699d08 100644
--- a/contrib/gcc/cp/decl.c
+++ b/contrib/gcc/cp/decl.c
@@ -20,6 +20,8 @@ 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. */
+/* $FreeBSD$ */
+
/* Process declarations and symbol lookup for C front end.
Also constructs types; the standard scalar types at initialization,
@@ -41,34 +43,41 @@ Boston, MA 02111-1307, USA. */
#include "output.h"
#include "except.h"
#include "toplev.h"
-#include "hashtab.h"
+#include "../hash.h"
#include "ggc.h"
#include "tm_p.h"
#include "target.h"
#include "c-common.h"
#include "c-pragma.h"
#include "diagnostic.h"
-#include "debug.h"
-#include "timevar.h"
-#include "input.h"
+
+extern const struct attribute_spec *lang_attribute_table;
+
+#ifndef HOST_PTR_PRINTF_FORMAT
+#define HOST_PTR_PRINTF_FORMAT HOST_PTR_PRINTF
+#endif
+#ifndef HOST_PTR_PRINTF_TYPE
+#define HOST_PTR_PRINTF_TYPE (void *)
+#endif
static tree grokparms PARAMS ((tree));
static const char *redeclaration_error_message PARAMS ((tree, tree));
-static void push_binding_level PARAMS ((struct cp_binding_level *, int,
+static void push_binding_level PARAMS ((struct binding_level *, int,
int));
static void pop_binding_level PARAMS ((void));
static void suspend_binding_level PARAMS ((void));
-static void resume_binding_level PARAMS ((struct cp_binding_level *));
-static struct cp_binding_level *make_binding_level PARAMS ((void));
+static void resume_binding_level PARAMS ((struct binding_level *));
+static struct binding_level *make_binding_level PARAMS ((void));
static void declare_namespace_level PARAMS ((void));
static int decl_jump_unsafe PARAMS ((tree));
static void storedecls PARAMS ((tree));
static void require_complete_types_for_parms PARAMS ((tree));
static int ambi_op_p PARAMS ((enum tree_code));
static int unary_op_p PARAMS ((enum tree_code));
-static cxx_saved_binding *store_bindings (tree, cxx_saved_binding *);
+static tree store_bindings PARAMS ((tree, tree));
static tree lookup_tag_reverse PARAMS ((tree, tree));
+static tree obscure_complex_init PARAMS ((tree, tree));
static tree lookup_name_real PARAMS ((tree, int, int, int));
static void push_local_name PARAMS ((tree));
static void warn_extern_redeclared_static PARAMS ((tree, tree));
@@ -79,54 +88,60 @@ static tree grokfndecl PARAMS ((tree, tree, tree, tree, int,
static tree grokvardecl PARAMS ((tree, tree, RID_BIT_TYPE *, int, int, tree));
static tree follow_tag_typedef PARAMS ((tree));
static tree lookup_tag PARAMS ((enum tree_code, tree,
- struct cp_binding_level *, int));
+ struct binding_level *, int));
static void set_identifier_type_value_with_scope
- PARAMS ((tree, tree, struct cp_binding_level *));
+ PARAMS ((tree, tree, struct binding_level *));
static void record_unknown_type PARAMS ((tree, const char *));
static tree builtin_function_1 PARAMS ((const char *, tree, tree, int,
- enum built_in_class, const char *,
- tree));
+ enum built_in_class, const char *));
static tree build_library_fn_1 PARAMS ((tree, enum tree_code, tree));
static int member_function_or_else PARAMS ((tree, tree, enum overload_flags));
static void bad_specifiers PARAMS ((tree, const char *, int, int, int, int,
int));
-static tree maybe_process_template_type_declaration PARAMS ((tree, int, struct cp_binding_level*));
+static tree maybe_process_template_type_declaration PARAMS ((tree, int, struct binding_level*));
static void check_for_uninitialized_const_var PARAMS ((tree));
-static hashval_t typename_hash PARAMS ((const void *));
-static int typename_compare PARAMS ((const void *, const void *));
-static void push_binding PARAMS ((tree, tree, struct cp_binding_level*));
+static unsigned long typename_hash PARAMS ((hash_table_key));
+static bool typename_compare PARAMS ((hash_table_key, hash_table_key));
+static void push_binding PARAMS ((tree, tree, struct binding_level*));
static int add_binding PARAMS ((tree, tree));
static void pop_binding PARAMS ((tree, tree));
static tree local_variable_p_walkfn PARAMS ((tree *, int *, void *));
-static cxx_binding *find_binding (tree, tree, cxx_binding *);
-static tree select_decl (cxx_binding *, int);
+static tree find_binding PARAMS ((tree, tree));
+static tree select_decl PARAMS ((tree, int));
static int lookup_flags PARAMS ((int, int));
static tree qualify_lookup PARAMS ((tree, int));
static tree record_builtin_java_type PARAMS ((const char *, int));
static const char *tag_name PARAMS ((enum tag_types code));
static void find_class_binding_level PARAMS ((void));
-static struct cp_binding_level *innermost_nonclass_level PARAMS ((void));
+static struct binding_level *innermost_nonclass_level PARAMS ((void));
static void warn_about_implicit_typename_lookup PARAMS ((tree, tree));
static int walk_namespaces_r PARAMS ((tree, walk_namespaces_fn, void *));
static int walk_globals_r PARAMS ((tree, void *));
-static int walk_vtables_r PARAMS ((tree, void*));
-static void add_decl_to_level PARAMS ((tree, struct cp_binding_level *));
+static void add_decl_to_level PARAMS ((tree, struct binding_level *));
static tree make_label_decl PARAMS ((tree, int));
static void use_label PARAMS ((tree));
-static void check_previous_goto_1 PARAMS ((tree, struct cp_binding_level *, tree,
+static void check_previous_goto_1 PARAMS ((tree, struct binding_level *, tree,
const char *, int));
static void check_previous_goto PARAMS ((struct named_label_use_list *));
-static void check_switch_goto PARAMS ((struct cp_binding_level *));
+static void check_switch_goto PARAMS ((struct binding_level *));
static void check_previous_gotos PARAMS ((tree));
static void pop_label PARAMS ((tree, tree));
static void pop_labels PARAMS ((tree));
static void maybe_deduce_size_from_array_init PARAMS ((tree, tree));
static void layout_var_decl PARAMS ((tree));
static void maybe_commonize_var PARAMS ((tree));
-static tree check_initializer (tree, tree, int);
+static tree check_initializer PARAMS ((tree, tree));
static void make_rtl_for_nonlocal_decl PARAMS ((tree, tree, const char *));
+static void push_cp_function_context PARAMS ((struct function *));
+static void pop_cp_function_context PARAMS ((struct function *));
+static void mark_binding_level PARAMS ((void *));
+static void mark_named_label_lists PARAMS ((void *, void *));
+static void mark_cp_function_context PARAMS ((struct function *));
+static void mark_saved_scope PARAMS ((void *));
+static void mark_lang_function PARAMS ((struct cp_language_function *));
static void save_function_data PARAMS ((tree));
static void check_function_type PARAMS ((tree, tree));
+static void destroy_local_var PARAMS ((tree));
static void begin_constructor_body PARAMS ((void));
static void finish_constructor_body PARAMS ((void));
static void begin_destructor_body PARAMS ((void));
@@ -144,10 +159,10 @@ static tree push_cp_library_fn PARAMS ((enum tree_code, tree));
static tree build_cp_library_fn PARAMS ((tree, enum tree_code, tree));
static void store_parm_decls PARAMS ((tree));
static int cp_missing_noreturn_ok_p PARAMS ((tree));
-static void initialize_local_var (tree, tree);
-static void expand_static_init (tree, tree);
-static tree next_initializable_field (tree);
-static tree reshape_init (tree, tree *);
+
+#if defined (DEBUG_CP_BINDING_LEVELS)
+static void indent PARAMS ((void));
+#endif
/* Erroneous argument lists can use this *IFF* they do not modify it. */
tree error_mark_list;
@@ -202,17 +217,17 @@ tree cp_global_trees[CPTI_MAX];
/* Indicates that there is a type value in some namespace, although
that is not necessarily in scope at the moment. */
-static GTY(()) tree global_type_node;
+static tree global_type_node;
-/* Expect only namespace names now. */
+/* Expect only namespace names now. */
static int only_namespace_names;
/* Used only for jumps to as-yet undefined labels, since jumps to
defined labels can have their validity checked immediately. */
-struct named_label_use_list GTY(())
+struct named_label_use_list
{
- struct cp_binding_level *binding_level;
+ struct binding_level *binding_level;
tree names_in_scope;
tree label_decl;
const char *filename_o_goto;
@@ -243,9 +258,9 @@ tree last_function_parms;
we can clear out their names' definitions at the end of the
function, and so we can check the validity of jumps to these labels. */
-struct named_label_list GTY(())
+struct named_label_list
{
- struct cp_binding_level *binding_level;
+ struct binding_level *binding_level;
tree names_in_scope;
tree old_value;
tree label_decl;
@@ -256,7 +271,36 @@ struct named_label_list GTY(())
};
#define named_labels cp_function_chain->x_named_labels
+
+/* Nonzero means use the ISO C94 dialect of C. */
+
+int flag_isoc94;
+
+/* Nonzero means use the ISO C99 dialect of C. */
+
+int flag_isoc99;
+
+/* Nonzero means we are a hosted implementation for code shared with C. */
+
+int flag_hosted = 1;
+
+/* Nonzero means add default format_arg attributes for functions not
+ in ISO C. */
+
+int flag_noniso_default_format_attributes = 1;
+
+/* Nonzero if we want to conserve space in the .o files. We do this
+ by putting uninitialized data and runtime initialized data into
+ .common instead of .data at the expense of not flagging multiple
+ definitions. */
+extern int flag_conserve_space;
+/* C and C++ flags are in decl2.c. */
+
+/* A expression of value 0 with the same precision as a sizetype
+ node, but signed. */
+tree signed_size_zero_node;
+
/* The name of the anonymous namespace, throughout this translation
unit. */
tree anonymous_namespace_name;
@@ -282,254 +326,7 @@ static enum deprecated_states deprecated_state = DEPRECATED_NORMAL;
being flagged as deprecated or reported as using deprecated
types. */
int adding_implicit_members = 0;
-
-/* True if a declaration with an `extern' linkage specifier is being
- processed. */
-bool have_extern_spec;
-
-/* Compute the chain index of a binding_entry given the HASH value of its
- name and the total COUNT of chains. COUNT is assumed to be a power
- of 2. */
-#define ENTRY_INDEX(HASH, COUNT) (((HASH) >> 3) & ((COUNT) - 1))
-
-/* A free list of "binding_entry"s awaiting for re-use. */
-static GTY((deletable(""))) binding_entry free_binding_entry;
-
-/* Create a binding_entry object for (NAME, TYPE). */
-static inline binding_entry
-binding_entry_make (tree name, tree type)
-{
- binding_entry entry;
-
- if (free_binding_entry)
- {
- entry = free_binding_entry;
- free_binding_entry = entry->chain;
- }
- else
- entry = ggc_alloc (sizeof (struct binding_entry_s));
-
- entry->name = name;
- entry->type = type;
-
- return entry;
-}
-
-/* Put ENTRY back on the free list. */
-static inline void
-binding_entry_free (binding_entry entry)
-{
- entry->chain = free_binding_entry;
- free_binding_entry = entry;
-}
-
-/* The datatype used to implement the mapping from names to types at
- a given scope. */
-struct binding_table_s GTY(())
-{
- /* Array of chains of "binding_entry"s */
- binding_entry * GTY((length ("%h.chain_count"))) chain;
-
- /* The number of chains in this table. This is the length of the
- the member "chaiin" considered as an array. */
- size_t chain_count;
-
- /* Number of "binding_entry"s in this table. */
- size_t entry_count;
-};
-
-/* These macros indicate the initial chains count for binding_table. */
-#define SCOPE_DEFAULT_HT_SIZE (1 << 3)
-#define CLASS_SCOPE_HT_SIZE (1 << 3)
-#define NAMESPACE_ORDINARY_HT_SIZE (1 << 5)
-#define NAMESPACE_STD_HT_SIZE (1 << 8)
-#define GLOBAL_SCOPE_HT_SIZE (1 << 8)
-
-/* Construct TABLE with an initial CHAIN_COUNT. */
-static inline void
-binding_table_construct (binding_table table, size_t chain_count)
-{
- table->chain_count = chain_count;
- table->entry_count = 0;
- table->chain = ggc_alloc_cleared
- (table->chain_count * sizeof (binding_entry));
-}
-
-/* Free TABLE by making its entries ready for reuse. */
-static inline void
-binding_table_free (binding_table table)
-{
- size_t i;
- if (table == NULL)
- return;
-
- for (i = 0; i < table->chain_count; ++i)
- {
- while (table->chain[i] != NULL)
- {
- binding_entry entry = table->chain[i];
- table->chain[i] = entry->chain;
- binding_entry_free (entry);
- }
- }
- table->entry_count = 0;
-}
-
-/* Allocate a table with CHAIN_COUNT, assumed to be a power of two. */
-static inline binding_table
-binding_table_new (size_t chain_count)
-{
- binding_table table = ggc_alloc (sizeof (struct binding_table_s));
- binding_table_construct (table, chain_count);
- return table;
-}
-
-/* Expand TABLE to twice its current chain_count. */
-static void
-binding_table_expand (binding_table table)
-{
- const size_t old_chain_count = table->chain_count;
- const size_t old_entry_count = table->entry_count;
- const size_t new_chain_count = 2 * old_chain_count;
- binding_entry *old_chains = table->chain;
- size_t i;
-
- binding_table_construct (table, new_chain_count);
- for (i = 0; i < old_chain_count; ++i)
- {
- binding_entry entry = old_chains[i];
- for (; entry != NULL; entry = old_chains[i])
- {
- const unsigned int hash = IDENTIFIER_HASH_VALUE (entry->name);
- const size_t j = ENTRY_INDEX (hash, new_chain_count);
-
- old_chains[i] = entry->chain;
- entry->chain = table->chain[j];
- table->chain[j] = entry;
- }
- }
- table->entry_count = old_entry_count;
-}
-
-/* Insert a binding for NAME to TYPe into TABLE. */
-static inline void
-binding_table_insert (binding_table table, tree name, tree type)
-{
- const unsigned int hash = IDENTIFIER_HASH_VALUE (name);
- const size_t i = ENTRY_INDEX (hash, table->chain_count);
- binding_entry entry = binding_entry_make (name, type);
-
- entry->chain = table->chain[i];
- table->chain[i] = entry;
- ++table->entry_count;
-
- if (3 * table->chain_count < 5 * table->entry_count)
- binding_table_expand (table);
-}
-
-/* Return the binding_entry, if any, that maps NAME. */
-binding_entry
-binding_table_find (binding_table table, tree name)
-{
- const unsigned int hash = IDENTIFIER_HASH_VALUE (name);
- binding_entry entry = table->chain[ENTRY_INDEX (hash, table->chain_count)];
-
- while (entry != NULL && entry->name != name)
- entry = entry->chain;
-
- return entry;
-}
-
-/* Return the binding_entry, if any, that maps name to an anonymous type. */
-static inline tree
-binding_table_find_anon_type (binding_table table, tree name)
-{
- const unsigned int hash = IDENTIFIER_HASH_VALUE (name);
- binding_entry entry = table->chain[ENTRY_INDEX (hash, table->chain_count)];
-
- while (entry != NULL && TYPE_IDENTIFIER (entry->type) != name)
- entry = entry->chain;
-
- return entry ? entry->type : NULL;
-}
-
-/* Return the binding_entry, if any, that has TYPE as target. If NAME
- is non-null, then set the domain and rehash that entry. */
-static inline binding_entry
-binding_table_reverse_maybe_remap (binding_table table, tree type, tree name)
-{
- const size_t chain_count = table->chain_count;
- binding_entry entry = NULL;
- binding_entry *p;
- size_t i;
-
- for (i = 0; i < chain_count && entry == NULL; ++i)
- {
- p = &table->chain[i];
- while (*p != NULL && entry == NULL)
- if ((*p)->type == type)
- entry = *p;
- else
- p = &(*p)->chain;
- }
-
- if (entry != NULL && name != NULL && entry->name != name)
- {
- /* Remove the bucket from the previous chain. */
- *p = (*p)->chain;
-
- /* Remap the name type to type. */
- i = ENTRY_INDEX (IDENTIFIER_HASH_VALUE (name), chain_count);
- entry->chain = table->chain[i];
- entry->name = name;
- table->chain[i] = entry;
- }
-
- return entry;
-}
-
-/* Remove from TABLE all entries that map to anonymous enums or
- class-types. */
-static void
-binding_table_remove_anonymous_types (binding_table table)
-{
- const size_t chain_count = table->chain_count;
- size_t i;
-
- for (i = 0; i < chain_count; ++i)
- {
- binding_entry *p = &table->chain[i];
-
- while (*p != NULL)
- if (ANON_AGGRNAME_P ((*p)->name))
- {
- binding_entry e = *p;
- *p = (*p)->chain;
- --table->entry_count;
- binding_entry_free (e);
- }
- else
- p = &(*p)->chain;
- }
-}
-
-/* Apply PROC -- with DATA -- to all entries in TABLE. */
-void
-binding_table_foreach (binding_table table, bt_foreach_proc proc, void *data)
-{
- const size_t chain_count = table->chain_count;
- size_t i;
-
- for (i = 0; i < chain_count; ++i)
- {
- binding_entry entry = table->chain[i];
- for (; entry != NULL; entry = entry->chain)
- proc (entry, data);
- }
-}
-
-
/* For each binding contour we allocate a binding_level structure
which records the names defined in that contour.
Contours include:
@@ -554,7 +351,7 @@ binding_table_foreach (binding_table table, bt_foreach_proc proc, void *data)
/* Note that the information in the `names' component of the global contour
is duplicated in the IDENTIFIER_GLOBAL_VALUEs of all identifiers. */
-struct cp_binding_level GTY(())
+struct binding_level
{
/* A chain of _DECL nodes for all variables, constants, functions,
and typedef types. These are in the reverse of the order
@@ -562,26 +359,21 @@ struct cp_binding_level GTY(())
are wrapped in TREE_LISTs; the TREE_VALUE is the OVERLOAD. */
tree names;
- /* Count of elements in names chain. */
- size_t names_size;
-
- /* A chain of NAMESPACE_DECL nodes. */
- tree namespaces;
-
- /* An array of static functions and variables (for namespaces only) */
- varray_type static_decls;
+ /* A list of structure, union and enum definitions, for looking up
+ tag names.
+ It is a chain of TREE_LIST nodes, each of whose TREE_PURPOSE is a name,
+ or NULL_TREE; and whose TREE_VALUE is a RECORD_TYPE, UNION_TYPE,
+ or ENUMERAL_TYPE node.
- /* A chain of VTABLE_DECL nodes. */
- tree vtables;
+ C++: the TREE_VALUE nodes can be simple types for
+ component_bindings. */
+ tree tags;
- /* A dictionary for looking up enums or class-types names. */
- binding_table type_decls;
-
- /* A list of USING_DECL nodes. */
+ /* A list of USING_DECL nodes. */
tree usings;
/* A list of used namespaces. PURPOSE is the namespace,
- VALUE the common ancestor with this binding_level's namespace. */
+ VALUE the common ancestor with this binding_level's namespace. */
tree using_directives;
/* If this binding level is the binding level for a class, then
@@ -609,7 +401,7 @@ struct cp_binding_level GTY(())
tree this_class;
/* The binding level which this one is contained in (inherits from). */
- struct cp_binding_level *level_chain;
+ struct binding_level *level_chain;
/* List of VAR_DECLS saved from a previous for statement.
These would be dead in ISO-conforming code, but might
@@ -660,15 +452,13 @@ struct cp_binding_level GTY(())
/* Three bits left for this word. */
+#if defined(DEBUG_CP_BINDING_LEVELS)
/* Binding depth at which this level began. */
unsigned binding_depth;
+#endif /* defined(DEBUG_CP_BINDING_LEVELS) */
};
-#define NULL_BINDING_LEVEL ((struct cp_binding_level *) NULL)
-
-/* True if SCOPE designates the global scope binding contour. */
-#define global_scope_p(SCOPE) \
- ((SCOPE) == NAMESPACE_LEVEL (global_namespace))
+#define NULL_BINDING_LEVEL ((struct binding_level *) NULL)
/* The binding level currently in effect. */
@@ -683,7 +473,13 @@ struct cp_binding_level GTY(())
/* A chain of binding_level structures awaiting reuse. */
-static GTY((deletable (""))) struct cp_binding_level *free_binding_level;
+static struct binding_level *free_binding_level;
+
+/* The outermost binding level, for names of file scope.
+ This is created when the compiler is started and exists
+ through the entire run. */
+
+static struct binding_level *global_binding_level;
/* Nonzero means unconditionally make a BLOCK for the next level pushed. */
@@ -693,52 +489,46 @@ static int keep_next_level_flag;
UNION_TYPE; the TREE_VALUE is a VAR_DECL with that type. At the
time the VAR_DECL was declared, the type was incomplete. */
-static GTY(()) tree incomplete_vars;
-
-#ifndef ENABLE_SCOPE_CHECKING
-# define ENABLE_SCOPE_CHECKING 0
-#else
-# define ENABLE_SCOPE_CHECKING 1
-#endif
+static tree incomplete_vars;
-static unsigned binding_depth = 0;
+#if defined(DEBUG_CP_BINDING_LEVELS)
+static int binding_depth = 0;
static int is_class_level = 0;
static void
-indent (unsigned depth)
+indent ()
{
- unsigned i;
+ register unsigned i;
- for (i = 0; i < depth * 2; i++)
+ for (i = 0; i < binding_depth*2; i++)
putc (' ', stderr);
}
+#endif /* defined(DEBUG_CP_BINDING_LEVELS) */
-static tree pushdecl_with_scope PARAMS ((tree, struct cp_binding_level *));
+static tree pushdecl_with_scope PARAMS ((tree, struct binding_level *));
static void
push_binding_level (newlevel, tag_transparent, keep)
- struct cp_binding_level *newlevel;
+ struct binding_level *newlevel;
int tag_transparent, keep;
{
/* Add this level to the front of the chain (stack) of levels that
are active. */
- memset ((char*) newlevel, 0, sizeof (struct cp_binding_level));
+ memset ((char*) newlevel, 0, sizeof (struct binding_level));
newlevel->level_chain = current_binding_level;
current_binding_level = newlevel;
newlevel->tag_transparent = tag_transparent;
newlevel->more_cleanups_ok = 1;
newlevel->keep = keep;
- if (ENABLE_SCOPE_CHECKING)
- {
- newlevel->binding_depth = binding_depth;
- indent (binding_depth);
- verbatim ("push %s level %p line %d\n",
- (is_class_level) ? "class" : "block",
- (void *) newlevel, lineno);
- is_class_level = 0;
- binding_depth++;
- }
+#if defined(DEBUG_CP_BINDING_LEVELS)
+ newlevel->binding_depth = binding_depth;
+ indent ();
+ fprintf (stderr, "push %s level 0x%08x line %d\n",
+ (is_class_level) ? "class" : "block", newlevel, lineno);
+ is_class_level = 0;
+ binding_depth++;
+#endif /* defined(DEBUG_CP_BINDING_LEVELS) */
}
/* Find the innermost enclosing class scope, and reset
@@ -747,7 +537,7 @@ push_binding_level (newlevel, tag_transparent, keep)
static void
find_class_binding_level ()
{
- struct cp_binding_level *level = current_binding_level;
+ struct binding_level *level = current_binding_level;
while (level && level->parm_flag != 2)
level = level->level_chain;
@@ -760,34 +550,34 @@ find_class_binding_level ()
static void
pop_binding_level ()
{
- if (NAMESPACE_LEVEL (global_namespace))
- /* Cannot pop a level, if there are none left to pop. */
- my_friendly_assert (!global_scope_p (current_binding_level), 20030527);
- /* Pop the current level, and free the structure for reuse. */
- if (ENABLE_SCOPE_CHECKING)
+ if (global_binding_level)
{
- indent (--binding_depth);
- verbatim ("pop %s level %p line %d\n",
- (is_class_level) ? "class" : "block",
- (void *) current_binding_level, lineno);
- if (is_class_level != (current_binding_level == class_binding_level))
- {
- indent (binding_depth);
- verbatim ("XXX is_class_level != (current_binding_level "
- "== class_binding_level)\n");
- }
- is_class_level = 0;
+ /* Cannot pop a level, if there are none left to pop. */
+ if (current_binding_level == global_binding_level)
+ abort ();
}
+ /* Pop the current level, and free the structure for reuse. */
+#if defined(DEBUG_CP_BINDING_LEVELS)
+ binding_depth--;
+ indent ();
+ fprintf (stderr, "pop %s level 0x%08x line %d\n",
+ (is_class_level) ? "class" : "block",
+ current_binding_level, lineno);
+ if (is_class_level != (current_binding_level == class_binding_level))
+ {
+ indent ();
+ fprintf (stderr, "XXX is_class_level != (current_binding_level == class_binding_level)\n");
+ }
+ is_class_level = 0;
+#endif /* defined(DEBUG_CP_BINDING_LEVELS) */
{
- register struct cp_binding_level *level = current_binding_level;
+ register struct binding_level *level = current_binding_level;
current_binding_level = current_binding_level->level_chain;
level->level_chain = free_binding_level;
- if (level->parm_flag != 2)
- binding_table_free (level->type_decls);
- else
- level->type_decls = NULL;
- my_friendly_assert (!ENABLE_SCOPE_CHECKING
- || level->binding_depth == binding_depth, 20030529);
+#if 0 /* defined(DEBUG_CP_BINDING_LEVELS) */
+ if (level->binding_depth != binding_depth)
+ abort ();
+#endif /* defined(DEBUG_CP_BINDING_LEVELS) */
free_binding_level = level;
find_class_binding_level ();
}
@@ -799,56 +589,58 @@ suspend_binding_level ()
if (class_binding_level)
current_binding_level = class_binding_level;
- if (NAMESPACE_LEVEL (global_namespace))
- my_friendly_assert (!global_scope_p (current_binding_level), 20030527);
- /* Suspend the current level. */
- if (ENABLE_SCOPE_CHECKING)
+ if (global_binding_level)
{
- indent (--binding_depth);
- verbatim("suspend %s level %p line %d\n",
- (is_class_level) ? "class" : "block",
- (void *) current_binding_level, lineno);
- if (is_class_level != (current_binding_level == class_binding_level))
- {
- indent (binding_depth);
- verbatim ("XXX is_class_level != (current_binding_level "
- "== class_binding_level)\n");
- }
- is_class_level = 0;
+ /* Cannot suspend a level, if there are none left to suspend. */
+ if (current_binding_level == global_binding_level)
+ abort ();
}
+ /* Suspend the current level. */
+#if defined(DEBUG_CP_BINDING_LEVELS)
+ binding_depth--;
+ indent ();
+ fprintf (stderr, "suspend %s level 0x%08x line %d\n",
+ (is_class_level) ? "class" : "block",
+ current_binding_level, lineno);
+ if (is_class_level != (current_binding_level == class_binding_level))
+ {
+ indent ();
+ fprintf (stderr, "XXX is_class_level != (current_binding_level == class_binding_level)\n");
+ }
+ is_class_level = 0;
+#endif /* defined(DEBUG_CP_BINDING_LEVELS) */
current_binding_level = current_binding_level->level_chain;
find_class_binding_level ();
}
static void
resume_binding_level (b)
- struct cp_binding_level *b;
+ struct binding_level *b;
{
/* Resuming binding levels is meant only for namespaces,
- and those cannot nest into classes. */
+ and those cannot nest into classes. */
my_friendly_assert(!class_binding_level, 386);
/* Also, resuming a non-directly nested namespace is a no-no. */
my_friendly_assert(b->level_chain == current_binding_level, 386);
current_binding_level = b;
- if (ENABLE_SCOPE_CHECKING)
- {
- b->binding_depth = binding_depth;
- indent (binding_depth);
- verbatim ("resume %s level %p line %d\n",
- (is_class_level) ? "class" : "block", (void *) b, lineno);
- is_class_level = 0;
- binding_depth++;
- }
+#if defined(DEBUG_CP_BINDING_LEVELS)
+ b->binding_depth = binding_depth;
+ indent ();
+ fprintf (stderr, "resume %s level 0x%08x line %d\n",
+ (is_class_level) ? "class" : "block", b, lineno);
+ is_class_level = 0;
+ binding_depth++;
+#endif /* defined(DEBUG_CP_BINDING_LEVELS) */
}
-/* Create a new `struct cp_binding_level'. */
+/* Create a new `struct binding_level'. */
static
-struct cp_binding_level *
+struct binding_level *
make_binding_level ()
{
/* NOSTRICT */
- return (struct cp_binding_level *) ggc_alloc (sizeof (struct cp_binding_level));
+ return (struct binding_level *) xmalloc (sizeof (struct binding_level));
}
/* Nonzero if we are currently in the global binding level. */
@@ -856,15 +648,15 @@ make_binding_level ()
int
global_bindings_p ()
{
- return global_scope_p (current_binding_level);
+ return current_binding_level == global_binding_level;
}
/* Return the innermost binding level that is not for a class scope. */
-static struct cp_binding_level *
+static struct binding_level *
innermost_nonclass_level ()
{
- struct cp_binding_level *b;
+ struct binding_level *b;
b = current_binding_level;
while (b->parm_flag == 2)
@@ -882,7 +674,7 @@ innermost_nonclass_level ()
int
toplevel_bindings_p ()
{
- struct cp_binding_level *b = innermost_nonclass_level ();
+ struct binding_level *b = innermost_nonclass_level ();
return b->namespace_p || b->template_parms_p;
}
@@ -894,12 +686,12 @@ toplevel_bindings_p ()
int
namespace_bindings_p ()
{
- struct cp_binding_level *b = innermost_nonclass_level ();
+ struct binding_level *b = innermost_nonclass_level ();
return b->namespace_p;
}
-/* If KEEP is nonzero, make a BLOCK node for the next binding level,
+/* If KEEP is non-zero, make a BLOCK node for the next binding level,
unconditionally. Otherwise, use the normal logic to decide whether
or not to create a BLOCK. */
@@ -918,7 +710,7 @@ kept_level_p ()
return (current_binding_level->blocks != NULL_TREE
|| current_binding_level->keep
|| current_binding_level->names != NULL_TREE
- || (current_binding_level->type_decls != NULL
+ || (current_binding_level->tags != NULL_TREE
&& !current_binding_level->tag_transparent));
}
@@ -928,7 +720,7 @@ declare_namespace_level ()
current_binding_level->namespace_p = 1;
}
-/* Returns nonzero if this scope was created to store template
+/* Returns non-zero if this scope was created to store template
parameters. */
int
@@ -948,7 +740,7 @@ current_tmpl_spec_kind (n_class_scopes)
int n_template_parm_scopes = 0;
int seen_specialization_p = 0;
int innermost_specialization_p = 0;
- struct cp_binding_level *b;
+ struct binding_level *b;
/* Scan through the template parameter scopes. */
for (b = current_binding_level; b->template_parms_p; b = b->level_chain)
@@ -959,7 +751,7 @@ current_tmpl_spec_kind (n_class_scopes)
template <class T> template <> ...
- which is always invalid since [temp.expl.spec] forbids the
+ which is always illegal since [temp.expl.spec] forbids the
specialization of a class member template if the enclosing
class templates are not explicitly specialized as well. */
if (b->template_spec_p)
@@ -996,7 +788,7 @@ current_tmpl_spec_kind (n_class_scopes)
template <class T> void R<T>::S<T>::f(int);
- This is invalid; there needs to be one set of template
+ This is illegal; there needs to be one set of template
parameters for each class. */
return tsk_insufficient_parms;
else if (n_template_parm_scopes == n_class_scopes)
@@ -1041,13 +833,17 @@ void
pushlevel (tag_transparent)
int tag_transparent;
{
- struct cp_binding_level *newlevel;
+ struct binding_level *newlevel;
if (cfun && !doing_semantic_analysis_p ())
return;
/* Reuse or create a struct for this binding level. */
- if (!ENABLE_SCOPE_CHECKING && free_binding_level)
+#if defined(DEBUG_CP_BINDING_LEVELS)
+ if (0)
+#else /* !defined(DEBUG_CP_BINDING_LEVELS) */
+ if (free_binding_level)
+#endif /* !defined(DEBUG_CP_BINDING_LEVELS) */
{
newlevel = free_binding_level;
free_binding_level = free_binding_level->level_chain;
@@ -1132,12 +928,14 @@ note_level_for_catch ()
}
/* For a binding between a name and an entity at a block scope,
- this is the `struct cp_binding_level' for the block. */
-#define BINDING_LEVEL(NODE) ((NODE)->scope.level)
+ this is the `struct binding_level' for the block. */
+#define BINDING_LEVEL(NODE) \
+ (((struct tree_binding*)(NODE))->scope.level)
-/* A free list of "cxx_binding"s, connected by their PREVIOUS. */
+/* A free list of CPLUS_BINDING nodes, connected by their
+ TREE_CHAINs. */
-static GTY((deletable (""))) cxx_binding *free_bindings;
+static tree free_bindings;
/* Make DECL the innermost binding for ID. The LEVEL is the binding
level at which this declaration is being bound. */
@@ -1146,17 +944,17 @@ static void
push_binding (id, decl, level)
tree id;
tree decl;
- struct cp_binding_level* level;
+ struct binding_level* level;
{
- cxx_binding *binding;
+ tree binding;
if (free_bindings)
{
binding = free_bindings;
- free_bindings = binding->previous;
+ free_bindings = TREE_CHAIN (binding);
}
else
- binding = cxx_binding_make ();
+ binding = make_node (CPLUS_BINDING);
/* Now, fill in the binding information. */
BINDING_VALUE (binding) = decl;
@@ -1167,7 +965,7 @@ push_binding (id, decl, level)
BINDING_HAS_LEVEL_P (binding) = 1;
/* And put it on the front of the list of bindings for ID. */
- binding->previous = IDENTIFIER_BINDING (id);
+ TREE_CHAIN (binding) = IDENTIFIER_BINDING (id);
IDENTIFIER_BINDING (id) = binding;
}
@@ -1176,16 +974,15 @@ push_binding (id, decl, level)
stat' hack whereby a non-typedef class-name or enum-name can be
bound at the same level as some other kind of entity. It's the
responsibility of the caller to check that inserting this name is
- valid here. Returns nonzero if the new binding was successful. */
+ legal here. Returns nonzero if the new binding was successful. */
static int
add_binding (id, decl)
tree id;
tree decl;
{
- cxx_binding *binding = IDENTIFIER_BINDING (id);
+ tree binding = IDENTIFIER_BINDING (id);
int ok = 1;
- timevar_push (TV_NAME_LOOKUP);
if (TREE_CODE (decl) == TYPE_DECL && DECL_ARTIFICIAL (decl))
/* The new name is the type name. */
BINDING_TYPE (binding) = decl;
@@ -1225,18 +1022,11 @@ add_binding (id, decl)
type to which it already refers. */
ok = 0;
/* There can be two block-scope declarations of the same variable,
- so long as they are `extern' declarations. However, there cannot
- be two declarations of the same static data member:
-
- [class.mem]
-
- A member shall not be declared twice in the
- member-specification. */
+ so long as they are `extern' declarations. */
else if (TREE_CODE (decl) == VAR_DECL
&& TREE_CODE (BINDING_VALUE (binding)) == VAR_DECL
&& DECL_EXTERNAL (decl)
- && DECL_EXTERNAL (BINDING_VALUE (binding))
- && !DECL_CLASS_SCOPE_P (decl))
+ && DECL_EXTERNAL (BINDING_VALUE (binding)))
{
duplicate_decls (decl, BINDING_VALUE (binding));
ok = 0;
@@ -1249,7 +1039,7 @@ add_binding (id, decl)
ok = 0;
}
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, ok);
+ return ok;
}
/* Add DECL to the list of things declared in B. */
@@ -1257,34 +1047,12 @@ add_binding (id, decl)
static void
add_decl_to_level (decl, b)
tree decl;
- struct cp_binding_level *b;
+ struct binding_level *b;
{
- if (TREE_CODE (decl) == NAMESPACE_DECL
- && !DECL_NAMESPACE_ALIAS (decl))
- {
- TREE_CHAIN (decl) = b->namespaces;
- b->namespaces = decl;
- }
- else if (TREE_CODE (decl) == VAR_DECL && DECL_VIRTUAL_P (decl))
- {
- TREE_CHAIN (decl) = b->vtables;
- b->vtables = decl;
- }
- else
- {
- /* We build up the list in reverse order, and reverse it later if
- necessary. */
- TREE_CHAIN (decl) = b->names;
- b->names = decl;
- b->names_size++;
-
- /* If appropriate, add decl to separate list of statics */
- if (b->namespace_p)
- if ((TREE_CODE (decl) == VAR_DECL && TREE_STATIC (decl))
- || (TREE_CODE (decl) == FUNCTION_DECL
- && (!TREE_PUBLIC (decl) || DECL_DECLARED_INLINE_P (decl))))
- VARRAY_PUSH_TREE (b->static_decls, decl);
- }
+ /* We build up the list in reverse order, and reverse it later if
+ necessary. */
+ TREE_CHAIN (decl) = b->names;
+ b->names = decl;
}
/* Bind DECL to ID in the current_binding_level, assumed to be a local
@@ -1298,7 +1066,7 @@ push_local_binding (id, decl, flags)
tree decl;
int flags;
{
- struct cp_binding_level *b;
+ struct binding_level *b;
/* Skip over any local classes. This makes sense if we call
push_local_binding with a friend decl of a local class. */
@@ -1339,12 +1107,11 @@ push_class_binding (id, decl)
tree decl;
{
int result = 1;
- cxx_binding *binding = IDENTIFIER_BINDING (id);
+ tree binding = IDENTIFIER_BINDING (id);
tree context;
- timevar_push (TV_NAME_LOOKUP);
/* Note that we declared this value so that we can issue an error if
- this is an invalid redeclaration of a name already used for some
+ this an illegal redeclaration of a name already used for some
other purpose. */
note_name_declared_in_class (id, decl);
@@ -1394,7 +1161,7 @@ push_class_binding (id, decl)
in this class. */
INHERITED_VALUE_BINDING_P (binding) = 1;
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, result);
+ return result;
}
/* Remove the binding for DECL which should be the innermost binding
@@ -1405,7 +1172,7 @@ pop_binding (id, decl)
tree id;
tree decl;
{
- cxx_binding *binding;
+ tree binding;
if (id == NULL_TREE)
/* It's easiest to write the loops that call this function without
@@ -1417,7 +1184,7 @@ pop_binding (id, decl)
binding = IDENTIFIER_BINDING (id);
/* The name should be bound. */
- my_friendly_assert (binding != NULL, 0);
+ my_friendly_assert (binding != NULL_TREE, 0);
/* The DECL will be either the ordinary binding or the type
binding for this identifier. Remove that binding. */
@@ -1432,10 +1199,10 @@ pop_binding (id, decl)
{
/* We're completely done with the innermost binding for this
identifier. Unhook it from the list of bindings. */
- IDENTIFIER_BINDING (id) = binding->previous;
+ IDENTIFIER_BINDING (id) = TREE_CHAIN (binding);
/* Add it to the free list. */
- binding->previous = free_bindings;
+ TREE_CHAIN (binding) = free_bindings;
free_bindings = binding;
/* Clear the BINDING_LEVEL so the garbage collector doesn't walk
@@ -1518,21 +1285,21 @@ poplevel (keep, reverse, functionbody)
tree decls;
int tmp = functionbody;
int real_functionbody;
+ tree tags;
tree subblocks;
tree block = NULL_TREE;
tree decl;
int leaving_for_scope;
- timevar_push (TV_NAME_LOOKUP);
-
if (cfun && !doing_semantic_analysis_p ())
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, NULL_TREE);
+ return NULL_TREE;
my_friendly_assert (current_binding_level->parm_flag != 2,
19990916);
real_functionbody = (current_binding_level->keep == 2
? ((functionbody = 0), tmp) : functionbody);
+ tags = functionbody >= 0 ? current_binding_level->tags : 0;
subblocks = functionbody >= 0 ? current_binding_level->blocks : 0;
my_friendly_assert (!current_binding_level->class_shadowed,
@@ -1550,7 +1317,7 @@ poplevel (keep, reverse, functionbody)
under constraints of next binding contour. */
if (cfun && !functionbody)
{
- struct cp_binding_level *level_chain;
+ struct binding_level *level_chain;
level_chain = current_binding_level->level_chain;
if (level_chain)
{
@@ -1652,8 +1419,8 @@ poplevel (keep, reverse, functionbody)
if (leaving_for_scope && TREE_CODE (link) == VAR_DECL
&& DECL_NAME (link))
{
- cxx_binding *outer_binding
- = IDENTIFIER_BINDING (DECL_NAME (link))->previous;
+ tree outer_binding
+ = TREE_CHAIN (IDENTIFIER_BINDING (DECL_NAME (link)));
tree ns_binding;
if (!outer_binding)
@@ -1708,7 +1475,7 @@ poplevel (keep, reverse, functionbody)
current_binding_level->level_chain->
dead_vars_from_for);
- /* Although we don't pop the cxx_binding, we do clear
+ /* Although we don't pop the CPLUS_BINDING, we do clear
its BINDING_LEVEL since the level is going away now. */
BINDING_LEVEL (IDENTIFIER_BINDING (DECL_NAME (link)))
= 0;
@@ -1816,7 +1583,7 @@ poplevel (keep, reverse, functionbody)
block = poplevel (keep, reverse, functionbody);
}
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, block);
+ return block;
}
/* Delete the node BLOCK from the current binding level.
@@ -1873,10 +1640,14 @@ set_block (block)
void
pushlevel_class ()
{
- register struct cp_binding_level *newlevel;
+ register struct binding_level *newlevel;
/* Reuse or create a struct for this binding level. */
- if (!ENABLE_SCOPE_CHECKING && free_binding_level)
+#if defined(DEBUG_CP_BINDING_LEVELS)
+ if (0)
+#else /* !defined(DEBUG_CP_BINDING_LEVELS) */
+ if (free_binding_level)
+#endif /* !defined(DEBUG_CP_BINDING_LEVELS) */
{
newlevel = free_binding_level;
free_binding_level = free_binding_level->level_chain;
@@ -1884,8 +1655,9 @@ pushlevel_class ()
else
newlevel = make_binding_level ();
- if (ENABLE_SCOPE_CHECKING)
- is_class_level = 1;
+#if defined(DEBUG_CP_BINDING_LEVELS)
+ is_class_level = 1;
+#endif /* defined(DEBUG_CP_BINDING_LEVELS) */
push_binding_level (newlevel, 0, 0);
@@ -1899,11 +1671,9 @@ pushlevel_class ()
void
poplevel_class ()
{
- register struct cp_binding_level *level = class_binding_level;
+ register struct binding_level *level = class_binding_level;
tree shadowed;
- timevar_push (TV_NAME_LOOKUP);
-
my_friendly_assert (level != 0, 354);
/* If we're leaving a toplevel class, don't bother to do the setting
@@ -1913,7 +1683,7 @@ poplevel_class ()
next time we're entering a class scope, it is the same class. */
if (current_class_depth != 1)
{
- struct cp_binding_level* b;
+ struct binding_level* b;
/* Clear out our IDENTIFIER_CLASS_VALUEs. */
for (shadowed = level->class_shadowed;
@@ -1932,15 +1702,15 @@ poplevel_class ()
shadowed;
shadowed = TREE_CHAIN (shadowed))
{
- cxx_binding *binding;
+ tree t;
- binding = IDENTIFIER_BINDING (TREE_PURPOSE (shadowed));
- while (binding && BINDING_LEVEL (binding) != b)
- binding = binding->previous;
+ t = IDENTIFIER_BINDING (TREE_PURPOSE (shadowed));
+ while (t && BINDING_LEVEL (t) != b)
+ t = TREE_CHAIN (t);
- if (binding)
+ if (t)
IDENTIFIER_CLASS_VALUE (TREE_PURPOSE (shadowed))
- = BINDING_VALUE (binding);
+ = BINDING_VALUE (t);
}
}
else
@@ -1963,12 +1733,11 @@ poplevel_class ()
/* Now, pop out of the binding level which we created up in the
`pushlevel_class' routine. */
- if (ENABLE_SCOPE_CHECKING)
- is_class_level = 1;
+#if defined(DEBUG_CP_BINDING_LEVELS)
+ is_class_level = 1;
+#endif /* defined(DEBUG_CP_BINDING_LEVELS) */
pop_binding_level ();
-
- timevar_pop (TV_NAME_LOOKUP);
}
/* We are entering the scope of a class. Clear IDENTIFIER_CLASS_VALUE
@@ -1988,7 +1757,7 @@ clear_identifier_class_values ()
IDENTIFIER_CLASS_VALUE (TREE_PURPOSE (t)) = NULL_TREE;
}
-/* Returns nonzero if T is a virtual function table. */
+/* Returns non-zero if T is a virtual function table. */
int
vtable_decl_p (t, data)
@@ -1998,7 +1767,7 @@ vtable_decl_p (t, data)
return (TREE_CODE (t) == VAR_DECL && DECL_VIRTUAL_P (t));
}
-/* Returns nonzero if T is a TYPE_DECL for a type with virtual
+/* Returns non-zero if T is a TYPE_DECL for a type with virtual
functions. */
int
@@ -2020,50 +1789,6 @@ cp_namespace_decls (ns)
return NAMESPACE_LEVEL (ns)->names;
}
-struct walk_globals_data {
- walk_globals_pred p;
- walk_globals_fn f;
- void *data;
-};
-
-/* Walk the vtable declarations in NAMESPACE. Whenever one is found
- for which P returns nonzero, call F with its address. If any call
- to F returns a nonzero value, return a nonzero value. */
-
-static int
-walk_vtables_r (namespace, data)
- tree namespace;
- void *data;
-{
- struct walk_globals_data* wgd = (struct walk_globals_data *) data;
- walk_globals_fn f = wgd->f;
- void *d = wgd->data;
- tree decl = NAMESPACE_LEVEL (namespace)->vtables;
- int result = 0;
-
- for (; decl ; decl = TREE_CHAIN (decl))
- result |= (*f) (&decl, d);
-
- return result;
-}
-
-/* Walk the vtable declarations. Whenever one is found for which P
- returns nonzero, call F with its address. If any call to F
- returns a nonzero value, return a nonzero value. */
-int
-walk_vtables (p, f, data)
- walk_globals_pred p;
- walk_globals_fn f;
- void *data;
-{
- struct walk_globals_data wgd;
- wgd.p = p;
- wgd.f = f;
- wgd.data = data;
-
- return walk_namespaces (walk_vtables_r, &wgd);
-}
-
/* Walk all the namespaces contained NAMESPACE, including NAMESPACE
itself, calling F for each. The DATA is passed to F as well. */
@@ -2073,13 +1798,22 @@ walk_namespaces_r (namespace, f, data)
walk_namespaces_fn f;
void *data;
{
+ tree current;
int result = 0;
- tree current = NAMESPACE_LEVEL (namespace)->namespaces;
result |= (*f) (namespace, data);
- for (; current; current = TREE_CHAIN (current))
- result |= walk_namespaces_r (current, f, data);
+ for (current = cp_namespace_decls (namespace);
+ current;
+ current = TREE_CHAIN (current))
+ {
+ if (TREE_CODE (current) != NAMESPACE_DECL
+ || DECL_NAMESPACE_ALIAS (current))
+ continue;
+
+ /* We found a namespace. */
+ result |= walk_namespaces_r (current, f, data);
+ }
return result;
}
@@ -2095,9 +1829,15 @@ walk_namespaces (f, data)
return walk_namespaces_r (global_namespace, f, data);
}
+struct walk_globals_data {
+ walk_globals_pred p;
+ walk_globals_fn f;
+ void *data;
+};
+
/* Walk the global declarations in NAMESPACE. Whenever one is found
- for which P returns nonzero, call F with its address. If any call
- to F returns a nonzero value, return a nonzero value. */
+ for which P returns non-zero, call F with its address. If any call
+ to F returns a non-zero value, return a non-zero value. */
static int
walk_globals_r (namespace, data)
@@ -2130,8 +1870,8 @@ walk_globals_r (namespace, data)
}
/* Walk the global declarations. Whenever one is found for which P
- returns nonzero, call F with its address. If any call to F
- returns a nonzero value, return a nonzero value. */
+ returns non-zero, call F with its address. If any call to F
+ returns a non-zero value, return a non-zero value. */
int
walk_globals (p, f, data)
@@ -2156,73 +1896,111 @@ wrapup_globals_for_namespace (namespace, data)
tree namespace;
void *data;
{
- struct cp_binding_level *level = NAMESPACE_LEVEL (namespace);
- varray_type statics = level->static_decls;
- tree *vec = &VARRAY_TREE (statics, 0);
- int len = VARRAY_ACTIVE_SIZE (statics);
+ tree globals = cp_namespace_decls (namespace);
+ int len = list_length (globals);
+ tree *vec = (tree *) alloca (sizeof (tree) * len);
+ int i;
+ int result;
+ tree decl;
int last_time = (data != 0);
+ if (last_time && namespace == global_namespace)
+ /* Let compile_file handle the global namespace. */
+ return 0;
+
+ /* Process the decls in reverse order--earliest first.
+ Put them into VEC from back to front, then take out from front. */
+ for (i = 0, decl = globals; i < len; i++, decl = TREE_CHAIN (decl))
+ vec[len - i - 1] = decl;
+
if (last_time)
{
check_global_declarations (vec, len);
return 0;
}
+ /* Temporarily mark vtables as external. That prevents
+ wrapup_global_declarations from writing them out; we must process
+ them ourselves in finish_vtable_vardecl. */
+ for (i = 0; i < len; ++i)
+ if (vtable_decl_p (vec[i], /*data=*/0) && !DECL_EXTERNAL (vec[i]))
+ {
+ DECL_NOT_REALLY_EXTERN (vec[i]) = 1;
+ DECL_EXTERNAL (vec[i]) = 1;
+ }
+
/* Write out any globals that need to be output. */
- return wrapup_global_declarations (vec, len);
+ result = wrapup_global_declarations (vec, len);
+
+ /* Undo the hack to DECL_EXTERNAL above. */
+ for (i = 0; i < len; ++i)
+ if (vtable_decl_p (vec[i], /*data=*/0)
+ && DECL_NOT_REALLY_EXTERN (vec[i]))
+ {
+ DECL_NOT_REALLY_EXTERN (vec[i]) = 0;
+ DECL_EXTERNAL (vec[i]) = 0;
+ }
+
+ return result;
}
-/* For debugging. */
-static int no_print_functions = 0;
-static int no_print_builtins = 0;
+/* Mark ARG (which is really a struct binding_level **) for GC. */
-/* Called from print_binding_level through binding_table_foreach to
- print the content of binding ENTRY. DATA is a pointer to line offset
- marker. */
static void
-bt_print_entry (binding_entry entry, void *data)
+mark_binding_level (arg)
+ void *arg;
{
- int *p = (int *) data;
- int len;
+ struct binding_level *lvl = *(struct binding_level **)arg;
- if (entry->name == NULL)
- len = 3;
- else if (entry->name == TYPE_IDENTIFIER (entry->type))
- len = 2;
- else
- len = 4;
-
- *p += len;
-
- if (*p > 5)
+ for (; lvl; lvl = lvl->level_chain)
{
- fprintf (stderr, "\n\t");
- *p = len;
+ ggc_mark_tree (lvl->names);
+ ggc_mark_tree (lvl->tags);
+ ggc_mark_tree (lvl->usings);
+ ggc_mark_tree (lvl->using_directives);
+ ggc_mark_tree (lvl->class_shadowed);
+ ggc_mark_tree (lvl->type_shadowed);
+ ggc_mark_tree (lvl->shadowed_labels);
+ ggc_mark_tree (lvl->blocks);
+ ggc_mark_tree (lvl->this_class);
+ ggc_mark_tree (lvl->dead_vars_from_for);
}
- if (entry->name == NULL)
- {
- print_node_brief (stderr, "<unnamed-typedef", entry->type, 0);
- fprintf (stderr, ">");
- }
- else if (entry->name == TYPE_IDENTIFIER (entry->type))
- print_node_brief (stderr, "", entry->type, 0);
- else
+}
+
+static void
+mark_named_label_lists (labs, uses)
+ void *labs;
+ void *uses;
+{
+ struct named_label_list *l = *(struct named_label_list **)labs;
+ struct named_label_use_list *u = *(struct named_label_use_list **)uses;
+
+ for (; l; l = l->next)
{
- print_node_brief (stderr, "<typedef", entry->name, 0);
- print_node_brief (stderr, "", entry->type, 0);
- fprintf (stderr, ">");
+ ggc_mark (l);
+ mark_binding_level (&l->binding_level);
+ ggc_mark_tree (l->old_value);
+ ggc_mark_tree (l->label_decl);
+ ggc_mark_tree (l->bad_decls);
}
+
+ for (; u; u = u->next)
+ ggc_mark (u);
}
+
+/* For debugging. */
+static int no_print_functions = 0;
+static int no_print_builtins = 0;
void
print_binding_level (lvl)
- struct cp_binding_level *lvl;
+ struct binding_level *lvl;
{
tree t;
int i = 0, len;
fprintf (stderr, " blocks=");
- fprintf (stderr, HOST_PTR_PRINTF, lvl->blocks);
+ fprintf (stderr, HOST_PTR_PRINTF_FORMAT, HOST_PTR_PRINTF_TYPE lvl->blocks);
if (lvl->tag_transparent)
fprintf (stderr, " tag-transparent");
if (lvl->more_cleanups_ok)
@@ -2261,11 +2039,38 @@ print_binding_level (lvl)
if (i)
fprintf (stderr, "\n");
}
- if (lvl->type_decls)
+ if (lvl->tags)
{
fprintf (stderr, " tags:\t");
i = 0;
- binding_table_foreach (lvl->type_decls, bt_print_entry, &i);
+ for (t = lvl->tags; t; t = TREE_CHAIN (t))
+ {
+ if (TREE_PURPOSE (t) == NULL_TREE)
+ len = 3;
+ else if (TREE_PURPOSE (t) == TYPE_IDENTIFIER (TREE_VALUE (t)))
+ len = 2;
+ else
+ len = 4;
+ i += len;
+ if (i > 5)
+ {
+ fprintf (stderr, "\n\t");
+ i = len;
+ }
+ if (TREE_PURPOSE (t) == NULL_TREE)
+ {
+ print_node_brief (stderr, "<unnamed-typedef", TREE_VALUE (t), 0);
+ fprintf (stderr, ">");
+ }
+ else if (TREE_PURPOSE (t) == TYPE_IDENTIFIER (TREE_VALUE (t)))
+ print_node_brief (stderr, "", TREE_VALUE (t), 0);
+ else
+ {
+ print_node_brief (stderr, "<typedef", TREE_PURPOSE (t), 0);
+ print_node_brief (stderr, "", TREE_VALUE (t), 0);
+ fprintf (stderr, ">");
+ }
+ }
if (i)
fprintf (stderr, "\n");
}
@@ -2291,13 +2096,13 @@ print_binding_level (lvl)
void
print_other_binding_stack (stack)
- struct cp_binding_level *stack;
+ struct binding_level *stack;
{
- struct cp_binding_level *level;
- for (level = stack; !global_scope_p (level); level = level->level_chain)
+ struct binding_level *level;
+ for (level = stack; level != global_binding_level; level = level->level_chain)
{
fprintf (stderr, "binding level ");
- fprintf (stderr, HOST_PTR_PRINTF, level);
+ fprintf (stderr, HOST_PTR_PRINTF_FORMAT, HOST_PTR_PRINTF_TYPE level);
fprintf (stderr, "\n");
print_binding_level (level);
}
@@ -2306,14 +2111,13 @@ print_other_binding_stack (stack)
void
print_binding_stack ()
{
- struct cp_binding_level *b;
+ struct binding_level *b;
fprintf (stderr, "current_binding_level=");
- fprintf (stderr, HOST_PTR_PRINTF, current_binding_level);
+ fprintf (stderr, HOST_PTR_PRINTF_FORMAT, HOST_PTR_PRINTF_TYPE current_binding_level);
fprintf (stderr, "\nclass_binding_level=");
- fprintf (stderr, HOST_PTR_PRINTF, class_binding_level);
- fprintf (stderr, "\nNAMESPACE_LEVEL (global_namespace)=");
- fprintf (stderr, HOST_PTR_PRINTF,
- (void *) NAMESPACE_LEVEL (global_namespace));
+ fprintf (stderr, HOST_PTR_PRINTF_FORMAT, HOST_PTR_PRINTF_TYPE class_binding_level);
+ fprintf (stderr, "\nglobal_binding_level=");
+ fprintf (stderr, HOST_PTR_PRINTF_FORMAT, HOST_PTR_PRINTF_TYPE global_binding_level);
fprintf (stderr, "\n");
if (class_binding_level)
{
@@ -2329,95 +2133,104 @@ print_binding_stack ()
b = current_binding_level;
print_other_binding_stack (b);
fprintf (stderr, "global:\n");
- print_binding_level (NAMESPACE_LEVEL (global_namespace));
+ print_binding_level (global_binding_level);
}
-/* Namespace binding access routines. */
+/* Namespace binding access routines: The namespace_bindings field of
+ the identifier is polymorphic, with three possible values:
+ NULL_TREE, a list of CPLUS_BINDINGS, or any other tree_node
+ indicating the BINDING_VALUE of global_namespace. */
/* Check whether the a binding for the name to scope is known.
- Returns the binding found, or NULL. */
+ Assumes that the bindings of the name are already a list
+ of bindings. Returns the binding found, or NULL_TREE. */
-static inline cxx_binding *
-find_binding (tree name, tree scope, cxx_binding *front)
+static tree
+find_binding (name, scope)
+ tree name;
+ tree scope;
{
- cxx_binding *iter;
- cxx_binding *prev = NULL;
+ tree iter, prev = NULL_TREE;
- timevar_push (TV_NAME_LOOKUP);
+ scope = ORIGINAL_NAMESPACE (scope);
- for (iter = front; iter; iter = iter->previous)
+ for (iter = IDENTIFIER_NAMESPACE_BINDINGS (name); iter;
+ iter = TREE_CHAIN (iter))
{
+ my_friendly_assert (TREE_CODE (iter) == CPLUS_BINDING, 374);
if (BINDING_SCOPE (iter) == scope)
{
/* Move binding found to the front of the list, so
- subsequent lookups will find it faster. */
+ subsequent lookups will find it faster. */
if (prev)
{
- prev->previous = iter->previous;
- iter->previous = front;
+ TREE_CHAIN (prev) = TREE_CHAIN (iter);
+ TREE_CHAIN (iter) = IDENTIFIER_NAMESPACE_BINDINGS (name);
IDENTIFIER_NAMESPACE_BINDINGS (name) = iter;
}
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, iter);
+ return iter;
}
prev = iter;
}
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, NULL);
-}
-
-/* Return the binding for NAME in SCOPE, if any. Otherwise, return NULL. */
-cxx_binding *
-cxx_scope_find_binding_for_name (tree scope, tree name)
-{
- cxx_binding *b = IDENTIFIER_NAMESPACE_BINDINGS (name);
- if (b)
- {
- scope = ORIGINAL_NAMESPACE (scope);
- /* Fold-in case where NAME is used only once. */
- if (scope == BINDING_SCOPE (b) && b->previous == NULL)
- return b;
- return find_binding (name, scope, b);
- }
- return b;
+ return NULL_TREE;
}
+/* Always returns a binding for name in scope. If the
+ namespace_bindings is not a list, convert it to one first.
+ If no binding is found, make a new one. */
-/* Always returns a binding for name in scope.
- If no binding is found, make a new one. */
-
-cxx_binding *
-binding_for_name (tree name, tree scope)
+tree
+binding_for_name (name, scope)
+ tree name;
+ tree scope;
{
- cxx_binding *result;
+ tree b = IDENTIFIER_NAMESPACE_BINDINGS (name);
+ tree result;
scope = ORIGINAL_NAMESPACE (scope);
- result = cxx_scope_find_binding_for_name (scope, name);
- if (result)
+
+ if (b && TREE_CODE (b) != CPLUS_BINDING)
+ {
+ /* Get rid of optimization for global scope. */
+ IDENTIFIER_NAMESPACE_BINDINGS (name) = NULL_TREE;
+ BINDING_VALUE (binding_for_name (name, global_namespace)) = b;
+ b = IDENTIFIER_NAMESPACE_BINDINGS (name);
+ }
+ if (b && (result = find_binding (name, scope)))
return result;
- /* Not found, make a new one. */
- result = cxx_binding_make ();
- result->previous = IDENTIFIER_NAMESPACE_BINDINGS (name);
+ /* Not found, make a new one. */
+ result = make_node (CPLUS_BINDING);
+ TREE_CHAIN (result) = b;
+ IDENTIFIER_NAMESPACE_BINDINGS (name) = result;
+ BINDING_SCOPE (result) = scope;
BINDING_TYPE (result) = NULL_TREE;
BINDING_VALUE (result) = NULL_TREE;
- BINDING_SCOPE (result) = scope;
- result->is_local = false;
- result->value_is_inherited = false;
- result->has_level = false;
- IDENTIFIER_NAMESPACE_BINDINGS (name) = result;
return result;
}
-/* Return the binding value for name in scope. */
+/* Return the binding value for name in scope, considering that
+ namespace_binding may or may not be a list of CPLUS_BINDINGS. */
tree
-namespace_binding (tree name, tree scope)
+namespace_binding (name, scope)
+ tree name;
+ tree scope;
{
- cxx_binding *b =
- cxx_scope_find_binding_for_name (scope ? scope : global_namespace, name);
-
- return b ? b->value : NULL_TREE;
+ tree b = IDENTIFIER_NAMESPACE_BINDINGS (name);
+ if (b == NULL_TREE)
+ return NULL_TREE;
+ if (scope == NULL_TREE)
+ scope = global_namespace;
+ if (TREE_CODE (b) != CPLUS_BINDING)
+ return (scope == global_namespace) ? b : NULL_TREE;
+ name = find_binding (name,scope);
+ if (name == NULL_TREE)
+ return name;
+ return BINDING_VALUE (name);
}
-/* Set the binding value for name in scope. */
+/* Set the binding value for name in scope. If modifying the binding
+ of global_namespace is attempted, try to optimize it. */
void
set_namespace_binding (name, scope, val)
@@ -2425,15 +2238,22 @@ set_namespace_binding (name, scope, val)
tree scope;
tree val;
{
- cxx_binding *b;
+ tree b;
- timevar_push (TV_NAME_LOOKUP);
if (scope == NULL_TREE)
scope = global_namespace;
+ if (scope == global_namespace)
+ {
+ b = IDENTIFIER_NAMESPACE_BINDINGS (name);
+ if (b == NULL_TREE || TREE_CODE (b) != CPLUS_BINDING)
+ {
+ IDENTIFIER_NAMESPACE_BINDINGS (name) = val;
+ return;
+ }
+ }
b = binding_for_name (name, scope);
BINDING_VALUE (b) = val;
- timevar_pop (TV_NAME_LOOKUP);
}
/* Push into the scope of the NAME namespace. If NAME is NULL_TREE, then we
@@ -2447,12 +2267,9 @@ push_namespace (name)
int need_new = 1;
int implicit_use = 0;
int global = 0;
-
- timevar_push (TV_NAME_LOOKUP);
-
if (!global_namespace)
{
- /* This must be ::. */
+ /* This must be ::. */
my_friendly_assert (name == get_identifier ("::"), 377);
global = 1;
}
@@ -2471,7 +2288,7 @@ push_namespace (name)
}
else
{
- /* Check whether this is an extended namespace definition. */
+ /* Check whether this is an extended namespace definition. */
d = IDENTIFIER_NAMESPACE_VALUE (name);
if (d != NULL_TREE && TREE_CODE (d) == NAMESPACE_DECL)
{
@@ -2487,7 +2304,7 @@ push_namespace (name)
if (need_new)
{
- /* Make a new namespace, binding the name to it. */
+ /* Make a new namespace, binding the name to it. */
d = build_lang_decl (NAMESPACE_DECL, name, void_type_node);
/* The global namespace is not pushed, and the global binding
level is set elsewhere. */
@@ -2498,13 +2315,6 @@ push_namespace (name)
pushlevel (0);
declare_namespace_level ();
NAMESPACE_LEVEL (d) = current_binding_level;
- current_binding_level->type_decls =
- binding_table_new (name == std_identifier
- ? NAMESPACE_STD_HT_SIZE
- : NAMESPACE_ORDINARY_HT_SIZE);
- VARRAY_TREE_INIT (current_binding_level->static_decls,
- name != std_identifier ? 10 : 200,
- "Static declarations");
}
}
else
@@ -2512,10 +2322,8 @@ push_namespace (name)
if (implicit_use)
do_using_directive (d);
- /* Enter the name space. */
+ /* Enter the name space. */
current_namespace = d;
-
- timevar_pop (TV_NAME_LOOKUP);
}
/* Pop from the scope of the current namespace. */
@@ -2552,7 +2360,6 @@ void
pop_nested_namespace (ns)
tree ns;
{
- timevar_push (TV_NAME_LOOKUP);
while (ns != global_namespace)
{
pop_namespace ();
@@ -2560,26 +2367,9 @@ pop_nested_namespace (ns)
}
pop_from_top_level ();
- timevar_pop (TV_NAME_LOOKUP);
}
-/* Allocate storage for saving a C++ binding. */
-#define cxx_saved_binding_make() \
- (ggc_alloc (sizeof (cxx_saved_binding)))
-
-struct cxx_saved_binding GTY(())
-{
- /* Link that chains saved C++ bindings for a given name into a stack. */
- cxx_saved_binding *previous;
- /* The name of the current binding. */
- tree identifier;
- /* The binding we're saving. */
- cxx_binding *binding;
- tree class_value;
- tree real_type_value;
-};
-
/* Subroutines for reverting temporarily to top-level for instantiation
of templates and such. We actually need to clear out the class- and
local-value slots of all identifiers, so that only the global values
@@ -2587,18 +2377,48 @@ struct cxx_saved_binding GTY(())
scope isn't enough, because more binding levels may be pushed. */
struct saved_scope *scope_chain;
-static cxx_saved_binding *
-store_bindings (tree names, cxx_saved_binding *old_bindings)
+/* Mark ARG (which is really a struct saved_scope **) for GC. */
+
+static void
+mark_saved_scope (arg)
+ void *arg;
+{
+ struct saved_scope *t = *(struct saved_scope **)arg;
+ while (t)
+ {
+ mark_binding_level (&t->class_bindings);
+ ggc_mark_tree (t->old_bindings);
+ ggc_mark_tree (t->old_namespace);
+ ggc_mark_tree (t->decl_ns_list);
+ ggc_mark_tree (t->class_name);
+ ggc_mark_tree (t->class_type);
+ ggc_mark_tree (t->access_specifier);
+ ggc_mark_tree (t->function_decl);
+ if (t->lang_base)
+ ggc_mark_tree_varray (t->lang_base);
+ ggc_mark_tree (t->lang_name);
+ ggc_mark_tree (t->template_parms);
+ ggc_mark_tree (t->x_previous_class_type);
+ ggc_mark_tree (t->x_previous_class_values);
+ ggc_mark_tree (t->x_saved_tree);
+ ggc_mark_tree (t->lookups);
+
+ mark_stmt_tree (&t->x_stmt_tree);
+ mark_binding_level (&t->bindings);
+ t = t->prev;
+ }
+}
+
+static tree
+store_bindings (names, old_bindings)
+ tree names, old_bindings;
{
tree t;
- cxx_saved_binding *search_bindings = old_bindings;
+ tree search_bindings = old_bindings;
- timevar_push (TV_NAME_LOOKUP);
for (t = names; t; t = TREE_CHAIN (t))
{
- tree id;
- cxx_saved_binding *saved;
- cxx_saved_binding *t1;
+ tree binding, t1, id;
if (TREE_CODE (t) == TREE_LIST)
id = TREE_PURPOSE (t);
@@ -2612,24 +2432,24 @@ store_bindings (tree names, cxx_saved_binding *old_bindings)
|| !(IDENTIFIER_BINDING (id) || IDENTIFIER_CLASS_VALUE (id)))
continue;
- for (t1 = search_bindings; t1; t1 = t1->previous)
- if (t1->identifier == id)
+ for (t1 = search_bindings; t1; t1 = TREE_CHAIN (t1))
+ if (TREE_VEC_ELT (t1, 0) == id)
goto skip_it;
my_friendly_assert (TREE_CODE (id) == IDENTIFIER_NODE, 135);
- saved = cxx_saved_binding_make ();
- saved->previous = old_bindings;
- saved->identifier = id;
- saved->binding = IDENTIFIER_BINDING (id);
- saved->class_value = IDENTIFIER_CLASS_VALUE (id);;
- saved->real_type_value = REAL_IDENTIFIER_TYPE_VALUE (id);
- IDENTIFIER_BINDING (id) = NULL;
+ binding = make_tree_vec (4);
+ TREE_VEC_ELT (binding, 0) = id;
+ TREE_VEC_ELT (binding, 1) = REAL_IDENTIFIER_TYPE_VALUE (id);
+ TREE_VEC_ELT (binding, 2) = IDENTIFIER_BINDING (id);
+ TREE_VEC_ELT (binding, 3) = IDENTIFIER_CLASS_VALUE (id);
+ IDENTIFIER_BINDING (id) = NULL_TREE;
IDENTIFIER_CLASS_VALUE (id) = NULL_TREE;
- old_bindings = saved;
+ TREE_CHAIN (binding) = old_bindings;
+ old_bindings = binding;
skip_it:
;
}
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, old_bindings);
+ return old_bindings;
}
void
@@ -2637,13 +2457,11 @@ maybe_push_to_top_level (pseudo)
int pseudo;
{
struct saved_scope *s;
- struct cp_binding_level *b;
- cxx_saved_binding *old_bindings;
+ struct binding_level *b;
+ tree old_bindings;
int need_pop;
- timevar_push (TV_NAME_LOOKUP);
-
- s = (struct saved_scope *) ggc_alloc_cleared (sizeof (struct saved_scope));
+ s = (struct saved_scope *) xcalloc (1, sizeof (struct saved_scope));
b = scope_chain ? current_binding_level : 0;
@@ -2656,11 +2474,11 @@ maybe_push_to_top_level (pseudo)
else
need_pop = 0;
- old_bindings = NULL;
+ old_bindings = NULL_TREE;
if (scope_chain && previous_class_type)
old_bindings = store_bindings (previous_class_values, old_bindings);
- /* Have to include the global scope, because class-scope decls
+ /* Have to include global_binding_level, because class-level decls
aren't listed anywhere useful. */
for (; b; b = b->level_chain)
{
@@ -2670,7 +2488,7 @@ maybe_push_to_top_level (pseudo)
inserted into namespace level, finish_file wouldn't find them
when doing pending instantiations. Therefore, don't stop at
namespace level, but continue until :: . */
- if (global_scope_p (b) || (pseudo && b->template_parms_p))
+ if (b == global_binding_level || (pseudo && b->template_parms_p))
break;
old_bindings = store_bindings (b->names, old_bindings);
@@ -2695,7 +2513,6 @@ maybe_push_to_top_level (pseudo)
VARRAY_TREE_INIT (current_lang_base, 10, "current_lang_base");
current_lang_name = lang_name_cplusplus;
current_namespace = global_namespace;
- timevar_pop (TV_NAME_LOOKUP);
}
void
@@ -2708,24 +2525,22 @@ void
pop_from_top_level ()
{
struct saved_scope *s = scope_chain;
- cxx_saved_binding *saved;
-
- timevar_push (TV_NAME_LOOKUP);
+ tree t;
/* Clear out class-level bindings cache. */
if (previous_class_type)
invalidate_class_lookup_cache ();
- current_lang_base = 0;
+ VARRAY_FREE (current_lang_base);
scope_chain = s->prev;
- for (saved = s->old_bindings; saved; saved = saved->previous)
+ for (t = s->old_bindings; t; t = TREE_CHAIN (t))
{
- tree id = saved->identifier;
+ tree id = TREE_VEC_ELT (t, 0);
- IDENTIFIER_BINDING (id) = saved->binding;
- IDENTIFIER_CLASS_VALUE (id) = saved->class_value;
- SET_IDENTIFIER_TYPE_VALUE (id, saved->real_type_value);
+ SET_IDENTIFIER_TYPE_VALUE (id, TREE_VEC_ELT (t, 1));
+ IDENTIFIER_BINDING (id) = TREE_VEC_ELT (t, 2);
+ IDENTIFIER_CLASS_VALUE (id) = TREE_VEC_ELT (t, 3);
}
/* If we were in the middle of compiling a function, restore our
@@ -2735,7 +2550,7 @@ pop_from_top_level ()
current_function_decl = s->function_decl;
last_function_parms = s->last_parms;
- timevar_pop (TV_NAME_LOOKUP);
+ free (s);
}
/* Push a definition of struct, union or enum tag "name".
@@ -2755,21 +2570,21 @@ static void
set_identifier_type_value_with_scope (id, type, b)
tree id;
tree type;
- struct cp_binding_level *b;
+ struct binding_level *b;
{
if (!b->namespace_p)
{
/* Shadow the marker, not the real thing, so that the marker
- gets restored later. */
+ gets restored later. */
tree old_type_value = REAL_IDENTIFIER_TYPE_VALUE (id);
b->type_shadowed
= tree_cons (id, old_type_value, b->type_shadowed);
}
else
{
- cxx_binding *binding = binding_for_name (id, current_namespace);
+ tree binding = binding_for_name (id, current_namespace);
BINDING_TYPE (binding) = type;
- /* Store marker instead of real type. */
+ /* Store marker instead of real type. */
type = global_type_node;
}
SET_IDENTIFIER_TYPE_VALUE (id, type);
@@ -2785,25 +2600,24 @@ set_identifier_type_value (id, type)
set_identifier_type_value_with_scope (id, type, current_binding_level);
}
-/* Return the type associated with id. */
+/* Return the type associated with id. */
tree
identifier_type_value (id)
tree id;
{
- timevar_push (TV_NAME_LOOKUP);
- /* There is no type with that name, anywhere. */
+ /* There is no type with that name, anywhere. */
if (REAL_IDENTIFIER_TYPE_VALUE (id) == NULL_TREE)
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, NULL_TREE);
- /* This is not the type marker, but the real thing. */
+ return NULL_TREE;
+ /* This is not the type marker, but the real thing. */
if (REAL_IDENTIFIER_TYPE_VALUE (id) != global_type_node)
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, REAL_IDENTIFIER_TYPE_VALUE (id));
+ return REAL_IDENTIFIER_TYPE_VALUE (id);
/* Have to search for it. It must be on the global level, now.
- Ask lookup_name not to return non-types. */
+ Ask lookup_name not to return non-types. */
id = lookup_name_real (id, 2, 1, 0);
if (id)
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, TREE_TYPE (id));
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, NULL_TREE);
+ return TREE_TYPE (id);
+ return NULL_TREE;
}
/* Pop off extraneous binding levels left over due to syntax errors.
@@ -2813,8 +2627,9 @@ identifier_type_value (id)
void
pop_everything ()
{
- if (ENABLE_SCOPE_CHECKING)
- verbatim ("XXX entering pop_everything ()\n");
+#ifdef DEBUG_CP_BINDING_LEVELS
+ fprintf (stderr, "XXX entering pop_everything ()\n");
+#endif
while (!toplevel_bindings_p ())
{
if (current_binding_level->parm_flag == 2)
@@ -2822,13 +2637,14 @@ pop_everything ()
else
poplevel (0, 0, 0);
}
- if (ENABLE_SCOPE_CHECKING)
- verbatim ("XXX leaving pop_everything ()\n");
+#ifdef DEBUG_CP_BINDING_LEVELS
+ fprintf (stderr, "XXX leaving pop_everything ()\n");
+#endif
}
/* The type TYPE is being declared. If it is a class template, or a
specialization of a class template, do any processing required and
- perform error-checking. If IS_FRIEND is nonzero, this TYPE is
+ perform error-checking. If IS_FRIEND is non-zero, this TYPE is
being declared a friend. B is the binding level at which this TYPE
should be bound.
@@ -2839,7 +2655,7 @@ static tree
maybe_process_template_type_declaration (type, globalize, b)
tree type;
int globalize;
- struct cp_binding_level* b;
+ struct binding_level* b;
{
tree decl = TYPE_NAME (type);
@@ -2881,17 +2697,10 @@ maybe_process_template_type_declaration (type, globalize, b)
/* Put this tag on the list of tags for the class, since
that won't happen below because B is not the class
binding level, but is instead the pseudo-global level. */
- if (b->level_chain->type_decls == NULL)
- b->level_chain->type_decls =
- binding_table_new (SCOPE_DEFAULT_HT_SIZE);
- binding_table_insert (b->level_chain->type_decls, name, type);
+ b->level_chain->tags =
+ tree_cons (name, type, b->level_chain->tags);
if (!COMPLETE_TYPE_P (current_class_type))
- {
- maybe_add_class_template_decl_list (current_class_type,
- type, /*friend_p=*/0);
- CLASSTYPE_NESTED_UDTS (current_class_type) =
- b->level_chain->type_decls;
- }
+ CLASSTYPE_TAGS (current_class_type) = b->level_chain->tags;
}
}
}
@@ -2931,8 +2740,6 @@ push_local_name (decl)
size_t i, nelts;
tree t, name;
- timevar_push (TV_NAME_LOOKUP);
-
if (!local_names)
VARRAY_TREE_INIT (local_names, 8, "local_names");
@@ -2946,19 +2753,17 @@ push_local_name (decl)
{
if (!DECL_LANG_SPECIFIC (decl))
retrofit_lang_decl (decl);
- DECL_LANG_SPECIFIC (decl)->decl_flags.u2sel = 1;
if (DECL_LANG_SPECIFIC (t))
DECL_DISCRIMINATOR (decl) = DECL_DISCRIMINATOR (t) + 1;
else
DECL_DISCRIMINATOR (decl) = 1;
VARRAY_TREE (local_names, i) = decl;
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, (void)0);
+ return;
}
}
VARRAY_PUSH_TREE (local_names, decl);
- timevar_pop (TV_NAME_LOOKUP);
}
/* Push a tag name NAME for struct/class/union/enum type TYPE.
@@ -2971,9 +2776,7 @@ pushtag (name, type, globalize)
tree name, type;
int globalize;
{
- register struct cp_binding_level *b;
-
- timevar_push (TV_NAME_LOOKUP);
+ register struct binding_level *b;
b = current_binding_level;
while (b->tag_transparent
@@ -2982,13 +2785,11 @@ pushtag (name, type, globalize)
/* We may be defining a new type in the initializer
of a static member variable. We allow this when
not pedantic, and it is particularly useful for
- type punning via an anonymous union. */
+ type punning via an anonymous union. */
|| COMPLETE_TYPE_P (b->this_class))))
b = b->level_chain;
- if (b->type_decls == NULL)
- b->type_decls = binding_table_new (SCOPE_DEFAULT_HT_SIZE);
- binding_table_insert (b->type_decls, name, type);
+ b->tags = tree_cons (name, type, b->tags);
if (name)
{
@@ -3062,11 +2863,7 @@ pushtag (name, type, globalize)
if (b->parm_flag == 2)
{
if (!COMPLETE_TYPE_P (current_class_type))
- {
- maybe_add_class_template_decl_list (current_class_type,
- type, /*friend_p=*/0);
- CLASSTYPE_NESTED_UDTS (current_class_type) = b->type_decls;
- }
+ CLASSTYPE_TAGS (current_class_type) = b->tags;
}
}
@@ -3086,8 +2883,6 @@ pushtag (name, type, globalize)
tree d = build_decl (TYPE_DECL, NULL_TREE, type);
TYPE_STUB_DECL (type) = pushdecl_with_scope (d, b);
}
-
- timevar_pop (TV_NAME_LOOKUP);
}
/* Counter used to create anonymous type names. */
@@ -3112,7 +2907,8 @@ make_anon_name ()
void
clear_anon_tags ()
{
- register struct cp_binding_level *b;
+ register struct binding_level *b;
+ register tree tags;
static int last_cnt = 0;
/* Fast out if no new anon names were declared. */
@@ -3122,8 +2918,17 @@ clear_anon_tags ()
b = current_binding_level;
while (b->tag_transparent)
b = b->level_chain;
- if (b->type_decls != NULL)
- binding_table_remove_anonymous_types (b->type_decls);
+ tags = b->tags;
+ while (tags)
+ {
+ /* A NULL purpose means we have already processed all tags
+ from here to the end of the list. */
+ if (TREE_PURPOSE (tags) == NULL_TREE)
+ break;
+ if (ANON_AGGRNAME_P (TREE_PURPOSE (tags)))
+ TREE_PURPOSE (tags) = NULL_TREE;
+ tags = TREE_CHAIN (tags);
+ }
last_cnt = anon_cnt;
}
@@ -3339,7 +3144,7 @@ duplicate_decls (newdecl, olddecl)
}
}
- /* Check for redeclaration and other discrepancies. */
+ /* Check for redeclaration and other discrepancies. */
if (TREE_CODE (olddecl) == FUNCTION_DECL
&& DECL_ARTIFICIAL (olddecl))
{
@@ -3404,10 +3209,6 @@ duplicate_decls (newdecl, olddecl)
/* Replace the old RTL to avoid problems with inlining. */
SET_DECL_RTL (olddecl, DECL_RTL (newdecl));
}
- /* Even if the types match, prefer the new declarations type
- for anitipated built-ins, for exception lists, etc... */
- else if (DECL_ANTICIPATED (olddecl))
- TREE_TYPE (olddecl) = TREE_TYPE (newdecl);
if (DECL_THIS_STATIC (newdecl) && !DECL_THIS_STATIC (olddecl))
{
@@ -3483,11 +3284,7 @@ duplicate_decls (newdecl, olddecl)
&& compparms (TYPE_ARG_TYPES (TREE_TYPE (DECL_TEMPLATE_RESULT (olddecl))),
TYPE_ARG_TYPES (TREE_TYPE (DECL_TEMPLATE_RESULT (newdecl))))
&& comp_template_parms (DECL_TEMPLATE_PARMS (newdecl),
- DECL_TEMPLATE_PARMS (olddecl))
- /* Template functions can be disambiguated by
- return type. */
- && same_type_p (TREE_TYPE (TREE_TYPE (newdecl)),
- TREE_TYPE (TREE_TYPE (olddecl))))
+ DECL_TEMPLATE_PARMS (olddecl)))
{
error ("new declaration `%#D'", newdecl);
cp_error_at ("ambiguates old declaration `%#D'", olddecl);
@@ -3535,7 +3332,7 @@ duplicate_decls (newdecl, olddecl)
specialization, and the other is an instantiation of the same
template, that we do not exit at this point. That situation
can occur if we instantiate a template class, and then
- specialize one of its methods. This situation is valid, but
+ specialize one of its methods. This situation is legal, but
the declarations must be merged in the usual way. */
return 0;
else if (TREE_CODE (newdecl) == FUNCTION_DECL
@@ -3549,7 +3346,7 @@ duplicate_decls (newdecl, olddecl)
else if (TREE_CODE (newdecl) == NAMESPACE_DECL
&& DECL_NAMESPACE_ALIAS (newdecl)
&& DECL_NAMESPACE_ALIAS (newdecl) == DECL_NAMESPACE_ALIAS (olddecl))
- /* Redeclaration of namespace alias, ignore it. */
+ /* Redeclaration of namespace alias, ignore it. */
return 1;
else
{
@@ -3659,8 +3456,12 @@ duplicate_decls (newdecl, olddecl)
definition. */
if (DECL_VINDEX (olddecl))
DECL_VINDEX (newdecl) = DECL_VINDEX (olddecl);
+ if (DECL_VIRTUAL_CONTEXT (olddecl))
+ DECL_VIRTUAL_CONTEXT (newdecl) = DECL_VIRTUAL_CONTEXT (olddecl);
if (DECL_CONTEXT (olddecl))
DECL_CONTEXT (newdecl) = DECL_CONTEXT (olddecl);
+ if (DECL_PENDING_INLINE_INFO (newdecl) == 0)
+ DECL_PENDING_INLINE_INFO (newdecl) = DECL_PENDING_INLINE_INFO (olddecl);
DECL_STATIC_CONSTRUCTOR (newdecl) |= DECL_STATIC_CONSTRUCTOR (olddecl);
DECL_STATIC_DESTRUCTOR (newdecl) |= DECL_STATIC_DESTRUCTOR (olddecl);
DECL_PURE_VIRTUAL_P (newdecl) |= DECL_PURE_VIRTUAL_P (olddecl);
@@ -3677,9 +3478,9 @@ duplicate_decls (newdecl, olddecl)
definition. */
if (warn_redundant_decls && ! DECL_ARTIFICIAL (olddecl)
&& !(new_defines_function && DECL_INITIAL (olddecl) == NULL_TREE)
- /* Don't warn about extern decl followed by definition. */
+ /* Don't warn about extern decl followed by definition. */
&& !(DECL_EXTERNAL (olddecl) && ! DECL_EXTERNAL (newdecl))
- /* Don't warn about friends, let add_friend take care of it. */
+ /* Don't warn about friends, let add_friend take care of it. */
&& ! (DECL_FRIEND_P (newdecl) || DECL_FRIEND_P (olddecl)))
{
warning ("redundant redeclaration of `%D' in same scope", newdecl);
@@ -3695,9 +3496,12 @@ duplicate_decls (newdecl, olddecl)
if (newtype != error_mark_node && oldtype != error_mark_node
&& TYPE_LANG_SPECIFIC (newtype) && TYPE_LANG_SPECIFIC (oldtype))
- CLASSTYPE_FRIEND_CLASSES (newtype)
- = CLASSTYPE_FRIEND_CLASSES (oldtype);
-\
+ {
+ CLASSTYPE_VSIZE (newtype) = CLASSTYPE_VSIZE (oldtype);
+ CLASSTYPE_FRIEND_CLASSES (newtype)
+ = CLASSTYPE_FRIEND_CLASSES (oldtype);
+ }
+
DECL_ORIGINAL_TYPE (newdecl) = DECL_ORIGINAL_TYPE (olddecl);
}
@@ -3718,9 +3522,12 @@ duplicate_decls (newdecl, olddecl)
if (DECL_INITIAL (DECL_TEMPLATE_RESULT (olddecl)) == NULL_TREE
&& DECL_INITIAL (DECL_TEMPLATE_RESULT (newdecl)) != NULL_TREE)
{
- DECL_SOURCE_LOCATION (olddecl)
- = DECL_SOURCE_LOCATION (DECL_TEMPLATE_RESULT (olddecl))
- = DECL_SOURCE_LOCATION (newdecl);
+ DECL_SOURCE_LINE (olddecl)
+ = DECL_SOURCE_LINE (DECL_TEMPLATE_RESULT (olddecl))
+ = DECL_SOURCE_LINE (newdecl);
+ DECL_SOURCE_FILE (olddecl)
+ = DECL_SOURCE_FILE (DECL_TEMPLATE_RESULT (olddecl))
+ = DECL_SOURCE_FILE (newdecl);
}
return 1;
@@ -3741,11 +3548,7 @@ duplicate_decls (newdecl, olddecl)
newtype = oldtype;
if (TREE_CODE (newdecl) == VAR_DECL)
- {
- DECL_THIS_EXTERN (newdecl) |= DECL_THIS_EXTERN (olddecl);
- DECL_INITIALIZED_P (newdecl) |= DECL_INITIALIZED_P (olddecl);
- }
-
+ DECL_THIS_EXTERN (newdecl) |= DECL_THIS_EXTERN (olddecl);
/* Do this after calling `merge_types' so that default
parameters don't confuse us. */
else if (TREE_CODE (newdecl) == FUNCTION_DECL
@@ -3795,7 +3598,8 @@ duplicate_decls (newdecl, olddecl)
&& DECL_INITIAL (olddecl) != NULL_TREE)
{
DECL_INITIAL (newdecl) = DECL_INITIAL (olddecl);
- DECL_SOURCE_LOCATION (newdecl) = DECL_SOURCE_LOCATION (olddecl);
+ DECL_SOURCE_FILE (newdecl) = DECL_SOURCE_FILE (olddecl);
+ DECL_SOURCE_LINE (newdecl) = DECL_SOURCE_LINE (olddecl);
if (CAN_HAVE_FULL_LANG_DECL_P (newdecl)
&& DECL_LANG_SPECIFIC (newdecl)
&& DECL_LANG_SPECIFIC (olddecl))
@@ -3863,8 +3667,7 @@ duplicate_decls (newdecl, olddecl)
/* Don't really know how much of the language-specific
values we should copy from old to new. */
DECL_IN_AGGR_P (newdecl) = DECL_IN_AGGR_P (olddecl);
- DECL_LANG_SPECIFIC (newdecl)->decl_flags.u2 =
- DECL_LANG_SPECIFIC (olddecl)->decl_flags.u2;
+ DECL_ACCESS (newdecl) = DECL_ACCESS (olddecl);
DECL_NONCONVERTING_P (newdecl) = DECL_NONCONVERTING_P (olddecl);
DECL_TEMPLATE_INFO (newdecl) = DECL_TEMPLATE_INFO (olddecl);
DECL_INITIALIZED_IN_CLASS_P (newdecl)
@@ -3874,15 +3677,9 @@ duplicate_decls (newdecl, olddecl)
/* Only functions have DECL_BEFRIENDING_CLASSES. */
if (TREE_CODE (newdecl) == FUNCTION_DECL
|| DECL_FUNCTION_TEMPLATE_P (newdecl))
- {
- DECL_BEFRIENDING_CLASSES (newdecl)
- = chainon (DECL_BEFRIENDING_CLASSES (newdecl),
- DECL_BEFRIENDING_CLASSES (olddecl));
- /* DECL_THUNKS is only valid for virtual functions,
- otherwise it is a DECL_FRIEND_CONTEXT. */
- if (DECL_VIRTUAL_P (newdecl))
- DECL_THUNKS (newdecl) = DECL_THUNKS (olddecl);
- }
+ DECL_BEFRIENDING_CLASSES (newdecl)
+ = chainon (DECL_BEFRIENDING_CLASSES (newdecl),
+ DECL_BEFRIENDING_CLASSES (olddecl));
}
if (TREE_CODE (newdecl) == FUNCTION_DECL)
@@ -3909,26 +3706,17 @@ duplicate_decls (newdecl, olddecl)
olddecl);
SET_DECL_TEMPLATE_SPECIALIZATION (olddecl);
-
- /* [temp.expl.spec/14] We don't inline explicit specialization
- just because the primary template says so. */
}
- else
- {
- if (DECL_PENDING_INLINE_INFO (newdecl) == 0)
- DECL_PENDING_INLINE_INFO (newdecl) = DECL_PENDING_INLINE_INFO (olddecl);
-
- DECL_DECLARED_INLINE_P (newdecl) |= DECL_DECLARED_INLINE_P (olddecl);
+ DECL_DECLARED_INLINE_P (newdecl) |= DECL_DECLARED_INLINE_P (olddecl);
- /* If either decl says `inline', this fn is inline, unless
- its definition was passed already. */
- if (DECL_INLINE (newdecl) && DECL_INITIAL (olddecl) == NULL_TREE)
- DECL_INLINE (olddecl) = 1;
- DECL_INLINE (newdecl) = DECL_INLINE (olddecl);
+ /* If either decl says `inline', this fn is inline, unless its
+ definition was passed already. */
+ if (DECL_INLINE (newdecl) && DECL_INITIAL (olddecl) == NULL_TREE)
+ DECL_INLINE (olddecl) = 1;
+ DECL_INLINE (newdecl) = DECL_INLINE (olddecl);
- DECL_UNINLINABLE (newdecl) = DECL_UNINLINABLE (olddecl)
- = (DECL_UNINLINABLE (newdecl) || DECL_UNINLINABLE (olddecl));
- }
+ DECL_UNINLINABLE (newdecl) = DECL_UNINLINABLE (olddecl)
+ = (DECL_UNINLINABLE (newdecl) || DECL_UNINLINABLE (olddecl));
/* Preserve abstractness on cloned [cd]tors. */
DECL_ABSTRACT (newdecl) = DECL_ABSTRACT (olddecl);
@@ -4028,7 +3816,7 @@ duplicate_decls (newdecl, olddecl)
memcpy ((char *) olddecl + sizeof (struct tree_common),
(char *) newdecl + sizeof (struct tree_common),
sizeof (struct tree_decl) - sizeof (struct tree_common)
- + TREE_CODE_LENGTH (TREE_CODE (newdecl)) * sizeof (char *));
+ + tree_code_length [(int)TREE_CODE (newdecl)] * sizeof (char *));
}
DECL_UID (olddecl) = olddecl_uid;
@@ -4058,8 +3846,6 @@ pushdecl (x)
register tree name;
int need_new_binding;
- timevar_push (TV_NAME_LOOKUP);
-
/* We shouldn't be calling pushdecl when we're generating RTL for a
function that we already did semantic analysis on previously. */
my_friendly_assert (!cfun || doing_semantic_analysis_p (),
@@ -4183,12 +3969,12 @@ pushdecl (x)
/* Check for duplicate params. */
if (duplicate_decls (x, t))
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, t);
+ return t;
}
else if ((DECL_EXTERN_C_FUNCTION_P (x)
|| DECL_FUNCTION_TEMPLATE_P (x))
&& is_overloaded_fn (t))
- /* Don't do anything just yet. */;
+ /* Don't do anything just yet. */;
else if (t == wchar_decl_node)
{
if (pedantic && ! DECL_IN_SYSTEM_HEADER (x))
@@ -4196,12 +3982,12 @@ pushdecl (x)
TREE_TYPE (x));
/* Throw away the redeclaration. */
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, t);
+ return t;
}
else if (TREE_CODE (t) != TREE_CODE (x))
{
if (duplicate_decls (x, t))
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, t);
+ return t;
}
else if (duplicate_decls (x, t))
{
@@ -4210,7 +3996,7 @@ pushdecl (x)
else if (TREE_CODE (t) == FUNCTION_DECL)
check_default_args (t);
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, t);
+ return t;
}
else if (DECL_MAIN_P (x))
{
@@ -4224,7 +4010,7 @@ pushdecl (x)
error ("as `%D'", x);
/* We don't try to push this declaration since that
causes a crash. */
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, x);
+ return x;
}
}
@@ -4242,7 +4028,7 @@ pushdecl (x)
{
t = push_overloaded_decl (x, PUSH_LOCAL);
if (t != x)
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, t);
+ return t;
if (!namespace_bindings_p ())
/* We do not need to create a binding for this name;
push_overloaded_decl will have already done so if
@@ -4254,12 +4040,12 @@ pushdecl (x)
t = push_overloaded_decl (x, PUSH_GLOBAL);
if (t == x)
add_decl_to_level (x, NAMESPACE_LEVEL (CP_DECL_CONTEXT (t)));
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, t);
+ return t;
}
/* If declaring a type as a typedef, copy the type (unless we're
at line 0), and install this TYPE_DECL as the new type's typedef
- name. See the extensive comment in ../c-decl.c (pushdecl). */
+ name. See the extensive comment in ../c-decl.c (pushdecl). */
if (TREE_CODE (x) == TYPE_DECL)
{
tree type = TREE_TYPE (x);
@@ -4429,9 +4215,7 @@ pushdecl (x)
if (oldlocal != NULL_TREE && !DECL_EXTERNAL (x)
/* Inline decls shadow nothing. */
&& !DECL_FROM_INLINE (x)
- && TREE_CODE (oldlocal) == PARM_DECL
- /* Don't check the `this' parameter. */
- && !DECL_ARTIFICIAL (oldlocal))
+ && TREE_CODE (oldlocal) == PARM_DECL)
{
bool err = false;
@@ -4441,7 +4225,7 @@ pushdecl (x)
{
/* Go to where the parms should be and see if we find
them there. */
- struct cp_binding_level *b = current_binding_level->level_chain;
+ struct binding_level *b = current_binding_level->level_chain;
/* ARM $8.3 */
if (b->parm_flag == 1)
@@ -4491,7 +4275,7 @@ pushdecl (x)
? NAMESPACE_LEVEL (CP_DECL_CONTEXT (x))
: current_binding_level);
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, x);
+ return x;
}
/* Same as pushdecl, but define X in binding-level LEVEL. We rely on the
@@ -4500,13 +4284,11 @@ pushdecl (x)
static tree
pushdecl_with_scope (x, level)
tree x;
- struct cp_binding_level *level;
+ struct binding_level *level;
{
- register struct cp_binding_level *b;
+ register struct binding_level *b;
tree function_decl = current_function_decl;
- timevar_push (TV_NAME_LOOKUP);
-
current_function_decl = NULL_TREE;
if (level->parm_flag == 2)
{
@@ -4523,7 +4305,7 @@ pushdecl_with_scope (x, level)
current_binding_level = b;
}
current_function_decl = function_decl;
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, x);
+ return x;
}
/* Like pushdecl, only it places X in the current namespace,
@@ -4533,10 +4315,9 @@ tree
pushdecl_namespace_level (x)
tree x;
{
- register struct cp_binding_level *b = current_binding_level;
+ register struct binding_level *b = current_binding_level;
register tree t;
- timevar_push (TV_NAME_LOOKUP);
t = pushdecl_with_scope (x, NAMESPACE_LEVEL (current_namespace));
/* Now, the type_shadowed stack may screw us. Munge it so it does
@@ -4546,7 +4327,7 @@ pushdecl_namespace_level (x)
tree name = DECL_NAME (x);
tree newval;
tree *ptr = (tree *)0;
- for (; !global_scope_p (b); b = b->level_chain)
+ for (; b != global_binding_level; b = b->level_chain)
{
tree shadowed = b->type_shadowed;
for (; shadowed; shadowed = TREE_CHAIN (shadowed))
@@ -4570,83 +4351,51 @@ pushdecl_namespace_level (x)
*ptr = newval;
}
}
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, t);
+ return t;
}
-/* Like pushdecl, only it places X in the global scope if appropriate.
- Calls cp_finish_decl to register the variable, initializing it with
- *INIT, if INIT is non-NULL. */
+/* Like pushdecl, only it places X in GLOBAL_BINDING_LEVEL,
+ if appropriate. */
-static tree
-pushdecl_top_level_1 (tree x, tree *init)
+tree
+pushdecl_top_level (x)
+ tree x;
{
- timevar_push (TV_NAME_LOOKUP);
push_to_top_level ();
x = pushdecl_namespace_level (x);
- if (init)
- cp_finish_decl (x, *init, NULL_TREE, 0);
pop_from_top_level ();
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, x);
-}
-
-/* Like pushdecl, only it places X in the global scope if appropriate. */
-
-tree
-pushdecl_top_level (tree x)
-{
- return pushdecl_top_level_1 (x, NULL);
-}
-
-/* Like pushdecl, only it places X in the global scope if
- appropriate. Calls cp_finish_decl to register the variable,
- initializing it with INIT. */
-
-tree
-pushdecl_top_level_and_finish (tree x, tree init)
-{
- return pushdecl_top_level_1 (x, &init);
+ return x;
}
/* Make the declaration of X appear in CLASS scope. */
-bool
+void
pushdecl_class_level (x)
tree x;
{
- tree name;
- bool is_valid = true;
+ /* Don't use DECL_ASSEMBLER_NAME here! Everything that looks in class
+ scope looks for the pre-mangled name. */
+ register tree name;
- timevar_push (TV_NAME_LOOKUP);
- /* Get the name of X. */
if (TREE_CODE (x) == OVERLOAD)
- name = DECL_NAME (get_first_fn (x));
- else
- name = DECL_NAME (x);
+ x = OVL_CURRENT (x);
+ name = DECL_NAME (x);
if (name)
{
- is_valid = push_class_level_binding (name, x);
+ push_class_level_binding (name, x);
if (TREE_CODE (x) == TYPE_DECL)
set_identifier_type_value (name, TREE_TYPE (x));
}
else if (ANON_AGGR_TYPE_P (TREE_TYPE (x)))
{
- /* If X is an anonymous aggregate, all of its members are
- treated as if they were members of the class containing the
- aggregate, for naming purposes. */
tree f;
- for (f = TYPE_FIELDS (TREE_TYPE (x)); f; f = TREE_CHAIN (f))
- {
- push_srcloc (DECL_SOURCE_FILE (f), DECL_SOURCE_LINE (f));
- if (!pushdecl_class_level (f))
- is_valid = false;
- pop_srcloc ();
- }
+ for (f = TYPE_FIELDS (TREE_TYPE (x));
+ f;
+ f = TREE_CHAIN (f))
+ pushdecl_class_level (f);
}
- timevar_pop (TV_NAME_LOOKUP);
-
- return is_valid;
}
/* Enter DECL into the symbol table, if that's appropriate. Returns
@@ -4665,7 +4414,7 @@ maybe_push_decl (decl)
|| (TREE_CODE (decl) != PARM_DECL
&& DECL_CONTEXT (decl) != NULL_TREE
/* Definitions of namespace members outside their namespace are
- possible. */
+ possible. */
&& TREE_CODE (DECL_CONTEXT (decl)) != NAMESPACE_DECL)
|| (TREE_CODE (decl) == TEMPLATE_DECL && !namespace_bindings_p ())
|| TREE_CODE (type) == UNKNOWN_TYPE
@@ -4679,19 +4428,19 @@ maybe_push_decl (decl)
return pushdecl (decl);
}
-/* Make the declaration(s) of X appear in CLASS scope under the name
- NAME. Returns true if the binding is valid. */
+/* Make the declaration(s) of X appear in CLASS scope
+ under the name NAME. */
-bool
-push_class_level_binding (tree name, tree x)
+void
+push_class_level_binding (name, x)
+ tree name;
+ tree x;
{
- cxx_binding *binding;
-
- timevar_push (TV_NAME_LOOKUP);
+ tree binding;
/* The class_binding_level will be NULL if x is a template
parameter name in a member template. */
if (!class_binding_level)
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, true);
+ return;
/* Make sure that this new member does not have the same name
as a template parameter. */
@@ -4741,7 +4490,7 @@ push_class_level_binding (tree name, tree x)
INHERITED_VALUE_BINDING_P (binding) = 0;
TREE_TYPE (shadow) = x;
IDENTIFIER_CLASS_VALUE (name) = x;
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, true);
+ return;
}
}
@@ -4755,10 +4504,7 @@ push_class_level_binding (tree name, tree x)
/* Record the value we are binding NAME to so that we can know
what to pop later. */
TREE_TYPE (class_binding_level->class_shadowed) = x;
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, true);
}
-
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, false);
}
/* Insert another USING_DECL into the current binding level, returning
@@ -4773,21 +4519,18 @@ push_using_decl (scope, name)
{
tree decl;
- timevar_push (TV_NAME_LOOKUP);
-
my_friendly_assert (TREE_CODE (scope) == NAMESPACE_DECL, 383);
my_friendly_assert (TREE_CODE (name) == IDENTIFIER_NODE, 384);
for (decl = current_binding_level->usings; decl; decl = TREE_CHAIN (decl))
if (DECL_INITIAL (decl) == scope && DECL_NAME (decl) == name)
break;
if (decl)
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP,
- namespace_bindings_p () ? decl : NULL_TREE);
+ return namespace_bindings_p () ? decl : NULL_TREE;
decl = build_lang_decl (USING_DECL, name, void_type_node);
DECL_INITIAL (decl) = scope;
TREE_CHAIN (decl) = current_binding_level->usings;
current_binding_level->usings = decl;
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, decl);
+ return decl;
}
/* Add namespace to using_directives. Return NULL_TREE if nothing was
@@ -4801,22 +4544,19 @@ push_using_directive (used)
tree ud = current_binding_level->using_directives;
tree iter, ancestor;
- timevar_push (TV_NAME_LOOKUP);
-
- /* Check if we already have this. */
+ /* Check if we already have this. */
if (purpose_member (used, ud) != NULL_TREE)
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, NULL_TREE);
+ return NULL_TREE;
+
+ /* Recursively add all namespaces used. */
+ for (iter = DECL_NAMESPACE_USING (used); iter; iter = TREE_CHAIN (iter))
+ push_using_directive (TREE_PURPOSE (iter));
ancestor = namespace_ancestor (current_decl_namespace (), used);
ud = current_binding_level->using_directives;
ud = tree_cons (used, ancestor, ud);
current_binding_level->using_directives = ud;
-
- /* Recursively add all namespaces used. */
- for (iter = DECL_NAMESPACE_USING (used); iter; iter = TREE_CHAIN (iter))
- push_using_directive (TREE_PURPOSE (iter));
-
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, ud);
+ return ud;
}
/* DECL is a FUNCTION_DECL for a non-member function, which may have
@@ -4848,8 +4588,6 @@ push_overloaded_decl (decl, flags)
tree new_binding;
int doing_global = (namespace_bindings_p () || !(flags & PUSH_LOCAL));
- timevar_push (TV_NAME_LOOKUP);
-
if (doing_global)
old = namespace_binding (name, DECL_CONTEXT (decl));
else
@@ -4882,7 +4620,7 @@ push_overloaded_decl (decl, flags)
decl, fn);
if (duplicate_decls (decl, fn))
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, fn);
+ return fn;
}
}
else if (old == error_mark_node)
@@ -4892,7 +4630,7 @@ push_overloaded_decl (decl, flags)
{
cp_error_at ("previous non-function declaration `%#D'", old);
error ("conflicts with function declaration `%#D'", decl);
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, decl);
+ return decl;
}
}
@@ -4938,10 +4676,10 @@ push_overloaded_decl (decl, flags)
*d = tree_cons (NULL_TREE, new_binding,
TREE_CHAIN (*d));
- /* And update the cxx_binding node. */
+ /* And update the CPLUS_BINDING node. */
BINDING_VALUE (IDENTIFIER_BINDING (name))
= new_binding;
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, decl);
+ return decl;
}
/* We should always find a previous binding in this case. */
@@ -4952,7 +4690,7 @@ push_overloaded_decl (decl, flags)
push_local_binding (name, new_binding, flags);
}
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, decl);
+ return decl;
}
/* Generate an implicit declaration for identifier FUNCTIONID
@@ -5018,7 +4756,7 @@ redeclaration_error_message (newdecl, olddecl)
return 0;
/* If both functions come from different namespaces, this is not
- a redeclaration - this is a conflict with a used function. */
+ a redeclaration - this is a conflict with a used function. */
if (DECL_NAMESPACE_SCOPE_P (olddecl)
&& DECL_CONTEXT (olddecl) != DECL_CONTEXT (newdecl))
return "`%D' conflicts with used function";
@@ -5136,20 +4874,18 @@ lookup_label (id)
tree decl;
struct named_label_list *ent;
- timevar_push (TV_NAME_LOOKUP);
-
/* You can't use labels at global scope. */
if (current_function_decl == NULL_TREE)
{
error ("label `%s' referenced outside of any function",
IDENTIFIER_POINTER (id));
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, NULL_TREE);
+ return NULL_TREE;
}
/* See if we've already got this label. */
decl = IDENTIFIER_LABEL_VALUE (id);
if (decl != NULL_TREE && DECL_CONTEXT (decl) == current_function_decl)
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, decl);
+ return decl;
/* Record this label on the list of labels used in this function.
We do this before calling make_label_decl so that we get the
@@ -5166,7 +4902,7 @@ lookup_label (id)
/* Now fill in the information we didn't have before. */
ent->label_decl = decl;
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, decl);
+ return decl;
}
/* Declare a local label named ID. */
@@ -5222,14 +4958,14 @@ decl_jump_unsafe (decl)
static void
check_previous_goto_1 (decl, level, names, file, line)
tree decl;
- struct cp_binding_level *level;
+ struct binding_level *level;
tree names;
const char *file;
int line;
{
int identified = 0;
int saw_eh = 0;
- struct cp_binding_level *b = current_binding_level;
+ struct binding_level *b = current_binding_level;
for (; b; b = b->level_chain)
{
tree new_decls = b->names;
@@ -5296,7 +5032,7 @@ check_previous_goto (use)
static void
check_switch_goto (level)
- struct cp_binding_level *level;
+ struct binding_level *level;
{
check_previous_goto_1 (NULL_TREE, level, level->names, NULL, 0);
}
@@ -5398,9 +5134,7 @@ define_label (filename, line, name)
{
tree decl = lookup_label (name);
struct named_label_list *ent;
- register struct cp_binding_level *p;
-
- timevar_push (TV_NAME_LOOKUP);
+ register struct binding_level *p;
for (ent = named_labels; ent; ent = ent->next)
if (ent->label_decl == decl)
@@ -5417,7 +5151,7 @@ define_label (filename, line, name)
if (DECL_INITIAL (decl) != NULL_TREE)
{
error ("duplicate label `%D'", decl);
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, NULL_TREE);
+ return 0;
}
else
{
@@ -5432,14 +5166,13 @@ define_label (filename, line, name)
ent->binding_level = current_binding_level;
}
check_previous_gotos (decl);
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, decl);
+ return decl;
}
- timevar_pop (TV_NAME_LOOKUP);
}
struct cp_switch
{
- struct cp_binding_level *level;
+ struct binding_level *level;
struct cp_switch *next;
/* The SWITCH_STMT being built. */
tree switch_stmt;
@@ -5495,7 +5228,7 @@ finish_case_label (low_value, high_value)
tree high_value;
{
tree cond, r;
- register struct cp_binding_level *p;
+ register struct binding_level *p;
if (! switch_stack)
{
@@ -5549,6 +5282,14 @@ getdecls ()
return current_binding_level->names;
}
+/* Return the list of type-tags (for structs, etc) of the current level. */
+
+tree
+gettags ()
+{
+ return current_binding_level->tags;
+}
+
/* Store the list of declarations of the current level.
This is done for the parameter declarations of a function being defined,
after they are modified in the light of any missing parameters. */
@@ -5560,15 +5301,14 @@ storedecls (decls)
current_binding_level->names = decls;
}
-/* Set the current binding TABLE for type declarations.. This is a
- temporary workaround of the fact that the data structure classtypes
- does not currently carry its allocated cxx_scope structure. */
+/* Similarly, store the list of tags of the current level. */
+
void
-cxx_remember_type_decls (binding_table table)
+storetags (tags)
+ tree tags;
{
- current_binding_level->type_decls = table;
+ current_binding_level->tags = tags;
}
-
/* Return the type that should be used when TYPE's name is preceded
by a tag such as 'struct' or 'union', or null if the name cannot
@@ -5626,48 +5366,41 @@ static tree
lookup_tag (form, name, binding_level, thislevel_only)
enum tree_code form;
tree name;
- struct cp_binding_level *binding_level;
+ struct binding_level *binding_level;
int thislevel_only;
{
- register struct cp_binding_level *level;
- /* Nonzero if, we should look past a template parameter level, even
+ register struct binding_level *level;
+ /* Non-zero if, we should look past a template parameter level, even
if THISLEVEL_ONLY. */
int allow_template_parms_p = 1;
- bool type_is_anonymous = ANON_AGGRNAME_P (name);
-
- timevar_push (TV_NAME_LOOKUP);
for (level = binding_level; level; level = level->level_chain)
{
register tree tail;
- if (type_is_anonymous && level->type_decls != NULL)
- {
- tree type = binding_table_find_anon_type (level->type_decls, name);
- /* There's no need for error checking here, because
- anon names are unique throughout the compilation. */
- if (type != NULL)
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, type);
- }
+ if (ANON_AGGRNAME_P (name))
+ for (tail = level->tags; tail; tail = TREE_CHAIN (tail))
+ {
+ /* There's no need for error checking here, because
+ anon names are unique throughout the compilation. */
+ if (TYPE_IDENTIFIER (TREE_VALUE (tail)) == name)
+ return TREE_VALUE (tail);
+ }
else if (level->namespace_p)
- /* Do namespace lookup. */
+ /* Do namespace lookup. */
for (tail = current_namespace; 1; tail = CP_DECL_CONTEXT (tail))
{
- cxx_binding *binding =
- cxx_scope_find_binding_for_name (tail, name);
- tree old;
+ tree old = binding_for_name (name, tail);
/* If we just skipped past a template parameter level,
even though THISLEVEL_ONLY, and we find a template
class declaration, then we use the _TYPE node for the
template. See the example below. */
if (thislevel_only && !allow_template_parms_p
- && binding && BINDING_VALUE (binding)
- && DECL_CLASS_TEMPLATE_P (BINDING_VALUE (binding)))
- old = TREE_TYPE (BINDING_VALUE (binding));
- else if (binding)
- old = BINDING_TYPE (binding);
- else
- old = NULL;
+ && old && BINDING_VALUE (old)
+ && DECL_CLASS_TEMPLATE_P (BINDING_VALUE (old)))
+ old = TREE_TYPE (BINDING_VALUE (old));
+ else
+ old = BINDING_TYPE (old);
if (old)
{
@@ -5676,36 +5409,36 @@ lookup_tag (form, name, binding_level, thislevel_only)
if the typedef doesn't refer to a taggable type. */
old = follow_tag_typedef (old);
if (!old)
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, NULL_TREE);
+ return NULL_TREE;
if (TREE_CODE (old) != form
&& (form == ENUMERAL_TYPE
|| TREE_CODE (old) == ENUMERAL_TYPE))
{
error ("`%#D' redeclared as %C", old, form);
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, NULL_TREE);
+ return NULL_TREE;
}
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, old);
+ return old;
}
if (thislevel_only || tail == global_namespace)
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, NULL_TREE);
+ return NULL_TREE;
+ }
+ else
+ for (tail = level->tags; tail; tail = TREE_CHAIN (tail))
+ {
+ if (TREE_PURPOSE (tail) == name)
+ {
+ enum tree_code code = TREE_CODE (TREE_VALUE (tail));
+
+ if (code != form
+ && (form == ENUMERAL_TYPE || code == ENUMERAL_TYPE))
+ {
+ /* Definition isn't the kind we were looking for. */
+ error ("`%#D' redeclared as %C", TREE_VALUE (tail), form);
+ return NULL_TREE;
+ }
+ return TREE_VALUE (tail);
+ }
}
- else if (level->type_decls != NULL)
- {
- binding_entry entry = binding_table_find (level->type_decls, name);
- if (entry != NULL)
- {
- enum tree_code code = TREE_CODE (entry->type);
-
- if (code != form
- && (form == ENUMERAL_TYPE || code == ENUMERAL_TYPE))
- {
- /* Definition isn't the kind we were looking for. */
- error ("`%#D' redeclared as %C", entry->type, form);
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, NULL_TREE);
- }
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, entry->type);
- }
- }
if (thislevel_only && ! level->tag_transparent)
{
if (level->template_parms_p && allow_template_parms_p)
@@ -5720,15 +5453,15 @@ lookup_tag (form, name, binding_level, thislevel_only)
are in the pseudo-global level created for the
template parameters, rather than the (surrounding)
namespace level. Thus, we keep going one more level,
- even though THISLEVEL_ONLY is nonzero. */
+ even though THISLEVEL_ONLY is non-zero. */
allow_template_parms_p = 0;
continue;
}
else
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, NULL_TREE);
+ return NULL_TREE;
}
}
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, NULL_TREE);
+ return NULL_TREE;
}
#if 0
@@ -5744,7 +5477,7 @@ set_current_level_tags_transparency (tags_transparent)
Otherwise return 0. However, the value can never be 0
in the cases in which this is used.
- C++: If NAME is nonzero, this is the new name to install. This is
+ C++: If NAME is non-zero, this is the new name to install. This is
done when replacing anonymous tags with real tag names. */
static tree
@@ -5752,19 +5485,22 @@ lookup_tag_reverse (type, name)
tree type;
tree name;
{
- register struct cp_binding_level *level;
-
- timevar_push (TV_NAME_LOOKUP);
+ register struct binding_level *level;
for (level = current_binding_level; level; level = level->level_chain)
{
- binding_entry entry = level->type_decls == NULL
- ? NULL
- : binding_table_reverse_maybe_remap (level->type_decls, type, name);
- if (entry)
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, entry->name);
+ register tree tail;
+ for (tail = level->tags; tail; tail = TREE_CHAIN (tail))
+ {
+ if (TREE_VALUE (tail) == type)
+ {
+ if (name)
+ TREE_PURPOSE (tail) = name;
+ return TREE_PURPOSE (tail);
+ }
+ }
}
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, NULL_TREE);
+ return NULL_TREE;
}
/* Look up NAME in the NAMESPACE. */
@@ -5775,21 +5511,18 @@ lookup_namespace_name (namespace, name)
{
tree val;
tree template_id = NULL_TREE;
- cxx_binding binding;
-
- timevar_push (TV_NAME_LOOKUP);
my_friendly_assert (TREE_CODE (namespace) == NAMESPACE_DECL, 370);
if (TREE_CODE (name) == NAMESPACE_DECL)
- /* This happens for A::B<int> when B is a namespace. */
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, name);
+ /* This happens for A::B<int> when B is a namespace. */
+ return name;
else if (TREE_CODE (name) == TEMPLATE_DECL)
{
/* This happens for A::B where B is a template, and there are no
template arguments. */
error ("invalid use of `%D'", name);
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, error_mark_node);
+ return error_mark_node;
}
namespace = ORIGINAL_NAMESPACE (namespace);
@@ -5806,13 +5539,13 @@ lookup_namespace_name (namespace, name)
my_friendly_assert (TREE_CODE (name) == IDENTIFIER_NODE, 373);
- cxx_binding_clear (&binding);
- if (!qualified_lookup_using_namespace (name, namespace, &binding, 0))
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, error_mark_node);
+ val = make_node (CPLUS_BINDING);
+ if (!qualified_lookup_using_namespace (name, namespace, val, 0))
+ return error_mark_node;
- if (binding.value)
+ if (BINDING_VALUE (val))
{
- val = binding.value;
+ val = BINDING_VALUE (val);
if (template_id)
{
@@ -5831,7 +5564,7 @@ lookup_namespace_name (namespace, name)
{
error ("`%D::%D' is not a template",
namespace, name);
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, error_mark_node);
+ return error_mark_node;
}
}
@@ -5843,34 +5576,35 @@ lookup_namespace_name (namespace, name)
if (!val || !DECL_P(val)
|| !DECL_LANG_SPECIFIC(val)
|| !DECL_ANTICIPATED (val))
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, val);
+ return val;
}
error ("`%D' undeclared in namespace `%D'", name, namespace);
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, error_mark_node);
+ return error_mark_node;
}
/* Hash a TYPENAME_TYPE. K is really of type `tree'. */
-static hashval_t
+static unsigned long
typename_hash (k)
- const void * k;
+ hash_table_key k;
{
- hashval_t hash;
- tree t = (tree) k;
+ unsigned long hash;
+ tree t;
- hash = (htab_hash_pointer (TYPE_CONTEXT (t))
- ^ htab_hash_pointer (DECL_NAME (TYPE_NAME (t))));
+ t = (tree) k;
+ hash = (((unsigned long) TYPE_CONTEXT (t))
+ ^ ((unsigned long) DECL_NAME (TYPE_NAME (t))));
return hash;
}
/* Compare two TYPENAME_TYPEs. K1 and K2 are really of type `tree'. */
-static int
+static bool
typename_compare (k1, k2)
- const void * k1;
- const void * k2;
+ hash_table_key k1;
+ hash_table_key k2;
{
tree t1;
tree t2;
@@ -5883,7 +5617,7 @@ typename_compare (k1, k2)
d2 = TYPE_NAME (t2);
return (DECL_NAME (d1) == DECL_NAME (d2)
- && TYPE_CONTEXT (t1) == TYPE_CONTEXT (t2)
+ && same_type_p (TYPE_CONTEXT (t1), TYPE_CONTEXT (t2))
&& ((TREE_TYPE (t1) != NULL_TREE)
== (TREE_TYPE (t2) != NULL_TREE))
&& same_type_p (TREE_TYPE (t1), TREE_TYPE (t2))
@@ -5898,8 +5632,6 @@ typename_compare (k1, k2)
Returns the new TYPENAME_TYPE. */
-static GTY ((param_is (union tree_node))) htab_t typename_htab;
-
tree
build_typename_type (context, name, fullname, base_type)
tree context;
@@ -5909,12 +5641,16 @@ build_typename_type (context, name, fullname, base_type)
{
tree t;
tree d;
- PTR *e;
+ struct hash_entry *e;
+
+ static struct hash_table ht;
- if (typename_htab == NULL)
+ if (!ht.table)
{
- typename_htab = htab_create_ggc (61, &typename_hash,
- &typename_compare, NULL);
+ static struct hash_table *h = &ht;
+
+ hash_table_init (&ht, &hash_newfunc, &typename_hash, &typename_compare);
+ ggc_add_tree_hash_table_root (&h, 1);
}
/* Build the TYPENAME_TYPE. */
@@ -5931,11 +5667,12 @@ build_typename_type (context, name, fullname, base_type)
DECL_ARTIFICIAL (d) = 1;
/* See if we already have this type. */
- e = htab_find_slot (typename_htab, t, INSERT);
- if (*e)
- t = (tree) *e;
+ e = hash_lookup (&ht, t, /*create=*/false, /*copy=*/0);
+ if (e)
+ t = (tree) e->key;
else
- *e = t;
+ /* Insert the type into the table. */
+ hash_lookup (&ht, t, /*create=*/true, /*copy=*/0);
return t;
}
@@ -6011,14 +5748,6 @@ make_typename_type (context, name, complain)
return error_mark_node;
}
- if (complain & tf_error)
- {
- if (complain & tf_parsing)
- type_access_control (context, tmpl);
- else
- enforce_access (context, tmpl);
- }
-
return lookup_template_class (tmpl,
TREE_OPERAND (fullname, 1),
NULL_TREE, context,
@@ -6045,15 +5774,6 @@ make_typename_type (context, name, complain)
error ("no type named `%#T' in `%#T'", name, context);
return error_mark_node;
}
-
- if (complain & tf_error)
- {
- if (complain & tf_parsing)
- type_access_control (context, t);
- else
- enforce_access (context, t);
- }
-
if (DECL_ARTIFICIAL (t) || !(complain & tf_keep_type_decl))
t = TREE_TYPE (t);
if (IMPLICIT_TYPENAME_P (t))
@@ -6081,6 +5801,7 @@ make_typename_type (context, name, complain)
return error_mark_node;
}
+
return build_typename_type (context, name, fullname, NULL_TREE);
}
@@ -6093,7 +5814,7 @@ make_typename_type (context, name, complain)
tree
make_unbound_class_template (context, name, complain)
tree context, name;
- tsubst_flags_t complain;
+ int complain;
{
tree t;
tree d;
@@ -6115,18 +5836,13 @@ make_unbound_class_template (context, name, complain)
if (!tmpl || !DECL_CLASS_TEMPLATE_P (tmpl))
{
- if (complain & tf_error)
+ if (complain)
error ("no class template named `%#T' in `%#T'", name, context);
return error_mark_node;
}
- if (complain & tf_error)
- {
- if (complain & tf_parsing)
- type_access_control (context, tmpl);
- else
- enforce_access (context, tmpl);
- }
+ if (!enforce_access (context, tmpl))
+ return error_mark_node;
return tmpl;
}
@@ -6146,23 +5862,22 @@ make_unbound_class_template (context, name, complain)
return t;
}
-/* Select the right _DECL from multiple choices. */
+/* Select the right _DECL from multiple choices. */
static tree
-select_decl (cxx_binding *binding, int flags)
+select_decl (binding, flags)
+ tree binding;
+ int flags;
{
tree val;
-
- timevar_push (TV_NAME_LOOKUP);
-
val = BINDING_VALUE (binding);
if (LOOKUP_NAMESPACES_ONLY (flags))
{
- /* We are not interested in types. */
+ /* We are not interested in types. */
if (val && TREE_CODE (val) == NAMESPACE_DECL)
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, val);
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, NULL_TREE);
+ return val;
+ return NULL_TREE;
}
/* If we could have a type and
@@ -6171,13 +5886,13 @@ select_decl (cxx_binding *binding, int flags)
&& (!val || ((flags & LOOKUP_PREFER_TYPES)
&& TREE_CODE (val) != TYPE_DECL)))
val = TYPE_STUB_DECL (BINDING_TYPE (binding));
- /* Don't return non-types if we really prefer types. */
+ /* Don't return non-types if we really prefer types. */
else if (val && LOOKUP_TYPES_ONLY (flags) && TREE_CODE (val) != TYPE_DECL
&& (TREE_CODE (val) != TEMPLATE_DECL
|| !DECL_CLASS_TEMPLATE_P (val)))
val = NULL_TREE;
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, val);
+ return val;
}
/* Unscoped lookup of a global: iterate over current namespaces,
@@ -6190,65 +5905,65 @@ unqualified_namespace_lookup (name, flags, spacesp)
int flags;
tree *spacesp;
{
+ tree b = make_node (CPLUS_BINDING);
tree initial = current_decl_namespace ();
tree scope = initial;
tree siter;
- struct cp_binding_level *level;
+ struct binding_level *level;
tree val = NULL_TREE;
- cxx_binding binding;
- timevar_push (TV_NAME_LOOKUP);
- cxx_binding_clear (&binding);
if (spacesp)
*spacesp = NULL_TREE;
for (; !val; scope = CP_DECL_CONTEXT (scope))
{
- cxx_binding *b;
if (spacesp)
*spacesp = tree_cons (scope, NULL_TREE, *spacesp);
- b = cxx_scope_find_binding_for_name (scope, name);
+ val = binding_for_name (name, scope);
/* Ignore anticipated built-in functions. */
- if (b && BINDING_VALUE (b) && DECL_P (BINDING_VALUE (b))
- && DECL_LANG_SPECIFIC (BINDING_VALUE (b))
- && DECL_ANTICIPATED (BINDING_VALUE (b)))
- /* Keep binding cleared. */;
- else if (b)
+ if (val && BINDING_VALUE (val)
+ && DECL_P (BINDING_VALUE (val))
+ && DECL_LANG_SPECIFIC (BINDING_VALUE (val))
+ && DECL_ANTICIPATED (BINDING_VALUE (val)))
+ {
+ BINDING_VALUE (b) = NULL_TREE;
+ BINDING_TYPE (b) = NULL_TREE;
+ }
+ else
{
- /* Initialize binding for this context. */
- binding.value = BINDING_VALUE (b);
- binding.type = BINDING_TYPE (b);
+ /* Initialize binding for this context. */
+ BINDING_VALUE (b) = BINDING_VALUE (val);
+ BINDING_TYPE (b) = BINDING_TYPE (val);
}
- /* Add all _DECLs seen through local using-directives. */
+ /* Add all _DECLs seen through local using-directives. */
for (level = current_binding_level;
!level->namespace_p;
level = level->level_chain)
- if (!lookup_using_namespace (name, &binding, level->using_directives,
+ if (!lookup_using_namespace (name, b, level->using_directives,
scope, flags, spacesp))
- /* Give up because of error. */
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, error_mark_node);
+ /* Give up because of error. */
+ return error_mark_node;
- /* Add all _DECLs seen through global using-directives. */
- /* XXX local and global using lists should work equally. */
+ /* Add all _DECLs seen through global using-directives. */
+ /* XXX local and global using lists should work equally. */
siter = initial;
while (1)
{
- if (!lookup_using_namespace (name, &binding,
- DECL_NAMESPACE_USING (siter),
+ if (!lookup_using_namespace (name, b, DECL_NAMESPACE_USING (siter),
scope, flags, spacesp))
- /* Give up because of error. */
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, error_mark_node);
+ /* Give up because of error. */
+ return error_mark_node;
if (siter == scope) break;
siter = CP_DECL_CONTEXT (siter);
}
- val = select_decl (&binding, flags);
+ val = select_decl (b, flags);
if (scope == global_namespace)
break;
}
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, val);
+ return val;
}
/* Combine prefer_type and namespaces_only into flags. */
@@ -6300,7 +6015,6 @@ warn_about_implicit_typename_lookup (typename, binding)
tree name = DECL_NAME (typename);
if (! (TREE_CODE (binding) == TEMPLATE_DECL
- && CLASS_TYPE_P (subtype)
&& CLASSTYPE_TEMPLATE_INFO (subtype)
&& CLASSTYPE_TI_TEMPLATE (subtype) == binding)
&& ! (TREE_CODE (binding) == TYPE_DECL
@@ -6315,65 +6029,6 @@ warn_about_implicit_typename_lookup (typename, binding)
}
}
-/* Check to see whether or not DECL is a variable that would have been
- in scope under the ARM, but is not in scope under the ANSI/ISO
- standard. If so, issue an error message. If name lookup would
- work in both cases, but return a different result, this function
- returns the result of ANSI/ISO lookup. Otherwise, it returns
- DECL. */
-
-tree
-check_for_out_of_scope_variable (tree decl)
-{
- tree shadowed;
-
- /* We only care about out of scope variables. */
- if (!(TREE_CODE (decl) == VAR_DECL && DECL_DEAD_FOR_LOCAL (decl)))
- return decl;
-
- shadowed = DECL_SHADOWED_FOR_VAR (decl);
- while (shadowed != NULL_TREE && TREE_CODE (shadowed) == VAR_DECL
- && DECL_DEAD_FOR_LOCAL (shadowed))
- shadowed = DECL_SHADOWED_FOR_VAR (shadowed);
- if (!shadowed)
- shadowed = IDENTIFIER_NAMESPACE_VALUE (DECL_NAME (decl));
- if (shadowed)
- {
- if (!DECL_ERROR_REPORTED (decl))
- {
- warning ("name lookup of `%D' changed",
- DECL_NAME (decl));
- cp_warning_at (" matches this `%D' under ISO standard rules",
- shadowed);
- cp_warning_at (" matches this `%D' under old rules", decl);
- DECL_ERROR_REPORTED (decl) = 1;
- }
- return shadowed;
- }
-
- /* If we have already complained about this declaration, there's no
- need to do it again. */
- if (DECL_ERROR_REPORTED (decl))
- return decl;
-
- DECL_ERROR_REPORTED (decl) = 1;
- if (TYPE_HAS_NONTRIVIAL_DESTRUCTOR (TREE_TYPE (decl)))
- {
- error ("name lookup of `%D' changed for new ISO `for' scoping",
- DECL_NAME (decl));
- cp_error_at (" cannot use obsolete binding at `%D' because it has a destructor", decl);
- return error_mark_node;
- }
- else
- {
- pedwarn ("name lookup of `%D' changed for new ISO `for' scoping",
- DECL_NAME (decl));
- cp_pedwarn_at (" using obsolete binding at `%D'", decl);
- }
-
- return decl;
-}
-
/* Look up NAME in the current binding level and its superiors in the
namespace of variables, functions and typedefs. Return a ..._DECL
node of some kind representing its definition if there is only one
@@ -6385,7 +6040,7 @@ check_for_out_of_scope_variable (tree decl)
If PREFER_TYPE is -2, we're being called from yylex(). (UGLY)
Otherwise we prefer non-TYPE_DECLs.
- If NONCLASS is nonzero, we don't look for the NAME in class scope,
+ If NONCLASS is non-zero, we don't look for the NAME in class scope,
using IDENTIFIER_CLASS_VALUE. */
static tree
@@ -6399,11 +6054,8 @@ lookup_name_real (name, prefer_type, nonclass, namespaces_only)
tree from_obj = NULL_TREE;
int flags;
int val_is_implicit_typename = 0;
- cxx_binding *iter;
- timevar_push (TV_NAME_LOOKUP);
-
- /* Hack: copy flag set by parser, if set. */
+ /* Hack: copy flag set by parser, if set. */
if (only_namespace_names)
namespaces_only = 1;
@@ -6416,7 +6068,7 @@ lookup_name_real (name, prefer_type, nonclass, namespaces_only)
prefer_type = looking_for_typename;
flags = lookup_flags (prefer_type, namespaces_only);
- /* If the next thing is '<', class templates are types. */
+ /* If the next thing is '<', class templates are types. */
if (looking_for_template)
flags |= LOOKUP_TEMPLATES_EXPECTED;
@@ -6428,8 +6080,8 @@ lookup_name_real (name, prefer_type, nonclass, namespaces_only)
if (type)
{
if (type == error_mark_node)
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, error_mark_node);
- if (IMPLICIT_TYPENAME_P (type))
+ return error_mark_node;
+ if (TREE_CODE (type) == TYPENAME_TYPE && TREE_TYPE (type))
type = TREE_TYPE (type);
if (TYPE_P (type))
@@ -6439,12 +6091,11 @@ lookup_name_real (name, prefer_type, nonclass, namespaces_only)
type = global_namespace;
if (TREE_CODE (type) == NAMESPACE_DECL)
{
- cxx_binding b;
- cxx_binding_clear (&b);
+ val = make_node (CPLUS_BINDING);
flags |= LOOKUP_COMPLAIN;
- if (!qualified_lookup_using_namespace (name, type, &b, flags))
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, NULL_TREE);
- val = select_decl (&b, flags);
+ if (!qualified_lookup_using_namespace (name, type, val, flags))
+ return NULL_TREE;
+ val = select_decl (val, flags);
}
else if (! IS_AGGR_TYPE (type)
|| TREE_CODE (type) == TEMPLATE_TYPE_PARM
@@ -6457,8 +6108,7 @@ lookup_name_real (name, prefer_type, nonclass, namespaces_only)
else
{
val = lookup_member (type, name, 0, prefer_type);
- if (!uses_template_parms (type))
- type_access_control (type, val);
+ type_access_control (type, val);
/* Restore the containing TYPENAME_TYPE if we looked
through it before. */
@@ -6488,65 +6138,36 @@ lookup_name_real (name, prefer_type, nonclass, namespaces_only)
else
{
flags = lookup_flags (prefer_type, namespaces_only);
- /* If we're not parsing, we need to complain. */
+ /* If we're not parsing, we need to complain. */
flags |= LOOKUP_COMPLAIN;
}
- /* Conversion operators are handled specially because ordinary
- unqualified name lookup will not find template conversion
- operators. */
- if (IDENTIFIER_TYPENAME_P (name))
- {
- struct cp_binding_level *level;
-
- for (level = current_binding_level;
- level && !level->namespace_p;
- level = level->level_chain)
- {
- tree class_type;
- tree operators;
-
- /* A conversion operator can only be declared in a class
- scope. */
- if (level->parm_flag != 2)
- continue;
-
- /* Lookup the conversion operator in the class. */
- class_type = level->this_class;
- operators = lookup_fnfields (class_type, name, /*protect=*/0);
- if (operators)
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, operators);
- }
-
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, NULL_TREE);
- }
-
/* First, look in non-namespace scopes. */
if (current_class_type == NULL_TREE)
nonclass = 1;
- for (iter = IDENTIFIER_BINDING (name); iter; iter = iter->previous)
+ for (t = IDENTIFIER_BINDING (name); t; t = TREE_CHAIN (t))
{
tree binding;
- if (!LOCAL_BINDING_P (iter) && nonclass)
+ if (!LOCAL_BINDING_P (t) && nonclass)
/* We're not looking for class-scoped bindings, so keep going. */
continue;
/* If this is the kind of thing we're looking for, we're done. */
- if (qualify_lookup (BINDING_VALUE (iter), flags))
- binding = BINDING_VALUE (iter);
+ if (qualify_lookup (BINDING_VALUE (t), flags))
+ binding = BINDING_VALUE (t);
else if ((flags & LOOKUP_PREFER_TYPES)
- && qualify_lookup (BINDING_TYPE (iter), flags))
- binding = BINDING_TYPE (iter);
+ && qualify_lookup (BINDING_TYPE (t), flags))
+ binding = BINDING_TYPE (t);
else
binding = NULL_TREE;
/* Handle access control on types from enclosing or base classes. */
if (binding && ! yylex
- && BINDING_LEVEL (iter) && BINDING_LEVEL (iter)->parm_flag == 2)
- type_access_control (BINDING_LEVEL (iter)->this_class, binding);
+ && BINDING_LEVEL (t) && BINDING_LEVEL (t)->parm_flag == 2)
+ type_access_control (BINDING_LEVEL (t)->this_class, binding);
if (binding
&& (!val || !IMPLICIT_TYPENAME_TYPE_DECL_P (binding)))
@@ -6605,7 +6226,7 @@ does not match lookup in the current scope (`%#D')",
else if (from_obj)
val = from_obj;
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, val);
+ return val;
}
tree
@@ -6646,11 +6267,9 @@ tree
lookup_name_current_level (name)
tree name;
{
- struct cp_binding_level *b;
+ struct binding_level *b;
tree t = NULL_TREE;
- timevar_push (TV_NAME_LOOKUP);
-
b = current_binding_level;
while (b->parm_flag == 2)
b = b->level_chain;
@@ -6669,7 +6288,7 @@ lookup_name_current_level (name)
while (1)
{
if (BINDING_LEVEL (IDENTIFIER_BINDING (name)) == b)
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, IDENTIFIER_VALUE (name));
+ return IDENTIFIER_VALUE (name);
if (b->keep == 2)
b = b->level_chain;
@@ -6678,7 +6297,7 @@ lookup_name_current_level (name)
}
}
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, t);
+ return t;
}
/* Like lookup_name_current_level, but for types. */
@@ -6688,20 +6307,17 @@ lookup_type_current_level (name)
tree name;
{
register tree t = NULL_TREE;
-
- timevar_push (TV_NAME_LOOKUP);
my_friendly_assert (! current_binding_level->namespace_p, 980716);
if (REAL_IDENTIFIER_TYPE_VALUE (name) != NULL_TREE
&& REAL_IDENTIFIER_TYPE_VALUE (name) != global_type_node)
{
- struct cp_binding_level *b = current_binding_level;
+ struct binding_level *b = current_binding_level;
while (1)
{
if (purpose_member (name, b->type_shadowed))
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP,
- REAL_IDENTIFIER_TYPE_VALUE (name));
+ return REAL_IDENTIFIER_TYPE_VALUE (name);
if (b->keep == 2)
b = b->level_chain;
else
@@ -6709,7 +6325,7 @@ lookup_type_current_level (name)
}
}
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, t);
+ return t;
}
void
@@ -6750,7 +6366,7 @@ record_builtin_type (rid_index, name, type)
tdecl = pushdecl (build_decl (TYPE_DECL, tname, type));
set_identifier_type_value (tname, NULL_TREE);
if ((int) rid_index < (int) RID_MAX)
- /* Built-in types live in the global namespace. */
+ /* Built-in types live in the global namespace. */
SET_IDENTIFIER_GLOBAL_VALUE (tname, tdecl);
}
if (rname != NULL_TREE)
@@ -6782,12 +6398,12 @@ record_builtin_java_type (name, size)
if (size > 0)
type = make_signed_type (size);
else if (size > -32)
- { /* "__java_char" or ""__java_boolean". */
+ { /* "__java_char" or ""__java_boolean". */
type = make_unsigned_type (-size);
/*if (size == -1) TREE_SET_CODE (type, BOOLEAN_TYPE);*/
}
else
- { /* "__java_float" or ""__java_double". */
+ { /* "__java_float" or ""__java_double". */
type = make_node (REAL_TYPE);
TYPE_PRECISION (type) = - size;
layout_type (type);
@@ -6797,14 +6413,14 @@ record_builtin_java_type (name, size)
/* Suppress generate debug symbol entries for these types,
since for normal C++ they are just clutter.
- However, push_lang_context undoes this if extern "Java" is seen. */
+ However, push_lang_context undoes this if extern "Java" is seen. */
DECL_IGNORED_P (decl) = 1;
TYPE_FOR_JAVA (type) = 1;
return type;
}
-/* Push a type into the namespace so that the back-ends ignore it. */
+/* Push a type into the namespace so that the back-ends ignore it. */
static void
record_unknown_type (type, name)
@@ -6830,7 +6446,7 @@ typedef struct predefined_identifier
const char *const name;
/* The place where the IDENTIFIER_NODE should be stored. */
tree *const node;
- /* Nonzero if this is the name of a constructor or destructor. */
+ /* Non-zero if this is the name of a constructor or destructor. */
const int ctor_or_dtor_p;
} predefined_identifier;
@@ -6887,19 +6503,26 @@ cxx_init_decl_processing ()
initialize_predefined_identifiers ();
/* Fill in back-end hooks. */
+ init_lang_status = &push_cp_function_context;
+ free_lang_status = &pop_cp_function_context;
+ mark_lang_status = &mark_cp_function_context;
lang_missing_noreturn_ok_p = &cp_missing_noreturn_ok_p;
+ cp_parse_init ();
+ init_decl2 ();
+ init_pt ();
+
/* Create the global variables. */
push_to_top_level ();
- /* Enter the global namespace. */
+ /* Enter the global namespace. */
my_friendly_assert (global_namespace == NULL_TREE, 375);
push_namespace (get_identifier ("::"));
global_namespace = current_namespace;
current_lang_name = NULL_TREE;
/* Adjust various flags based on command-line settings. */
- if (!flag_permissive)
+ if (! flag_permissive && ! pedantic)
flag_pedantic_errors = 1;
if (!flag_no_inline)
{
@@ -6932,20 +6555,18 @@ cxx_init_decl_processing ()
/* Make the binding_level structure for global names. */
pushlevel (0);
- current_binding_level->type_decls = binding_table_new (GLOBAL_SCOPE_HT_SIZE);
+ global_binding_level = current_binding_level;
/* The global level is the namespace level of ::. */
- NAMESPACE_LEVEL (global_namespace) = current_binding_level;
+ NAMESPACE_LEVEL (global_namespace) = global_binding_level;
declare_namespace_level ();
- VARRAY_TREE_INIT (current_binding_level->static_decls,
- 200,
- "Static declarations");
-
/* Create the `std' namespace. */
push_namespace (std_identifier);
std_node = current_namespace;
pop_namespace ();
+ lang_attribute_table = cp_attribute_table;
+
c_common_nodes_and_builtins ();
java_byte_type_node = record_builtin_java_type ("__java_byte", 8);
@@ -6973,6 +6594,9 @@ cxx_init_decl_processing ()
boolean_true_node = build_int_2 (1, 0);
TREE_TYPE (boolean_true_node) = boolean_type_node;
+ signed_size_zero_node = build_int_2 (0, 0);
+ TREE_TYPE (signed_size_zero_node) = make_signed_type (TYPE_PRECISION (sizetype));
+
empty_except_spec = build_tree_list (NULL_TREE, NULL_TREE);
#if 0
@@ -6983,6 +6607,8 @@ cxx_init_decl_processing ()
vtable_index_type = ptrdiff_type_node;
vtt_parm_type = build_pointer_type (const_ptr_type_node);
+ lang_type_promotes_to = convert_type_from_ellipsis;
+
void_ftype = build_function_type (void_type_node, void_list_node);
void_ftype_ptr = build_function_type (void_type_node,
tree_cons (NULL_TREE,
@@ -7040,9 +6666,8 @@ cxx_init_decl_processing ()
tree ptr_ftype_sizetype;
push_namespace (std_identifier);
- bad_alloc_type_node
- = xref_tag (class_type, get_identifier ("bad_alloc"),
- /*attributes=*/NULL_TREE, 1);
+ bad_alloc_type_node = xref_tag
+ (class_type_node, get_identifier ("bad_alloc"), 1);
pop_namespace ();
ptr_ftype_sizetype
= build_function_type (ptr_type_node,
@@ -7064,6 +6689,7 @@ cxx_init_decl_processing ()
/* Perform other language dependent initializations. */
init_class_processing ();
+ init_init_processing ();
init_search_processing ();
init_rtti_processing ();
@@ -7083,11 +6709,41 @@ cxx_init_decl_processing ()
say -fwritable-strings? */
if (flag_writable_strings)
flag_const_strings = 0;
+
+ /* Add GC roots for all of our global variables. */
+ ggc_add_tree_root (c_global_trees, sizeof c_global_trees / sizeof(tree));
+ ggc_add_tree_root (cp_global_trees, sizeof cp_global_trees / sizeof(tree));
+ ggc_add_tree_root (&integer_three_node, 1);
+ ggc_add_tree_root (&integer_two_node, 1);
+ ggc_add_tree_root (&signed_size_zero_node, 1);
+ ggc_add_tree_root (&size_one_node, 1);
+ ggc_add_tree_root (&size_zero_node, 1);
+ ggc_add_root (&global_binding_level, 1, sizeof global_binding_level,
+ mark_binding_level);
+ ggc_add_root (&scope_chain, 1, sizeof scope_chain, &mark_saved_scope);
+ ggc_add_tree_root (&static_ctors, 1);
+ ggc_add_tree_root (&static_dtors, 1);
+ ggc_add_tree_root (&lastiddecl, 1);
+
+ ggc_add_tree_root (&last_function_parms, 1);
+ ggc_add_tree_root (&error_mark_list, 1);
+
+ ggc_add_tree_root (&global_namespace, 1);
+ ggc_add_tree_root (&global_type_node, 1);
+ ggc_add_tree_root (&anonymous_namespace_name, 1);
+
+ ggc_add_tree_root (&got_object, 1);
+ ggc_add_tree_root (&got_scope, 1);
+
+ ggc_add_tree_root (&current_lang_name, 1);
+ ggc_add_tree_root (&static_aggregates, 1);
+ ggc_add_tree_root (&free_bindings, 1);
+ ggc_add_tree_root (&incomplete_vars, 1);
}
/* Generate an initializer for a function naming variable from
NAME. NAME may be NULL, in which case we generate a special
- ERROR_MARK node which should be replaced later. */
+ ERROR_MARK node which should be replaced later. */
tree
cp_fname_init (name)
@@ -7112,7 +6768,7 @@ cp_fname_init (name)
TREE_TYPE (init) = type;
else
/* We don't know the value until instantiation time. Make
- something which will be digested now, but replaced later. */
+ something which will be digested now, but replaced later. */
init = build (ERROR_MARK, type);
return init;
@@ -7134,7 +6790,7 @@ cp_make_fname_decl (id, type_dep)
tree init = cp_fname_init (name);
tree decl = build_decl (VAR_DECL, id, TREE_TYPE (init));
- /* As we don't push the decl here, we must set the context. */
+ /* As we don't push the decl here, we must set the context. */
DECL_CONTEXT (decl) = current_function_decl;
DECL_PRETTY_FUNCTION_P (decl) = type_dep;
@@ -7158,25 +6814,26 @@ cp_make_fname_decl (id, type_dep)
See tree.h for possible values.
If LIBNAME is nonzero, use that for DECL_ASSEMBLER_NAME,
- the name to be called if we can't opencode the function.
- If ATTRS is nonzero, use that for the function's attribute
- list. */
+ the name to be called if we can't opencode the function. */
static tree
-builtin_function_1 (name, type, context, code, class, libname, attrs)
+builtin_function_1 (name, type, context, code, class, libname)
const char *name;
tree type;
tree context;
int code;
enum built_in_class class;
const char *libname;
- tree attrs;
{
tree decl = build_library_fn_1 (get_identifier (name), ERROR_MARK, type);
DECL_BUILT_IN_CLASS (decl) = class;
DECL_FUNCTION_CODE (decl) = code;
DECL_CONTEXT (decl) = context;
+ /* The return builtins leave the current function. */
+ if (code == BUILT_IN_RETURN || code == BUILT_IN_EH_RETURN)
+ TREE_THIS_VOLATILE (decl) = 1;
+
pushdecl (decl);
/* Since `pushdecl' relies on DECL_ASSEMBLER_NAME instead of DECL_NAME,
@@ -7192,10 +6849,7 @@ builtin_function_1 (name, type, context, code, class, libname, attrs)
DECL_ANTICIPATED (decl) = 1;
/* Possibly apply some default attributes to this built-in function. */
- if (attrs)
- decl_attributes (&decl, attrs, ATTR_FLAG_BUILT_IN);
- else
- decl_attributes (&decl, NULL_TREE, 0);
+ decl_attributes (&decl, NULL_TREE, 0);
return decl;
}
@@ -7211,31 +6865,26 @@ builtin_function_1 (name, type, context, code, class, libname, attrs)
See tree.h for possible values.
If LIBNAME is nonzero, use that for DECL_ASSEMBLER_NAME,
- the name to be called if we can't opencode the function.
-
- If ATTRS is nonzero, use that for the function's attribute
- list. */
+ the name to be called if we can't opencode the function. */
tree
-builtin_function (name, type, code, class, libname, attrs)
+builtin_function (name, type, code, class, libname)
const char *name;
tree type;
int code;
enum built_in_class class;
const char *libname;
- tree attrs;
{
/* All builtins that don't begin with an '_' should additionally
go in the 'std' namespace. */
if (name[0] != '_')
{
push_namespace (std_identifier);
- builtin_function_1 (name, type, std_node, code, class, libname, attrs);
+ builtin_function_1 (name, type, std_node, code, class, libname);
pop_namespace ();
}
- return builtin_function_1 (name, type, NULL_TREE, code,
- class, libname, attrs);
+ return builtin_function_1 (name, type, NULL_TREE, code, class, libname);
}
/* Generate a FUNCTION_DECL with the typical flags for a runtime library
@@ -7362,7 +7011,7 @@ push_throw_library_fn (name, type)
attributes. */
void
-cxx_insert_default_attributes (decl)
+insert_default_attributes (decl)
tree decl;
{
if (!DECL_EXTERN_C_FUNCTION_P (decl))
@@ -7500,8 +7149,7 @@ check_tag_decl (declspecs)
|| value == ridpointers[(int) RID_VIRTUAL]
|| value == ridpointers[(int) RID_CONST]
|| value == ridpointers[(int) RID_VOLATILE]
- || value == ridpointers[(int) RID_EXPLICIT]
- || value == ridpointers[(int) RID_THREAD])
+ || value == ridpointers[(int) RID_EXPLICIT])
ob_modifier = value;
}
@@ -7641,6 +7289,8 @@ start_decl (declarator, declspecs, initialized, attributes, prefix_attributes)
tree decl;
register tree type, tem;
tree context;
+ extern int have_extern_spec;
+ extern int used_extern_spec;
#if 0
/* See code below that used this. */
@@ -7648,11 +7298,11 @@ start_decl (declarator, declspecs, initialized, attributes, prefix_attributes)
#endif
/* This should only be done once on the top most decl. */
- if (have_extern_spec)
+ if (have_extern_spec && !used_extern_spec)
{
declspecs = tree_cons (NULL_TREE, get_identifier ("extern"),
declspecs);
- have_extern_spec = false;
+ used_extern_spec = 1;
}
/* An object declared as __attribute__((deprecated)) suppresses
@@ -7681,11 +7331,11 @@ start_decl (declarator, declspecs, initialized, attributes, prefix_attributes)
&& context != current_namespace && TREE_CODE (decl) == VAR_DECL)
{
/* When parsing the initializer, lookup should use the object's
- namespace. */
+ namespace. */
push_decl_namespace (context);
}
- /* We are only interested in class contexts, later. */
+ /* We are only interested in class contexts, later. */
if (context && TREE_CODE (context) == NAMESPACE_DECL)
context = NULL_TREE;
@@ -7729,7 +7379,7 @@ start_decl (declarator, declspecs, initialized, attributes, prefix_attributes)
cplus_decl_attributes (&decl, attributes, 0);
/* If #pragma weak was used, mark the decl weak now. */
- if (global_scope_p (current_binding_level))
+ if (current_binding_level == global_binding_level)
maybe_apply_pragma_weak (decl);
if (TREE_CODE (decl) == FUNCTION_DECL
@@ -7808,9 +7458,7 @@ start_decl (declarator, declspecs, initialized, attributes, prefix_attributes)
wrong semantics. If we say -fno-conserve-space, we want this to
produce errors about redefs; to do this we force variables into the
data segment. */
- DECL_COMMON (tem) = ((TREE_CODE (tem) != VAR_DECL
- || !DECL_THREAD_LOCAL (tem))
- && (flag_conserve_space || ! TREE_PUBLIC (tem)));
+ DECL_COMMON (tem) = flag_conserve_space || ! TREE_PUBLIC (tem);
#endif
if (! processing_template_decl)
@@ -7938,7 +7586,10 @@ grok_reference_init (decl, type, init)
DECL_INITIAL for local references (instead assigning to them
explicitly); we need to allow the temporary to be initialized
first. */
- tmp = initialize_reference (type, init, decl);
+ tmp = convert_to_reference
+ (type, init, CONV_IMPLICIT,
+ LOOKUP_ONLYCONVERTING|LOOKUP_SPECULATIVELY|LOOKUP_NORMAL|DIRECT_BIND,
+ decl);
if (tmp == error_mark_node)
return NULL_TREE;
@@ -7956,6 +7607,39 @@ grok_reference_init (decl, type, init)
return NULL_TREE;
}
+/* Fill in DECL_INITIAL with some magical value to prevent expand_decl from
+ mucking with forces it does not comprehend (i.e. initialization with a
+ constructor). If we are at global scope and won't go into COMMON, fill
+ it in with a dummy CONSTRUCTOR to force the variable into .data;
+ otherwise we can use error_mark_node. */
+
+static tree
+obscure_complex_init (decl, init)
+ tree decl, init;
+{
+ if (! flag_no_inline && TREE_STATIC (decl))
+ {
+ if (extract_init (decl, init))
+ return NULL_TREE;
+ }
+
+#if ! defined (ASM_OUTPUT_BSS) && ! defined (ASM_OUTPUT_ALIGNED_BSS)
+ if (toplevel_bindings_p () && ! DECL_COMMON (decl))
+ DECL_INITIAL (decl) = build (CONSTRUCTOR, TREE_TYPE (decl), NULL_TREE,
+ NULL_TREE);
+ else
+#endif
+ {
+ if (zero_init_p (TREE_TYPE (decl)))
+ DECL_INITIAL (decl) = error_mark_node;
+ /* Otherwise, force_store_init_value will have already stored a
+ zero-init initializer in DECL_INITIAL, that should be
+ retained. */
+ }
+
+ return init;
+}
+
/* When parsing `int a[] = {1, 2};' we don't know the size of the
array until we finish parsing the initializer. If that's the
situation we're in, update DECL accordingly. */
@@ -8016,16 +7700,11 @@ layout_var_decl (decl)
/* If we haven't already layed out this declaration, do so now.
Note that we must not call complete type for an external object
because it's type might involve templates that we are not
- supposed to isntantiate yet. (And it's perfectly valid to say
+ supposed to isntantiate yet. (And it's perfectly legal to say
`extern X x' for some incomplete type `X'.) */
if (!DECL_EXTERNAL (decl))
complete_type (type);
- if (!DECL_SIZE (decl)
- && TREE_TYPE (decl) != error_mark_node
- && (COMPLETE_TYPE_P (type)
- || (TREE_CODE (type) == ARRAY_TYPE
- && !TYPE_DOMAIN (type)
- && COMPLETE_TYPE_P (TREE_TYPE (type)))))
+ if (!DECL_SIZE (decl) && COMPLETE_TYPE_P (type))
layout_decl (decl, 0);
if (!DECL_EXTERNAL (decl) && DECL_SIZE (decl) == NULL_TREE)
@@ -8078,43 +7757,40 @@ maybe_commonize_var (decl)
if (TREE_STATIC (decl)
/* Don't mess with __FUNCTION__. */
&& ! DECL_ARTIFICIAL (decl)
- && DECL_FUNCTION_SCOPE_P (decl)
- /* Unfortunately, import_export_decl has not always been called
- before the function is processed, so we cannot simply check
- DECL_COMDAT. */
- && (DECL_COMDAT (DECL_CONTEXT (decl))
- || ((DECL_DECLARED_INLINE_P (DECL_CONTEXT (decl))
- || DECL_TEMPLATE_INSTANTIATION (DECL_CONTEXT (decl)))
- && TREE_PUBLIC (DECL_CONTEXT (decl)))))
- {
- if (flag_weak)
- {
- /* With weak symbols, we simply make the variable COMDAT;
- that will cause copies in multiple translations units to
- be merged. */
- comdat_linkage (decl);
- }
- else
- {
- if (DECL_INITIAL (decl) == NULL_TREE
- || DECL_INITIAL (decl) == error_mark_node)
+ && current_function_decl
+ && DECL_CONTEXT (decl) == current_function_decl
+ && (DECL_DECLARED_INLINE_P (current_function_decl)
+ || DECL_TEMPLATE_INSTANTIATION (current_function_decl))
+ && TREE_PUBLIC (current_function_decl))
+ {
+ /* If flag_weak, we don't need to mess with this, as we can just
+ make the function weak, and let it refer to its unique local
+ copy. This works because we don't allow the function to be
+ inlined. */
+ if (! flag_weak)
+ {
+ if (DECL_INTERFACE_KNOWN (current_function_decl))
+ {
+ TREE_PUBLIC (decl) = 1;
+ DECL_EXTERNAL (decl) = DECL_EXTERNAL (current_function_decl);
+ }
+ else if (DECL_INITIAL (decl) == NULL_TREE
+ || DECL_INITIAL (decl) == error_mark_node)
{
- /* Without weak symbols, we can use COMMON to merge
- uninitialized variables. */
TREE_PUBLIC (decl) = 1;
DECL_COMMON (decl) = 1;
}
- else
+ /* else we lose. We can only do this if we can use common,
+ which we can't if it has been initialized. */
+
+ if (!TREE_PUBLIC (decl))
{
- /* While for initialized variables, we must use internal
- linkage -- which means that multiple copies will not
- be merged. */
- TREE_PUBLIC (decl) = 0;
- DECL_COMMON (decl) = 0;
cp_warning_at ("sorry: semantics of inline function static data `%#D' are wrong (you'll wind up with multiple copies)", decl);
cp_warning_at (" you can work around this by removing the initializer", decl);
}
}
+ else
+ comdat_linkage (decl);
}
else if (DECL_LANG_SPECIFIC (decl) && DECL_COMDAT (decl))
/* Set it up again; we might have set DECL_INITIAL since the last
@@ -8141,277 +7817,53 @@ check_for_uninitialized_const_var (decl)
error ("uninitialized const `%D'", decl);
}
-/* FIELD is a FIELD_DECL or NULL. In the former case, the value
- returned is the next FIELD_DECL (possibly FIELD itself) that can be
- initialized. If there are no more such fields, the return value
- will be NULL. */
-
-static tree
-next_initializable_field (tree field)
-{
- while (field
- && (TREE_CODE (field) != FIELD_DECL
- || (DECL_C_BIT_FIELD (field) && !DECL_NAME (field))
- || DECL_ARTIFICIAL (field)))
- field = TREE_CHAIN (field);
-
- return field;
-}
-
-/* Undo the brace-elision allowed by [dcl.init.aggr] in a
- brace-enclosed aggregate initializer.
-
- *INITP is one of a list of initializers describing a brace-enclosed
- initializer for an entity of the indicated aggregate TYPE. It may
- not presently match the shape of the TYPE; for example:
-
- struct S { int a; int b; };
- struct S a[] = { 1, 2, 3, 4 };
-
- Here *INITP will point to TREE_LIST of four elements, rather than a
- list of two elements, each itself a list of two elements. This
- routine transforms INIT from the former form into the latter. The
- revised initializer is returned. */
+/* Verify INIT (the initializer for DECL), and record the
+ initialization in DECL_INITIAL, if appropriate. Returns a new
+ value for INIT. */
static tree
-reshape_init (tree type, tree *initp)
+check_initializer (decl, init)
+ tree decl;
+ tree init;
{
- tree inits;
- tree old_init;
- tree old_init_value;
- tree new_init;
- bool brace_enclosed_p;
-
- old_init = *initp;
- old_init_value = (TREE_CODE (*initp) == TREE_LIST
- ? TREE_VALUE (*initp) : old_init);
-
- /* For some parse errors, OLD_INIT_VALUE may be NULL. */
- if (!old_init_value)
- {
- my_friendly_assert (TREE_CODE (old_init) == TREE_LIST, 20021202);
- TREE_VALUE (old_init) = error_mark_node;
- return old_init;
- }
-
- /* If the initializer is brace-enclosed, pull initializers from the
- enclosed elements. Advance past the brace-enclosed initializer
- now. */
- if (TREE_CODE (old_init_value) == CONSTRUCTOR
- && TREE_HAS_CONSTRUCTOR (old_init_value))
- {
- *initp = TREE_CHAIN (old_init);
- TREE_CHAIN (old_init) = NULL_TREE;
- inits = CONSTRUCTOR_ELTS (old_init_value);
- initp = &inits;
- brace_enclosed_p = true;
- }
- else
- {
- inits = NULL_TREE;
- brace_enclosed_p = false;
- }
-
- /* A non-aggregate type is always initialized with a single
- initializer. */
- if (!CP_AGGREGATE_TYPE_P (type))
- {
- *initp = TREE_CHAIN (old_init);
- TREE_CHAIN (old_init) = NULL_TREE;
- /* It is invalid to initialize a non-aggregate type with a
- brace-enclosed initializer. */
- if (brace_enclosed_p)
- {
- error ("brace-enclosed initializer used to initialize `%T'",
- type);
- if (TREE_CODE (old_init) == TREE_LIST)
- TREE_VALUE (old_init) = error_mark_node;
- else
- old_init = error_mark_node;
- }
-
- return old_init;
- }
+ tree type;
- /* [dcl.init.aggr]
+ if (TREE_CODE (decl) == FIELD_DECL)
+ return init;
- All implicit type conversions (clause _conv_) are considered when
- initializing the aggregate member with an initializer from an
- initializer-list. If the initializer can initialize a member,
- the member is initialized. Otherwise, if the member is itself a
- non-empty subaggregate, brace elision is assumed and the
- initializer is considered for the initialization of the first
- member of the subaggregate. */
- if (CLASS_TYPE_P (type)
- && !brace_enclosed_p
- && can_convert_arg (type, TREE_TYPE (old_init_value), old_init_value))
- {
- *initp = TREE_CHAIN (old_init);
- TREE_CHAIN (old_init) = NULL_TREE;
- return old_init;
- }
+ type = TREE_TYPE (decl);
- if (TREE_CODE (old_init_value) == STRING_CST
- && TREE_CODE (type) == ARRAY_TYPE
- && char_type_p (TYPE_MAIN_VARIANT (TREE_TYPE (type))))
- {
- /* [dcl.init.string]
+ /* If `start_decl' didn't like having an initialization, ignore it now. */
+ if (init != NULL_TREE && DECL_INITIAL (decl) == NULL_TREE)
+ init = NULL_TREE;
- A char array (whether plain char, signed char, or unsigned char)
- can be initialized by a string-literal (optionally enclosed in
- braces); a wchar_t array can be initialized by a wide
- string-literal (optionally enclosed in braces). */
- new_init = old_init;
- /* Move past the initializer. */
- *initp = TREE_CHAIN (old_init);
- TREE_CHAIN (old_init) = NULL_TREE;
- }
- else
+ /* Check the initializer. */
+ if (init)
{
- /* Build a CONSTRUCTOR to hold the contents of the aggregate. */
- new_init = build (CONSTRUCTOR, type, NULL_TREE, NULL_TREE);
- TREE_HAS_CONSTRUCTOR (new_init) = 1;
+ /* Things that are going to be initialized need to have complete
+ type. */
+ TREE_TYPE (decl) = type = complete_type (TREE_TYPE (decl));
- if (CLASS_TYPE_P (type))
+ if (type == error_mark_node)
+ /* We will have already complained. */
+ init = NULL_TREE;
+ else if (COMPLETE_TYPE_P (type) && !TREE_CONSTANT (TYPE_SIZE (type)))
{
- tree field;
-
- field = next_initializable_field (TYPE_FIELDS (type));
-
- if (!field)
- {
- /* [dcl.init.aggr]
-
- An initializer for an aggregate member that is an
- empty class shall have the form of an empty
- initializer-list {}. */
- if (!brace_enclosed_p)
- error ("initializer for `%T' must be brace-enclosed",
- type);
- }
- else
- {
- /* Loop through the initializable fields, gathering
- initializers. */
- while (*initp)
- {
- tree field_init;
-
- /* Handle designated initializers, as an extension. */
- if (TREE_PURPOSE (*initp))
- {
- if (pedantic)
- pedwarn ("ISO C++ does not allow designated initializers");
- field = lookup_field_1 (type, TREE_PURPOSE (*initp),
- /*want_type=*/false);
- if (!field || TREE_CODE (field) != FIELD_DECL)
- error ("`%T' has no non-static data member named `%D'",
- type, TREE_PURPOSE (*initp));
- }
- if (!field)
- break;
-
- field_init = reshape_init (TREE_TYPE (field), initp);
- TREE_CHAIN (field_init) = CONSTRUCTOR_ELTS (new_init);
- CONSTRUCTOR_ELTS (new_init) = field_init;
- /* [dcl.init.aggr]
-
- When a union is initialized with a brace-enclosed
- initializer, the braces shall only contain an
- initializer for the first member of the union. */
- if (TREE_CODE (type) == UNION_TYPE)
- break;
- field = next_initializable_field (TREE_CHAIN (field));
- }
- }
+ error ("variable-sized object `%D' may not be initialized", decl);
+ init = NULL_TREE;
}
- else if (TREE_CODE (type) == ARRAY_TYPE)
+ else if (TREE_CODE (type) == ARRAY_TYPE
+ && !COMPLETE_TYPE_P (complete_type (TREE_TYPE (type))))
{
- tree index;
- tree max_index;
-
- /* If the bound of the array is known, take no more initializers
- than are allowed. */
- max_index = (TYPE_DOMAIN (type)
- ? array_type_nelts (type) : NULL_TREE);
- /* Loop through the array elements, gathering initializers. */
- for (index = size_zero_node;
- *initp && (!max_index || !tree_int_cst_lt (max_index, index));
- index = size_binop (PLUS_EXPR, index, size_one_node))
- {
- tree element_init;
-
- element_init = reshape_init (TREE_TYPE (type), initp);
- TREE_CHAIN (element_init) = CONSTRUCTOR_ELTS (new_init);
- CONSTRUCTOR_ELTS (new_init) = element_init;
- if (TREE_PURPOSE (element_init))
- index = TREE_PURPOSE (element_init);
- }
+ error ("elements of array `%#D' have incomplete type", decl);
+ init = NULL_TREE;
+ }
+ else if (TREE_CODE (type) != ARRAY_TYPE && !COMPLETE_TYPE_P (type))
+ {
+ error ("`%D' has incomplete type", decl);
+ TREE_TYPE (decl) = error_mark_node;
+ init = NULL_TREE;
}
- else
- abort ();
-
- /* The initializers were placed in reverse order in the
- CONSTRUCTOR. */
- CONSTRUCTOR_ELTS (new_init) = nreverse (CONSTRUCTOR_ELTS (new_init));
-
- if (TREE_CODE (old_init) == TREE_LIST)
- new_init = build_tree_list (TREE_PURPOSE (old_init), new_init);
- }
-
- /* If this was a brace-enclosed initializer and all of the
- initializers were not used up, there is a problem. */
- if (brace_enclosed_p && *initp)
- error ("too many initializers for `%T'", type);
-
- return new_init;
-}
-
-/* Verify INIT (the initializer for DECL), and record the
- initialization in DECL_INITIAL, if appropriate.
-
- If the return value is non-NULL, it is an expression that must be
- evaluated dynamically to initialize DECL. */
-
-static tree
-check_initializer (tree decl, tree init, int flags)
-{
- tree type = TREE_TYPE (decl);
-
- /* If `start_decl' didn't like having an initialization, ignore it now. */
- if (init != NULL_TREE && DECL_INITIAL (decl) == NULL_TREE)
- init = NULL_TREE;
-
- /* If an initializer is present, DECL_INITIAL has been
- error_mark_node, to indicate that an as-of-yet unevaluated
- initialization will occur. From now on, DECL_INITIAL reflects
- the static initialization -- if any -- of DECL. */
- DECL_INITIAL (decl) = NULL_TREE;
-
- /* Things that are going to be initialized need to have complete
- type. */
- TREE_TYPE (decl) = type = complete_type (TREE_TYPE (decl));
-
- if (type == error_mark_node)
- /* We will have already complained. */
- init = NULL_TREE;
- else if (init && COMPLETE_TYPE_P (type)
- && !TREE_CONSTANT (TYPE_SIZE (type)))
- {
- error ("variable-sized object `%D' may not be initialized", decl);
- init = NULL_TREE;
- }
- else if (TREE_CODE (type) == ARRAY_TYPE
- && !COMPLETE_TYPE_P (complete_type (TREE_TYPE (type))))
- {
- error ("elements of array `%#D' have incomplete type", decl);
- init = NULL_TREE;
- }
- else if (TREE_CODE (type) != ARRAY_TYPE && !COMPLETE_TYPE_P (type))
- {
- error ("`%D' has incomplete type", decl);
- TREE_TYPE (decl) = error_mark_node;
- init = NULL_TREE;
}
if (TREE_CODE (decl) == CONST_DECL)
@@ -8424,64 +7876,37 @@ check_initializer (tree decl, tree init, int flags)
init = NULL_TREE;
}
else if (!DECL_EXTERNAL (decl) && TREE_CODE (type) == REFERENCE_TYPE)
- init = grok_reference_init (decl, type, init);
- else if (init)
{
- if (TREE_CODE (init) == CONSTRUCTOR && TREE_HAS_CONSTRUCTOR (init))
- {
- /* [dcl.init] paragraph 13,
- If T is a scalar type, then a declaration of the form
- T x = { a };
- is equivalent to
- T x = a;
-
- reshape_init will complain about the extra braces,
- and doesn't do anything useful in the case where TYPE is
- scalar, so just don't call it. */
- if (CP_AGGREGATE_TYPE_P (type))
- init = reshape_init (type, &init);
- }
-
- /* If DECL has an array type without a specific bound, deduce the
- array size from the initializer. */
- maybe_deduce_size_from_array_init (decl, init);
- type = TREE_TYPE (decl);
- if (TREE_CODE (init) == CONSTRUCTOR && TREE_HAS_CONSTRUCTOR (init))
- TREE_TYPE (init) = type;
+ init = grok_reference_init (decl, type, init);
+ if (init)
+ init = obscure_complex_init (decl, init);
+ }
+ else if (!DECL_EXTERNAL (decl) && !zero_init_p (type))
+ {
+ force_store_init_value (decl, build_forced_zero_init (type));
+ if (init)
+ goto process_init;
+ }
+ else if (init)
+ {
+ process_init:
if (TYPE_HAS_CONSTRUCTOR (type) || TYPE_NEEDS_CONSTRUCTING (type))
{
if (TREE_CODE (type) == ARRAY_TYPE)
- goto initialize_aggr;
+ init = digest_init (type, init, (tree *) 0);
else if (TREE_CODE (init) == CONSTRUCTOR
&& TREE_HAS_CONSTRUCTOR (init))
{
if (TYPE_NON_AGGREGATE_CLASS (type))
{
error ("`%D' must be initialized by constructor, not by `{...}'",
- decl);
+ decl);
init = error_mark_node;
}
else
goto dont_use_constructor;
}
- else
- {
- int saved_stmts_are_full_exprs_p;
-
- initialize_aggr:
- saved_stmts_are_full_exprs_p = 0;
- if (building_stmt_tree ())
- {
- saved_stmts_are_full_exprs_p = stmts_are_full_exprs_p ();
- current_stmt_tree ()->stmts_are_full_exprs_p = 1;
- }
- init = build_aggr_init (decl, init, flags);
- if (building_stmt_tree ())
- current_stmt_tree ()->stmts_are_full_exprs_p =
- saved_stmts_are_full_exprs_p;
- return init;
- }
}
else
{
@@ -8489,29 +7914,37 @@ check_initializer (tree decl, tree init, int flags)
if (TREE_CODE (init) != TREE_VEC)
init = store_init_value (decl, init);
}
+
+ if (init)
+ /* We must hide the initializer so that expand_decl
+ won't try to do something it does not understand. */
+ init = obscure_complex_init (decl, init);
}
else if (DECL_EXTERNAL (decl))
;
- else if (TYPE_P (type) && TYPE_NEEDS_CONSTRUCTING (type))
- goto initialize_aggr;
- else if (IS_AGGR_TYPE (type))
+ else if (TYPE_P (type)
+ && (IS_AGGR_TYPE (type) || TYPE_NEEDS_CONSTRUCTING (type)))
{
tree core_type = strip_array_types (type);
- if (CLASSTYPE_READONLY_FIELDS_NEED_INIT (core_type))
- error ("structure `%D' with uninitialized const members", decl);
- if (CLASSTYPE_REF_FIELDS_NEED_INIT (core_type))
- error ("structure `%D' with uninitialized reference members",
- decl);
+ if (! TYPE_NEEDS_CONSTRUCTING (core_type))
+ {
+ if (CLASSTYPE_READONLY_FIELDS_NEED_INIT (core_type))
+ error ("structure `%D' with uninitialized const members", decl);
+ if (CLASSTYPE_REF_FIELDS_NEED_INIT (core_type))
+ error ("structure `%D' with uninitialized reference members",
+ decl);
+ }
check_for_uninitialized_const_var (decl);
+
+ if (COMPLETE_TYPE_P (type) && TYPE_NEEDS_CONSTRUCTING (type))
+ init = obscure_complex_init (decl, NULL_TREE);
+
}
else
check_for_uninitialized_const_var (decl);
- if (init && init != error_mark_node)
- init = build (INIT_EXPR, type, decl, init);
-
return init;
}
@@ -8609,20 +8042,18 @@ void
maybe_inject_for_scope_var (decl)
tree decl;
{
- timevar_push (TV_NAME_LOOKUP);
-
if (!DECL_NAME (decl))
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, (void)0);
+ return;
/* Declarations of __FUNCTION__ and its ilk appear magically when
the variable is first used. If that happens to be inside a
for-loop, we don't want to do anything special. */
if (DECL_PRETTY_FUNCTION_P (decl))
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, (void)0);
+ return;
if (current_binding_level->is_for_scope)
{
- struct cp_binding_level *outer
+ struct binding_level *outer
= current_binding_level->level_chain;
/* Check to see if the same name is already bound at the outer
@@ -8634,8 +8065,8 @@ maybe_inject_for_scope_var (decl)
Otherwise, we need to preserve the temp slot for decl to last
into the outer binding level. */
- cxx_binding *outer_binding
- = IDENTIFIER_BINDING (DECL_NAME (decl))->previous;
+ tree outer_binding
+ = TREE_CHAIN (IDENTIFIER_BINDING (DECL_NAME (decl)));
if (outer_binding && BINDING_LEVEL (outer_binding) == outer
&& (TREE_CODE (BINDING_VALUE (outer_binding))
@@ -8649,32 +8080,39 @@ maybe_inject_for_scope_var (decl)
else if (DECL_IN_MEMORY_P (decl))
preserve_temp_slots (DECL_RTL (decl));
}
-
- timevar_pop (TV_NAME_LOOKUP);
}
/* Generate code to initialize DECL (a local variable). */
-static void
-initialize_local_var (decl, init)
+void
+initialize_local_var (decl, init, flags)
tree decl;
tree init;
+ int flags;
{
tree type = TREE_TYPE (decl);
- tree cleanup;
- my_friendly_assert (TREE_CODE (decl) == VAR_DECL
- || TREE_CODE (decl) == RESULT_DECL,
- 20021010);
- my_friendly_assert (!TREE_STATIC (decl), 20021010);
+ /* If the type is bogus, don't bother initializing the variable. */
+ if (type == error_mark_node)
+ return;
- if (DECL_SIZE (decl) == NULL_TREE)
+ if (DECL_SIZE (decl) == NULL_TREE && !TREE_STATIC (decl))
{
/* If we used it already as memory, it must stay in memory. */
DECL_INITIAL (decl) = NULL_TREE;
TREE_ADDRESSABLE (decl) = TREE_USED (decl);
}
+ /* Local statics are handled differently from ordinary automatic
+ variables. */
+ if (TREE_STATIC (decl))
+ {
+ if (TYPE_NEEDS_CONSTRUCTING (type) || init != NULL_TREE
+ || TYPE_HAS_NONTRIVIAL_DESTRUCTOR (type))
+ expand_static_init (decl, init);
+ return;
+ }
+
if (DECL_SIZE (decl) && type != error_mark_node)
{
int already_used;
@@ -8682,15 +8120,14 @@ initialize_local_var (decl, init)
/* Compute and store the initial value. */
already_used = TREE_USED (decl) || TREE_USED (type);
- /* Perform the initialization. */
- if (init)
+ if (init || TYPE_NEEDS_CONSTRUCTING (type))
{
int saved_stmts_are_full_exprs_p;
my_friendly_assert (building_stmt_tree (), 20000906);
saved_stmts_are_full_exprs_p = stmts_are_full_exprs_p ();
current_stmt_tree ()->stmts_are_full_exprs_p = 1;
- finish_expr_stmt (init);
+ finish_expr_stmt (build_aggr_init (decl, init, flags));
current_stmt_tree ()->stmts_are_full_exprs_p =
saved_stmts_are_full_exprs_p;
}
@@ -8709,9 +8146,37 @@ initialize_local_var (decl, init)
else if (already_used)
TREE_USED (decl) = 1;
}
+}
+
+/* Generate code to destroy DECL (a local variable). */
+
+static void
+destroy_local_var (decl)
+ tree decl;
+{
+ tree type = TREE_TYPE (decl);
+ tree cleanup;
+
+ /* Only variables get cleaned up. */
+ if (TREE_CODE (decl) != VAR_DECL)
+ return;
+
+ /* And only things with destructors need cleaning up. */
+ if (type == error_mark_node
+ || TYPE_HAS_TRIVIAL_DESTRUCTOR (type))
+ return;
+
+ if (TREE_CODE (decl) == VAR_DECL &&
+ (DECL_EXTERNAL (decl) || TREE_STATIC (decl)))
+ /* We don't clean up things that aren't defined in this
+ translation unit, or that need a static cleanup. The latter
+ are handled by finish_file. */
+ return;
- /* Generate a cleanup, if necessary. */
- cleanup = cxx_maybe_build_cleanup (decl);
+ /* Compute the cleanup. */
+ cleanup = maybe_build_cleanup (decl);
+
+ /* Record the cleanup required for this declaration. */
if (DECL_SIZE (decl) && cleanup)
finish_decl_cleanup (decl, cleanup);
}
@@ -8746,7 +8211,7 @@ cp_finish_decl (decl, init, asmspec_tree, flags)
}
/* If a name was specified, get the string. */
- if (global_scope_p (current_binding_level))
+ if (current_binding_level == global_binding_level)
asmspec_tree = maybe_apply_renaming_pragma (decl, asmspec_tree);
if (asmspec_tree)
asmspec = TREE_STRING_POINTER (asmspec_tree);
@@ -8770,7 +8235,7 @@ cp_finish_decl (decl, init, asmspec_tree, flags)
&& DECL_CONTEXT (decl) != current_namespace
&& init)
{
- /* Leave the namespace of the object. */
+ /* Leave the namespace of the object. */
pop_decl_namespace ();
}
@@ -8825,8 +8290,7 @@ cp_finish_decl (decl, init, asmspec_tree, flags)
ttype = target_type (type);
if (! DECL_EXTERNAL (decl) && TREE_READONLY (decl)
- && (TYPE_NEEDS_CONSTRUCTING (type)
- || TREE_CODE (type) == REFERENCE_TYPE))
+ && TYPE_NEEDS_CONSTRUCTING (type))
{
/* Currently, GNU C++ puts constants in text space, making them
impossible to initialize. In the future, one would hope for
@@ -8844,59 +8308,10 @@ cp_finish_decl (decl, init, asmspec_tree, flags)
SET_DECL_ASSEMBLER_NAME (decl, get_identifier (asmspec));
make_decl_rtl (decl, asmspec);
}
- else if (TREE_CODE (decl) == RESULT_DECL)
- init = check_initializer (decl, init, flags);
- else if (TREE_CODE (decl) == VAR_DECL)
- {
- /* Only PODs can have thread-local storage. Other types may require
- various kinds of non-trivial initialization. */
- if (DECL_THREAD_LOCAL (decl) && !pod_type_p (TREE_TYPE (decl)))
- error ("`%D' cannot be thread-local because it has non-POD type `%T'",
- decl, TREE_TYPE (decl));
- /* Convert the initializer to the type of DECL, if we have not
- already initialized DECL. */
- if (!DECL_INITIALIZED_P (decl)
- /* If !DECL_EXTERNAL then DECL is being defined. In the
- case of a static data member initialized inside the
- class-specifier, there can be an initializer even if DECL
- is *not* defined. */
- && (!DECL_EXTERNAL (decl) || init))
- {
- init = check_initializer (decl, init, flags);
- /* Thread-local storage cannot be dynamically initialized. */
- if (DECL_THREAD_LOCAL (decl) && init)
- {
- error ("`%D' is thread-local and so cannot be dynamically "
- "initialized", decl);
- init = NULL_TREE;
- }
- /* Handle:
-
- [dcl.init]
-
- The memory occupied by any object of static storage
- duration is zero-initialized at program startup before
- any other initialization takes place.
-
- We cannot create an appropriate initializer until after
- the type of DECL is finalized. If DECL_INITIAL is set,
- then the DECL is statically initialized, and any
- necessary zero-initialization has already been performed. */
- if (TREE_STATIC (decl) && !DECL_INITIAL (decl))
- DECL_INITIAL (decl) = build_zero_init (TREE_TYPE (decl),
- /*nelts=*/NULL_TREE,
- /*static_storage_p=*/true);
- /* Remember that the initialization for this variable has
- taken place. */
- DECL_INITIALIZED_P (decl) = 1;
- }
- /* If the variable has an array type, lay out the type, even if
- there is no initializer. It is valid to index through the
- array, and we must get TYPE_ALIGN set correctly on the array
- type. */
- else if (TREE_CODE (type) == ARRAY_TYPE)
- layout_type (type);
- }
+
+ /* Deduce size of array from initialization, if not already known. */
+ init = check_initializer (decl, init);
+ maybe_deduce_size_from_array_init (decl, init);
/* Add this declaration to the statement-tree. This needs to happen
after the call to check_initializer so that the DECL_STMT for a
@@ -8927,9 +8342,7 @@ cp_finish_decl (decl, init, asmspec_tree, flags)
else
abstract_virtuals_error (decl, strip_array_types (type));
- if (TREE_CODE (decl) == FUNCTION_DECL
- || TREE_TYPE (decl) == error_mark_node)
- /* No initialization required. */
+ if (TREE_CODE (decl) == FUNCTION_DECL)
;
else if (DECL_EXTERNAL (decl)
&& ! (DECL_LANG_SPECIFIC (decl)
@@ -8938,25 +8351,35 @@ cp_finish_decl (decl, init, asmspec_tree, flags)
if (init)
DECL_INITIAL (decl) = init;
}
- else
+ else if (TREE_CODE (CP_DECL_CONTEXT (decl)) == FUNCTION_DECL)
{
- /* A variable definition. */
- if (DECL_FUNCTION_SCOPE_P (decl))
+ /* This is a local declaration. */
+ if (doing_semantic_analysis_p ())
+ maybe_inject_for_scope_var (decl);
+ /* Initialize the local variable. But, if we're building a
+ statement-tree, we'll do the initialization when we
+ expand the tree. */
+ if (processing_template_decl)
{
- /* This is a local declaration. */
- if (doing_semantic_analysis_p ())
- maybe_inject_for_scope_var (decl);
- /* Initialize the local variable. */
- if (processing_template_decl)
- {
- if (init || DECL_INITIAL (decl) == error_mark_node)
- DECL_INITIAL (decl) = init;
- }
- else if (!TREE_STATIC (decl))
- initialize_local_var (decl, init);
+ if (init || DECL_INITIAL (decl) == error_mark_node)
+ DECL_INITIAL (decl) = init;
}
-
- if (TREE_STATIC (decl))
+ else
+ {
+ /* If we're not building RTL, then we need to do so
+ now. */
+ my_friendly_assert (building_stmt_tree (), 20000906);
+ /* Initialize the variable. */
+ initialize_local_var (decl, init, flags);
+ /* Clean up the variable. */
+ destroy_local_var (decl);
+ }
+ }
+ else if (TREE_STATIC (decl) && type != error_mark_node)
+ {
+ /* Cleanups for static variables are handled by `finish_file'. */
+ if (TYPE_NEEDS_CONSTRUCTING (type) || init != NULL_TREE
+ || TYPE_HAS_NONTRIVIAL_DESTRUCTOR (type))
expand_static_init (decl, init);
}
finish_end0:
@@ -9024,7 +8447,7 @@ declare_global_var (name, type)
}
/* Returns a pointer to the `atexit' function. Note that if
- FLAG_USE_CXA_ATEXIT is nonzero, then this will actually be the new
+ FLAG_USE_CXA_ATEXIT is non-zero, then this will actually be the new
`__cxa_atexit' function specified in the IA64 C++ ABI. */
static tree
@@ -9153,8 +8576,9 @@ start_cleanup_fn ()
{
tree parmdecl;
- parmdecl = cp_build_parm_decl (NULL_TREE, ptr_type_node);
+ parmdecl = build_decl (PARM_DECL, NULL_TREE, ptr_type_node);
DECL_CONTEXT (parmdecl) = fndecl;
+ DECL_ARG_TYPE (parmdecl) = ptr_type_node;
TREE_USED (parmdecl) = 1;
DECL_ARGUMENTS (fndecl) = parmdecl;
}
@@ -9221,7 +8645,7 @@ register_dtor_fn (decl)
end_cleanup_fn ();
/* Call atexit with the cleanup function. */
- cxx_mark_addressable (cleanup);
+ mark_addressable (cleanup);
cleanup = build_unary_op (ADDR_EXPR, cleanup, 0);
if (flag_use_cxa_atexit)
{
@@ -9236,27 +8660,12 @@ register_dtor_fn (decl)
finish_expr_stmt (build_function_call (get_atexit_node (), args));
}
-/* DECL is a VAR_DECL with static storage duration. INIT, if present,
- is its initializer. Generate code to handle the construction
- and destruction of DECL. */
-
-static void
+void
expand_static_init (decl, init)
tree decl;
tree init;
{
- tree oldstatic;
-
- my_friendly_assert (TREE_CODE (decl) == VAR_DECL, 20021010);
- my_friendly_assert (TREE_STATIC (decl), 20021010);
-
- /* Some variables require no initialization. */
- if (!init
- && !TYPE_NEEDS_CONSTRUCTING (TREE_TYPE (decl))
- && TYPE_HAS_TRIVIAL_DESTRUCTOR (TREE_TYPE (decl)))
- return;
-
- oldstatic = value_member (decl, static_aggregates);
+ tree oldstatic = value_member (decl, static_aggregates);
if (oldstatic)
{
@@ -9306,7 +8715,15 @@ expand_static_init (decl, init)
then_clause = begin_compound_stmt (/*has_no_scope=*/0);
/* Do the initialization itself. */
- assignment = init ? init : NULL_TREE;
+ if (TYPE_NEEDS_CONSTRUCTING (TREE_TYPE (decl))
+ || (init && TREE_CODE (init) == TREE_LIST))
+ assignment = build_aggr_init (decl, init, 0);
+ else if (init)
+ /* The initialization we're doing here is just a bitwise
+ copy. */
+ assignment = build (INIT_EXPR, TREE_TYPE (decl), decl, init);
+ else
+ assignment = NULL_TREE;
/* Once the assignment is complete, set TEMP to 1. Since the
construction of the static object is complete at this point,
@@ -9546,7 +8963,7 @@ grokfndecl (ctype, type, declarator, orig_declarator, virtualp, flags, quals,
type = build_exception_variant (type, raises);
decl = build_lang_decl (FUNCTION_DECL, declarator, type);
- /* Propagate volatile out from type to decl. */
+ /* Propagate volatile out from type to decl. */
if (TYPE_VOLATILE (type))
TREE_THIS_VOLATILE (decl) = 1;
@@ -9637,19 +9054,13 @@ grokfndecl (ctype, type, declarator, orig_declarator, virtualp, flags, quals,
DECL_NOT_REALLY_EXTERN (decl) = 1;
}
- DID_INLINE_FUNC (decl) = 0;
/* If the declaration was declared inline, mark it as such. */
if (inlinep)
DECL_DECLARED_INLINE_P (decl) = 1;
/* We inline functions that are explicitly declared inline, or, when
the user explicitly asks us to, all functions. */
- if (DECL_DECLARED_INLINE_P (decl))
+ if (DECL_DECLARED_INLINE_P (decl) || flag_inline_trees == 2)
DECL_INLINE (decl) = 1;
- if (flag_inline_trees == 2 && !DECL_INLINE (decl) && funcdef_flag)
- {
- DID_INLINE_FUNC (decl) = 1;
- DECL_INLINE (decl) = 1;
- }
DECL_EXTERNAL (decl) = 1;
if (quals != NULL_TREE && TREE_CODE (type) == FUNCTION_TYPE)
@@ -9703,7 +9114,7 @@ grokfndecl (ctype, type, declarator, orig_declarator, virtualp, flags, quals,
/* Due to bison parser ickiness, we will have already looked
up an operator_name or PFUNCNAME within the current class
(see template_id in parse.y). If the current class contains
- such a name, we'll get a COMPONENT_REF here. Undo that. */
+ such a name, we'll get a COMPONENT_REF here. Undo that. */
my_friendly_assert (TREE_TYPE (TREE_OPERAND (fns, 0))
== current_class_type, 20001120);
@@ -9795,7 +9206,7 @@ grokfndecl (ctype, type, declarator, orig_declarator, virtualp, flags, quals,
decl = DECL_TEMPLATE_RESULT (decl);
/* Attempt to merge the declarations. This can fail, in
- the case of some invalid specialization declarations. */
+ the case of some illegal specialization declarations. */
if (!duplicate_decls (decl, old_decl))
error ("no `%#D' member function declared in class `%T'",
decl, ctype);
@@ -9815,68 +9226,64 @@ grokfndecl (ctype, type, declarator, orig_declarator, virtualp, flags, quals,
return decl;
}
-/* Create a VAR_DECL named NAME with the indicated TYPE.
-
- If SCOPE is non-NULL, it is the class type or namespace containing
- the variable. If SCOPE is NULL, the variable should is created in
- the innermost enclosings scope. */
-
static tree
-grokvardecl (type, name, specbits_in, initialized, constp, scope)
+grokvardecl (type, declarator, specbits_in, initialized, constp, in_namespace)
tree type;
- tree name;
+ tree declarator;
RID_BIT_TYPE *specbits_in;
int initialized;
int constp;
- tree scope;
+ tree in_namespace;
{
tree decl;
RID_BIT_TYPE specbits;
- my_friendly_assert (!name || TREE_CODE (name) == IDENTIFIER_NODE,
- 20020808);
-
specbits = *specbits_in;
- /* Compute the scope in which to place the variable. */
- if (!scope)
+ if (TREE_CODE (type) == OFFSET_TYPE)
{
- /* An explicit "extern" specifier indicates a namespace-scope
- variable. */
- if (RIDBIT_SETP (RID_EXTERN, specbits))
- scope = current_namespace;
- else if (!at_function_scope_p ())
- {
- scope = current_scope ();
- if (!scope)
- scope = current_namespace;
- }
- }
-
- if (scope
- && (/* If the variable is a namespace-scope variable declared in a
- template, we need DECL_LANG_SPECIFIC. */
- (TREE_CODE (scope) == NAMESPACE_DECL && processing_template_decl)
- /* Similarly for namespace-scope variables with language linkage
- other than C++. */
- || (TREE_CODE (scope) == NAMESPACE_DECL
- && current_lang_name != lang_name_cplusplus)
- /* Similarly for static data members. */
- || TYPE_P (scope)))
- decl = build_lang_decl (VAR_DECL, name, type);
+ /* If you declare a static member so that it
+ can be initialized, the code will reach here. */
+ tree basetype = TYPE_OFFSET_BASETYPE (type);
+ type = TREE_TYPE (type);
+ decl = build_lang_decl (VAR_DECL, declarator, type);
+ DECL_CONTEXT (decl) = basetype;
+ }
else
- decl = build_decl (VAR_DECL, name, type);
+ {
+ tree context;
- if (scope && TREE_CODE (scope) == NAMESPACE_DECL)
- set_decl_namespace (decl, scope, 0);
- else
- DECL_CONTEXT (decl) = scope;
+ if (in_namespace)
+ context = in_namespace;
+ else if (namespace_bindings_p () || RIDBIT_SETP (RID_EXTERN, specbits))
+ context = current_namespace;
+ else
+ context = NULL_TREE;
+
+ /* For namespace-scope variables, declared in a template, we
+ need the full lang_decl. The same is true for
+ namespace-scope variables that do not have C++ language
+ linkage. */
+ if (context
+ && (processing_template_decl
+ || current_lang_name != lang_name_cplusplus))
+ decl = build_lang_decl (VAR_DECL, declarator, type);
+ else
+ decl = build_decl (VAR_DECL, declarator, type);
- if (name && scope && current_lang_name != lang_name_c)
- /* We can't mangle lazily here because we don't have any
- way to recover whether or not a variable was `extern
- "C"' later. */
- mangle_decl (decl);
+ if (context)
+ set_decl_namespace (decl, context, 0);
+
+ context = DECL_CONTEXT (decl);
+ if (declarator && context && current_lang_name != lang_name_c)
+ /* We can't mangle lazily here because we don't have any
+ way to recover whether or not a variable was `extern
+ "C"' later. */
+ mangle_decl (decl);
+ }
+
+ if (in_namespace)
+ set_decl_namespace (decl, in_namespace, 0);
if (RIDBIT_SETP (RID_EXTERN, specbits))
{
@@ -9907,16 +9314,6 @@ grokvardecl (type, name, specbits_in, initialized, constp, scope)
TREE_PUBLIC (decl) = DECL_EXTERNAL (decl);
}
- if (RIDBIT_SETP (RID_THREAD, specbits))
- {
- if (targetm.have_tls)
- DECL_THREAD_LOCAL (decl) = 1;
- else
- /* A mere warning is sure to result in improper semantics
- at runtime. Don't bother to allow this to compile. */
- error ("thread-local storage not supported for this target");
- }
-
if (TREE_PUBLIC (decl))
{
/* [basic.link]: A name with no linkage (notably, the name of a class
@@ -9942,7 +9339,8 @@ grokvardecl (type, name, specbits_in, initialized, constp, scope)
TYPE, which is a POINTER_TYPE to a METHOD_TYPE. */
tree
-build_ptrmemfunc_type (tree type)
+build_ptrmemfunc_type (type)
+ tree type;
{
tree fields[4];
tree t;
@@ -10001,14 +9399,6 @@ build_ptrmemfunc_type (tree type)
return t;
}
-/* Create and return a pointer to data member type. */
-
-tree
-build_ptrmem_type (tree class_type, tree member_type)
-{
- return build_pointer_type (build_offset_type (class_type, member_type));
-}
-
/* DECL is a VAR_DECL defined in-class, whose TYPE is also given.
Check to see that the definition is valid. Issue appropriate error
messages. Return 1 if the definition is particularly bad, or 0
@@ -10077,7 +9467,7 @@ compute_array_index_type (name, size)
size, integer_one_node));
}
- /* The size might be the result of a cast. */
+ /* The size might be the result of a cast. */
STRIP_TYPE_NOPS (size);
/* It might be a const variable or enumeration constant. */
@@ -10482,7 +9872,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
break;
case ADDR_EXPR: /* C++ reference declaration */
- /* Fall through. */
+ /* Fall through. */
case ARRAY_REF:
case INDIRECT_REF:
ctype = NULL_TREE;
@@ -10500,12 +9890,6 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
tree attributes;
- if (decl_context != NORMAL)
- {
- error ("variable declaration is not allowed here");
- return error_mark_node;
- }
-
*next = TREE_OPERAND (decl, 0);
init = CALL_DECLARATOR_PARMS (decl);
@@ -10530,7 +9914,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
}
else
error ("invalid declarator");
- return NULL_TREE;
+ return 0;
}
innermost_code = TREE_CODE (decl);
if (decl_context == FIELD && ctype == NULL_TREE)
@@ -10538,8 +9922,10 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
if (ctype
&& TREE_OPERAND (decl, 0)
&& (TREE_CODE (TREE_OPERAND (decl, 0)) == TYPE_DECL
- && constructor_name_p (DECL_NAME (TREE_OPERAND (decl, 0)),
- ctype)))
+ && ((DECL_NAME (TREE_OPERAND (decl, 0))
+ == constructor_name_full (ctype))
+ || (DECL_NAME (TREE_OPERAND (decl, 0))
+ == constructor_name (ctype)))))
TREE_OPERAND (decl, 0) = constructor_name (ctype);
next = &TREE_OPERAND (decl, 0);
decl = *next;
@@ -10570,7 +9956,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
dname = DECL_NAME (get_first_fn (dname));
}
}
- /* Fall through. */
+ /* Fall through. */
case IDENTIFIER_NODE:
if (TREE_CODE (decl) == IDENTIFIER_NODE)
@@ -10645,17 +10031,11 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
ctype = cname;
}
- /* If the parser sees something like "void a::b" where
- "a::b" is a namespace, it will build a SCOPE_REF with
- a NAMESPACE_DECL, rather than an IDENTIFIER_NODE, as
- the second operand. Since the SCOPE_REF is being
- used as a declarator, we recover from that here. */
- if (TREE_CODE (TREE_OPERAND (decl, 1)) == NAMESPACE_DECL)
- TREE_OPERAND (decl, 1) = DECL_NAME (TREE_OPERAND (decl, 1));
-
if (ctype && TREE_CODE (TREE_OPERAND (decl, 1)) == TYPE_DECL
- && constructor_name_p (DECL_NAME (TREE_OPERAND (decl, 1)),
- ctype))
+ && ((DECL_NAME (TREE_OPERAND (decl, 1))
+ == constructor_name_full (ctype))
+ || (DECL_NAME (TREE_OPERAND (decl, 1))
+ == constructor_name (ctype))))
TREE_OPERAND (decl, 1) = constructor_name (ctype);
next = &TREE_OPERAND (decl, 1);
decl = *next;
@@ -10669,8 +10049,8 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
}
else if (TREE_CODE (decl) == BIT_NOT_EXPR
&& TREE_CODE (TREE_OPERAND (decl, 0)) == IDENTIFIER_NODE
- && constructor_name_p (TREE_OPERAND (decl, 0),
- ctype))
+ && (constructor_name (ctype) == TREE_OPERAND (decl, 0)
+ || constructor_name_full (ctype) == TREE_OPERAND (decl, 0)))
{
sfk = sfk_destructor;
ctor_return_type = ctype;
@@ -10704,21 +10084,18 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
next = 0;
break;
- case BASELINK:
- next = &BASELINK_FUNCTIONS (decl);
- break;
-
case TEMPLATE_DECL:
/* Sometimes, we see a template-name used as part of a
decl-specifier like in
- std::allocator alloc;
- Handle that gracefully. */
- error ("invalid use of template-name '%E' in a declarator", decl);
+ std::allocator alloc;
+ Handle that gracefully. */
+ error ("invalid use of template-name '%E' in a declarator",
+ decl);
return error_mark_node;
break;
-
+
default:
- my_friendly_assert (0, 20020917);
+ internal_error ("`%D' as declarator", decl);
}
}
}
@@ -10753,7 +10130,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
if (decl_context == NORMAL && !toplevel_bindings_p ())
{
- struct cp_binding_level *b = current_binding_level;
+ struct binding_level *b = current_binding_level;
current_binding_level = b->level_chain;
if (current_binding_level != 0 && toplevel_bindings_p ())
decl_context = PARM;
@@ -10849,22 +10226,10 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
}
else if (RIDBIT_SETP (i, specbits))
pedwarn ("duplicate `%s'", IDENTIFIER_POINTER (id));
-
- /* Diagnose "__thread extern". Recall that this list
- is in the reverse order seen in the text. */
- if (i == (int)RID_THREAD)
- {
- if (RIDBIT_SETP (RID_EXTERN, specbits))
- error ("`__thread' before `extern'");
- if (RIDBIT_SETP (RID_STATIC, specbits))
- error ("`__thread' before `static'");
- }
-
if (i == (int)RID_EXTERN
&& TREE_PURPOSE (spec) == error_mark_node)
/* This extern was part of a language linkage. */
extern_langp = 1;
-
RIDBIT_SET (i, specbits);
goto found;
}
@@ -11073,7 +10438,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
else if (type == char_type_node)
type = unsigned_char_type_node;
else if (typedef_decl)
- type = c_common_unsigned_type (type);
+ type = unsigned_type (type);
else
type = unsigned_type_node;
}
@@ -11161,7 +10526,6 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
{
if (RIDBIT_SETP (RID_STATIC, specbits)) nclasses++;
if (RIDBIT_SETP (RID_EXTERN, specbits) && !extern_langp) nclasses++;
- if (RIDBIT_SETP (RID_THREAD, specbits)) nclasses++;
if (decl_context == PARM && nclasses > 0)
error ("storage class specifiers invalid in parameter declarations");
if (RIDBIT_SETP (RID_TYPEDEF, specbits))
@@ -11193,13 +10557,6 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
/* Warn about storage classes that are invalid for certain
kinds of declarations (parameters, typenames, etc.). */
- /* "static __thread" and "extern __thread" are allowed. */
- if (nclasses == 2
- && RIDBIT_SETP (RID_THREAD, specbits)
- && (RIDBIT_SETP (RID_EXTERN, specbits)
- || RIDBIT_SETP (RID_STATIC, specbits)))
- nclasses = 1;
-
if (nclasses > 1)
error ("multiple storage classes in declaration of `%s'", name);
else if (decl_context != NORMAL && nclasses > 0)
@@ -11255,7 +10612,6 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
RIDBIT_RESET (RID_REGISTER, specbits);
RIDBIT_RESET (RID_AUTO, specbits);
RIDBIT_RESET (RID_EXTERN, specbits);
- RIDBIT_RESET (RID_THREAD, specbits);
}
}
else if (RIDBIT_SETP (RID_EXTERN, specbits) && initialized && !funcdef_flag)
@@ -11278,21 +10634,13 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
if (RIDBIT_SETP (RID_AUTO, specbits))
error ("top-level declaration of `%s' specifies `auto'", name);
}
- else if (RIDBIT_SETP (RID_THREAD, specbits)
- && !RIDBIT_SETP (RID_EXTERN, specbits)
- && !RIDBIT_SETP (RID_STATIC, specbits))
- {
- error ("function-scope `%s' implicitly auto and declared `__thread'",
- name);
- RIDBIT_RESET (RID_THREAD, specbits);
- }
if (nclasses > 0 && friendp)
error ("storage class specifiers invalid in friend function declarations");
/* Now figure out the structure of the declarator proper.
Descend through it, creating more complex types, until we reach
- the declared identifier (or NULL_TREE, in an abstract declarator). */
+ the declared identifier (or NULL_TREE, in an absolute declarator). */
while (declarator && TREE_CODE (declarator) != IDENTIFIER_NODE
&& TREE_CODE (declarator) != TEMPLATE_ID_EXPR)
@@ -11584,15 +10932,21 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
if (TREE_CODE (type) == REFERENCE_TYPE)
{
- error (TREE_CODE (declarator) == ADDR_EXPR
- ? "cannot declare reference to `%#T'"
- : "cannot declare pointer to `%#T'", type);
+ error ("cannot declare %s to references",
+ TREE_CODE (declarator) == ADDR_EXPR
+ ? "references" : "pointers");
+ declarator = TREE_OPERAND (declarator, 0);
+ continue;
+ }
+
+ if (TREE_CODE (type) == OFFSET_TYPE
+ && (TREE_CODE (TREE_TYPE (type)) == VOID_TYPE
+ || TREE_CODE (TREE_TYPE (type)) == REFERENCE_TYPE))
+ {
+ error ("cannot declare pointer to `%#T' member",
+ TREE_TYPE (type));
type = TREE_TYPE (type);
}
- else if (VOID_TYPE_P (type)
- && (ctype || TREE_CODE (declarator) == ADDR_EXPR))
- error (ctype ? "cannot declare pointer to `%#T' member"
- : "cannot declare reference to `%#T'", type);
/* Merge any constancy or volatility into the target type
for the pointer. */
@@ -11603,13 +10957,13 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
if (TREE_CODE (declarator) == ADDR_EXPR)
{
- if (!VOID_TYPE_P (type))
+ if (TREE_CODE (type) == VOID_TYPE)
+ error ("invalid type: `void &'");
+ else
type = build_reference_type (type);
}
else if (TREE_CODE (type) == METHOD_TYPE)
type = build_ptrmemfunc_type (build_pointer_type (type));
- else if (ctype)
- type = build_ptrmem_type (ctype, type);
else
type = build_pointer_type (type);
@@ -11682,7 +11036,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
/* This needs to be here, in case we are called
multiple times. */ ;
else if (TREE_COMPLEXITY (declarator) == -1)
- /* Namespace member. */
+ /* Namespace member. */
pop_decl_namespace ();
else if (friendp && (TREE_COMPLEXITY (declarator) < 2))
/* Don't fall out into global scope. Hides real bug? --eichin */ ;
@@ -11796,10 +11150,11 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
ctype, name, current_class_type);
return void_type_node;
}
+ type = build_offset_type (ctype, type);
}
else
{
- cxx_incomplete_type_error (NULL_TREE, ctype);
+ incomplete_type_error (NULL_TREE, ctype);
return error_mark_node;
}
@@ -11814,9 +11169,14 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
if (declarator && TREE_CODE (declarator) == CALL_EXPR)
/* In this case, we will deal with it later. */
;
- else if (TREE_CODE (type) == FUNCTION_TYPE)
- type = build_cplus_method_type (ctype, TREE_TYPE (type),
- TYPE_ARG_TYPES (type));
+ else
+ {
+ if (TREE_CODE (type) == FUNCTION_TYPE)
+ type = build_cplus_method_type (ctype, TREE_TYPE (type),
+ TYPE_ARG_TYPES (type));
+ else
+ type = build_offset_type (ctype, type);
+ }
}
}
break;
@@ -11825,10 +11185,6 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
declarator = TREE_OPERAND (declarator, 0);
break;
- case BASELINK:
- declarator = BASELINK_FUNCTIONS (declarator);
- break;
-
case RECORD_TYPE:
case UNION_TYPE:
case ENUMERAL_TYPE:
@@ -11866,14 +11222,11 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
type = error_mark_node;
}
- if ((decl_context == FIELD || decl_context == PARM)
+ if (decl_context == FIELD
&& !processing_template_decl
&& variably_modified_type_p (type))
{
- if (decl_context == FIELD)
- error ("data member may not have variably modified type `%T'", type);
- else
- error ("parameter may not have variably modified type `%T'", type);
+ error ("data member may not have variably modified type `%T'", type);
type = error_mark_node;
}
@@ -11887,7 +11240,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
if (RIDBIT_SETP (RID_MUTABLE, specbits))
{
- if (decl_context != FIELD || friendp)
+ if (current_class_name == NULL_TREE || decl_context == PARM || friendp)
{
error ("non-member `%s' cannot be declared `mutable'", name);
RIDBIT_RESET (RID_MUTABLE, specbits);
@@ -12040,7 +11393,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
for (args = TYPE_ARG_TYPES (type); args; args = TREE_CHAIN (args))
{
- tree decl = cp_build_parm_decl (NULL_TREE, TREE_VALUE (args));
+ tree decl = build_decl (PARM_DECL, NULL_TREE, TREE_VALUE (args));
TREE_CHAIN (decl) = decls;
decls = decl;
@@ -12073,19 +11426,22 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
inlinep = 0;
}
- if (!current_aggr)
+ /* Until core issue 180 is resolved, allow 'friend typename A::B'.
+ But don't allow implicit typenames except with a class-key. */
+ if (!current_aggr && (TREE_CODE (type) != TYPENAME_TYPE
+ || IMPLICIT_TYPENAME_P (type)))
{
- /* Don't allow friend declaration without a class-key. */
if (TREE_CODE (type) == TEMPLATE_TYPE_PARM)
- pedwarn ("template parameters cannot be friends");
+ pedwarn ("template parameters cannot be friends");
else if (TREE_CODE (type) == TYPENAME_TYPE)
- pedwarn ("friend declaration requires class-key, "
- "i.e. `friend class %T::%D'",
- TYPE_CONTEXT (type), TYPENAME_TYPE_FULLNAME (type));
+ pedwarn ("\
+friend declaration requires class-key, i.e. `friend class %T::%T'",
+ constructor_name (current_class_type),
+ TYPE_IDENTIFIER (type));
else
- pedwarn ("friend declaration requires class-key, "
- "i.e. `friend %#T'",
- type);
+ pedwarn ("\
+friend declaration requires class-key, i.e. `friend %#T'",
+ type);
}
/* Only try to do this stuff if we didn't already give up. */
@@ -12181,10 +11537,17 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
if (decl_context == PARM)
{
- decl = cp_build_parm_decl (declarator, type);
+ decl = build_decl (PARM_DECL, declarator, type);
bad_specifiers (decl, "parameter", virtualp, quals != NULL_TREE,
inlinep, friendp, raises != NULL_TREE);
+
+ /* Compute the type actually passed in the parmlist,
+ for the case where there is no prototype.
+ (For example, shorts and chars are passed as ints.)
+ When there is a prototype, this is overridden later. */
+
+ DECL_ARG_TYPE (decl) = type_promotes_to (type);
}
else if (decl_context == FIELD)
{
@@ -12464,8 +11827,6 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
error ("storage class `auto' invalid for function `%s'", name);
else if (RIDBIT_SETP (RID_REGISTER, specbits))
error ("storage class `register' invalid for function `%s'", name);
- else if (RIDBIT_SETP (RID_THREAD, specbits))
- error ("storage class `__thread' invalid for function `%s'", name);
/* Function declaration not at top level.
Storage classes other than `extern' are not allowed
@@ -12508,23 +11869,23 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
if (staticp == 1)
{
- int invalid_static = 0;
+ int illegal_static = 0;
/* Don't allow a static member function in a class, and forbid
declaring main to be static. */
if (TREE_CODE (type) == METHOD_TYPE)
{
pedwarn ("cannot declare member function `%D' to have static linkage", decl);
- invalid_static = 1;
+ illegal_static = 1;
}
else if (current_function_decl)
{
/* FIXME need arm citation */
error ("cannot declare static function inside another function");
- invalid_static = 1;
+ illegal_static = 1;
}
- if (invalid_static)
+ if (illegal_static)
{
staticp = 0;
RIDBIT_RESET (RID_STATIC, specbits);
@@ -12539,7 +11900,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
decl = grokvardecl (type, declarator, &specbits,
initialized,
(type_quals & TYPE_QUAL_CONST) != 0,
- ctype ? ctype : in_namespace);
+ in_namespace);
bad_specifiers (decl, "variable", virtualp, quals != NULL_TREE,
inlinep, friendp, raises != NULL_TREE);
@@ -12631,16 +11992,13 @@ require_complete_types_for_parms (parms)
/* grokparms will have already issued an error */
TREE_TYPE (parms) = error_mark_node;
else if (complete_type_or_else (TREE_TYPE (parms), parms))
- {
- layout_decl (parms, 0);
- DECL_ARG_TYPE (parms) = type_passed_as (TREE_TYPE (parms));
- }
+ layout_decl (parms, 0);
else
TREE_TYPE (parms) = error_mark_node;
}
}
-/* Returns nonzero if T is a local variable. */
+/* Returns non-zero if T is a local variable. */
int
local_variable_p (t)
@@ -12658,7 +12016,7 @@ local_variable_p (t)
return 0;
}
-/* Returns nonzero if T is an automatic local variable or a label.
+/* Returns non-zero if T is an automatic local variable or a label.
(These are the declarations that need to be remapped when the code
containing them is duplicated.) */
@@ -12685,7 +12043,7 @@ local_variable_p_walkfn (tp, walk_subtrees, data)
}
/* Check that ARG, which is a default-argument expression for a
- parameter DECL, is valid. Returns ARG, or ERROR_MARK_NODE, if
+ parameter DECL, is legal. Returns ARG, or ERROR_MARK_NODE, if
something goes wrong. DECL may also be a _TYPE node, rather than a
DECL, if there is no DECL available. */
@@ -12824,7 +12182,7 @@ grokparms (first_parm)
&& !DECL_NAME (decl) && !result && !chain && !ellipsis)
/* this is a parmlist of `(void)', which is ok. */
break;
- cxx_incomplete_type_error (decl, type);
+ incomplete_type_error (decl, type);
/* It's not a good idea to actually create parameters of
type `void'; other parts of the compiler assume that a
void type terminates the parameter list. */
@@ -12850,7 +12208,7 @@ grokparms (first_parm)
TREE_TYPE (decl) = type;
}
else if (abstract_virtuals_error (decl, type))
- any_error = 1; /* Seems like a good idea. */
+ any_error = 1; /* Seems like a good idea. */
else if (POINTER_TYPE_P (type))
{
/* [dcl.fct]/6, parameter types cannot contain pointers
@@ -12873,6 +12231,11 @@ grokparms (first_parm)
decl, ptr ? "pointer" : "reference", t);
}
+ DECL_ARG_TYPE (decl) = TREE_TYPE (decl);
+ if (PROMOTE_PROTOTYPES
+ && INTEGRAL_TYPE_P (type)
+ && TYPE_PRECISION (type) < TYPE_PRECISION (integer_type_node))
+ DECL_ARG_TYPE (decl) = integer_type_node;
if (!any_error && init)
init = check_default_argument (decl, init);
else
@@ -12908,7 +12271,7 @@ grokparms (first_parm)
first parameter is a reference to non-const qualified T.
This function can be used as a predicate. Positive values indicate
- a copy constructor and nonzero values indicate a copy assignment
+ a copy constructor and non-zero values indicate a copy assignment
operator. */
int
@@ -13213,7 +12576,7 @@ grok_op_properties (decl, friendp)
}
if (operator_code == CALL_EXPR)
- return; /* No restrictions on args. */
+ return; /* No restrictions on args. */
if (IDENTIFIER_TYPENAME_P (name) && ! DECL_TEMPLATE_INFO (decl))
{
@@ -13236,7 +12599,7 @@ grok_op_properties (decl, friendp)
&& DERIVED_FROM_P (t, current_class_type))
what = "a base class";
- if (what && warn_conversion)
+ if (what)
warning ("conversion to %s%s will never use a type conversion operator",
ref ? "a reference to " : "", what);
}
@@ -13417,38 +12780,6 @@ tag_name (code)
}
}
-/* Name lookup in an elaborated-type-specifier (after the keyword
- indicated by TAG_CODE) has found TYPE. If the
- elaborated-type-specifier is invalid, issue a diagnostic and return
- error_mark_node; otherwise, return TYPE itself. */
-
-static tree
-check_elaborated_type_specifier (enum tag_types tag_code,
- tree type)
-{
- tree t;
-
- t = follow_tag_typedef (type);
-
- /* [dcl.type.elab] If the identifier resolves to a typedef-name or a
- template type-parameter, the elaborated-type-specifier is
- ill-formed. */
- if (!t)
- {
- error ("using typedef-name `%D' after `%s'",
- TYPE_NAME (type), tag_name (tag_code));
- t = error_mark_node;
- }
- else if (TREE_CODE (type) == TEMPLATE_TYPE_PARM)
- {
- error ("using template type parameter `%T' after `%s'",
- type, tag_name (tag_code));
- t = error_mark_node;
- }
-
- return t;
-}
-
/* Get the struct, enum or union (CODE says which) with tag NAME.
Define the tag as a forward-reference if it is not defined.
@@ -13460,16 +12791,29 @@ check_elaborated_type_specifier (enum tag_types tag_code,
scope.) */
tree
-xref_tag (enum tag_types tag_code, tree name, tree attributes,
- bool globalize)
+xref_tag (code_type_node, name, globalize)
+ tree code_type_node;
+ tree name;
+ int globalize;
{
+ enum tag_types tag_code;
enum tree_code code;
register tree ref, t;
- struct cp_binding_level *b = current_binding_level;
+ struct binding_level *b = current_binding_level;
+ tree attributes = NULL_TREE;
tree context = NULL_TREE;
- timevar_push (TV_NAME_LOOKUP);
+ /* If we are called from the parser, code_type_node will sometimes be a
+ TREE_LIST. This indicates that the user wrote
+ "class __attribute__ ((foo)) bar". Extract the attributes so we can
+ use them later. */
+ if (TREE_CODE (code_type_node) == TREE_LIST)
+ {
+ attributes = TREE_PURPOSE (code_type_node);
+ code_type_node = TREE_VALUE (code_type_node);
+ }
+ tag_code = (enum tag_types) tree_low_cst (code_type_node, 1);
switch (tag_code)
{
case record_type:
@@ -13511,7 +12855,7 @@ xref_tag (enum tag_types tag_code, tree name, tree attributes,
TYPE_IDENTIFIER (t));
/* We need to remove the class scope binding for the
- TYPENAME_TYPE as otherwise poplevel_class gets confused. */
+ TYPENAME_TYPE as otherwise poplevel_class gets confused. */
for (shadowed = b->class_shadowed;
shadowed;
shadowed = TREE_CHAIN (shadowed))
@@ -13536,9 +12880,20 @@ xref_tag (enum tag_types tag_code, tree name, tree attributes,
{
if (t)
{
- ref = check_elaborated_type_specifier (tag_code, t);
- if (ref == error_mark_node)
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, error_mark_node);
+ ref = follow_tag_typedef (t);
+
+ /* [dcl.type.elab] If the identifier resolves to a
+ typedef-name or a template type-parameter, the
+ elaborated-type-specifier is ill-formed. */
+ if (!ref)
+ {
+ pedwarn ("using typedef-name `%D' after `%s'",
+ TYPE_NAME (t), tag_name (tag_code));
+ ref = t;
+ }
+ else if (TREE_CODE (t) == TEMPLATE_TYPE_PARM)
+ error ("using template type parameter `%T' after `%s'",
+ t, tag_name (tag_code));
}
else
ref = lookup_tag (code, name, b, 0);
@@ -13557,15 +12912,9 @@ xref_tag (enum tag_types tag_code, tree name, tree attributes,
template, so we want this type. */
ref = DECL_TEMPLATE_RESULT (ref);
- if (ref && TREE_CODE (ref) == TYPE_DECL)
- {
- ref = check_elaborated_type_specifier (tag_code,
- TREE_TYPE (ref));
- if (ref == error_mark_node)
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, error_mark_node);
- if (ref && TREE_CODE (ref) != code)
- ref = NULL_TREE;
- }
+ if (ref && TREE_CODE (ref) == TYPE_DECL
+ && TREE_CODE (TREE_TYPE (ref)) == code)
+ ref = TREE_TYPE (ref);
else
ref = NULL_TREE;
}
@@ -13574,7 +12923,7 @@ xref_tag (enum tag_types tag_code, tree name, tree attributes,
&& template_class_depth (current_class_type)
&& PROCESSING_REAL_TEMPLATE_DECL_P ())
{
- /* Since GLOBALIZE is nonzero, we are not looking at a
+ /* Since GLOBALIZE is non-zero, we are not looking at a
definition of this tag. Since, in addition, we are currently
processing a (member) template declaration of a template
class, we must be very careful; consider:
@@ -13646,14 +12995,14 @@ xref_tag (enum tag_types tag_code, tree name, tree attributes,
}
else
{
- struct cp_binding_level *old_b = class_binding_level;
+ struct binding_level *old_b = class_binding_level;
ref = make_aggr_type (code);
TYPE_CONTEXT (ref) = context;
#ifdef NONNESTED_CLASSES
/* Class types don't nest the way enums do. */
- class_binding_level = (struct cp_binding_level *)0;
+ class_binding_level = (struct binding_level *)0;
#endif
pushtag (name, ref, globalize);
class_binding_level = old_b;
@@ -13667,7 +13016,7 @@ xref_tag (enum tag_types tag_code, tree name, tree attributes,
TYPE_ATTRIBUTES (ref) = attributes;
- POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, ref);
+ return ref;
}
tree
@@ -13675,17 +13024,18 @@ xref_tag_from_type (old, id, globalize)
tree old, id;
int globalize;
{
- enum tag_types tag_kind;
+ tree code_type_node;
if (TREE_CODE (old) == RECORD_TYPE)
- tag_kind = (CLASSTYPE_DECLARED_CLASS (old) ? class_type : record_type);
+ code_type_node = (CLASSTYPE_DECLARED_CLASS (old)
+ ? class_type_node : record_type_node);
else
- tag_kind = union_type;
+ code_type_node = union_type_node;
if (id == NULL_TREE)
id = TYPE_IDENTIFIER (old);
- return xref_tag (tag_kind, id, /*attributes=*/NULL_TREE, globalize);
+ return xref_tag (code_type_node, id, globalize);
}
/* REF is a type (named NAME), for which we have just seen some
@@ -13695,7 +13045,9 @@ xref_tag_from_type (old, id, globalize)
struct, or union. */
void
-xref_basetypes (ref, binfo)
+xref_basetypes (code_type_node, name, ref, binfo)
+ tree code_type_node;
+ tree name ATTRIBUTE_UNUSED;
tree ref;
tree binfo;
{
@@ -13707,14 +13059,21 @@ xref_basetypes (ref, binfo)
int i, len;
enum tag_types tag_code;
- if (TREE_CODE (ref) == UNION_TYPE)
+ /* If we are called from the parser, code_type_node will sometimes be a
+ TREE_LIST. This indicates that the user wrote
+ "class __attribute__ ((foo)) bar". Extract the attributes so that
+ tree_low_cst doesn't crash. */
+ if (TREE_CODE (code_type_node) == TREE_LIST)
+ code_type_node = TREE_VALUE (code_type_node);
+
+ tag_code = (enum tag_types) tree_low_cst (code_type_node, 1);
+
+ if (tag_code == union_type)
{
error ("derived union `%T' invalid", ref);
return;
}
- tag_code = (CLASSTYPE_DECLARED_CLASS (ref) ? class_type : record_type);
-
len = list_length (binfo);
/* First, make sure that any templates in base-classes are
@@ -13875,7 +13234,7 @@ start_enum (name)
tree name;
{
register tree enumtype = NULL_TREE;
- struct cp_binding_level *b = current_binding_level;
+ struct binding_level *b = current_binding_level;
/* If this is the real definition for a previous forward reference,
fill in the contents in the same object that used to be the
@@ -13920,56 +13279,47 @@ finish_enum (enumtype)
/* We built up the VALUES in reverse order. */
TYPE_VALUES (enumtype) = nreverse (TYPE_VALUES (enumtype));
- /* For an enum defined in a template, just set the type of the values;
- all further processing is postponed until the template is
- instantiated. We need to set the type so that tsubst of a CONST_DECL
- works. */
+ /* [dcl.enum]
+
+ Following the closing brace of an enum-specifier, each
+ enumerator has the type of its enumeration. Prior to the
+ closing brace, the type of each enumerator is the type of
+ its initializing value. */
+ for (pair = TYPE_VALUES (enumtype); pair; pair = TREE_CHAIN (pair))
+ TREE_TYPE (TREE_VALUE (pair)) = enumtype;
+
+ /* For a enum defined in a template, all further processing is
+ postponed until the template is instantiated. */
if (processing_template_decl)
{
- for (pair = TYPE_VALUES (enumtype); pair; pair = TREE_CHAIN (pair))
- TREE_TYPE (TREE_VALUE (pair)) = enumtype;
- if (at_function_scope_p ())
+ tree scope = current_scope ();
+ if (scope && TREE_CODE (scope) == FUNCTION_DECL)
add_stmt (build_min (TAG_DEFN, enumtype));
+
+
return;
}
+ /* Figure out what the minimum and maximum values of the enumerators
+ are. */
if (TYPE_VALUES (enumtype))
{
minnode = maxnode = NULL_TREE;
- for (pair = TYPE_VALUES (enumtype); pair; pair = TREE_CHAIN (pair))
+ for (pair = TYPE_VALUES (enumtype);
+ pair;
+ pair = TREE_CHAIN (pair))
{
- tree decl = TREE_VALUE (pair);
- tree value = DECL_INITIAL (decl);
+ tree value;
- /* [dcl.enum]: Following the closing brace of an enum-specifier,
- each enumerator has the type of its enumeration. Prior to the
- closing brace, the type of each enumerator is the type of its
- initializing value. */
- TREE_TYPE (decl) = enumtype;
+ value = DECL_INITIAL (TREE_VALUE (pair));
- /* Figure out what the minimum and maximum values of the
- enumerators are. */
if (!minnode)
minnode = maxnode = value;
else if (tree_int_cst_lt (maxnode, value))
maxnode = value;
else if (tree_int_cst_lt (value, minnode))
minnode = value;
-
- /* Set the TREE_TYPE for the values as well. That's so that when
- we call decl_constant_value we get an entity of the right type
- (but with the constant value). But first make a copy so we
- don't clobber shared INTEGER_CSTs. */
- if (TREE_TYPE (value) != enumtype)
- {
- value = DECL_INITIAL (decl) = copy_node (value);
- TREE_TYPE (value) = enumtype;
- }
-
- /* In addition, transform the TYPE_VALUES list to contain the
- values, rather than the CONST_DECLs for them. */
- TREE_VALUE (pair) = value;
}
}
else
@@ -13984,36 +13334,36 @@ finish_enum (enumtype)
highprec = min_precision (maxnode, unsignedp);
precision = MAX (lowprec, highprec);
- /* DR 377
-
- IF no integral type can represent all the enumerator values, the
- enumeration is ill-formed. */
- if (precision > TYPE_PRECISION (long_long_integer_type_node))
+ /* Set the TREE_TYPE for the values as well. That's so that when we
+ call decl_constant_value we get an entity of the right type (but
+ with the constant value). In addition, transform the TYPE_VALUES
+ list to contain the values, rather than the CONST_DECLs for them. */
+ for (pair = TYPE_VALUES (enumtype); pair; pair = TREE_CHAIN (pair))
{
- error ("no integral type can represent all of the enumerator values "
- "for `%T'", enumtype);
- precision = TYPE_PRECISION (long_long_integer_type_node);
+ tree value = DECL_INITIAL (TREE_VALUE (pair));
+
+ TREE_TYPE (value) = enumtype;
+ TREE_VALUE (pair) = value;
}
- /* Compute the minium and maximum values for the type, the size of
- the type, and so forth. */
- TYPE_PRECISION (enumtype) = precision;
+ /* Set TYPE_MIN_VALUE and TYPE_MAX_VALUE according to `precision'. */
TYPE_SIZE (enumtype) = NULL_TREE;
+ TYPE_PRECISION (enumtype) = precision;
if (unsignedp)
fixup_unsigned_type (enumtype);
else
fixup_signed_type (enumtype);
- /* We use "int" or "unsigned int" as the underlying type, unless all
- the values will not fit or the user has requested that we try to
- use shorter types where possible. */
- if (precision < TYPE_PRECISION (integer_type_node)
- && !flag_short_enums)
- {
- TYPE_PRECISION (enumtype) = TYPE_PRECISION (integer_type_node);
- TYPE_SIZE (enumtype) = NULL_TREE;
- layout_type (enumtype);
- }
+ if (flag_short_enums || (precision > TYPE_PRECISION (integer_type_node)))
+ /* Use the width of the narrowest normal C type which is wide
+ enough. */
+ TYPE_PRECISION (enumtype) = TYPE_PRECISION (type_for_size
+ (precision, 1));
+ else
+ TYPE_PRECISION (enumtype) = TYPE_PRECISION (integer_type_node);
+
+ TYPE_SIZE (enumtype) = NULL_TREE;
+ layout_type (enumtype);
/* Fix up all variant types of this enum type. */
for (t = TYPE_MAIN_VARIANT (enumtype); t; t = TYPE_NEXT_VARIANT (t))
@@ -14047,6 +13397,7 @@ build_enumerator (name, value, enumtype)
tree decl;
tree context;
tree type;
+ tree values;
/* Remove no-op casts from the value. */
if (value)
@@ -14078,7 +13429,7 @@ build_enumerator (name, value, enumtype)
if (TYPE_VALUES (enumtype))
{
- /* The next value is the previous value ... */
+ /* The next value is the previous value ... */
prev_value = DECL_INITIAL (TREE_VALUE (TYPE_VALUES (enumtype)));
/* ... plus one. */
value = cp_build_binary_op (PLUS_EXPR,
@@ -14093,9 +13444,26 @@ build_enumerator (name, value, enumtype)
}
/* Remove no-op casts from the value. */
- STRIP_TYPE_NOPS (value);
+ if (value)
+ STRIP_TYPE_NOPS (value);
+#if 0
+ /* To fix MAX_VAL enum consts. (bkoz) */
+ TREE_TYPE (value) = integer_type_node;
+#endif
}
+ /* We always have to copy here; not all INTEGER_CSTs are unshared.
+ Even in other cases, we will later (in finish_enum) be setting
+ the type of VALUE. But, we don't need to make a copy if this
+ VALUE is one of the enumeration constants for this same
+ enumeration type. */
+ for (values = TYPE_VALUES (enumtype); values; values = TREE_CHAIN (values))
+ if (TREE_VALUE (values) == value)
+ break;
+ /* If we didn't break out of the loop, then we do need a copy. */
+ if (!values && value)
+ value = copy_node (value);
+
/* C++ associates enums with global, function, or class declarations. */
context = current_scope ();
@@ -14111,7 +13479,7 @@ build_enumerator (name, value, enumtype)
initializing value.
In finish_enum we will reset the type. Of course, if we're
- processing a template, there may be no value. */
+ processing a template, there may be no value. */
type = value ? TREE_TYPE (value) : NULL_TREE;
if (context && context == current_class_type)
@@ -14210,8 +13578,10 @@ start_function (declspecs, declarator, attrs, flags)
tree ctype = NULL_TREE;
tree fntype;
tree restype;
+ extern int have_extern_spec;
+ extern int used_extern_spec;
int doing_friend = 0;
- struct cp_binding_level *bl;
+ struct binding_level *bl;
tree current_function_parms;
/* Sanity check. */
@@ -14219,10 +13589,10 @@ start_function (declspecs, declarator, attrs, flags)
my_friendly_assert (TREE_CHAIN (void_list_node) == NULL_TREE, 161);
/* This should only be done once on the top most decl. */
- if (have_extern_spec)
+ if (have_extern_spec && !used_extern_spec)
{
declspecs = tree_cons (NULL_TREE, get_identifier ("extern"), declspecs);
- have_extern_spec = false;
+ used_extern_spec = 1;
}
if (flags & SF_PRE_PARSED)
@@ -14261,7 +13631,7 @@ start_function (declspecs, declarator, attrs, flags)
cplus_decl_attributes (&decl1, attrs, 0);
/* If #pragma weak was used, mark the decl weak now. */
- if (global_scope_p (current_binding_level))
+ if (current_binding_level == global_binding_level)
maybe_apply_pragma_weak (decl1);
fntype = TREE_TYPE (decl1);
@@ -14420,7 +13790,7 @@ start_function (declspecs, declarator, attrs, flags)
decl1 = pushdecl (decl1);
else
{
- /* We need to set the DECL_CONTEXT. */
+ /* We need to set the DECL_CONTEXT. */
if (!DECL_CONTEXT (decl1) && DECL_TEMPLATE_INFO (decl1))
DECL_CONTEXT (decl1) = DECL_CONTEXT (DECL_TI_TEMPLATE (decl1));
/* And make sure we have enough default args. */
@@ -14435,8 +13805,12 @@ start_function (declspecs, declarator, attrs, flags)
/* If we are (erroneously) defining a function that we have already
defined before, wipe out what we knew before. */
- if (!DECL_PENDING_INLINE_P (decl1))
- DECL_SAVED_FUNCTION_DATA (decl1) = NULL;
+ if (!DECL_PENDING_INLINE_P (decl1)
+ && DECL_SAVED_FUNCTION_DATA (decl1))
+ {
+ free (DECL_SAVED_FUNCTION_DATA (decl1));
+ DECL_SAVED_FUNCTION_DATA (decl1) = NULL;
+ }
if (ctype && !doing_friend && !DECL_STATIC_FUNCTION_P (decl1))
{
@@ -14618,6 +13992,7 @@ store_parm_decls (current_function_parms)
function. This is all and only the PARM_DECLs that were
pushed into scope by the loop above. */
DECL_ARGUMENTS (fndecl) = getdecls ();
+ storetags (gettags ());
}
else
DECL_ARGUMENTS (fndecl) = NULL_TREE;
@@ -14644,7 +14019,7 @@ static void
save_function_data (decl)
tree decl;
{
- struct language_function *f;
+ struct cp_language_function *f;
/* Save the language-specific per-function data so that we can
get it back when we really expand this function. */
@@ -14652,9 +14027,9 @@ save_function_data (decl)
19990908);
/* Make a copy. */
- f = ((struct language_function *)
- ggc_alloc (sizeof (struct language_function)));
- memcpy (f, cp_function_chain, sizeof (struct language_function));
+ f = ((struct cp_language_function *)
+ xmalloc (sizeof (struct cp_language_function)));
+ memcpy (f, cp_function_chain, sizeof (struct cp_language_function));
DECL_SAVED_FUNCTION_DATA (decl) = f;
/* Clear out the bits we don't need. */
@@ -14684,6 +14059,9 @@ save_function_data (decl)
static void
begin_constructor_body ()
{
+ tree ctor_stmt = build_stmt (CTOR_STMT);
+ CTOR_BEGIN_P (ctor_stmt) = 1;
+ add_stmt (ctor_stmt);
}
/* Add a note to mark the end of the main body of the constructor. This is
@@ -14693,6 +14071,12 @@ begin_constructor_body ()
static void
finish_constructor_body ()
{
+ /* Mark the end of the cleanups for a partially constructed object.
+
+ ??? These should really be handled automatically by closing the block,
+ as with the destructor cleanups; the only difference is that these are
+ only run if an exception is thrown. */
+ add_stmt (build_stmt (CTOR_STMT));
}
/* Do all the processing for the beginning of a destructor; set up the
@@ -14725,6 +14109,7 @@ begin_destructor_body ()
appropriately, so we just assume that we always need to
initialize the vtables.) */
finish_if_stmt_cond (boolean_true_node, if_stmt);
+ current_vcalls_possible_p = &IF_COND (if_stmt);
compound_stmt = begin_compound_stmt (/*has_no_scope=*/0);
@@ -14736,10 +14121,6 @@ begin_destructor_body ()
finish_compound_stmt (/*has_no_scope=*/0, compound_stmt);
finish_then_clause (if_stmt);
finish_if_stmt ();
-
- /* And insert cleanups for our bases and members so that they
- will be properly destroyed if we throw. */
- push_base_cleanups ();
}
/* At the end of every destructor we generate code to delete the object if
@@ -14754,11 +14135,14 @@ finish_destructor_body ()
and member cleanups will be run when the function returns. */
add_stmt (build_stmt (LABEL_STMT, dtor_label));
+ /* And perform cleanups for our bases and members. */
+ perform_base_cleanups ();
+
/* In a virtual destructor, we must call delete. */
if (DECL_VIRTUAL_P (current_function_decl))
{
tree if_stmt;
- tree virtual_size = cxx_sizeof (current_class_type);
+ tree virtual_size = c_sizeof (current_class_type);
/* [class.dtor]
@@ -14861,15 +14245,6 @@ finish_function (flags)
if (fndecl == NULL_TREE)
return error_mark_node;
- if (DECL_NONSTATIC_MEMBER_FUNCTION_P (fndecl)
- && DECL_VIRTUAL_P (fndecl)
- && !processing_template_decl)
- {
- tree fnclass = DECL_CONTEXT (fndecl);
- if (fndecl == CLASSTYPE_KEY_METHOD (fnclass))
- keyed_classes = tree_cons (NULL_TREE, fnclass, keyed_classes);
- }
-
nested = function_depth > 1;
fntype = TREE_TYPE (fndecl);
@@ -14907,12 +14282,6 @@ finish_function (flags)
/* If we're saving up tree structure, tie off the function now. */
finish_stmt_tree (&DECL_SAVED_TREE (fndecl));
- /* If this function can't throw any exceptions, remember that. */
- if (!processing_template_decl
- && !cp_function_chain->can_throw
- && !flag_non_call_exceptions)
- TREE_NOTHROW (fndecl) = 1;
-
/* This must come after expand_function_end because cleanups might
have declarations (from inline functions) that need to go into
this function's blocks. */
@@ -14947,20 +14316,11 @@ finish_function (flags)
if (current_function_return_value)
{
tree r = current_function_return_value;
- tree outer;
-
+ /* This is only worth doing for fns that return in memory--and
+ simpler, since we don't have to worry about promoted modes. */
if (r != error_mark_node
- /* This is only worth doing for fns that return in memory--and
- simpler, since we don't have to worry about promoted modes. */
- && aggregate_value_p (TREE_TYPE (TREE_TYPE (fndecl)))
- /* Only allow this for variables declared in the outer scope of
- the function so we know that their lifetime always ends with a
- return; see g++.dg/opt/nrv6.C. We could be more flexible if
- we were to do this optimization in tree-ssa. */
- && (outer = BLOCK_SUBBLOCKS (DECL_INITIAL (fndecl)),
- chain_member (r, BLOCK_VARS (outer))))
+ && aggregate_value_p (TREE_TYPE (TREE_TYPE (fndecl))))
{
-
DECL_ALIGN (r) = DECL_ALIGN (DECL_RESULT (fndecl));
walk_tree_without_duplicates (&DECL_SAVED_TREE (fndecl),
nullify_returns_r, r);
@@ -15018,7 +14378,7 @@ finish_function (flags)
free_after_compilation (cfun);
cfun = NULL;
- /* If this is an in-class inline definition, we may have to pop the
+ /* If this is a in-class inline definition, we may have to pop the
bindings for the template parameters that we added in
maybe_begin_member_template_processing when start_function was
called. */
@@ -15035,7 +14395,7 @@ finish_function (flags)
if (! nested)
/* Let the error reporting routines know that we're outside a
function. For a nested function, this value is used in
- cxx_pop_function_context and then reset via pop_function_context. */
+ pop_cp_function_context and then reset via pop_function_context. */
current_function_decl = NULL_TREE;
return fndecl;
@@ -15100,7 +14460,6 @@ start_method (declspecs, declarator, attrlist)
DECL_DECLARED_INLINE_P (fndecl) = 1;
- DID_INLINE_FUNC (fndecl) = 0;
if (flag_default_inline)
DECL_INLINE (fndecl) = 1;
@@ -15248,7 +14607,7 @@ complete_vars (type)
here. */
tree
-cxx_maybe_build_cleanup (decl)
+maybe_build_cleanup (decl)
tree decl;
{
tree type = TREE_TYPE (decl);
@@ -15262,7 +14621,7 @@ cxx_maybe_build_cleanup (decl)
rval = decl;
else
{
- cxx_mark_addressable (decl);
+ mark_addressable (decl);
rval = build_unary_op (ADDR_EXPR, decl, 0);
}
@@ -15325,14 +14684,14 @@ revert_static_member_fn (decl)
/* Initialize the variables used during compilation of a C++
function. */
-void
-cxx_push_function_context (f)
+static void
+push_cp_function_context (f)
struct function *f;
{
- struct language_function *p
- = ((struct language_function *)
- ggc_alloc_cleared (sizeof (struct language_function)));
- f->language = p;
+ struct cp_language_function *p
+ = ((struct cp_language_function *)
+ xcalloc (1, sizeof (struct cp_language_function)));
+ f->language = (struct language_function *) p;
/* It takes an explicit call to expand_body to generate RTL for a
function. */
@@ -15346,30 +14705,141 @@ cxx_push_function_context (f)
/* Free the language-specific parts of F, now that we've finished
compiling the function. */
-void
-cxx_pop_function_context (f)
+static void
+pop_cp_function_context (f)
struct function *f;
{
+ if (f->language)
+ {
+ struct cp_language_function *cp =
+ (struct cp_language_function *) f->language;
+ if (cp->x_local_names)
+ VARRAY_FREE (cp->x_local_names);
+ free (f->language);
+ }
f->language = 0;
}
-/* Return which tree structure is used by T, or TS_CP_GENERIC if T is
- one of the language-independent trees. */
+/* Mark P for GC. */
-enum cp_tree_node_structure_enum
-cp_tree_node_structure (t)
- union lang_tree_node *t;
+static void
+mark_lang_function (p)
+ struct cp_language_function *p;
{
- switch (TREE_CODE (&t->generic))
+ if (!p)
+ return;
+
+ mark_c_language_function (&p->base);
+
+ ggc_mark_tree (p->x_dtor_label);
+ ggc_mark_tree (p->x_current_class_ptr);
+ ggc_mark_tree (p->x_current_class_ref);
+ ggc_mark_tree (p->x_eh_spec_block);
+ ggc_mark_tree_varray (p->x_local_names);
+
+ mark_named_label_lists (&p->x_named_labels, &p->x_named_label_uses);
+ mark_binding_level (&p->bindings);
+ mark_pending_inlines (&p->unparsed_inlines);
+}
+
+/* Mark the language-specific data in F for GC. */
+
+static void
+mark_cp_function_context (f)
+ struct function *f;
+{
+ mark_lang_function ((struct cp_language_function *) f->language);
+}
+
+void
+lang_mark_tree (t)
+ tree t;
+{
+ enum tree_code code = TREE_CODE (t);
+ if (code == IDENTIFIER_NODE)
+ {
+ struct lang_identifier *li = (struct lang_identifier *) t;
+ struct lang_id2 *li2 = li->x;
+ ggc_mark_tree (li->namespace_bindings);
+ ggc_mark_tree (li->bindings);
+ ggc_mark_tree (li->class_value);
+ ggc_mark_tree (li->class_template_info);
+
+ if (li2)
+ {
+ ggc_mark_tree (li2->label_value);
+ ggc_mark_tree (li2->implicit_decl);
+ ggc_mark_tree (li2->error_locus);
+ }
+ }
+ else if (code == CPLUS_BINDING)
{
- case DEFAULT_ARG: return TS_CP_IDENTIFIER;
- case IDENTIFIER_NODE: return TS_CP_IDENTIFIER;
- case OVERLOAD: return TS_CP_OVERLOAD;
- case TEMPLATE_PARM_INDEX: return TS_CP_TPI;
- case PTRMEM_CST: return TS_CP_PTRMEM;
- case WRAPPER: return TS_CP_WRAPPER;
- case SRCLOC: return TS_CP_SRCLOC;
- default: return TS_CP_GENERIC;
+ if (BINDING_HAS_LEVEL_P (t))
+ mark_binding_level (&BINDING_LEVEL (t));
+ else
+ ggc_mark_tree (BINDING_SCOPE (t));
+ ggc_mark_tree (BINDING_VALUE (t));
+ }
+ else if (code == OVERLOAD)
+ ggc_mark_tree (OVL_FUNCTION (t));
+ else if (code == TEMPLATE_PARM_INDEX)
+ ggc_mark_tree (TEMPLATE_PARM_DECL (t));
+ else if (TREE_CODE_CLASS (code) == 'd')
+ {
+ struct lang_decl *ld = DECL_LANG_SPECIFIC (t);
+
+ if (ld)
+ {
+ ggc_mark (ld);
+ c_mark_lang_decl (&ld->decl_flags.base);
+ if (!DECL_GLOBAL_CTOR_P (t)
+ && !DECL_GLOBAL_DTOR_P (t)
+ && !DECL_THUNK_P (t)
+ && !DECL_DISCRIMINATOR_P (t))
+ ggc_mark_tree (ld->decl_flags.u2.access);
+ else if (DECL_THUNK_P (t))
+ ggc_mark_tree (ld->decl_flags.u2.vcall_offset);
+ if (TREE_CODE (t) != NAMESPACE_DECL)
+ ggc_mark_tree (ld->decl_flags.u.template_info);
+ else
+ mark_binding_level (&NAMESPACE_LEVEL (t));
+ if (CAN_HAVE_FULL_LANG_DECL_P (t))
+ {
+ ggc_mark_tree (ld->befriending_classes);
+ ggc_mark_tree (ld->context);
+ ggc_mark_tree (ld->cloned_function);
+ if (TREE_CODE (t) == TYPE_DECL)
+ ggc_mark_tree (ld->u.sorted_fields);
+ else if (TREE_CODE (t) == FUNCTION_DECL
+ && !DECL_PENDING_INLINE_P (t))
+ mark_lang_function (DECL_SAVED_FUNCTION_DATA (t));
+ }
+ }
+ }
+ else if (TREE_CODE_CLASS (code) == 't')
+ {
+ struct lang_type *lt = TYPE_LANG_SPECIFIC (t);
+
+ if (lt && !(TREE_CODE (t) == POINTER_TYPE
+ && TREE_CODE (TREE_TYPE (t)) == METHOD_TYPE))
+ {
+ ggc_mark (lt);
+ ggc_mark_tree (lt->primary_base);
+ ggc_mark_tree (lt->vfields);
+ ggc_mark_tree (lt->vbases);
+ ggc_mark_tree (lt->tags);
+ ggc_mark_tree (lt->size);
+ ggc_mark_tree (lt->pure_virtuals);
+ ggc_mark_tree (lt->friend_classes);
+ ggc_mark_tree (lt->rtti);
+ ggc_mark_tree (lt->methods);
+ ggc_mark_tree (lt->template_info);
+ ggc_mark_tree (lt->befriending_classes);
+ }
+ else if (lt)
+ /* In the case of pointer-to-member function types, the
+ TYPE_LANG_SPECIFIC is really just a tree. */
+ ggc_mark_tree ((tree) lt);
}
}
@@ -15399,6 +14869,3 @@ cp_missing_noreturn_ok_p (decl)
/* A missing noreturn is ok for the `main' function. */
return DECL_MAIN_P (decl);
}
-
-#include "gt-cp-decl.h"
-#include "gtype-cp.h"
diff --git a/contrib/gcc/cp/except.c b/contrib/gcc/cp/except.c
index 747cc1a..5de9f4c 100644
--- a/contrib/gcc/cp/except.c
+++ b/contrib/gcc/cp/except.c
@@ -31,10 +31,10 @@ Boston, MA 02111-1307, USA. */
#include "libfuncs.h"
#include "cp-tree.h"
#include "flags.h"
+#include "obstack.h"
#include "output.h"
#include "except.h"
#include "toplev.h"
-#include "tree-inline.h"
static void push_eh_cleanup PARAMS ((tree));
static tree prepare_eh_type PARAMS ((tree));
@@ -46,14 +46,15 @@ static void push_eh_cleanup PARAMS ((tree));
static bool decl_is_java_type PARAMS ((tree decl, int err));
static void initialize_handler_parm PARAMS ((tree, tree));
static tree do_allocate_exception PARAMS ((tree));
-static tree stabilize_throw_expr PARAMS ((tree, tree *));
-static tree wrap_cleanups_r PARAMS ((tree *, int *, void *));
static int complete_ptr_ref_or_void_ptr_p PARAMS ((tree, tree));
static bool is_admissible_throw_operand PARAMS ((tree));
static int can_convert_eh PARAMS ((tree, tree));
static void check_handlers_1 PARAMS ((tree, tree));
static tree cp_protect_cleanup_actions PARAMS ((void));
+#include "decl.h"
+#include "obstack.h"
+
/* Sets up all the global eh stuff that needs to be initialized at the
start of compilation. */
@@ -117,7 +118,7 @@ prepare_eh_type (type)
}
/* Build the address of a typeinfo decl for use in the runtime
- matching field of the exception model. */
+ matching field of the exception model. */
static tree
build_eh_type_type (type)
@@ -174,13 +175,17 @@ static int
dtor_nothrow (type)
tree type;
{
+ tree fn;
+
if (type == NULL_TREE)
return 0;
if (! TYPE_HAS_DESTRUCTOR (type))
return 1;
- return TREE_NOTHROW (CLASSTYPE_DESTRUCTORS (type));
+ fn = lookup_member (type, dtor_identifier, 0, 0);
+ fn = TREE_VALUE (fn);
+ return TREE_NOTHROW (fn);
}
/* Build up a call to __cxa_end_catch, to destroy the exception object
@@ -513,7 +518,7 @@ do_allocate_exception (type)
#if 0
/* Call __cxa_free_exception from a cleanup. This is never invoked
- directly, but see the comment for stabilize_throw_expr. */
+ directly. */
static tree
do_free_exception (ptr)
@@ -535,92 +540,6 @@ do_free_exception (ptr)
}
#endif
-/* Wrap all cleanups for TARGET_EXPRs in MUST_NOT_THROW_EXPR.
- Called from build_throw via walk_tree_without_duplicates. */
-
-static tree
-wrap_cleanups_r (tp, walk_subtrees, data)
- tree *tp;
- int *walk_subtrees ATTRIBUTE_UNUSED;
- void *data ATTRIBUTE_UNUSED;
-{
- tree exp = *tp;
- tree cleanup;
-
- /* Don't walk into types. */
- if (TYPE_P (exp))
- {
- *walk_subtrees = 0;
- return NULL_TREE;
- }
- if (TREE_CODE (exp) != TARGET_EXPR)
- return NULL_TREE;
-
- cleanup = TARGET_EXPR_CLEANUP (exp);
- if (cleanup)
- {
- cleanup = build1 (MUST_NOT_THROW_EXPR, TREE_TYPE (cleanup), cleanup);
- TARGET_EXPR_CLEANUP (exp) = cleanup;
- }
-
- /* Keep iterating. */
- return NULL_TREE;
-}
-
-/* Like stabilize_expr, but specifically for a thrown expression. When
- throwing a temporary class object, we want to construct it directly into
- the thrown exception, so we look past the TARGET_EXPR and stabilize the
- arguments of the call instead.
-
- The case where EXP is a call to a function returning a class is a bit of
- a grey area in the standard; it's unclear whether or not it should be
- allowed to throw. I'm going to say no, as that allows us to optimize
- this case without worrying about deallocating the exception object if it
- does. The alternatives would be either not optimizing this case, or
- wrapping the initialization in a TRY_CATCH_EXPR to call do_free_exception
- rather than in a MUST_NOT_THROW_EXPR, for this case only. */
-
-static tree
-stabilize_throw_expr (exp, initp)
- tree exp;
- tree *initp;
-{
- tree init_expr;
-
- if (TREE_CODE (exp) == TARGET_EXPR
- && TREE_CODE (TARGET_EXPR_INITIAL (exp)) == AGGR_INIT_EXPR
- && flag_elide_constructors)
- {
- tree aggr_init = AGGR_INIT_EXPR_CHECK (TARGET_EXPR_INITIAL (exp));
- tree args = TREE_OPERAND (aggr_init, 1);
- tree newargs = NULL_TREE;
- tree *p = &newargs;
-
- init_expr = void_zero_node;
- for (; args; args = TREE_CHAIN (args))
- {
- tree arg = TREE_VALUE (args);
- tree arg_init_expr;
-
- arg = stabilize_expr (arg, &arg_init_expr);
-
- if (TREE_SIDE_EFFECTS (arg_init_expr))
- init_expr = build (COMPOUND_EXPR, void_type_node, init_expr,
- arg_init_expr);
- *p = tree_cons (NULL_TREE, arg, NULL_TREE);
- p = &TREE_CHAIN (*p);
- }
- TREE_OPERAND (aggr_init, 1) = newargs;
- }
- else
- {
- exp = stabilize_expr (exp, &init_expr);
- }
-
- *initp = init_expr;
- return exp;
-}
-
/* Build a throw expression. */
tree
@@ -666,9 +585,10 @@ build_throw (exp)
{
tree throw_type;
tree cleanup;
+ tree stmt_expr;
+ tree compound_stmt;
tree object, ptr;
tree tmp;
- tree temp_expr, allocate_expr;
fn = get_identifier ("__cxa_throw");
if (IDENTIFIER_GLOBAL_VALUE (fn))
@@ -694,6 +614,8 @@ build_throw (exp)
fn = push_throw_library_fn (fn, tmp);
}
+ begin_init_stmts (&stmt_expr, &compound_stmt);
+
/* throw expression */
/* First, decay it. */
exp = decay_conversion (exp);
@@ -711,40 +633,37 @@ build_throw (exp)
the call to __cxa_allocate_exception first (which doesn't
matter, since it can't throw). */
- /* Pre-evaluate the thrown expression first, since if we allocated
- the space first we would have to deal with cleaning it up if
- evaluating this expression throws. */
- exp = stabilize_throw_expr (exp, &temp_expr);
+ my_friendly_assert (stmts_are_full_exprs_p () == 1, 19990926);
+
+ /* Store the throw expression into a temp. This can be less
+ efficient than storing it into the allocated space directly, but
+ if we allocated the space first we would have to deal with
+ cleaning it up if evaluating this expression throws. */
+ if (TREE_SIDE_EFFECTS (exp))
+ {
+ tmp = create_temporary_var (TREE_TYPE (exp));
+ DECL_INITIAL (tmp) = exp;
+ cp_finish_decl (tmp, exp, NULL_TREE, LOOKUP_ONLYCONVERTING);
+ exp = tmp;
+ }
/* Allocate the space for the exception. */
- allocate_expr = do_allocate_exception (TREE_TYPE (exp));
- allocate_expr = get_target_expr (allocate_expr);
- ptr = TARGET_EXPR_SLOT (allocate_expr);
+ ptr = create_temporary_var (ptr_type_node);
+ DECL_REGISTER (ptr) = 1;
+ cp_finish_decl (ptr, NULL_TREE, NULL_TREE, LOOKUP_ONLYCONVERTING);
+ tmp = do_allocate_exception (TREE_TYPE (exp));
+ tmp = build_modify_expr (ptr, INIT_EXPR, tmp);
+ finish_expr_stmt (tmp);
+
object = build1 (NOP_EXPR, build_pointer_type (TREE_TYPE (exp)), ptr);
object = build_indirect_ref (object, NULL);
- /* And initialize the exception object. */
- exp = build_init (object, exp, LOOKUP_ONLYCONVERTING);
+ exp = build_modify_expr (object, INIT_EXPR, exp);
if (exp == error_mark_node)
- {
- error (" in thrown expression");
- return error_mark_node;
- }
+ error (" in thrown expression");
exp = build1 (MUST_NOT_THROW_EXPR, TREE_TYPE (exp), exp);
- /* Prepend the allocation. */
- exp = build (COMPOUND_EXPR, TREE_TYPE (exp), allocate_expr, exp);
- if (temp_expr != void_zero_node)
- {
- /* Prepend the calculation of the throw expression. Also, force
- any cleanups from the expression to be evaluated here so that
- we don't have to do them during unwinding. But first wrap
- them in MUST_NOT_THROW_EXPR, since they are run after the
- exception object is initialized. */
- walk_tree_without_duplicates (&temp_expr, wrap_cleanups_r, 0);
- exp = build (COMPOUND_EXPR, TREE_TYPE (exp), temp_expr, exp);
- exp = build1 (CLEANUP_POINT_EXPR, TREE_TYPE (exp), exp);
- }
+ finish_expr_stmt (exp);
throw_type = build_eh_type_type (prepare_eh_type (TREE_TYPE (object)));
@@ -752,9 +671,9 @@ build_throw (exp)
{
cleanup = lookup_fnfields (TYPE_BINFO (TREE_TYPE (object)),
complete_dtor_identifier, 0);
- cleanup = BASELINK_FUNCTIONS (cleanup);
+ cleanup = TREE_VALUE (cleanup);
mark_used (cleanup);
- cxx_mark_addressable (cleanup);
+ mark_addressable (cleanup);
/* Pretend it's a normal function. */
cleanup = build1 (ADDR_EXPR, cleanup_type, cleanup);
}
@@ -767,11 +686,13 @@ build_throw (exp)
tmp = tree_cons (NULL_TREE, cleanup, NULL_TREE);
tmp = tree_cons (NULL_TREE, throw_type, tmp);
tmp = tree_cons (NULL_TREE, ptr, tmp);
- /* ??? Indicate that this function call throws throw_type. */
tmp = build_function_call (fn, tmp);
- /* Tack on the initialization stuff. */
- exp = build (COMPOUND_EXPR, TREE_TYPE (tmp), exp, tmp);
+ /* ??? Indicate that this function call throws throw_type. */
+
+ finish_expr_stmt (tmp);
+
+ exp = finish_init_stmts (stmt_expr, compound_stmt);
}
else
{
@@ -787,8 +708,6 @@ build_throw (exp)
(fn, build_function_type (void_type_node, void_list_node));
}
- /* ??? Indicate that this function call allows exceptions of the type
- of the enclosing catch block (if known). */
exp = build_function_call (fn, NULL_TREE);
}
@@ -799,7 +718,7 @@ build_throw (exp)
/* Make sure TYPE is complete, pointer to complete, reference to
complete, or pointer to cv void. Issue diagnostic on failure.
- Return the zero on failure and nonzero on success. FROM can be
+ Return the zero on failure and non-zero on success. FROM can be
the expr or decl from whence TYPE came, if available. */
static int
diff --git a/contrib/gcc/cp/g++.c b/contrib/gcc/cp/g++.c
deleted file mode 100644
index f694898..0000000
--- a/contrib/gcc/cp/g++.c
+++ /dev/null
@@ -1,582 +0,0 @@
-/* G++ preliminary semantic processing for the compiler driver.
- Copyright (C) 1993, 1994, 1995 Free Software Foundation, Inc.
- Contributed by Brendan Kehoe (brendan@cygnus.com).
-
-This file is part of GNU CC.
-
-GNU CC is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU CC is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-/* This program is a wrapper to the main `gcc' driver. For GNU C++,
- we need to do two special things: a) append `-lg++' in situations
- where it's appropriate, to link in libg++, and b) add `-xc++'..`-xnone'
- around file arguments named `foo.c' or `foo.i'. So, we do all of
- this semantic processing then just exec gcc with the new argument
- list.
-
- We used to do all of this in a small shell script, but many users
- found the performance of this as a shell script to be unacceptable.
- In situations where your PATH has a lot of NFS-mounted directories,
- using a script that runs sed and other things would be a nasty
- performance hit. With this program, we never search the PATH at all. */
-
-#include "config.h"
-#ifdef __STDC__
-#include <stdarg.h>
-#else
-#include <varargs.h>
-#endif
-#include <stdio.h>
-#include <sys/types.h>
-#if !defined(_WIN32)
-#include <sys/file.h> /* May get R_OK, etc. on some systems. */
-#else
-#include <process.h>
-#endif
-#include <errno.h>
-
-/* Defined to the name of the compiler; if using a cross compiler, the
- Makefile should compile this file with the proper name
- (e.g., "i386-aout-gcc"). */
-#ifndef GCC_NAME
-#define GCC_NAME "gcc"
-#endif
-
-/* This bit is set if we saw a `-xfoo' language specification. */
-#define LANGSPEC (1<<1)
-/* This bit is set if they did `-lm' or `-lmath'. */
-#define MATHLIB (1<<2)
-
-#ifndef MATH_LIBRARY
-#define MATH_LIBRARY "-lm"
-#endif
-
-/* On MSDOS, write temp files in current dir
- because there's no place else we can expect to use. */
-#ifdef __MSDOS__
-#ifndef P_tmpdir
-#define P_tmpdir "."
-#endif
-#ifndef R_OK
-#define R_OK 4
-#define W_OK 2
-#define X_OK 1
-#endif
-#endif
-
-#ifndef VPROTO
-#ifdef __STDC__
-#define PVPROTO(ARGS) ARGS
-#define VPROTO(ARGS) ARGS
-#define VA_START(va_list,var) va_start(va_list,var)
-#else
-#define PVPROTO(ARGS) ()
-#define VPROTO(ARGS) (va_alist) va_dcl
-#define VA_START(va_list,var) va_start(va_list)
-#endif
-#endif
-
-#ifndef errno
-extern int errno;
-#endif
-
-extern int sys_nerr;
-#ifndef HAVE_STRERROR
-#if defined(bsd4_4)
-extern const char *const sys_errlist[];
-#else
-extern char *sys_errlist[];
-#endif
-#else
-extern char *strerror();
-#endif
-
-/* Name with which this program was invoked. */
-static char *programname;
-
-char *
-my_strerror(e)
- int e;
-{
-
-#ifdef HAVE_STRERROR
- return strerror(e);
-
-#else
-
- static char buffer[30];
- if (!e)
- return "";
-
- if (e > 0 && e < sys_nerr)
- return sys_errlist[e];
-
- sprintf (buffer, "Unknown error %d", e);
- return buffer;
-#endif
-}
-
-#ifdef HAVE_VPRINTF
-/* Output an error message and exit */
-
-static void
-fatal VPROTO((char *format, ...))
-{
-#ifndef __STDC__
- char *format;
-#endif
- va_list ap;
-
- VA_START (ap, format);
-
-#ifndef __STDC__
- format = va_arg (ap, char*);
-#endif
-
- fprintf (stderr, "%s: ", programname);
- vfprintf (stderr, format, ap);
- va_end (ap);
- fprintf (stderr, "\n");
-#if 0
- /* XXX Not needed for g++ driver. */
- delete_temp_files ();
-#endif
- exit (1);
-}
-
-static void
-error VPROTO((char *format, ...))
-{
-#ifndef __STDC__
- char *format;
-#endif
- va_list ap;
-
- VA_START (ap, format);
-
-#ifndef __STDC__
- format = va_arg (ap, char*);
-#endif
-
- fprintf (stderr, "%s: ", programname);
- vfprintf (stderr, format, ap);
- va_end (ap);
-
- fprintf (stderr, "\n");
-}
-
-#else /* not HAVE_VPRINTF */
-
-static void
-error (msg, arg1, arg2)
- char *msg, *arg1, *arg2;
-{
- fprintf (stderr, "%s: ", programname);
- fprintf (stderr, msg, arg1, arg2);
- fprintf (stderr, "\n");
-}
-
-static void
-fatal (msg, arg1, arg2)
- char *msg, *arg1, *arg2;
-{
- error (msg, arg1, arg2);
-#if 0
- /* XXX Not needed for g++ driver. */
- delete_temp_files ();
-#endif
- exit (1);
-}
-
-#endif /* not HAVE_VPRINTF */
-
-/* More 'friendly' abort that prints the line and file.
- config.h can #define abort fancy_abort if you like that sort of thing. */
-
-void
-fancy_abort ()
-{
- fatal ("Internal g++ abort.");
-}
-
-char *
-xmalloc (size)
- unsigned size;
-{
- register char *value = (char *) malloc (size);
- if (value == 0)
- fatal ("virtual memory exhausted");
- return value;
-}
-
-/* Return a newly-allocated string whose contents concatenate those
- of s1, s2, s3. */
-static char *
-concat (s1, s2, s3)
- char *s1, *s2, *s3;
-{
- int len1 = strlen (s1), len2 = strlen (s2), len3 = strlen (s3);
- char *result = xmalloc (len1 + len2 + len3 + 1);
-
- strcpy (result, s1);
- strcpy (result + len1, s2);
- strcpy (result + len1 + len2, s3);
- *(result + len1 + len2 + len3) = 0;
-
- return result;
-}
-
-static void
-pfatal_with_name (name)
- char *name;
-{
- fatal (concat ("%s: ", my_strerror (errno), ""), name);
-}
-
-#ifdef __MSDOS__
-/* This is the common prefix we use to make temp file names. */
-char *temp_filename;
-
-/* Length of the prefix. */
-int temp_filename_length;
-
-/* Compute a string to use as the base of all temporary file names. */
-static char *
-choose_temp_base_try (try, base)
-char *try;
-char *base;
-{
- char *rv;
- if (base)
- rv = base;
- else if (try == (char *)0)
- rv = 0;
- else if (access (try, R_OK | W_OK) != 0)
- rv = 0;
- else
- rv = try;
- return rv;
-}
-
-static void
-choose_temp_base ()
-{
- char *base = 0;
- int len;
-
- base = choose_temp_base_try (getenv ("TMPDIR"), base);
- base = choose_temp_base_try (getenv ("TMP"), base);
- base = choose_temp_base_try (getenv ("TEMP"), base);
-
-#ifdef P_tmpdir
- base = choose_temp_base_try (P_tmpdir, base);
-#endif
-
- base = choose_temp_base_try ("/usr/tmp", base);
- base = choose_temp_base_try ("/tmp", base);
-
- /* If all else fails, use the current directory! */
- if (base == (char *)0)
- base = "./";
-
- len = strlen (base);
- temp_filename = xmalloc (len + sizeof("/ccXXXXXX"));
- strcpy (temp_filename, base);
- if (len > 0 && temp_filename[len-1] != '/')
- temp_filename[len++] = '/';
- strcpy (temp_filename + len, "ccXXXXXX");
-
- mktemp (temp_filename);
- temp_filename_length = strlen (temp_filename);
- if (temp_filename_length == 0)
- abort ();
-}
-
-static void
-perror_exec (name)
- char *name;
-{
- char *s;
-
- if (errno < sys_nerr)
- s = concat ("installation problem, cannot exec %s: ",
- my_strerror( errno ), "");
- else
- s = "installation problem, cannot exec %s";
- error (s, name);
-}
-
-/* This is almost exactly what's in gcc.c:pexecute for MSDOS. */
-void
-run_dos (program, argv)
- char *program;
- char *argv[];
-{
- char *scmd, *rf;
- FILE *argfile;
- int i;
-
- choose_temp_base (); /* not in gcc.c */
-
- scmd = (char *) malloc (strlen (program) + strlen (temp_filename) + 10);
- rf = scmd + strlen (program) + 6;
- sprintf (scmd, "%s.exe @%s.gp", program, temp_filename);
-
- argfile = fopen (rf, "w");
- if (argfile == 0)
- pfatal_with_name (rf);
-
- for (i=1; argv[i]; i++)
- {
- char *cp;
- for (cp = argv[i]; *cp; cp++)
- {
- if (*cp == '"' || *cp == '\'' || *cp == '\\' || isspace (*cp))
- fputc ('\\', argfile);
- fputc (*cp, argfile);
- }
- fputc ('\n', argfile);
- }
- fclose (argfile);
-
- i = system (scmd);
-
- remove (rf);
-
- if (i == -1)
- perror_exec (program);
-}
-#endif /* __MSDOS__ */
-
-int
-main (argc, argv)
- int argc;
- char **argv;
-{
- register int i, j = 0;
- register char *p;
- int verbose = 0;
-
- /* This will be 0 if we encounter a situation where we should not
- link in libstdc++, or 2 if we should link in libg++ as well. */
- int library = 1;
-
- /* Used to track options that take arguments, so we don't go wrapping
- those with -xc++/-xnone. */
- char *quote = NULL;
-
- /* The new argument list will be contained in this. */
- char **arglist;
-
- /* The name of the compiler we will want to run---by default, it
- will be the definition of `GCC_NAME', e.g., `gcc'. */
- char *gcc = GCC_NAME;
-
- /* Non-zero if we saw a `-xfoo' language specification on the
- command line. Used to avoid adding our own -xc++ if the user
- already gave a language for the file. */
- int saw_speclang = 0;
-
- /* Non-zero if we saw `-lm' or `-lmath' on the command line. */
- char *saw_math = 0;
-
- /* The number of arguments being added to what's in argv, other than
- libraries. We use this to track the number of times we've inserted
- -xc++/-xnone. */
- int added = 0;
-
- /* An array used to flag each argument that needs a bit set for
- LANGSPEC or MATHLIB. */
- int *args;
-
- p = argv[0] + strlen (argv[0]);
-
- /* If we're called as g++ (or i386-aout-g++), link in libg++ as well. */
-
- if (strcmp (p - 3, "g++") == 0)
- {
- library = 2;
- }
-
- while (p != argv[0] && p[-1] != '/')
- --p;
- programname = p;
-
- if (argc == 1)
- fatal ("No input files specified.\n");
-
-#ifndef __MSDOS__
- /* We do a little magic to find out where the main gcc executable
- is. If they ran us as /usr/local/bin/g++, then we will look
- for /usr/local/bin/gcc; similarly, if they just ran us as `g++',
- we'll just look for `gcc'. */
- if (p != argv[0])
- {
- *--p = '\0';
- gcc = (char *) malloc ((strlen (argv[0]) + 1 + strlen (GCC_NAME) + 1)
- * sizeof (char));
- sprintf (gcc, "%s/%s", argv[0], GCC_NAME);
- }
-#endif
-
- args = (int *) malloc (argc * sizeof (int));
- bzero ((char *) args, argc * sizeof (int));
-
- for (i = 1; i < argc; i++)
- {
- /* If the previous option took an argument, we swallow it here. */
- if (quote)
- {
- quote = NULL;
- continue;
- }
-
- if (argv[i][0] == '\0' || argv[i][1] == '\0')
- continue;
-
- if (argv[i][0] == '-')
- {
- if (library != 0 && strcmp (argv[i], "-nostdlib") == 0)
- {
- library = 0;
- }
- else if (strcmp (argv[i], "-lm") == 0
- || strcmp (argv[i], "-lmath") == 0)
- args[i] |= MATHLIB;
- else if (strcmp (argv[i], "-v") == 0)
- {
- verbose = 1;
- if (argc == 2)
- {
- /* If they only gave us `-v', don't try to link
- in libg++. */
- library = 0;
- }
- }
- else if (strncmp (argv[i], "-x", 2) == 0)
- saw_speclang = 1;
- else if (((argv[i][2] == '\0'
- && (char *)strchr ("bBVDUoeTuIYmLiA", argv[i][1]) != NULL)
- || strcmp (argv[i], "-Tdata") == 0))
- quote = argv[i];
- else if (library != 0 && ((argv[i][2] == '\0'
- && (char *) strchr ("cSEM", argv[i][1]) != NULL)
- || strcmp (argv[i], "-MM") == 0))
- {
- /* Don't specify libraries if we won't link, since that would
- cause a warning. */
- library = 0;
- }
- else
- /* Pass other options through. */
- continue;
- }
- else
- {
- int len;
-
- if (saw_speclang)
- {
- saw_speclang = 0;
- continue;
- }
-
- /* If the filename ends in .c or .i, put options around it.
- But not if a specified -x option is currently active. */
- len = strlen (argv[i]);
- if (len > 2
- && (argv[i][len - 1] == 'c' || argv[i][len - 1] == 'i')
- && argv[i][len - 2] == '.')
- {
- args[i] |= LANGSPEC;
- added += 2;
- }
- }
- }
-
- if (quote)
- fatal ("argument to `%s' missing\n", quote);
-
- if (added || library)
- {
- arglist = (char **) malloc ((argc + added + 4) * sizeof (char *));
-
- for (i = 1, j = 1; i < argc; i++, j++)
- {
- arglist[j] = argv[i];
-
- /* Make sure -lg++ is before the math library, since libg++
- itself uses those math routines. */
- if (!saw_math && (args[i] & MATHLIB) && library)
- {
- --j;
- saw_math = argv[i];
- }
-
- /* Wrap foo.c and foo.i files in a language specification to
- force the gcc compiler driver to run cc1plus on them. */
- if (args[i] & LANGSPEC)
- {
- int len = strlen (argv[i]);
- if (argv[i][len - 1] == 'i')
- arglist[j++] = "-xc++-cpp-output";
- else
- arglist[j++] = "-xc++";
- arglist[j++] = argv[i];
- arglist[j] = "-xnone";
- }
- }
-
- /* Add `-lg++' if we haven't already done so. */
- if (library == 2)
- arglist[j++] = "-lg++";
- if (library)
- arglist[j++] = "-lstdc++";
- if (saw_math)
- arglist[j++] = saw_math;
- else if (library)
- arglist[j++] = MATH_LIBRARY;
-
- arglist[j] = NULL;
- }
- else
- /* No need to copy 'em all. */
- arglist = argv;
-
- arglist[0] = gcc;
-
- if (verbose)
- {
- if (j == 0)
- j = argc;
-
- for (i = 0; i < j; i++)
- fprintf (stderr, " %s", arglist[i]);
- fprintf (stderr, "\n");
- }
-#if !defined(OS2) && !defined (_WIN32)
-#ifdef __MSDOS__
- run_dos (gcc, arglist);
-#else /* !__MSDOS__ */
- if (execvp (gcc, arglist) < 0)
- pfatal_with_name (gcc);
-#endif /* __MSDOS__ */
-#else /* OS2 or _WIN32 */
- if (spawnvp (1, gcc, arglist) < 0)
- pfatal_with_name (gcc);
-#endif
-
- return 0;
-}
diff --git a/contrib/gcc/cp/ptree.c b/contrib/gcc/cp/ptree.c
index 6a7b26c..f6a7f1c 100644
--- a/contrib/gcc/cp/ptree.c
+++ b/contrib/gcc/cp/ptree.c
@@ -20,12 +20,21 @@ 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. */
+/* $FreeBSD$ */
+
#include "config.h"
#include "system.h"
#include "tree.h"
#include "cp-tree.h"
+#ifndef HOST_PTR_PRINTF_FORMAT
+#define HOST_PTR_PRINTF_FORMAT HOST_PTR_PRINTF
+#endif
+#ifndef HOST_PTR_PRINTF_TYPE
+#define HOST_PTR_PRINTF_TYPE (void *)
+#endif
+
void
cxx_print_decl (file, node, indent)
FILE *file;
@@ -49,19 +58,19 @@ cxx_print_decl (file, node, indent)
&& DECL_PENDING_INLINE_INFO (node))
{
fprintf (file, " pending-inline-info ");
- fprintf (file, HOST_PTR_PRINTF, DECL_PENDING_INLINE_INFO (node));
+ fprintf (file, HOST_PTR_PRINTF_FORMAT, HOST_PTR_PRINTF_TYPE DECL_PENDING_INLINE_INFO (node));
}
if (TREE_CODE (node) == TYPE_DECL
&& DECL_SORTED_FIELDS (node))
{
fprintf (file, " sorted-fields ");
- fprintf (file, HOST_PTR_PRINTF, DECL_SORTED_FIELDS (node));
+ fprintf (file, HOST_PTR_PRINTF_FORMAT, HOST_PTR_PRINTF_TYPE DECL_SORTED_FIELDS (node));
}
if ((TREE_CODE (node) == FUNCTION_DECL || TREE_CODE (node) == VAR_DECL)
&& DECL_TEMPLATE_INFO (node))
{
fprintf (file, " template-info ");
- fprintf (file, HOST_PTR_PRINTF, DECL_TEMPLATE_INFO (node));
+ fprintf (file, HOST_PTR_PRINTF_FORMAT, HOST_PTR_PRINTF_TYPE DECL_TEMPLATE_INFO (node));
}
}
@@ -157,23 +166,15 @@ cxx_print_type (file, node, indent)
}
}
-static void
-cxx_print_binding (FILE *stream, cxx_binding *binding, const char *prefix)
-{
- fprintf (stream, "%s <", prefix);
- fprintf (stream, HOST_PTR_PRINTF, (char *) binding);
- fprintf (stream, ">");
-}
-
void
cxx_print_identifier (file, node, indent)
FILE *file;
tree node;
int indent;
{
- cxx_print_binding (file, IDENTIFIER_NAMESPACE_BINDINGS (node), "bindings");
+ print_node (file, "bindings", IDENTIFIER_NAMESPACE_BINDINGS (node), indent + 4);
print_node (file, "class", IDENTIFIER_CLASS_VALUE (node), indent + 4);
- cxx_print_binding (file, IDENTIFIER_BINDING (node), "local bindings");
+ print_node (file, "local bindings", IDENTIFIER_BINDING (node), indent + 4);
print_node (file, "label", IDENTIFIER_LABEL_VALUE (node), indent + 4);
print_node (file, "template", IDENTIFIER_TEMPLATE (node), indent + 4);
print_node (file, "implicit", IDENTIFIER_IMPLICIT_DECL (node), indent + 4);
@@ -188,6 +189,12 @@ cxx_print_xnode (file, node, indent)
{
switch (TREE_CODE (node))
{
+ case CPLUS_BINDING:
+ fprintf (file, " scope ");
+ fprintf (file, HOST_PTR_PRINTF_FORMAT, HOST_PTR_PRINTF_TYPE BINDING_SCOPE (node));
+ print_node (file, "value", BINDING_VALUE (node), indent+4);
+ print_node (file, "chain", TREE_CHAIN (node), indent+4);
+ break;
case OVERLOAD:
print_node (file, "function", OVL_FUNCTION (node), indent+4);
print_node (file, "chain", TREE_CHAIN (node), indent+4);
diff --git a/contrib/gcc/cp/reno.texi b/contrib/gcc/cp/reno.texi
deleted file mode 100644
index 59c3448..0000000
--- a/contrib/gcc/cp/reno.texi
+++ /dev/null
@@ -1,752 +0,0 @@
-\input texinfo @c -*- Texinfo -*-
-@setfilename reno-1.info
-
-@ifinfo
-@format
-START-INFO-DIR-ENTRY
-* Reno 1: (reno-1). The GNU C++ Renovation Project, Phase 1.
-END-INFO-DIR-ENTRY
-@end format
-@end ifinfo
-
-@ifinfo
-Copyright @copyright{} 1992, 1993, 1994 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-@ignore
-Permission is granted to process this file through TeX and print the
-results, provided the printed document carries a copying permission
-notice identical to this one except for the removal of this paragraph
-(this paragraph not being relevant to the printed manual).
-
-@end ignore
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided also that
-the entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions.
-@end ifinfo
-
-@setchapternewpage odd
-@settitle GNU C++ Renovation Project
-@c @smallbook
-
-@titlepage
-@finalout
-@title GNU C++ Renovation Project
-@subtitle Phase 1.3
-@author Brendan Kehoe, Jason Merrill,
-@author Mike Stump, Michael Tiemann
-@page
-
-Edited March, 1994 by Roland Pesch (@code{pesch@@cygnus.com})
-@vskip 0pt plus 1filll
-Copyright @copyright{} 1992, 1993, 1994 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-@ignore
-Permission is granted to process this file through Tex and print the
-results, provided the printed document carries copying permission
-notice identical to this one except for the removal of this paragraph
-(this paragraph not being relevant to the printed manual).
-@end ignore
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided also that
-the entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions.
-@end titlepage
-
-@ifinfo
-@node Top
-@top @sc{gnu} C++ Renovation Project
-
-This file describes the goals of the @sc{gnu} C++ Renovation Project,
-and its accomplishments to date (as of Phase 1.3).
-
-It also discusses the remaining divergences from @sc{gnu} C++, and how the
-name encoding in @sc{gnu} C++ differs from the sample encoding in
-@cite{The Annotated C++ Reference Manual}.
-@c This is not a good place to introduce the acronym ARM because it's
-@c info-only.
-
-@menu
-* Introduction:: What is the GNU C++ Renovation Project?
-* Changes:: Summary of changes since previous GNU C++ releases.
-* Plans:: Plans for Reno-2.
-* Templates:: The template implementation.
-* ANSI:: GNU C++ conformance to ANSI C++.
-* Encoding:: Name encoding in GNU C++.
-@end menu
-
-@end ifinfo
-
-@node Introduction
-@chapter Introduction
-
-As you may remember, @sc{gnu} C++ was the first native-code C++
-compiler available under Unix (December 1987). In November 1988, it was
-judged superior to the AT&T compiler in a Unix World review. In 1990 it
-won a Sun Observer ``Best-Of'' award. But now, with new requirements
-coming out of the @sc{ansi} C++ committee and a growing backlog of bugs, it's
-clear that @sc{gnu} C++ needs an overhaul.
-
-The C++ language has been under development since 1982. It has
-evolved significantly since its original incarnation (C with Classes),
-addressing many commercial needs and incorporating many lessons
-learned as more and more people started using ``object-oriented''
-programming techniques. In 1989, the first X3J16 committee meeting
-was held in Washington DC; in the interest of users, C++ was going to
-be standardized.
-
-As C++ has become more popular, more demands have been placed on its
-compilers. Some compilers are up to the demands, others are not.
-@sc{gnu} C++ was used to prototype several features which have since
-been incorporated into the standard, most notably exception handling.
-While @sc{gnu} C++ has been an excellent experimental vehicle, it did
-not have the resources that AT&T, Borland, or Microsoft have at their
-disposal.
-
-We believe that @sc{gnu} C++ is an important compiler, providing users with
-many of the features that have made @sc{gnu} C so popular: fast compilation,
-good error messages, innovative features, and full sources that may be
-freely redistributed. The purpose of this overhaul, dubbed the @var{@sc{gnu}
-C++ Renovation Project}, is to take advantage of the functionality that
-@sc{gnu} C++ offers today, to strengthen its base technology, and put it in a
-position to remain---as other @sc{gnu} software currently is---the technical
-leader in the field.
-
-This release represents the latest phase of work in strengthening the
-compiler on a variety of points. It includes many months of
-work concentrated on fixing many of the more egregious bugs that
-presented themselves in the compiler recently.
-@ignore
-@c FIXME-- update?
-Nearly 85% of all bugs reported in the period of February to September
-of 1992 were fixed as part of the work in the first phase.
-@end ignore
-In the coming months, we hope to continue expanding and enhancing the
-quality and dependability of the industry's only freely redistributable
-C++ compiler.
-
-@node Changes
-@chapter Changes in Behavior in @sc{gnu} C++
-
-The @sc{gnu} C++ compiler continues to improve and change. A major goal
-of our work has been to continue to bring the compiler into compliance
-with the draft @sc{ansi} C++ standard, and with @cite{The Annotated C++
-Reference Manual} (the @sc{arm}). This section outlines most of the
-user-noticeable changes that might be encountered during the normal
-course of use.
-
-@menu
-* Summary of Phase 1.3::
-* Major changes::
-* New features::
-* Enhancements and bug fixes::
-* Problems with debugging::
-@end menu
-
-@node Summary of Phase 1.3
-@section Summary of Changes in Phase 1.3
-
-The bulk of this note discusses the cumulative effects of the @sc{gnu} C++
-Renovation Project to date. The work during its most recent phase (1.3)
-had these major effects:
-
-@itemize @bullet
-@item The standard compiler driver @code{g++} is now the faster compiled
-version, rather than a shell script.
-
-@item Nested types work much better; notably, nesting is no longer
-restricted to nine levels.
-
-@item Better @sc{arm} conformance on member access control.
-
-@item The compiler now always generates default assignment operators
-(@samp{operator =}), copy constructors (@samp{X::X(X&)}), and default
-constructors (@samp{X::X()}) whenever they are required.
-
-@item The new draft @sc{ansi} standard keyword @code{mutable} is supported.
-
-@item @samp{-fansi-overloading} is the default, to comply better with
-the @sc{arm} (at some cost in compatibility to earlier versions of @sc{gnu} C++).
-
-@item More informative error messages.
-
-@item System include files are automatically treated as if they were
-wrapped in @samp{extern "C" @{ @}}.
-
-@item The new option @samp{-falt-external-templates} provides alternate
-template instantiation semantics.
-
-@item Operator declarations are now checked more strictly.
-
-@item You can now use template type arguments in the template parameter list.
-
-@item You can call the destructor for any type.
-
-@item The compiler source code is better organized.
-
-@item You can specify where to instantiate template definitions explicitly.
-@end itemize
-
-Much of the work in Phase 1.3 went to elimination of known bugs, as well
-as the major items above.
-
-During the span of Phase 1.3, there were also two changes associated
-with the compiler that, while not specifically part of the C++
-Renovation project, may be of interest:
-
-@itemize @bullet
-@item @code{gcov}, a code coverage tool for @sc{gnu cc}, is now available
-from Cygnus Support. (@code{gcov} is free software, but the @sc{fsf} has not
-yet accepted it.) @xref{Gcov,, @code{gcov}: a Test Coverage Program,
-gcc.info, Using GNU CC}, for more information (in Cygnus releases of
-that manual).
-
-@item @sc{gnu} C++ now supports @dfn{signatures}, a language extension to
-provide more flexibility in abstract type definitions. @xref{C++
-Signatures,, Type Abstraction using Signatures, gcc.info, Using GNU CC}.
-@end itemize
-
-@node Major changes
-@section Major Changes
-
-This release includes four wholesale rewrites of certain areas of
-compiler functionality:
-
-@enumerate 1
-@item Argument matching. @sc{gnu} C++ is more compliant with the rules
-described in Chapter 13, ``Overloading'', of the @sc{arm}. This behavior is
-the default, though you can specify it explicitly with
-@samp{-fansi-overloading}. For compatibility with earlier releases of
-@sc{gnu} C++, specify @samp{-fno-ansi-overloading}; this makes the compiler
-behave as it used to with respect to argument matching and name overloading.
-
-@item Default constructors/destructors. Section 12.8 of the @sc{arm}, ``Copying
-Class Objects'', and Section 12.1, ``Constructors'', state that a
-compiler must declare such default functions if the user does not
-specify them. @sc{gnu} C++ now declares, and generates when necessary,
-the defaults for constructors and destructors you might omit. In
-particular, assignment operators (@samp{operator =}) behave the same way
-whether you define them, or whether the compiler generates them by
-default; taking the address of the default @samp{operator =} is now
-guaranteed to work. Default copy constructors (@samp{X::X(X&)}) now
-function correctly, rather than calling the copy assignment operator for
-the base class. Finally, constructors (@samp{X::X()}), as well as
-assignment operators and copy constructors, are now available whenever
-they are required.
-
-@c XXX This may be taken out eventually...
-@item Binary incompatibility. There are no new binary incompatibilities
-in Phase 1.3, but Phase 1.2 introduced two binary incompatibilities with
-earlier releases. First, the functionality of @samp{operator
-new} and @samp{operator delete} changed. Name encoding
-(``mangling'') of virtual table names changed as well. Libraries
-built with versions of the compiler earlier than Phase 1.2 must be
-compiled with the new compiler. (This includes the Cygnus Q2
-progressive release and the FSF 2.4.5 release.)
-
-@item New @code{g++} driver.
-A new binary @code{g++} compiler driver replaces the shell script.
-The new driver executes faster.
-@end enumerate
-
-@node New features
-@section New features
-
-@itemize @bullet
-@item
-The compiler warns when a class contains only private constructors
-or destructors, and has no friends. At the request of some of our
-customers, we have added a new option, @samp{-Wctor-dtor-privacy} (on by
-default), and its negation, @samp{-Wno-ctor-dtor-privacy}, to control
-the emission of this warning. If, for example, you are working towards
-making your code compile warning-free, you can use @w{@samp{-Wall
--Wno-ctor-dtor-privacy}} to find the most common warnings.
-
-@item
-There is now a mechanism which controls exactly when templates are
-expanded, so that you can reduce memory usage and program size and also
-instantiate them exactly once. You can control this mechanism with the
-option @samp{-fexternal-templates} and its corresponding negation
-@samp{-fno-external-templates}. Without this feature, space consumed by
-template instantiations can grow unacceptably in large-scale projects
-with many different source files. The default is
-@samp{-fno-external-templates}.
-
-You do not need to use the @samp{-fexternal-templates} option when
-compiling a file that does not define and instantiate templates used in
-other files, even if those files @emph{are} compiled with
-@samp{-fexternal-templates}. The only side effect is an increase in
-object size for each file that was compiled without
-@samp{-fexternal-templates}.
-
-When your code is compiled with @samp{-fexternal-templates}, all
-template instantiations are external; this requires that the templates
-be under the control of @samp{#pragma interface} and @samp{#pragma
-implementation}. All instantiations that will be needed should be in
-the implementation file; you can do this with a @code{typedef} that
-references the instantiation needed. Conversely, when you compile using
-the option @samp{-fno-external-templates}, all template instantiations are
-explicitly internal.
-
-@samp{-fexternal-templates} also allows you to finally separate class
-template function definitions from their declarations, thus speeding up
-compilation times for every file that includes the template declaration.
-Now you can have tens or even hundreds of lines in template
-declarations, and thousands or tens of thousands of lines in template
-definitions, with the definitions only going through the compiler once
-instead of once for each source file. It is important to note that you
-must remember to externally instantiate @emph{all} templates that are
-used from template declarations in interface files. If you forget to do
-this, unresolved externals will occur.
-
-In the example below, the object file generated (@file{example.o}) will
-contain the global instantiation for @samp{Stack<int>}. If other types
-of @samp{Stack} are needed, they can be added to @file{example.cc} or
-placed in a new file, in the same spirit as @file{example.cc}.
-
-@code{foo.h}:
-@smallexample
-@group
-#pragma interface "foo.h"
-template<class T>
-class Stack @{
- static int statc;
- static T statc2;
- Stack() @{ @}
- virtual ~Stack() @{ @}
- int bar();
-@};
-@end group
-@end smallexample
-
-@code{example.cc}:
-@smallexample
-@group
-#pragma implementation "foo.h"
-#include "foo.h"
-
-typedef Stack<int> t;
-int Stack<int>::statc;
-int Stack<int>::statc2;
-int Stack<int>::bar() @{ @}
-@end group
-@end smallexample
-
-Note that using @samp{-fexternal-templates} does not reduce memory usage
-from completely different instantiations (@samp{Stack<Name>} vs.
-@samp{Stack<Net_Connection>}), but only collapses different occurrences
-of @samp{Stack<Name>} so that only one @samp{Stack<Name>} is generated.
-
-@samp{-falt-external-templates} selects a slight variation in the
-semantics described above (incidentally, you need not specify both
-options; @samp{-falt-external-templates} implies
-@samp{-fexternal-templates}).
-
-With @samp{-fexternal-templates}, the compiler emits a definition in the
-implementation file that includes the header definition, @emph{even if}
-instantiation is triggered from a @emph{different} implementation file
-(e.g. with a template that uses another template).
-
-With @samp{-falt-external-templates}, the definition always goes in the
-implementation file that triggers instantiation.
-
-For instance, with these two header files---
-
-@example
-@exdent @file{a.h}:
-#pragma interface
-template <class T> class A @{ @dots{} @};
-
-@exdent @file{b.h}:
-#pragma interface
-class B @{ @dots{} @};
-void f (A<B>);
-@end example
-
-Under @samp{-fexternal-templates}, the definition of @samp{A<B>} ends up
-in the implementation file that includes @file{a.h}. Under
-@samp{-falt-external-templates}, the same definition ends up in the
-implementation file that includes @file{b.h}.
-
-@item
-You can control explicitly where a template is instantiated, without
-having to @emph{use} the template to get an instantiation.
-
-To instantiate a class template explicitly, write @samp{template
-class @var{name}<paramvals>}, where @var{paramvals} is a list of values
-for the template parameters. For example, you might write
-
-@example
-template class A<int>
-@end example
-
-Similarly, to instantiate a function template explicitly, write
-@samp{template @var{fnsign}} where @var{fnsign} is the particular
-function signature you need. For example, you might write
-
-@example
-template void foo (int, int)
-@end example
-
-This syntax for explicit template instantiation agrees with recent
-extensions to the draft @sc{ansi} standard.
-
-@item
-The compiler's actions on @sc{ansi}-related warnings and errors have
-been further enhanced. The @samp{-pedantic-errors} option produces
-error messages in a number of new situations: using @code{return} in a
-non-@code{void} function (one returning a value); declaring a local
-variable that shadows a parameter (e.g., the function takes an argument
-@samp{a}, and has a local variable @samp{a}); and use of the @samp{asm}
-keyword. Finally, the compiler by default now issues a warning when
-converting from an @code{int} to an enumerated type. This is likely to
-cause many new warnings in code that hadn't triggered them before. For
-example, when you compile this code,
-
-@smallexample
-@group
-enum boolean @{ false, true @};
-void
-f ()
-@{
- boolean x;
-
- x = 1; //@i{assigning an @code{int} to an @code{enum} now triggers a warning}
-@}
-@end group
-@end smallexample
-
-@noindent
-you should see the warning ``@code{anachronistic conversion from integer
-type to enumeral type `boolean'}''. Instead of assigning the value 1,
-assign the original enumerated value @samp{true}.
-@end itemize
-
-@node Enhancements and bug fixes
-@section Enhancements and bug fixes
-
-@itemize @bullet
-@cindex nested types in template parameters
-@item
-You can now use nested types in a template parameter list, even if the nested
-type is defined within the same class that attempts to use the template.
-For example, given a template @code{list}, the following now works:
-
-@smallexample
-struct glyph @{
- @dots{}
- struct stroke @{ @dots{} @};
- list<stroke> l;
- @dots{}
-@}
-@end smallexample
-
-@cindex function pointers vs template parameters
-@item
-Function pointers now work in template parameter lists. For
-example, you might want to instantiate a parameterized @code{list} class
-in terms of a pointer to a function like this:
-
-@smallexample
-list<int (*)(int, void *)> fnlist;
-@end smallexample
-
-@item
-@c FIXME! Really no limit? Jason said "deeper than 9" now OK...
-Nested types are now handled correctly. In particular, there is no
-longer a limit to how deeply you can nest type definitions.
-
-@item
-@sc{gnu} C++ now conforms to the specifications in Chapter 11 of the
-@sc{arm}, ``Member Access Control''.
-
-@item
-The @sc{ansi} C++ committee has introduced a new keyword @code{mutable}.
-@sc{gnu} C++ supports it. Use @code{mutable} to specify that some
-particular members of a @code{const} class are @emph{not} constant. For
-example, you can use this to include a cache in a data structure that
-otherwise represents a read-only database.
-
-@item
-Error messages now explicitly specify the declaration, type, or
-expression that contains an error.
-
-@item
-To avoid copying and editing all system include files during @sc{gnu}
-C++ installation, the compiler now automatically recognizes system
-include files as C language definitions, as if they were wrapped in
-@samp{extern "C" @{ @dots{} @}}.
-
-@item
-The compiler checks operator declarations more strictly. For example,
-you may no longer declare an @samp{operator +} with three arguments.
-
-@item
-You can now use template type arguments in the same template
-parameter list where the type argument is specified (as well as in the
-template body). For example, you may write
-
-@example
-template <class T, T t> class A @{ @dots{} @};
-@end example
-
-@item
-Destructors are now available for all types, even built-in ones; for
-example, you can call @samp{int::~int}. (Destructors for types like
-@code{int} do not actually do anything, but their existence provides a
-level of generality that permits smooth template expansion in more
-cases.)
-
-@item
-Enumerated types declared inside a class are now handled correctly.
-
-@item
-An argument list for a function may not use an initializer list for its default
-value. For example, @w{@samp{void foo ( T x = @{ 1, 2 @} )}} is not permitted.
-
-@item
-A significant amount of work went into improving the ability of the
-compiler to act accurately on multiple inheritance and virtual
-functions. Virtual function dispatch has been enhanced as well.
-
-@item
-The warning concerning a virtual inheritance environment with a
-non-virtual destructor has been disabled, since it is not clear that
-such a warning is warranted.
-
-@item
-Until exception handling is fully implemented in the Reno-2 release, use
-of the identifiers @samp{catch}, @samp{throw}, or @samp{try} results
-in the warning:
-
-@smallexample
-t.C:1: warning: `catch', `throw', and `try'
- are all C++ reserved words
-@end smallexample
-
-@item
-When giving a warning or error concerning initialization of a member in a
-class, the compiler gives the name of the member if it has one.
-
-@item
-Detecting friendship between classes is more accurately checked.
-
-@item
-The syntaxes of @w{@samp{#pragma implementation "file.h"}} and
-@samp{#pragma interface} are now more strictly controlled. The compiler
-notices (and warns) when any text follows @file{file.h} in the
-implementation pragma, or follows the word @samp{interface}. Any such
-text is otherwise ignored.
-
-@item
-Trying to declare a template on a variable or type is now considered an
-error, not an unimplemented feature.
-
-@item
-When an error occurs involving a template, the compiler attempts to
-tell you at which point of instantiation the error occurred, in
-addition to noting the line in the template declaration which had the
-actual error.
-
-@item
-The symbol names for function templates in the resulting assembly file
-are now encoded according to the arguments, rather than just being
-emitted as, for example, two definitions of a function @samp{foo}.
-
-@item
-Template member functions that are declared @code{static} no longer
-receive a @code{this} pointer.
-
-@item
-Case labels are no longer allowed to have commas to make up their
-expressions.
-
-@item
-Warnings concerning the shift count of a left or right shift now tell
-you if it was a @samp{left} or @samp{right} shift.
-
-@item
-The compiler now warns when a decimal constant is so large that it
-becomes @code{unsigned}.
-
-@item
-Union initializers which are raw constructors are now handled properly.
-
-@item
-The compiler no longer gives incorrect errors when initializing a
-union with an empty initializer list.
-
-@item
-Anonymous unions are now correctly used when nested inside a class.
-
-@item
-Anonymous unions declared as static class members are now handled
-properly.
-
-@item
-The compiler now notices when a field in a class is declared both as
-a type and a non-type.
-
-@item
-The compiler now warns when a user-defined function shadows a
-built-in function, rather than emitting an error.
-
-@item
-A conflict between two function declarations now produces an error
-regardless of their language context.
-
-@item
-Duplicate definitions of variables with @samp{extern "C"} linkage are no
-longer considered in error. (Note in C++ linkage---the default---you may
-not have more than one definition of a variable.)
-
-@item
-Referencing a label that is not defined in any function is now an error.
-
-@item
-The syntax for pointers to methods has been improved; there are still
-some minor bugs, but a number of cases should now be accepted by the
-compiler.
-
-@item
-In error messages, arguments are now numbered starting at 1, instead of
-0. Therefore, in the function @samp{void foo (int a, int b)}, the
-argument @samp{a} is argument 1, and @samp{b} is argument 2. There is
-no longer an argument 0.
-
-@item
-The tag for an enumerator, rather than its value, used as a default
-argument is now shown in all error messages. For example, @w{@samp{void
-foo (enum x (= true))}} is shown instead of @w{@samp{void foo (enum x (=
-1))}}.
-
-@item
-The @samp{__asm__} keyword is now accepted by the C++ front-end.
-
-@item
-Expressions of the form @samp{foo->~Class()} are now handled properly.
-
-@item
-The compiler now gives better warnings for situations which result in
-integer overflows (e.g., in storage sizes, enumerators, unary
-expressions, etc).
-
-@item
-@code{unsigned} bitfields are now promoted to @code{signed int} if the
-field isn't as wide as an @code{int}.
-
-@item
-Declaration and usage of prefix and postfix @samp{operator ++} and
-@samp{operator --} are now handled correctly. For example,
-
-@smallexample
-@group
-class foo
-@{
-public:
- operator ++ ();
- operator ++ (int);
- operator -- ();
- operator -- (int);
-@};
-
-void
-f (foo *f)
-@{
- f++; // @i{call @code{f->operator++(int)}}
- ++f; // @i{call @code{f->operator++()}}
- f--; // @i{call @code{f->operator++(int)}}
- --f; // @i{call @code{f->operator++()}}
-@}
-@end group
-@end smallexample
-
-@item
-In accordance with @sc{arm} section 10.1.1, ambiguities and dominance are now
-handled properly. The rules described in section 10.1.1 are now fully
-implemented.
-
-@end itemize
-
-@node Problems with debugging
-@section Problems with debugging
-
-Two problems remain with regard to debugging:
-
-@itemize @bullet
-@item
-Debugging of anonymous structures on the IBM RS/6000 host is incorrect.
-
-@item
-Symbol table size is overly large due to redundant symbol information;
-this can make @code{gdb} coredump under certain circumstances. This
-problem is not host-specific.
-@end itemize
-
-@node Plans
-@chapter Plans for Reno-2
-
-The overall goal for the second phase of the @sc{gnu} C++ Renovation
-Project is to bring @sc{gnu} C++ to a new level of reliability, quality,
-and competitiveness. As particular elements of this strategy, we intend
-to:
-
-@enumerate 0
-@item
-Fully implement @sc{ansi} exception handling.
-
-@item
-With the exception handling, add Runtime Type Identification
-(@sc{rtti}), if the @sc{ansi} committee adopts it into the standard.
-
-@item
-Bring the compiler into closer compliance with the @sc{arm} and the draft
-@sc{ansi} standard, and document what points in the @sc{arm} we do not yet comply,
-or agree, with.
-
-@item
-Add further support for the @sc{dwarf} debugging format.
-
-@item
-Finish the work to make the compiler compliant with @sc{arm} Section 12.6.2,
-initializing base classes in declaration order, rather than in the order
-that you specify them in a @var{mem-initializer} list.
-
-@item
-Perform a full coverage analysis on the compiler, and weed out unused
-code, for a gain in performance and a reduction in the size of the compiler.
-
-@item
-Further improve the multiple inheritance implementation in the
-compiler to make it cleaner and more complete.
-@end enumerate
-
-@noindent
-As always, we encourage you to make suggestions and ask questions about
-@sc{gnu} C++ as a whole, so we can be sure that the end of this project
-will bring a compiler that everyone will find essential for C++ and will
-meet the needs of the world's C++ community.
-
-@include templates.texi
-
-@include gpcompare.texi
-
-@contents
-
-@bye
diff --git a/contrib/gcc/cppinit.c b/contrib/gcc/cppinit.c
index d8e622b..8e1b22e 100644
--- a/contrib/gcc/cppinit.c
+++ b/contrib/gcc/cppinit.c
@@ -19,14 +19,24 @@ 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. */
+/* $FreeBSD$ */
+
#include "config.h"
#include "system.h"
#include "cpplib.h"
#include "cpphash.h"
#include "prefix.h"
#include "intl.h"
+#include "version.h"
#include "mkdeps.h"
#include "cppdefault.h"
+#include "except.h" /* for USING_SJLJ_EXCEPTIONS */
+
+/* Predefined symbols, built-in macros, and the default include path. */
+
+#ifndef GET_ENV_PATH_LIST
+#define GET_ENV_PATH_LIST(VAR,NAME) do { (VAR) = getenv (NAME); } while (0)
+#endif
/* Windows does not natively support inodes, and neither does MSDOS.
Cygwin's emulation can generate non-unique inodes, so don't use it.
@@ -86,6 +96,7 @@ struct cpp_pending
} while (0)
#endif
+static void print_help PARAMS ((void));
static void path_include PARAMS ((cpp_reader *,
char *, int));
static void init_library PARAMS ((void));
@@ -105,13 +116,15 @@ static void merge_include_chains PARAMS ((cpp_reader *));
static bool push_include PARAMS ((cpp_reader *,
struct pending_option *));
static void free_chain PARAMS ((struct pending_option *));
+static void set_lang PARAMS ((cpp_reader *, enum c_lang));
+static void init_dependency_output PARAMS ((cpp_reader *));
static void init_standard_includes PARAMS ((cpp_reader *));
static void read_original_filename PARAMS ((cpp_reader *));
static void new_pending_directive PARAMS ((struct cpp_pending *,
const char *,
cl_directive_handler));
+static void output_deps PARAMS ((cpp_reader *));
static int parse_option PARAMS ((const char *));
-static void post_options PARAMS ((cpp_reader *));
/* Fourth argument to append_include_chain: chain to use.
Note it's never asked to append to the quote chain. */
@@ -124,14 +137,14 @@ enum { BRACKET = 0, SYSTEM, AFTER };
#define init_trigraph_map() /* Nothing. */
#define TRIGRAPH_MAP \
-__extension__ const uchar _cpp_trigraph_map[UCHAR_MAX + 1] = {
+__extension__ const U_CHAR _cpp_trigraph_map[UCHAR_MAX + 1] = {
#define END };
#define s(p, v) [p] = v,
#else
-#define TRIGRAPH_MAP uchar _cpp_trigraph_map[UCHAR_MAX + 1] = { 0 }; \
+#define TRIGRAPH_MAP U_CHAR _cpp_trigraph_map[UCHAR_MAX + 1] = { 0 }; \
static void init_trigraph_map PARAMS ((void)) { \
unsigned char *x = _cpp_trigraph_map;
@@ -194,14 +207,14 @@ path_include (pfile, list, path)
/* Append DIR to include path PATH. DIR must be allocated on the
heap; this routine takes responsibility for freeing it. CXX_AWARE
- is nonzero if the header contains extern "C" guards for C++,
+ is non-zero if the header contains extern "C" guards for C++,
otherwise it is zero. */
static void
append_include_chain (pfile, dir, path, cxx_aware)
cpp_reader *pfile;
char *dir;
int path;
- int cxx_aware;
+ int cxx_aware ATTRIBUTE_UNUSED;
{
struct cpp_pending *pend = CPP_OPTION (pfile, pending);
struct search_path *new;
@@ -219,7 +232,7 @@ append_include_chain (pfile, dir, path, cxx_aware)
{
/* Dirs that don't exist are silently ignored. */
if (errno != ENOENT)
- cpp_errno (pfile, DL_ERROR, dir);
+ cpp_notice_from_errno (pfile, dir);
else if (CPP_OPTION (pfile, verbose))
fprintf (stderr, _("ignoring nonexistent directory \"%s\"\n"), dir);
free (dir);
@@ -228,7 +241,7 @@ append_include_chain (pfile, dir, path, cxx_aware)
if (!S_ISDIR (st.st_mode))
{
- cpp_error_with_line (pfile, DL_ERROR, 0, 0, "%s: Not a directory", dir);
+ cpp_notice (pfile, "%s: Not a directory", dir);
free (dir);
return;
}
@@ -246,7 +259,11 @@ append_include_chain (pfile, dir, path, cxx_aware)
include files since these two lists are really just a concatenation
of one "system" list. */
if (path == SYSTEM || path == AFTER)
+#ifdef NO_IMPLICIT_EXTERN_C
+ new->sysp = 1;
+#else
new->sysp = cxx_aware ? 1 : 2;
+#endif
else
new->sysp = 0;
new->name_map = NULL;
@@ -293,9 +310,9 @@ remove_dup_dir (pfile, prev, head_ptr)
}
/* Remove duplicate non-system directories for which there is an equivalent
- system directory latter in the chain. The range for removal is between
+ system directory later in the chain. The range for removal is between
*HEAD_PTR and END. Returns the directory before END, or NULL if none.
- This algorithm is quadratic in the number system directories, which is
+ This algorithm is quadratic in the number of system directories, which is
acceptable since there aren't usually that many of them. */
static struct search_path *
remove_dup_nonsys_dirs (pfile, head_ptr, end)
@@ -350,7 +367,7 @@ remove_dup_dirs (pfile, head_ptr)
for (cur = *head_ptr; cur; cur = cur->next)
{
for (other = *head_ptr; other != cur; other = other->next)
- if (INO_T_EQ (cur->ino, other->ino) && cur->dev == other->dev)
+ if (INO_T_EQ (cur->ino, other->ino) && cur->dev == other->dev)
{
cur = remove_dup_dir (pfile, prev, head_ptr);
break;
@@ -430,6 +447,7 @@ merge_include_chains (pfile)
struct lang_flags
{
char c99;
+ char objc;
char cplusplus;
char extended_numbers;
char std;
@@ -440,28 +458,31 @@ struct lang_flags
/* ??? Enable $ in identifiers in assembly? */
static const struct lang_flags lang_defaults[] =
-{ /* c99 c++ xnum std dollar c++comm digr */
- /* GNUC89 */ { 0, 0, 1, 0, 1, 1, 1 },
- /* GNUC99 */ { 1, 0, 1, 0, 1, 1, 1 },
- /* STDC89 */ { 0, 0, 0, 1, 0, 0, 0 },
- /* STDC94 */ { 0, 0, 0, 1, 0, 0, 1 },
- /* STDC99 */ { 1, 0, 1, 1, 0, 1, 1 },
- /* GNUCXX */ { 0, 1, 1, 0, 1, 1, 1 },
- /* CXX98 */ { 0, 1, 1, 1, 0, 1, 1 },
- /* ASM */ { 0, 0, 1, 0, 0, 1, 0 }
+{ /* c99 objc c++ xnum std dollar c++comm digr */
+ /* GNUC89 */ { 0, 0, 0, 1, 0, 1, 1, 1 },
+ /* GNUC99 */ { 1, 0, 0, 1, 0, 1, 1, 1 },
+ /* STDC89 */ { 0, 0, 0, 0, 1, 0, 0, 0 },
+ /* STDC94 */ { 0, 0, 0, 0, 1, 0, 0, 1 },
+ /* STDC99 */ { 1, 0, 0, 1, 1, 0, 1, 1 },
+ /* GNUCXX */ { 0, 0, 1, 1, 0, 1, 1, 1 },
+ /* CXX98 */ { 0, 0, 1, 1, 1, 0, 1, 1 },
+ /* OBJC */ { 0, 1, 0, 1, 0, 1, 1, 1 },
+ /* OBJCXX */ { 0, 1, 1, 1, 0, 1, 1, 1 },
+ /* ASM */ { 0, 0, 0, 1, 0, 0, 1, 0 }
};
/* Sets internal flags correctly for a given language. */
-void
-cpp_set_lang (pfile, lang)
+static void
+set_lang (pfile, lang)
cpp_reader *pfile;
enum c_lang lang;
{
const struct lang_flags *l = &lang_defaults[(int) lang];
-
+
CPP_OPTION (pfile, lang) = lang;
CPP_OPTION (pfile, c99) = l->c99;
+ CPP_OPTION (pfile, objc) = l->objc;
CPP_OPTION (pfile, cplusplus) = l->cplusplus;
CPP_OPTION (pfile, extended_numbers) = l->extended_numbers;
CPP_OPTION (pfile, std) = l->std;
@@ -515,35 +536,31 @@ cpp_create_reader (lang)
{
cpp_reader *pfile;
- /* Initialize this instance of the library if it hasn't been already. */
+ /* Initialise this instance of the library if it hasn't been already. */
init_library ();
pfile = (cpp_reader *) xcalloc (1, sizeof (cpp_reader));
- cpp_set_lang (pfile, lang);
+ set_lang (pfile, lang);
CPP_OPTION (pfile, warn_import) = 1;
- CPP_OPTION (pfile, warn_multichar) = 1;
CPP_OPTION (pfile, discard_comments) = 1;
- CPP_OPTION (pfile, discard_comments_in_macro_exp) = 1;
CPP_OPTION (pfile, show_column) = 1;
CPP_OPTION (pfile, tabstop) = 8;
CPP_OPTION (pfile, operator_names) = 1;
- CPP_OPTION (pfile, warn_endif_labels) = 1;
- CPP_OPTION (pfile, warn_long_long) = !CPP_OPTION (pfile, c99);
+#if DEFAULT_SIGNED_CHAR
+ CPP_OPTION (pfile, signed_char) = 1;
+#else
+ CPP_OPTION (pfile, signed_char) = 0;
+#endif
CPP_OPTION (pfile, pending) =
(struct cpp_pending *) xcalloc (1, sizeof (struct cpp_pending));
- /* Default CPP arithmetic to something sensible for the host for the
- benefit of dumb users like fix-header. */
- CPP_OPTION (pfile, precision) = CHAR_BIT * sizeof (long);
- CPP_OPTION (pfile, char_precision) = CHAR_BIT;
- CPP_OPTION (pfile, wchar_precision) = CHAR_BIT * sizeof (int);
- CPP_OPTION (pfile, int_precision) = CHAR_BIT * sizeof (int);
- CPP_OPTION (pfile, unsigned_char) = 0;
- CPP_OPTION (pfile, unsigned_wchar) = 1;
+ /* It's simplest to just create this struct whether or not it will
+ be needed. */
+ pfile->deps = deps_init ();
- /* Initialize the line map. Start at logical line 1, so we can use
+ /* Initialise the line map. Start at logical line 1, so we can use
a line number of zero for special states. */
init_line_maps (&pfile->line_maps);
pfile->line = 1;
@@ -552,6 +569,7 @@ cpp_create_reader (lang)
pfile->state.save_comments = ! CPP_OPTION (pfile, discard_comments);
/* Set up static tokens. */
+ pfile->date.type = CPP_EOF;
pfile->avoid_paste.type = CPP_PADDING;
pfile->avoid_paste.val.source = NULL;
pfile->eof.type = CPP_EOF;
@@ -562,7 +580,7 @@ cpp_create_reader (lang)
pfile->cur_run = &pfile->base_run;
pfile->cur_token = pfile->base_run.base;
- /* Initialize the base context. */
+ /* Initialise the base context. */
pfile->context = &pfile->base_context;
pfile->base_context.macro = 0;
pfile->base_context.prev = pfile->base_context.next = 0;
@@ -571,10 +589,7 @@ cpp_create_reader (lang)
pfile->a_buff = _cpp_get_buff (pfile, 0);
pfile->u_buff = _cpp_get_buff (pfile, 0);
- /* The expression parser stack. */
- _cpp_expand_op_stack (pfile);
-
- /* Initialize the buffer obstack. */
+ /* Initialise the buffer obstack. */
gcc_obstack_init (&pfile->buffer_ob);
_cpp_init_includes (pfile);
@@ -583,25 +598,19 @@ cpp_create_reader (lang)
}
/* Free resources used by PFILE. Accessing PFILE after this function
- returns leads to undefined behavior. Returns the error count. */
-void
+ returns leads to undefined behaviour. Returns the error count. */
+int
cpp_destroy (pfile)
cpp_reader *pfile;
{
+ int result;
struct search_path *dir, *dirn;
cpp_context *context, *contextn;
tokenrun *run, *runn;
- free_chain (CPP_OPTION (pfile, pending)->include_head);
- free (CPP_OPTION (pfile, pending));
- free (pfile->op_stack);
-
while (CPP_BUFFER (pfile) != NULL)
_cpp_pop_buffer (pfile);
- if (pfile->out.base)
- free (pfile->out.base);
-
if (pfile->macro_buffer)
{
free ((PTR) pfile->macro_buffer);
@@ -609,8 +618,7 @@ cpp_destroy (pfile)
pfile->macro_buffer_len = 0;
}
- if (pfile->deps)
- deps_free (pfile->deps);
+ deps_free (pfile->deps);
obstack_free (&pfile->buffer_ob, 0);
_cpp_destroy_hashtable (pfile);
@@ -642,31 +650,40 @@ cpp_destroy (pfile)
}
free_line_maps (&pfile->line_maps);
+
+ result = pfile->errors;
free (pfile);
+
+ return result;
}
+
/* This structure defines one built-in identifier. A node will be
- entered in the hash table under the name NAME, with value VALUE.
-
- There are two tables of these. builtin_array holds all the
- "builtin" macros: these are handled by builtin_macro() in
- cppmacro.c. Builtin is somewhat of a misnomer -- the property of
- interest is that these macros require special code to compute their
- expansions. The value is a "builtin_type" enumerator.
-
- operator_array holds the C++ named operators. These are keywords
- which act as aliases for punctuators. In C++, they cannot be
- altered through #define, and #if recognizes them as operators. In
- C, these are not entered into the hash table at all (but see
- <iso646.h>). The value is a token-type enumerator. */
+ entered in the hash table under the name NAME, with value VALUE (if
+ any). If flags has OPERATOR, the node's operator field is used; if
+ flags has BUILTIN the node's builtin field is used. Macros that are
+ known at build time should not be flagged BUILTIN, as then they do
+ not appear in macro dumps with e.g. -dM or -dD.
+
+ Two values are not compile time constants, so we tag
+ them in the FLAGS field instead:
+ VERS value is the global version_string, quoted
+ ULP value is the global user_label_prefix */
struct builtin
{
- const uchar *name;
+ const U_CHAR *name;
+ const char *value;
+ unsigned char builtin;
+ unsigned short flags;
unsigned short len;
- unsigned short value;
};
+#define VERS 0x01
+#define ULP 0x02
+#define BUILTIN 0x08
-#define B(n, t) { DSC(n), t }
+#define B(n, t) { U n, 0, t, BUILTIN, sizeof n - 1 }
+#define C(n, v) { U n, v, 0, 0, sizeof n - 1 }
+#define X(n, f) { U n, 0, 0, f, sizeof n - 1 }
static const struct builtin builtin_array[] =
{
B("__TIME__", BT_TIME),
@@ -675,14 +692,51 @@ static const struct builtin builtin_array[] =
B("__BASE_FILE__", BT_BASE_FILE),
B("__LINE__", BT_SPECLINE),
B("__INCLUDE_LEVEL__", BT_INCLUDE_LEVEL),
- /* Keep builtins not used for -traditional-cpp at the end, and
- update init_builtins() if any more are added. */
B("_Pragma", BT_PRAGMA),
+
+ X("__VERSION__", VERS),
+ X("__USER_LABEL_PREFIX__", ULP),
+ C("__REGISTER_PREFIX__", REGISTER_PREFIX),
+ C("__HAVE_BUILTIN_SETJMP__", "1"),
+#if USING_SJLJ_EXCEPTIONS
+ /* libgcc needs to know this. */
+ C("__USING_SJLJ_EXCEPTIONS__","1"),
+#endif
+#ifndef NO_BUILTIN_SIZE_TYPE
+ C("__SIZE_TYPE__", SIZE_TYPE),
+#endif
+#ifndef NO_BUILTIN_PTRDIFF_TYPE
+ C("__PTRDIFF_TYPE__", PTRDIFF_TYPE),
+#endif
+#ifndef NO_BUILTIN_WCHAR_TYPE
+ C("__WCHAR_TYPE__", WCHAR_TYPE),
+#endif
+#ifndef NO_BUILTIN_WINT_TYPE
+ C("__WINT_TYPE__", WINT_TYPE),
+#endif
+#ifdef STDC_0_IN_SYSTEM_HEADERS
B("__STDC__", BT_STDC),
+#else
+ C("__STDC__", "1"),
+#endif
};
-
-static const struct builtin operator_array[] =
+#undef B
+#undef C
+#undef X
+#define builtin_array_end \
+ builtin_array + sizeof(builtin_array)/sizeof(struct builtin)
+
+/* Named operators known to the preprocessor. These cannot be
+ #defined and always have their stated meaning. They are treated
+ like normal identifiers except for the type code and the meaning.
+ Most of them are only for C++ (but see iso646.h). */
+#define B(n, t) { DSC(n), t }
+static const struct named_op
{
+ const U_CHAR *name;
+ unsigned int len;
+ enum cpp_ttype value;
+} operator_array[] = {
B("and", CPP_AND_AND),
B("and_eq", CPP_AND_EQ),
B("bitand", CPP_AND),
@@ -702,7 +756,7 @@ static void
mark_named_operators (pfile)
cpp_reader *pfile;
{
- const struct builtin *b;
+ const struct named_op *b;
for (b = operator_array;
b < (operator_array + ARRAY_SIZE (operator_array));
@@ -721,34 +775,74 @@ init_builtins (pfile)
cpp_reader *pfile;
{
const struct builtin *b;
- size_t n = ARRAY_SIZE (builtin_array);
-
- if (CPP_OPTION (pfile, traditional))
- n -= 2;
- for(b = builtin_array; b < builtin_array + n; b++)
+ for(b = builtin_array; b < builtin_array_end; b++)
{
- cpp_hashnode *hp = cpp_lookup (pfile, b->name, b->len);
- hp->type = NT_MACRO;
- hp->flags |= NODE_BUILTIN | NODE_WARN;
- hp->value.builtin = b->value;
+ if (b->flags & BUILTIN)
+ {
+ cpp_hashnode *hp = cpp_lookup (pfile, b->name, b->len);
+ hp->type = NT_MACRO;
+ hp->flags |= NODE_BUILTIN | NODE_WARN;
+ hp->value.builtin = b->builtin;
+ }
+ else /* A standard macro of some kind. */
+ {
+ const char *val;
+ char *str;
+
+ if (b->flags & VERS)
+ {
+ /* Allocate enough space for 'name "value"\n\0'. */
+ str = alloca (b->len + strlen (version_string) + 5);
+ sprintf (str, "%s \"%s\"\n", b->name, version_string);
+ }
+ else
+ {
+ if (b->flags & ULP)
+ val = CPP_OPTION (pfile, user_label_prefix);
+ else
+ val = b->value;
+
+ /* Allocate enough space for "name value\n\0". */
+ str = alloca (b->len + strlen (val) + 3);
+ sprintf(str, "%s %s\n", b->name, val);
+ }
+
+ _cpp_define_builtin (pfile, str);
+ }
}
if (CPP_OPTION (pfile, cplusplus))
- _cpp_define_builtin (pfile, "__cplusplus 1");
- else if (CPP_OPTION (pfile, lang) == CLK_ASM)
- _cpp_define_builtin (pfile, "__ASSEMBLER__ 1");
- else if (CPP_OPTION (pfile, lang) == CLK_STDC94)
+ {
+ _cpp_define_builtin (pfile, "__cplusplus 1");
+ if (SUPPORTS_ONE_ONLY)
+ _cpp_define_builtin (pfile, "__GXX_WEAK__ 1");
+ else
+ _cpp_define_builtin (pfile, "__GXX_WEAK__ 0");
+ }
+ if (CPP_OPTION (pfile, objc))
+ _cpp_define_builtin (pfile, "__OBJC__ 1");
+
+ if (CPP_OPTION (pfile, lang) == CLK_STDC94)
_cpp_define_builtin (pfile, "__STDC_VERSION__ 199409L");
else if (CPP_OPTION (pfile, c99))
_cpp_define_builtin (pfile, "__STDC_VERSION__ 199901L");
- if (CPP_OPTION (pfile, objc))
- _cpp_define_builtin (pfile, "__OBJC__ 1");
+ if (CPP_OPTION (pfile, signed_char) == 0)
+ _cpp_define_builtin (pfile, "__CHAR_UNSIGNED__ 1");
- if (pfile->cb.register_builtins)
- (*pfile->cb.register_builtins) (pfile);
+ if (CPP_OPTION (pfile, lang) == CLK_STDC89
+ || CPP_OPTION (pfile, lang) == CLK_STDC94
+ || CPP_OPTION (pfile, lang) == CLK_STDC99)
+ _cpp_define_builtin (pfile, "__STRICT_ANSI__ 1");
+ else if (CPP_OPTION (pfile, lang) == CLK_ASM)
+ _cpp_define_builtin (pfile, "__ASSEMBLER__ 1");
}
+#undef BUILTIN
+#undef OPERATOR
+#undef VERS
+#undef ULP
+#undef builtin_array_end
/* And another subroutine. This one sets up the standard include path. */
static void
@@ -765,23 +859,23 @@ init_standard_includes (pfile)
etc. specify an additional list of directories to be searched as
if specified with -isystem, for the language indicated. */
- GET_ENVIRONMENT (path, "CPATH");
+ GET_ENV_PATH_LIST (path, "CPATH");
if (path != 0 && *path != 0)
path_include (pfile, path, BRACKET);
switch ((CPP_OPTION (pfile, objc) << 1) + CPP_OPTION (pfile, cplusplus))
{
case 0:
- GET_ENVIRONMENT (path, "C_INCLUDE_PATH");
+ GET_ENV_PATH_LIST (path, "C_INCLUDE_PATH");
break;
case 1:
- GET_ENVIRONMENT (path, "CPLUS_INCLUDE_PATH");
+ GET_ENV_PATH_LIST (path, "CPLUS_INCLUDE_PATH");
break;
case 2:
- GET_ENVIRONMENT (path, "OBJC_INCLUDE_PATH");
+ GET_ENV_PATH_LIST (path, "OBJC_INCLUDE_PATH");
break;
case 3:
- GET_ENVIRONMENT (path, "OBJCPLUS_INCLUDE_PATH");
+ GET_ENV_PATH_LIST (path, "OBJCPLUS_INCLUDE_PATH");
break;
}
if (path != 0 && *path != 0)
@@ -840,7 +934,7 @@ init_standard_includes (pfile)
}
/* Pushes a command line -imacro and -include file indicated by P onto
- the buffer stack. Returns nonzero if successful. */
+ the buffer stack. Returns non-zero if successful. */
static bool
push_include (pfile, p)
cpp_reader *pfile;
@@ -874,72 +968,6 @@ free_chain (head)
}
}
-/* Sanity-checks are dependent on command-line options, so it is
- called as a subroutine of cpp_read_main_file (). */
-#if ENABLE_CHECKING
-static void sanity_checks PARAMS ((cpp_reader *));
-static void sanity_checks (pfile)
- cpp_reader *pfile;
-{
- cppchar_t test = 0;
- size_t max_precision = 2 * CHAR_BIT * sizeof (cpp_num_part);
-
- /* Sanity checks for assumptions about CPP arithmetic and target
- type precisions made by cpplib. */
- test--;
- if (test < 1)
- cpp_error (pfile, DL_ICE, "cppchar_t must be an unsigned type");
-
- if (CPP_OPTION (pfile, precision) > max_precision)
- cpp_error (pfile, DL_ICE,
- "preprocessor arithmetic has maximum precision of %lu bits; target requires %lu bits",
- (unsigned long) max_precision,
- (unsigned long) CPP_OPTION (pfile, precision));
-
- if (CPP_OPTION (pfile, precision) < CPP_OPTION (pfile, int_precision))
- cpp_error (pfile, DL_ICE,
- "CPP arithmetic must be at least as precise as a target int");
-
- if (CPP_OPTION (pfile, char_precision) < 8)
- cpp_error (pfile, DL_ICE, "target char is less than 8 bits wide");
-
- if (CPP_OPTION (pfile, wchar_precision) < CPP_OPTION (pfile, char_precision))
- cpp_error (pfile, DL_ICE,
- "target wchar_t is narrower than target char");
-
- if (CPP_OPTION (pfile, int_precision) < CPP_OPTION (pfile, char_precision))
- cpp_error (pfile, DL_ICE,
- "target int is narrower than target char");
-
- /* This is assumed in eval_token() and could be fixed if necessary. */
- if (sizeof (cppchar_t) > sizeof (cpp_num_part))
- cpp_error (pfile, DL_ICE, "CPP half-integer narrower than CPP character");
-
- if (CPP_OPTION (pfile, wchar_precision) > BITS_PER_CPPCHAR_T)
- cpp_error (pfile, DL_ICE,
- "CPP on this host cannot handle wide character constants over %lu bits, but the target requires %lu bits",
- (unsigned long) BITS_PER_CPPCHAR_T,
- (unsigned long) CPP_OPTION (pfile, wchar_precision));
-}
-#else
-# define sanity_checks(PFILE)
-#endif
-
-/* Add a dependency target. Can be called any number of times before
- cpp_read_main_file(). If no targets have been added before
- cpp_read_main_file(), then the default target is used. */
-void
-cpp_add_dependency_target (pfile, target, quote)
- cpp_reader *pfile;
- const char *target;
- int quote;
-{
- if (!pfile->deps)
- pfile->deps = deps_init ();
-
- deps_add_target (pfile->deps, target, quote);
-}
-
/* This is called after options have been parsed, and partially
processed. Setup for processing input from the file named FNAME,
or stdin if it is the empty string. Return the original filename
@@ -950,10 +978,6 @@ cpp_read_main_file (pfile, fname, table)
const char *fname;
hash_table *table;
{
- sanity_checks (pfile);
-
- post_options (pfile);
-
/* The front ends don't set up the hash table until they have
finished processing the command line options, so initializing the
hashtable is deferred until now. */
@@ -979,22 +1003,17 @@ cpp_read_main_file (pfile, fname, table)
fprintf (stderr, _("End of search list.\n"));
}
- if (CPP_OPTION (pfile, deps.style) != DEPS_NONE)
- {
- if (!pfile->deps)
- pfile->deps = deps_init ();
-
- /* Set the default target (if there is none already). */
- deps_add_default_target (pfile->deps, fname);
- }
+ if (CPP_OPTION (pfile, print_deps))
+ /* Set the default target (if there is none already). */
+ deps_add_default_target (pfile->deps, fname);
/* Open the main input file. */
if (!_cpp_read_file (pfile, fname))
return NULL;
- /* Set this here so the client can change the option if it wishes,
- and after stacking the main file so we don't trace the main
- file. */
+ /* Set this after cpp_post_options so the client can change the
+ option if it wishes, and after stacking the main file so we don't
+ trace the main file. */
pfile->line_maps.trace_includes = CPP_OPTION (pfile, print_include_names);
/* For foo.i, read the original filename foo.c now, for the benefit
@@ -1052,71 +1071,116 @@ cpp_finish_options (pfile)
{
struct pending_option *p;
- /* Prevent -Wunused-macros with command-line redefinitions. */
- pfile->first_unused_line = (unsigned int) -1;
_cpp_do_file_change (pfile, LC_RENAME, _("<built-in>"), 1, 0);
init_builtins (pfile);
_cpp_do_file_change (pfile, LC_RENAME, _("<command line>"), 1, 0);
for (p = CPP_OPTION (pfile, pending)->directive_head; p; p = p->next)
(*p->handler) (pfile, p->arg);
- /* Scan -imacros files after -D, -U, but before -include.
- pfile->next_include_file is NULL, so _cpp_pop_buffer does not
- push -include files. */
- for (p = CPP_OPTION (pfile, pending)->imacros_head; p; p = p->next)
- if (push_include (pfile, p))
- cpp_scan_nooutput (pfile);
-
- pfile->next_include_file = &CPP_OPTION (pfile, pending)->include_head;
- _cpp_maybe_push_include_file (pfile);
+ /* Scan -imacros files after command line defines, but before
+ files given with -include. */
+ while ((p = CPP_OPTION (pfile, pending)->imacros_head) != NULL)
+ {
+ if (push_include (pfile, p))
+ {
+ pfile->buffer->return_at_eof = true;
+ cpp_scan_nooutput (pfile);
+ }
+ CPP_OPTION (pfile, pending)->imacros_head = p->next;
+ free (p);
+ }
}
- pfile->first_unused_line = pfile->line;
-
- free_chain (CPP_OPTION (pfile, pending)->imacros_head);
free_chain (CPP_OPTION (pfile, pending)->directive_head);
+ _cpp_push_next_buffer (pfile);
}
-/* Push the next buffer on the stack given by -include, if any. */
-void
-_cpp_maybe_push_include_file (pfile)
+/* Called to push the next buffer on the stack given by -include. If
+ there are none, free the pending structure and restore the line map
+ for the main file. */
+bool
+_cpp_push_next_buffer (pfile)
cpp_reader *pfile;
{
- if (pfile->next_include_file)
+ bool pushed = false;
+
+ /* This is't pretty; we'd rather not be relying on this as a boolean
+ for reverting the line map. Further, we only free the chains in
+ this conditional, so an early call to cpp_finish / cpp_destroy
+ will leak that memory. */
+ if (CPP_OPTION (pfile, pending)
+ && CPP_OPTION (pfile, pending)->imacros_head == NULL)
{
- struct pending_option *head = *pfile->next_include_file;
+ while (!pushed)
+ {
+ struct pending_option *p = CPP_OPTION (pfile, pending)->include_head;
- while (head && !push_include (pfile, head))
- head = head->next;
+ if (p == NULL)
+ break;
+ if (! CPP_OPTION (pfile, preprocessed))
+ pushed = push_include (pfile, p);
+ CPP_OPTION (pfile, pending)->include_head = p->next;
+ free (p);
+ }
- if (head)
- pfile->next_include_file = &head->next;
- else
+ if (!pushed)
{
- /* All done; restore the line map from <command line>. */
- _cpp_do_file_change (pfile, LC_RENAME,
- pfile->line_maps.maps[0].to_file, 1, 0);
- /* Don't come back here again. */
- pfile->next_include_file = NULL;
+ free (CPP_OPTION (pfile, pending));
+ CPP_OPTION (pfile, pending) = NULL;
+
+ /* Restore the line map for the main file. */
+ if (! CPP_OPTION (pfile, preprocessed))
+ _cpp_do_file_change (pfile, LC_RENAME,
+ pfile->line_maps.maps[0].to_file, 1, 0);
}
}
+
+ return pushed;
}
-/* This is called at the end of preprocessing. It pops the last
- buffer and writes dependency output, and returns the number of
- errors.
-
- Maybe it should also reset state, such that you could call
- cpp_start_read with a new filename to restart processing. */
-int
-cpp_finish (pfile, deps_stream)
+/* Use mkdeps.c to output dependency information. */
+static void
+output_deps (pfile)
cpp_reader *pfile;
- FILE *deps_stream;
{
- /* Warn about unused macros before popping the final buffer. */
- if (CPP_OPTION (pfile, warn_unused_macros))
- cpp_forall_identifiers (pfile, _cpp_warn_if_unused_macro, NULL);
+ /* Stream on which to print the dependency information. */
+ FILE *deps_stream = 0;
+ const char *const deps_mode =
+ CPP_OPTION (pfile, print_deps_append) ? "a" : "w";
+ if (CPP_OPTION (pfile, deps_file)[0] == '\0')
+ deps_stream = stdout;
+ else
+ {
+ deps_stream = fopen (CPP_OPTION (pfile, deps_file), deps_mode);
+ if (deps_stream == 0)
+ {
+ cpp_notice_from_errno (pfile, CPP_OPTION (pfile, deps_file));
+ return;
+ }
+ }
+
+ deps_write (pfile->deps, deps_stream, 72);
+
+ if (CPP_OPTION (pfile, deps_phony_targets))
+ deps_phony_targets (pfile->deps, deps_stream);
+
+ /* Don't close stdout. */
+ if (deps_stream != stdout)
+ {
+ if (ferror (deps_stream) || fclose (deps_stream) != 0)
+ cpp_fatal (pfile, "I/O error on output");
+ }
+}
+
+/* This is called at the end of preprocessing. It pops the
+ last buffer and writes dependency output. It should also
+ clear macro definitions, such that you could call cpp_start_read
+ with a new filename to restart processing. */
+void
+cpp_finish (pfile)
+ cpp_reader *pfile;
+{
/* cpplex.c leaves the final buffer on the stack. This it so that
it returns an unending stream of CPP_EOFs to the client. If we
popped the buffer, we'd dereference a NULL buffer pointer and
@@ -1125,21 +1189,13 @@ cpp_finish (pfile, deps_stream)
while (pfile->buffer)
_cpp_pop_buffer (pfile);
- /* Don't write the deps file if there are errors. */
- if (CPP_OPTION (pfile, deps.style) != DEPS_NONE
- && deps_stream && pfile->errors == 0)
- {
- deps_write (pfile->deps, deps_stream, 72);
-
- if (CPP_OPTION (pfile, deps.phony_targets))
- deps_phony_targets (pfile->deps, deps_stream);
- }
+ /* Don't write the deps file if preprocessing has failed. */
+ if (CPP_OPTION (pfile, print_deps) && pfile->errors == 0)
+ output_deps (pfile);
/* Report on headers that could use multiple include guards. */
if (CPP_OPTION (pfile, print_include_names))
_cpp_report_missing_guards (pfile);
-
- return pfile->errors;
}
/* Add a directive to be handled later in the initialization phase. */
@@ -1161,26 +1217,87 @@ new_pending_directive (pend, text, handler)
/* Irix6 "cc -n32" and OSF4 cc have problems with char foo[] = ("string");
I.e. a const string initializer with parens around it. That is
what N_("string") resolves to, so we make no_* be macros instead. */
+#define no_arg N_("argument missing after %s")
#define no_ass N_("assertion missing after %s")
#define no_dir N_("directory name missing after %s")
#define no_fil N_("file name missing after %s")
#define no_mac N_("macro name missing after %s")
#define no_pth N_("path name missing after %s")
+#define no_num N_("number missing after %s")
+#define no_tgt N_("target missing after %s")
/* This is the list of all command line options, with the leading
"-" removed. It must be sorted in ASCII collating order. */
#define COMMAND_LINE_OPTIONS \
+ DEF_OPT("$", 0, OPT_dollar) \
+ DEF_OPT("+", 0, OPT_plus) \
+ DEF_OPT("-help", 0, OPT__help) \
+ DEF_OPT("-target-help", 0, OPT_target__help) \
+ DEF_OPT("-version", 0, OPT__version) \
DEF_OPT("A", no_ass, OPT_A) \
+ DEF_OPT("C", 0, OPT_C) \
DEF_OPT("D", no_mac, OPT_D) \
+ DEF_OPT("H", 0, OPT_H) \
DEF_OPT("I", no_dir, OPT_I) \
+ DEF_OPT("M", 0, OPT_M) \
+ DEF_OPT("MD", no_fil, OPT_MD) \
+ DEF_OPT("MF", no_fil, OPT_MF) \
+ DEF_OPT("MG", 0, OPT_MG) \
+ DEF_OPT("MM", 0, OPT_MM) \
+ DEF_OPT("MMD", no_fil, OPT_MMD) \
+ DEF_OPT("MP", 0, OPT_MP) \
+ DEF_OPT("MQ", no_tgt, OPT_MQ) \
+ DEF_OPT("MT", no_tgt, OPT_MT) \
+ DEF_OPT("P", 0, OPT_P) \
DEF_OPT("U", no_mac, OPT_U) \
+ DEF_OPT("W", no_arg, OPT_W) /* arg optional */ \
+ DEF_OPT("d", no_arg, OPT_d) \
+ DEF_OPT("fleading-underscore", 0, OPT_fleading_underscore) \
+ DEF_OPT("fno-leading-underscore", 0, OPT_fno_leading_underscore) \
+ DEF_OPT("fno-operator-names", 0, OPT_fno_operator_names) \
+ DEF_OPT("fno-preprocessed", 0, OPT_fno_preprocessed) \
+ DEF_OPT("fno-show-column", 0, OPT_fno_show_column) \
+ DEF_OPT("fpreprocessed", 0, OPT_fpreprocessed) \
+ DEF_OPT("fshow-column", 0, OPT_fshow_column) \
+ DEF_OPT("fsigned-char", 0, OPT_fsigned_char) \
+ DEF_OPT("ftabstop=", no_num, OPT_ftabstop) \
+ DEF_OPT("funsigned-char", 0, OPT_funsigned_char) \
+ DEF_OPT("h", 0, OPT_h) \
DEF_OPT("idirafter", no_dir, OPT_idirafter) \
DEF_OPT("imacros", no_fil, OPT_imacros) \
DEF_OPT("include", no_fil, OPT_include) \
DEF_OPT("iprefix", no_pth, OPT_iprefix) \
DEF_OPT("isystem", no_dir, OPT_isystem) \
DEF_OPT("iwithprefix", no_dir, OPT_iwithprefix) \
- DEF_OPT("iwithprefixbefore", no_dir, OPT_iwithprefixbefore)
+ DEF_OPT("iwithprefixbefore", no_dir, OPT_iwithprefixbefore) \
+ DEF_OPT("lang-asm", 0, OPT_lang_asm) \
+ DEF_OPT("lang-c", 0, OPT_lang_c) \
+ DEF_OPT("lang-c++", 0, OPT_lang_cplusplus) \
+ DEF_OPT("lang-c89", 0, OPT_lang_c89) \
+ DEF_OPT("lang-objc", 0, OPT_lang_objc) \
+ DEF_OPT("lang-objc++", 0, OPT_lang_objcplusplus) \
+ DEF_OPT("nostdinc", 0, OPT_nostdinc) \
+ DEF_OPT("nostdinc++", 0, OPT_nostdincplusplus) \
+ DEF_OPT("o", no_fil, OPT_o) \
+ DEF_OPT("pedantic", 0, OPT_pedantic) \
+ DEF_OPT("pedantic-errors", 0, OPT_pedantic_errors) \
+ DEF_OPT("remap", 0, OPT_remap) \
+ DEF_OPT("std=c++98", 0, OPT_std_cplusplus98) \
+ DEF_OPT("std=c89", 0, OPT_std_c89) \
+ DEF_OPT("std=c99", 0, OPT_std_c99) \
+ DEF_OPT("std=c9x", 0, OPT_std_c9x) \
+ DEF_OPT("std=gnu89", 0, OPT_std_gnu89) \
+ DEF_OPT("std=gnu99", 0, OPT_std_gnu99) \
+ DEF_OPT("std=gnu9x", 0, OPT_std_gnu9x) \
+ DEF_OPT("std=bsd", 0, OPT_std_bsd) \
+ DEF_OPT("std=iso9899:1990", 0, OPT_std_iso9899_1990) \
+ DEF_OPT("std=iso9899:199409", 0, OPT_std_iso9899_199409) \
+ DEF_OPT("std=iso9899:1999", 0, OPT_std_iso9899_1999) \
+ DEF_OPT("std=iso9899:199x", 0, OPT_std_iso9899_199x) \
+ DEF_OPT("trigraphs", 0, OPT_trigraphs) \
+ DEF_OPT("v", 0, OPT_v) \
+ DEF_OPT("version", 0, OPT_version) \
+ DEF_OPT("w", 0, OPT_w)
#define DEF_OPT(text, msg, code) code,
enum opt_code
@@ -1214,7 +1331,10 @@ static const struct cl_option cl_options[] =
command-line matches. Returns its index in the option array,
negative on failure. Complications arise since some options can be
suffixed with an argument, and multiple complete matches can occur,
- e.g. -pedantic and -pedantic-errors. */
+ e.g. -iwithprefix and -iwithprefixbefore. Moreover, we need to
+ accept options beginning with -W that we do not recognise, but not
+ to swallow any subsequent command line argument; this is handled as
+ special cases in cpp_handle_option. */
static int
parse_option (input)
const char *input;
@@ -1273,16 +1393,30 @@ parse_option (input)
/* Handle one command-line option in (argc, argv).
Can be called multiple times, to handle multiple sets of options.
+ If ignore is non-zero, this will ignore unrecognized -W* options.
Returns number of strings consumed. */
int
-cpp_handle_option (pfile, argc, argv)
+cpp_handle_option (pfile, argc, argv, ignore)
cpp_reader *pfile;
int argc;
char **argv;
+ int ignore;
{
int i = 0;
struct cpp_pending *pend = CPP_OPTION (pfile, pending);
+ /* Interpret "-" or a non-option as a file name. */
+ if (argv[i][0] != '-' || argv[i][1] == '\0')
+ {
+ if (CPP_OPTION (pfile, in_fname) == NULL)
+ CPP_OPTION (pfile, in_fname) = argv[i];
+ else if (CPP_OPTION (pfile, out_fname) == NULL)
+ CPP_OPTION (pfile, out_fname) = argv[i];
+ else
+ cpp_fatal (pfile, "too many filenames. Type %s --help for usage info",
+ progname);
+ }
+ else
{
enum opt_code opt_code;
int opt_index;
@@ -1297,13 +1431,16 @@ cpp_handle_option (pfile, argc, argv)
if (cl_options[opt_index].msg)
{
arg = &argv[i][cl_options[opt_index].opt_len + 1];
- if (arg[0] == '\0')
+
+ /* Yuk. Special case for -W as it must not swallow
+ up any following argument. If this becomes common, add
+ another field to the cl_options table. */
+ if (arg[0] == '\0' && opt_code != OPT_W)
{
arg = argv[++i];
if (!arg)
{
- cpp_error (pfile, DL_ERROR,
- cl_options[opt_index].msg, argv[i - 1]);
+ cpp_fatal (pfile, cl_options[opt_index].msg, argv[i - 1]);
return argc;
}
}
@@ -1313,18 +1450,248 @@ cpp_handle_option (pfile, argc, argv)
{
case N_OPTS: /* Shut GCC up. */
break;
+ case OPT_fleading_underscore:
+ CPP_OPTION (pfile, user_label_prefix) = "_";
+ break;
+ case OPT_fno_leading_underscore:
+ CPP_OPTION (pfile, user_label_prefix) = "";
+ break;
+ case OPT_fno_operator_names:
+ CPP_OPTION (pfile, operator_names) = 0;
+ break;
+ case OPT_fpreprocessed:
+ CPP_OPTION (pfile, preprocessed) = 1;
+ break;
+ case OPT_fno_preprocessed:
+ CPP_OPTION (pfile, preprocessed) = 0;
+ break;
+ case OPT_fshow_column:
+ CPP_OPTION (pfile, show_column) = 1;
+ break;
+ case OPT_fno_show_column:
+ CPP_OPTION (pfile, show_column) = 0;
+ break;
+ case OPT_fsigned_char:
+ CPP_OPTION (pfile, signed_char) = 1;
+ break;
+ case OPT_funsigned_char:
+ CPP_OPTION (pfile, signed_char) = 0;
+ break;
+ case OPT_ftabstop:
+ /* Silently ignore empty string, non-longs and silly values. */
+ if (arg[0] != '\0')
+ {
+ char *endptr;
+ long tabstop = strtol (arg, &endptr, 10);
+ if (*endptr == '\0' && tabstop >= 1 && tabstop <= 100)
+ CPP_OPTION (pfile, tabstop) = tabstop;
+ }
+ break;
+ case OPT_w:
+ CPP_OPTION (pfile, inhibit_warnings) = 1;
+ break;
+ case OPT_h:
+ case OPT__help:
+ print_help ();
+ CPP_OPTION (pfile, help_only) = 1;
+ break;
+ case OPT_target__help:
+ /* Print if any target specific options. cpplib has none, but
+ make sure help_only gets set. */
+ CPP_OPTION (pfile, help_only) = 1;
+ break;
+
+ /* --version inhibits compilation, -version doesn't. -v means
+ verbose and -version. Historical reasons, don't ask. */
+ case OPT__version:
+ CPP_OPTION (pfile, help_only) = 1;
+ pfile->print_version = 1;
+ break;
+ case OPT_v:
+ CPP_OPTION (pfile, verbose) = 1;
+ pfile->print_version = 1;
+ break;
+ case OPT_version:
+ pfile->print_version = 1;
+ break;
+ case OPT_C:
+ CPP_OPTION (pfile, discard_comments) = 0;
+ break;
+ case OPT_P:
+ CPP_OPTION (pfile, no_line_commands) = 1;
+ break;
+ case OPT_dollar: /* Don't include $ in identifiers. */
+ CPP_OPTION (pfile, dollars_in_ident) = 0;
+ break;
+ case OPT_H:
+ CPP_OPTION (pfile, print_include_names) = 1;
+ break;
case OPT_D:
new_pending_directive (pend, arg, cpp_define);
break;
+ case OPT_pedantic_errors:
+ CPP_OPTION (pfile, pedantic_errors) = 1;
+ /* fall through */
+ case OPT_pedantic:
+ CPP_OPTION (pfile, pedantic) = 1;
+ break;
+ case OPT_trigraphs:
+ CPP_OPTION (pfile, trigraphs) = 1;
+ break;
+ case OPT_plus:
+ CPP_OPTION (pfile, cplusplus) = 1;
+ CPP_OPTION (pfile, cplusplus_comments) = 1;
+ break;
+ case OPT_remap:
+ CPP_OPTION (pfile, remap) = 1;
+ break;
case OPT_iprefix:
CPP_OPTION (pfile, include_prefix) = arg;
CPP_OPTION (pfile, include_prefix_len) = strlen (arg);
break;
+ case OPT_lang_c:
+ set_lang (pfile, CLK_GNUC89);
+ break;
+ case OPT_lang_cplusplus:
+ set_lang (pfile, CLK_GNUCXX);
+ break;
+ case OPT_lang_objc:
+ set_lang (pfile, CLK_OBJC);
+ break;
+ case OPT_lang_objcplusplus:
+ set_lang (pfile, CLK_OBJCXX);
+ break;
+ case OPT_lang_asm:
+ set_lang (pfile, CLK_ASM);
+ break;
+ case OPT_std_cplusplus98:
+ set_lang (pfile, CLK_CXX98);
+ break;
+ case OPT_std_gnu89:
+ set_lang (pfile, CLK_GNUC89);
+ break;
+ case OPT_std_gnu9x:
+ case OPT_std_gnu99:
+ set_lang (pfile, CLK_GNUC99);
+ break;
+ case OPT_std_bsd:
+ set_lang (pfile, CLK_GNUC89);
+ break;
+ case OPT_std_iso9899_199409:
+ set_lang (pfile, CLK_STDC94);
+ break;
+ case OPT_std_iso9899_1990:
+ case OPT_std_c89:
+ case OPT_lang_c89:
+ set_lang (pfile, CLK_STDC89);
+ break;
+ case OPT_std_iso9899_199x:
+ case OPT_std_iso9899_1999:
+ case OPT_std_c9x:
+ case OPT_std_c99:
+ set_lang (pfile, CLK_STDC99);
+ break;
+ case OPT_nostdinc:
+ /* -nostdinc causes no default include directories.
+ You must specify all include-file directories with -I. */
+ CPP_OPTION (pfile, no_standard_includes) = 1;
+ break;
+ case OPT_nostdincplusplus:
+ /* -nostdinc++ causes no default C++-specific include directories. */
+ CPP_OPTION (pfile, no_standard_cplusplus_includes) = 1;
+ break;
+ case OPT_o:
+ if (CPP_OPTION (pfile, out_fname) == NULL)
+ CPP_OPTION (pfile, out_fname) = arg;
+ else
+ {
+ cpp_fatal (pfile, "output filename specified twice");
+ return argc;
+ }
+ break;
+ case OPT_d:
+ /* Args to -d specify what parts of macros to dump.
+ Silently ignore unrecognised options; they may
+ be aimed at the compiler proper. */
+ {
+ char c;
+
+ while ((c = *arg++) != '\0')
+ switch (c)
+ {
+ case 'M':
+ CPP_OPTION (pfile, dump_macros) = dump_only;
+ break;
+ case 'N':
+ CPP_OPTION (pfile, dump_macros) = dump_names;
+ break;
+ case 'D':
+ CPP_OPTION (pfile, dump_macros) = dump_definitions;
+ break;
+ case 'I':
+ CPP_OPTION (pfile, dump_includes) = 1;
+ break;
+ }
+ }
+ break;
+
+ case OPT_MG:
+ CPP_OPTION (pfile, print_deps_missing_files) = 1;
+ break;
+ case OPT_M:
+ /* When doing dependencies with -M or -MM, suppress normal
+ preprocessed output, but still do -dM etc. as software
+ depends on this. Preprocessed output occurs if -MD, -MMD
+ or environment var dependency generation is used. */
+ CPP_OPTION (pfile, print_deps) = 2;
+ CPP_OPTION (pfile, no_output) = 1;
+ break;
+ case OPT_MM:
+ CPP_OPTION (pfile, print_deps) = 1;
+ CPP_OPTION (pfile, no_output) = 1;
+ break;
+ case OPT_MF:
+ CPP_OPTION (pfile, deps_file) = arg;
+ break;
+ case OPT_MP:
+ CPP_OPTION (pfile, deps_phony_targets) = 1;
+ break;
+ case OPT_MQ:
+ case OPT_MT:
+ /* Add a target. -MQ quotes for Make. */
+ deps_add_target (pfile->deps, arg, opt_code == OPT_MQ);
+ break;
+
+ case OPT_MD:
+ CPP_OPTION (pfile, print_deps) = 2;
+ CPP_OPTION (pfile, deps_file) = arg;
+ break;
+ case OPT_MMD:
+ CPP_OPTION (pfile, print_deps) = 1;
+ CPP_OPTION (pfile, deps_file) = arg;
+ break;
case OPT_A:
if (arg[0] == '-')
- new_pending_directive (pend, arg + 1, cpp_unassert);
+ {
+ /* -A with an argument beginning with '-' acts as
+ #unassert on whatever immediately follows the '-'.
+ If "-" is the whole argument, we eliminate all
+ predefined macros and assertions, including those
+ that were specified earlier on the command line.
+ That way we can get rid of any that were passed
+ automatically in from GCC. */
+
+ if (arg[1] == '\0')
+ {
+ free_chain (pend->directive_head);
+ pend->directive_head = NULL;
+ pend->directive_tail = NULL;
+ }
+ else
+ new_pending_directive (pend, arg + 1, cpp_unassert);
+ }
else
new_pending_directive (pend, arg, cpp_assert);
break;
@@ -1333,7 +1700,7 @@ cpp_handle_option (pfile, argc, argv)
break;
case OPT_I: /* Add directory to path for includes. */
if (!strcmp (arg, "-"))
- {
+ {
/* -I- means:
Use the preceding -I directories for #include "..."
but not #include <...>.
@@ -1350,11 +1717,11 @@ cpp_handle_option (pfile, argc, argv)
}
else
{
- cpp_error (pfile, DL_ERROR, "-I- specified twice");
+ cpp_fatal (pfile, "-I- specified twice");
return argc;
}
- }
- else
+ }
+ else
append_include_chain (pfile, xstrdup (arg), BRACKET, 0);
break;
case OPT_isystem:
@@ -1413,7 +1780,49 @@ cpp_handle_option (pfile, argc, argv)
/* Add directory to end of path for includes. */
append_include_chain (pfile, xstrdup (arg), AFTER, 0);
break;
- }
+ case OPT_W:
+ /* Silently ignore unrecognised options. */
+ if (!strcmp (argv[i], "-Wall"))
+ {
+ CPP_OPTION (pfile, warn_trigraphs) = 1;
+ CPP_OPTION (pfile, warn_comments) = 1;
+ }
+ else if (!strcmp (argv[i], "-Wtraditional"))
+ CPP_OPTION (pfile, warn_traditional) = 1;
+ else if (!strcmp (argv[i], "-Wtrigraphs"))
+ CPP_OPTION (pfile, warn_trigraphs) = 1;
+ else if (!strcmp (argv[i], "-Wcomment"))
+ CPP_OPTION (pfile, warn_comments) = 1;
+ else if (!strcmp (argv[i], "-Wcomments"))
+ CPP_OPTION (pfile, warn_comments) = 1;
+ else if (!strcmp (argv[i], "-Wundef"))
+ CPP_OPTION (pfile, warn_undef) = 1;
+ else if (!strcmp (argv[i], "-Wimport"))
+ CPP_OPTION (pfile, warn_import) = 1;
+ else if (!strcmp (argv[i], "-Werror"))
+ CPP_OPTION (pfile, warnings_are_errors) = 1;
+ else if (!strcmp (argv[i], "-Wsystem-headers"))
+ CPP_OPTION (pfile, warn_system_headers) = 1;
+ else if (!strcmp (argv[i], "-Wno-traditional"))
+ CPP_OPTION (pfile, warn_traditional) = 0;
+ else if (!strcmp (argv[i], "-Wno-trigraphs"))
+ CPP_OPTION (pfile, warn_trigraphs) = 0;
+ else if (!strcmp (argv[i], "-Wno-comment"))
+ CPP_OPTION (pfile, warn_comments) = 0;
+ else if (!strcmp (argv[i], "-Wno-comments"))
+ CPP_OPTION (pfile, warn_comments) = 0;
+ else if (!strcmp (argv[i], "-Wno-undef"))
+ CPP_OPTION (pfile, warn_undef) = 0;
+ else if (!strcmp (argv[i], "-Wno-import"))
+ CPP_OPTION (pfile, warn_import) = 0;
+ else if (!strcmp (argv[i], "-Wno-error"))
+ CPP_OPTION (pfile, warnings_are_errors) = 0;
+ else if (!strcmp (argv[i], "-Wno-system-headers"))
+ CPP_OPTION (pfile, warn_system_headers) = 0;
+ else if (! ignore)
+ return i;
+ break;
+ }
}
return i + 1;
}
@@ -1433,7 +1842,7 @@ cpp_handle_options (pfile, argc, argv)
for (i = 0; i < argc; i += strings_processed)
{
- strings_processed = cpp_handle_option (pfile, argc - i, argv + i);
+ strings_processed = cpp_handle_option (pfile, argc - i, argv + i, 1);
if (strings_processed == 0)
break;
}
@@ -1441,23 +1850,227 @@ cpp_handle_options (pfile, argc, argv)
return i;
}
-static void
-post_options (pfile)
+/* Extra processing when all options are parsed, after all calls to
+ cpp_handle_option[s]. Consistency checks etc. */
+void
+cpp_post_options (pfile)
cpp_reader *pfile;
{
+ if (pfile->print_version)
+ {
+ fprintf (stderr, _("GNU CPP version %s (cpplib)"), version_string);
+#ifdef TARGET_VERSION
+ TARGET_VERSION;
+#endif
+ fputc ('\n', stderr);
+ }
+
+ /* Canonicalize in_fname and out_fname. We guarantee they are not
+ NULL, and that the empty string represents stdin / stdout. */
+ if (CPP_OPTION (pfile, in_fname) == NULL
+ || !strcmp (CPP_OPTION (pfile, in_fname), "-"))
+ CPP_OPTION (pfile, in_fname) = "";
+
+ if (CPP_OPTION (pfile, out_fname) == NULL
+ || !strcmp (CPP_OPTION (pfile, out_fname), "-"))
+ CPP_OPTION (pfile, out_fname) = "";
+
/* -Wtraditional is not useful in C++ mode. */
if (CPP_OPTION (pfile, cplusplus))
CPP_OPTION (pfile, warn_traditional) = 0;
+ /* Set this if it hasn't been set already. */
+ if (CPP_OPTION (pfile, user_label_prefix) == NULL)
+ CPP_OPTION (pfile, user_label_prefix) = USER_LABEL_PREFIX;
+
/* Permanently disable macro expansion if we are rescanning
- preprocessed text. Read preprocesed source in ISO mode. */
+ preprocessed text. */
if (CPP_OPTION (pfile, preprocessed))
+ pfile->state.prevent_expansion = 1;
+
+ /* -dM makes no normal output. This is set here so that -dM -dD
+ works as expected. */
+ if (CPP_OPTION (pfile, dump_macros) == dump_only)
+ CPP_OPTION (pfile, no_output) = 1;
+
+ /* Disable -dD, -dN and -dI if we should make no normal output
+ (such as with -M). Allow -M -dM since some software relies on
+ this. */
+ if (CPP_OPTION (pfile, no_output))
{
- pfile->state.prevent_expansion = 1;
- CPP_OPTION (pfile, traditional) = 0;
+ if (CPP_OPTION (pfile, dump_macros) != dump_only)
+ CPP_OPTION (pfile, dump_macros) = dump_none;
+ CPP_OPTION (pfile, dump_includes) = 0;
}
- /* Traditional CPP does not accurately track column information. */
- if (CPP_OPTION (pfile, traditional))
- CPP_OPTION (pfile, show_column) = 0;
+ /* We need to do this after option processing and before
+ cpp_start_read, as cppmain.c relies on the options->no_output to
+ set its callbacks correctly before calling cpp_start_read. */
+ init_dependency_output (pfile);
+
+ /* After checking the environment variables, check if -M or -MM has
+ not been specified, but other -M options have. */
+ if (CPP_OPTION (pfile, print_deps) == 0 &&
+ (CPP_OPTION (pfile, print_deps_missing_files)
+ || CPP_OPTION (pfile, deps_file)
+ || CPP_OPTION (pfile, deps_phony_targets)))
+ cpp_fatal (pfile, "you must additionally specify either -M or -MM");
+}
+
+/* Set up dependency-file output. On exit, if print_deps is non-zero
+ then deps_file is not NULL; stdout is the empty string. */
+static void
+init_dependency_output (pfile)
+ cpp_reader *pfile;
+{
+ char *spec, *s, *output_file;
+
+ /* Either of two environment variables can specify output of deps.
+ Its value is either "OUTPUT_FILE" or "OUTPUT_FILE DEPS_TARGET",
+ where OUTPUT_FILE is the file to write deps info to
+ and DEPS_TARGET is the target to mention in the deps. */
+
+ if (CPP_OPTION (pfile, print_deps) == 0)
+ {
+ spec = getenv ("DEPENDENCIES_OUTPUT");
+ if (spec)
+ CPP_OPTION (pfile, print_deps) = 1;
+ else
+ {
+ spec = getenv ("SUNPRO_DEPENDENCIES");
+ if (spec)
+ {
+ CPP_OPTION (pfile, print_deps) = 2;
+ CPP_OPTION (pfile, deps_ignore_main_file) = 1;
+ }
+ else
+ return;
+ }
+
+ /* Find the space before the DEPS_TARGET, if there is one. */
+ s = strchr (spec, ' ');
+ if (s)
+ {
+ /* Let the caller perform MAKE quoting. */
+ deps_add_target (pfile->deps, s + 1, 0);
+ output_file = (char *) xmalloc (s - spec + 1);
+ memcpy (output_file, spec, s - spec);
+ output_file[s - spec] = 0;
+ }
+ else
+ output_file = spec;
+
+ /* Command line -MF overrides environment variables and default. */
+ if (CPP_OPTION (pfile, deps_file) == 0)
+ CPP_OPTION (pfile, deps_file) = output_file;
+
+ CPP_OPTION (pfile, print_deps_append) = 1;
+ }
+ else if (CPP_OPTION (pfile, deps_file) == 0)
+ /* If -M or -MM was seen without -MF, default output to wherever
+ was specified with -o. out_fname is non-NULL here. */
+ CPP_OPTION (pfile, deps_file) = CPP_OPTION (pfile, out_fname);
+}
+
+/* Handle --help output. */
+static void
+print_help ()
+{
+ /* To keep the lines from getting too long for some compilers, limit
+ to about 500 characters (6 lines) per chunk. */
+ fputs (_("\
+Switches:\n\
+ -include <file> Include the contents of <file> before other files\n\
+ -imacros <file> Accept definition of macros in <file>\n\
+ -iprefix <path> Specify <path> as a prefix for next two options\n\
+ -iwithprefix <dir> Add <dir> to the end of the system include path\n\
+ -iwithprefixbefore <dir> Add <dir> to the end of the main include path\n\
+ -isystem <dir> Add <dir> to the start of the system include path\n\
+"), stdout);
+ fputs (_("\
+ -idirafter <dir> Add <dir> to the end of the system include path\n\
+ -I <dir> Add <dir> to the end of the main include path\n\
+ -I- Fine-grained include path control; see info docs\n\
+ -nostdinc Do not search system include directories\n\
+ (dirs specified with -isystem will still be used)\n\
+ -nostdinc++ Do not search system include directories for C++\n\
+ -o <file> Put output into <file>\n\
+"), stdout);
+ fputs (_("\
+ -pedantic Issue all warnings demanded by strict ISO C\n\
+ -pedantic-errors Issue -pedantic warnings as errors instead\n\
+ -trigraphs Support ISO C trigraphs\n\
+ -lang-c Assume that the input sources are in C\n\
+ -lang-c89 Assume that the input sources are in C89\n\
+"), stdout);
+ fputs (_("\
+ -lang-c++ Assume that the input sources are in C++\n\
+ -lang-objc Assume that the input sources are in ObjectiveC\n\
+ -lang-objc++ Assume that the input sources are in ObjectiveC++\n\
+ -lang-asm Assume that the input sources are in assembler\n\
+"), stdout);
+ fputs (_("\
+ -std=<std name> Specify the conformance standard; one of:\n\
+ gnu89, gnu99, c89, c99, iso9899:1990,\n\
+ iso9899:199409, iso9899:1999\n\
+ -+ Allow parsing of C++ style features\n\
+ -w Inhibit warning messages\n\
+ -Wtrigraphs Warn if trigraphs are encountered\n\
+ -Wno-trigraphs Do not warn about trigraphs\n\
+ -Wcomment{s} Warn if one comment starts inside another\n\
+"), stdout);
+ fputs (_("\
+ -Wno-comment{s} Do not warn about comments\n\
+ -Wtraditional Warn about features not present in traditional C\n\
+ -Wno-traditional Do not warn about traditional C\n\
+ -Wundef Warn if an undefined macro is used by #if\n\
+ -Wno-undef Do not warn about testing undefined macros\n\
+ -Wimport Warn about the use of the #import directive\n\
+"), stdout);
+ fputs (_("\
+ -Wno-import Do not warn about the use of #import\n\
+ -Werror Treat all warnings as errors\n\
+ -Wno-error Do not treat warnings as errors\n\
+ -Wsystem-headers Do not suppress warnings from system headers\n\
+ -Wno-system-headers Suppress warnings from system headers\n\
+ -Wall Enable all preprocessor warnings\n\
+"), stdout);
+ fputs (_("\
+ -M Generate make dependencies\n\
+ -MM As -M, but ignore system header files\n\
+ -MD Generate make dependencies and compile\n\
+ -MMD As -MD, but ignore system header files\n\
+ -MF <file> Write dependency output to the given file\n\
+ -MG Treat missing header file as generated files\n\
+"), stdout);
+ fputs (_("\
+ -MP Generate phony targets for all headers\n\
+ -MQ <target> Add a MAKE-quoted target\n\
+ -MT <target> Add an unquoted target\n\
+"), stdout);
+ fputs (_("\
+ -D<macro> Define a <macro> with string '1' as its value\n\
+ -D<macro>=<val> Define a <macro> with <val> as its value\n\
+ -A<question>=<answer> Assert the <answer> to <question>\n\
+ -A-<question>=<answer> Disable the <answer> to <question>\n\
+ -U<macro> Undefine <macro> \n\
+ -v Display the version number\n\
+"), stdout);
+ fputs (_("\
+ -H Print the name of header files as they are used\n\
+ -C Do not discard comments\n\
+ -dM Display a list of macro definitions active at end\n\
+ -dD Preserve macro definitions in output\n\
+ -dN As -dD except that only the names are preserved\n\
+ -dI Include #include directives in the output\n\
+"), stdout);
+ fputs (_("\
+ -fpreprocessed Treat the input file as already preprocessed\n\
+ -ftabstop=<number> Distance between tab stops for column reporting\n\
+ -P Do not generate #line directives\n\
+ -$ Do not allow '$' in identifiers\n\
+ -remap Remap file names when including files\n\
+ --version Display version information\n\
+ -h or --help Display this information\n\
+"), stdout);
}
diff --git a/contrib/gcc/dbxout.c b/contrib/gcc/dbxout.c
index 60ca664..bd7f9a7 100644
--- a/contrib/gcc/dbxout.c
+++ b/contrib/gcc/dbxout.c
@@ -1,6 +1,6 @@
/* Output dbx-format symbol table information from GNU compiler.
Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+ 1999, 2000, 2001 Free Software Foundation, Inc.
This file is part of GCC.
@@ -155,7 +155,7 @@ static int source_label_number = 1;
#endif
#ifdef DEBUG_SYMS_TEXT
-#define FORCE_TEXT function_section (current_function_decl);
+#define FORCE_TEXT text_section ();
#else
#define FORCE_TEXT
#endif
@@ -309,7 +309,6 @@ static void print_int_cst_octal PARAMS ((tree));
static void print_octal PARAMS ((unsigned HOST_WIDE_INT, int));
static void print_wide_int PARAMS ((HOST_WIDE_INT));
static void dbxout_type_name PARAMS ((tree));
-static void dbxout_class_name_qualifiers PARAMS ((tree));
static int dbxout_symbol_location PARAMS ((tree, tree, const char *, rtx));
static void dbxout_symbol_name PARAMS ((tree, const char *, int));
static void dbxout_prepare_symbol PARAMS ((tree));
@@ -328,7 +327,7 @@ static void dbxout_begin_block PARAMS ((unsigned, unsigned));
static void dbxout_end_block PARAMS ((unsigned, unsigned));
static void dbxout_function_decl PARAMS ((tree));
-const struct gcc_debug_hooks dbx_debug_hooks =
+struct gcc_debug_hooks dbx_debug_hooks =
{
dbxout_init,
dbxout_finish,
@@ -341,8 +340,8 @@ const struct gcc_debug_hooks dbx_debug_hooks =
debug_true_tree, /* ignore_block */
dbxout_source_line, /* source_line */
dbxout_source_line, /* begin_prologue: just output line info */
- debug_nothing_int_charstar, /* end_prologue */
- debug_nothing_int_charstar, /* end_epilogue */
+ debug_nothing_int, /* end_prologue */
+ debug_nothing_void, /* end_epilogue */
#ifdef DBX_FUNCTION_FIRST
dbxout_begin_function,
#else
@@ -358,7 +357,7 @@ const struct gcc_debug_hooks dbx_debug_hooks =
#endif /* DBX_DEBUGGING_INFO */
#if defined (XCOFF_DEBUGGING_INFO)
-const struct gcc_debug_hooks xcoff_debug_hooks =
+struct gcc_debug_hooks xcoff_debug_hooks =
{
dbxout_init,
dbxout_finish,
@@ -371,7 +370,7 @@ const struct gcc_debug_hooks xcoff_debug_hooks =
debug_true_tree, /* ignore_block */
xcoffout_source_line,
xcoffout_begin_prologue, /* begin_prologue */
- debug_nothing_int_charstar, /* end_prologue */
+ debug_nothing_int, /* end_prologue */
xcoffout_end_epilogue,
debug_nothing_tree, /* begin_function */
xcoffout_end_function,
@@ -418,7 +417,7 @@ dbxout_init (input_file_name)
const char *input_file_name;
{
char ltext_label_name[100];
- tree syms = (*lang_hooks.decls.getdecls) ();
+ tree syms = getdecls ();
asmfile = asm_out_file;
@@ -675,7 +674,7 @@ dbxout_global_decl (decl)
&& ! DECL_EXTERNAL (decl)
&& DECL_RTL_SET_P (decl)) /* Not necessary? */
dbxout_symbol (decl, 0);
-}
+}
/* At the end of compilation, finish writing the symbol table.
Unless you define DBX_OUTPUT_MAIN_SOURCE_FILE_END, the default is
@@ -1020,7 +1019,7 @@ dbxout_type_methods (type)
}
if (!need_prefix)
{
- putc (';', asmfile);
+ putc (';', asmfile);
CHARS (1);
}
}
@@ -1108,9 +1107,7 @@ dbxout_type (type, full)
static int anonymous_type_number = 0;
if (TREE_CODE (type) == VECTOR_TYPE)
- /* The frontend feeds us a representation for the vector as a struct
- containing an array. Pull out the array type. */
- type = TREE_TYPE (TYPE_FIELDS (TYPE_DEBUG_REPRESENTATION_TYPE (type)));
+ type = TYPE_DEBUG_REPRESENTATION_TYPE (type);
/* If there was an input error and we don't really have a type,
avoid crashing and write something that is at least valid
@@ -1282,7 +1279,7 @@ dbxout_type (type, full)
write it as a subtype. */
else if (TREE_TYPE (type) != 0
&& TREE_CODE (TREE_TYPE (type)) == INTEGER_TYPE)
- {
+ {
/* If the size is non-standard, say what it is if we can use
GDB extensions. */
@@ -1295,10 +1292,10 @@ dbxout_type (type, full)
}
dbxout_range_type (type);
- }
+ }
else
- {
+ {
/* If the size is non-standard, say what it is if we can use
GDB extensions. */
@@ -1322,7 +1319,7 @@ dbxout_type (type, full)
larger. This is because we print the bounds as signed decimal,
and hence they can't span same size unsigned types. */
- if (use_gnu_debug_info_extensions
+ if (use_gnu_debug_info_extensions
&& TYPE_MIN_VALUE (type) != 0
&& TREE_CODE (TYPE_MIN_VALUE (type)) == INTEGER_CST
&& TYPE_MAX_VALUE (type) != 0
@@ -1351,7 +1348,7 @@ dbxout_type (type, full)
else
/* Output other integer types as subranges of `int'. */
dbxout_range_type (type);
- }
+ }
break;
@@ -1864,7 +1861,7 @@ print_wide_int (c)
CHARS (digs);
}
-
+
/* Output the name of type TYPE, with no punctuation.
Such names can be set up either by typedef declarations
or by struct, enum and union tags. */
@@ -1890,33 +1887,6 @@ dbxout_type_name (type)
fprintf (asmfile, "%s", IDENTIFIER_POINTER (t));
CHARS (IDENTIFIER_LENGTH (t));
}
-
-/* Output leading leading struct or class names needed for qualifying
- type whose scope is limited to a struct or class. */
-
-static void
-dbxout_class_name_qualifiers (decl)
- tree decl;
-{
- tree context = decl_type_context (decl);
-
- if (context != NULL_TREE
- && TREE_CODE(context) == RECORD_TYPE
- && TYPE_NAME (context) != 0
- && (TREE_CODE (TYPE_NAME (context)) == IDENTIFIER_NODE
- || (DECL_NAME (TYPE_NAME (context)) != 0)))
- {
- tree name = TYPE_NAME (context);
-
- if (TREE_CODE (name) == TYPE_DECL)
- {
- dbxout_class_name_qualifiers (name);
- name = DECL_NAME (name);
- }
- fprintf (asmfile, "%s::", IDENTIFIER_POINTER (name));
- CHARS (IDENTIFIER_LENGTH (name) + 2);
- }
-}
/* Output a .stabs for the symbol defined by DECL,
which must be a ..._DECL node in the normal namespace.
@@ -2037,7 +2007,7 @@ dbxout_symbol (decl, local)
&& !TREE_ASM_WRITTEN (TYPE_NAME (type))
/* Distinguish the implicit typedefs of C++
from explicit ones that might be found in C. */
- && DECL_ARTIFICIAL (decl)
+ && DECL_ARTIFICIAL (decl)
/* Do not generate a tag for records of variable size,
since this type can not be properly described in the
DBX format, and it confuses some tools such as objdump. */
@@ -2058,17 +2028,9 @@ dbxout_symbol (decl, local)
dbxout_finish_symbol (NULL_TREE);
}
- /* Output .stabs (or whatever) and leading double quote. */
- fprintf (asmfile, "%s\"", ASM_STABS_OP);
-
- if (use_gnu_debug_info_extensions)
- {
- /* Output leading class/struct qualifiers. */
- dbxout_class_name_qualifiers (decl);
- }
-
/* Output typedef name. */
- fprintf (asmfile, "%s:", IDENTIFIER_POINTER (DECL_NAME (decl)));
+ fprintf (asmfile, "%s\"%s:", ASM_STABS_OP,
+ IDENTIFIER_POINTER (DECL_NAME (decl)));
/* Short cut way to output a tag also. */
if ((TREE_CODE (type) == RECORD_TYPE
@@ -2077,7 +2039,7 @@ dbxout_symbol (decl, local)
&& TYPE_NAME (type) == decl
/* Distinguish the implicit typedefs of C++
from explicit ones that might be found in C. */
- && DECL_ARTIFICIAL (decl))
+ && DECL_ARTIFICIAL (decl))
{
if (use_gnu_debug_info_extensions && have_used_extensions)
{
@@ -2210,7 +2172,7 @@ dbxout_symbol (decl, local)
result = dbxout_symbol_location (decl, type, 0, DECL_RTL (decl));
break;
-
+
default:
break;
}
@@ -2234,7 +2196,7 @@ dbxout_symbol_location (decl, type, suffix, home)
/* Don't mention a variable at all
if it was completely optimized into nothingness.
-
+
If the decl was from an inline function, then its rtl
is not identically the rtl that was used in this
particular compilation. */
@@ -2313,7 +2275,7 @@ dbxout_symbol_location (decl, type, suffix, home)
|| GET_CODE (tmp) == LABEL_REF)
current_sym_addr = tmp;
}
-
+
/* Ultrix `as' seems to need this. */
#ifdef DBX_STATIC_STAB_DATA_SECTION
data_section ();
@@ -2518,7 +2480,7 @@ dbxout_finish_symbol (sym)
#endif
}
-/* Output definitions of all the decls in a chain. Return nonzero if
+/* Output definitions of all the decls in a chain. Return non-zero if
anything was output */
int
@@ -2602,7 +2564,7 @@ dbxout_parms (parms)
}
/* It is quite tempting to use:
-
+
dbxout_type (TREE_TYPE (parms), 0);
as the next statement, rather than using DECL_ARG_TYPE(), so
@@ -2615,7 +2577,7 @@ dbxout_parms (parms)
double on the stack, but if we emit a stab saying the type is a
float, then gdb will only read in a single value, and this will
produce an erroneous value. */
- dbxout_type (DECL_ARG_TYPE (parms), 0);
+ dbxout_type (DECL_ARG_TYPE (parms), 0);
current_sym_value = DEBUGGER_ARG_OFFSET (current_sym_value, addr);
dbxout_finish_symbol (parms);
}
@@ -2733,14 +2695,13 @@ dbxout_parms (parms)
const char *const decl_name = (DECL_NAME (parms)
? IDENTIFIER_POINTER (DECL_NAME (parms))
: "(anon)");
- if (GET_CODE (XEXP (XEXP (DECL_RTL (parms), 0), 0)) == REG)
- current_sym_value = 0;
+ if (GET_CODE (XEXP (XEXP (DECL_RTL (parms), 0), 0)) == REG)
+ current_sym_value = 0;
else
current_sym_value
= INTVAL (XEXP (XEXP (XEXP (DECL_RTL (parms), 0), 0), 1));
current_sym_addr = 0;
- current_sym_code = N_PSYM;
-
+
FORCE_TEXT;
fprintf (asmfile, "%s\"%s:v", ASM_STABS_OP, decl_name);
@@ -2778,7 +2739,7 @@ dbxout_parms (parms)
&& TYPE_MODE (TREE_TYPE (parms)) != GET_MODE (DECL_RTL (parms))
&& GET_MODE_SIZE (TYPE_MODE (TREE_TYPE (parms))) < UNITS_PER_WORD)
{
- current_sym_value +=
+ current_sym_value +=
GET_MODE_SIZE (GET_MODE (DECL_RTL (parms)))
- GET_MODE_SIZE (TYPE_MODE (TREE_TYPE (parms)));
}
@@ -2888,7 +2849,7 @@ dbxout_block (block, depth, args)
int blocknum = -1;
#if DBX_BLOCKS_FUNCTION_RELATIVE
- const char *begin_label;
+ const char *begin_label;
if (current_function_func_begin_label != NULL_TREE)
begin_label = IDENTIFIER_POINTER (current_function_func_begin_label);
else
diff --git a/contrib/gcc/dwarfout.c b/contrib/gcc/dwarfout.c
index bbbfcfc..481d0c0 100644
--- a/contrib/gcc/dwarfout.c
+++ b/contrib/gcc/dwarfout.c
@@ -1,6 +1,6 @@
/* 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.
+ Copyright (C) 1992, 1993, 1995, 1996, 1997, 1998,
+ 1999, 2000, 2001 Free Software Foundation, Inc.
Contributed by Ron Guilmette (rfg@monkeys.com) of Network Computing Devices.
This file is part of GCC.
@@ -43,7 +43,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
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-
+ 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).
@@ -162,7 +162,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
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
+ the type of an 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
@@ -523,7 +523,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
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.)
+ 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
@@ -560,7 +560,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
Other possible `compacting' transformations designed to save disk
space and to reduce linker & debugger I/O activity.
-*/
+*/
#include "config.h"
@@ -569,7 +569,6 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "dwarf.h"
#include "tree.h"
#include "flags.h"
-#include "function.h"
#include "rtl.h"
#include "hard-reg-set.h"
#include "insn-config.h"
@@ -600,7 +599,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
fprintf ((FILE), "%s", reg_names[REGNO (RTX)])
#endif
-/* Define a macro which returns nonzero for any tagged type which is
+/* Define a macro which returns non-zero 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
@@ -612,12 +611,12 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
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.
+ formal or return type) and non-zero 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
+/* Define a macro which returns non-zero for a TYPE_DECL which was
implicitly generated for a tagged type.
Note that unlike the gcc front end (which generates a NULL named
@@ -632,6 +631,8 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
&& is_tagged_type (TREE_TYPE (decl)) \
&& decl == TYPE_STUB_DECL (TREE_TYPE (decl))))
+extern int flag_traditional;
+
/* Maximum size (in bytes) of an artificially generated label. */
#define MAX_ARTIFICIAL_LABEL_BYTES 30
@@ -707,7 +708,7 @@ static unsigned pending_siblings_allocated;
#define PENDING_SIBLINGS_INCREMENT 64
-/* Nonzero if we are performing our file-scope finalization pass and if
+/* Non-zero 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. */
@@ -757,6 +758,14 @@ static unsigned incomplete_types;
static tree fake_containing_scope;
+/* The number of the current function definition that we are generating
+ debugging information for. These numbers range from 1 up to the maximum
+ number of function definitions contained within the current compilation
+ unit. These numbers are used to create unique labels for various things
+ contained within various function definitions. */
+
+static unsigned current_funcdef_number = 1;
+
/* 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
@@ -782,9 +791,9 @@ 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_end_epilogue PARAMS ((void));
static void dwarfout_source_line PARAMS ((unsigned int, const char *));
-static void dwarfout_end_prologue PARAMS ((unsigned int, const char *));
+static void dwarfout_end_prologue PARAMS ((unsigned int));
static void dwarfout_end_function PARAMS ((unsigned int));
static void dwarfout_function_decl PARAMS ((tree));
static void dwarfout_global_decl PARAMS ((tree));
@@ -935,6 +944,9 @@ static void retry_incomplete_types PARAMS ((void));
#ifndef FILE_ASM_OP
#define FILE_ASM_OP "\t.file\t"
#endif
+#ifndef VERSION_ASM_OP
+#define VERSION_ASM_OP "\t.version\t"
+#endif
#ifndef SET_ASM_OP
#define SET_ASM_OP "\t.set\t"
#endif
@@ -1138,6 +1150,18 @@ static void retry_incomplete_types PARAMS ((void));
#ifndef BOUND_END_LABEL_FMT
#define BOUND_END_LABEL_FMT "*.L_b%u_%u_%c_e"
#endif
+#ifndef DERIV_BEGIN_LABEL_FMT
+#define DERIV_BEGIN_LABEL_FMT "*.L_d%u"
+#endif
+#ifndef DERIV_END_LABEL_FMT
+#define DERIV_END_LABEL_FMT "*.L_d%u_e"
+#endif
+#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
#ifndef BODY_BEGIN_LABEL_FMT
#define BODY_BEGIN_LABEL_FMT "*.L_b%u"
#endif
@@ -1265,12 +1289,12 @@ static void retry_incomplete_types PARAMS ((void));
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")
+ 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 =
+struct gcc_debug_hooks dwarf_debug_hooks =
{
dwarfout_init,
dwarfout_finish,
@@ -1301,7 +1325,7 @@ is_pseudo_reg (rtl)
rtx rtl;
{
return (((GET_CODE (rtl) == REG) && (REGNO (rtl) >= FIRST_PSEUDO_REGISTER))
- || ((GET_CODE (rtl) == SUBREG)
+ || ((GET_CODE (rtl) == SUBREG)
&& (REGNO (SUBREG_REG (rtl)) >= FIRST_PSEUDO_REGISTER)));
}
@@ -1319,13 +1343,13 @@ type_main_variant (type)
if (TREE_CODE (type) == ARRAY_TYPE)
{
while (type != TYPE_MAIN_VARIANT (type))
- type = TYPE_MAIN_VARIANT (type);
+ type = TYPE_MAIN_VARIANT (type);
}
return type;
}
-/* Return nonzero if the given type node represents a tagged type. */
+/* Return non-zero if the given type node represents a tagged type. */
static inline int
is_tagged_type (type)
@@ -1585,7 +1609,7 @@ static tree
decl_ultimate_origin (decl)
tree decl;
{
-#ifdef ENABLE_CHECKING
+#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. */
@@ -1683,7 +1707,7 @@ output_signed_leb128 (value)
if (negative)
value |= 0xfe000000; /* manually sign extend */
if (((value == 0) && ((byte & 0x40) == 0))
- || ((value == -1) && ((byte & 0x40) == 1)))
+ || ((value == -1) && ((byte & 0x40) == 1)))
more = 0;
else
{
@@ -1950,7 +1974,7 @@ write_modifier_bytes (type, decl_const, 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 a pointer to an arbitrary ..._TYPE tree node, return non-zero if the
given input type is a Dwarf "fundamental" type. Otherwise return zero. */
static inline int
@@ -2819,8 +2843,8 @@ location_or_const_value_attribute (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));
+ 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. */
@@ -3306,13 +3330,6 @@ member_attribute (context)
}
#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;
@@ -3451,10 +3468,10 @@ pure_or_virtual_attribute (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);
+ ASM_OUTPUT_DWARF_ATTRIBUTE (asm_out_file, AT_pure_virtual);
else
#endif
- ASM_OUTPUT_DWARF_ATTRIBUTE (asm_out_file, AT_virtual);
+ ASM_OUTPUT_DWARF_ATTRIBUTE (asm_out_file, AT_virtual);
ASM_OUTPUT_DWARF_STRING_NEWLINE (asm_out_file, "");
}
}
@@ -3493,7 +3510,7 @@ name_and_src_coords_attributes (decl)
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));
+ src_coords_attribute (file_index, DECL_SOURCE_LINE (decl));
}
#endif /* defined(DWARF_DECL_COORDINATES) */
}
@@ -3574,7 +3591,7 @@ type_tag (type)
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
+ /* 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
@@ -3881,14 +3898,13 @@ output_global_subroutine_die (arg)
char label[MAX_ARTIFICIAL_LABEL_BYTES];
low_pc_attribute (function_start_label (decl));
- sprintf (label, FUNC_END_LABEL_FMT, current_function_funcdef_no);
+ sprintf (label, FUNC_END_LABEL_FMT, current_funcdef_number);
high_pc_attribute (label);
if (use_gnu_debug_info_extensions)
{
- sprintf (label, BODY_BEGIN_LABEL_FMT,
- current_function_funcdef_no);
+ sprintf (label, BODY_BEGIN_LABEL_FMT, current_funcdef_number);
body_begin_attribute (label);
- sprintf (label, BODY_END_LABEL_FMT, current_function_funcdef_no);
+ sprintf (label, BODY_END_LABEL_FMT, current_funcdef_number);
body_end_attribute (label);
}
}
@@ -4138,6 +4154,8 @@ output_compile_unit_die (arg)
language_attribute (LANG_PASCAL83);
else if (strcmp (language_string, "GNU Java") == 0)
language_attribute (LANG_JAVA);
+ else if (flag_traditional)
+ language_attribute (LANG_C);
else
language_attribute (LANG_C89);
low_pc_attribute (TEXT_BEGIN_LABEL);
@@ -4156,7 +4174,7 @@ output_compile_unit_die (arg)
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);
+ mac_info_attribute (MACINFO_BEGIN_LABEL);
}
}
@@ -4199,7 +4217,7 @@ output_inheritance_die (arg)
ASM_OUTPUT_DWARF_ATTRIBUTE (asm_out_file, AT_protected);
ASM_OUTPUT_DWARF_STRING_NEWLINE (asm_out_file, "");
}
-}
+}
static void
output_structure_type_die (arg)
@@ -4263,14 +4281,13 @@ output_local_subroutine_die (arg)
{
char label[MAX_ARTIFICIAL_LABEL_BYTES];
low_pc_attribute (function_start_label (decl));
- sprintf (label, FUNC_END_LABEL_FMT, current_function_funcdef_no);
+ sprintf (label, FUNC_END_LABEL_FMT, current_funcdef_number);
high_pc_attribute (label);
if (use_gnu_debug_info_extensions)
{
- sprintf (label, BODY_BEGIN_LABEL_FMT,
- current_function_funcdef_no);
+ sprintf (label, BODY_BEGIN_LABEL_FMT, current_funcdef_number);
body_begin_attribute (label);
- sprintf (label, BODY_END_LABEL_FMT, current_function_funcdef_no);
+ sprintf (label, BODY_END_LABEL_FMT, current_funcdef_number);
body_end_attribute (label);
}
}
@@ -4533,7 +4550,7 @@ pend_type (type)
TREE_ASM_WRITTEN (type) = 1;
}
-/* Return nonzero if it is legitimate to output DIEs to represent a
+/* Return non-zero 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.
@@ -4784,7 +4801,7 @@ output_type (type, containing_scope)
end_sibling_chain ();
break;
- case ARRAY_TYPE:
+ case ARRAY_TYPE:
if (TYPE_STRING_FLAG (type) && TREE_CODE(TREE_TYPE(type)) == CHAR_TYPE)
{
output_type (TREE_TYPE (type), containing_scope);
@@ -5139,8 +5156,8 @@ output_decls_for_scope (stmt, depth)
tree subblocks;
for (subblocks = BLOCK_SUBBLOCKS (stmt);
- subblocks;
- subblocks = BLOCK_CHAIN (subblocks))
+ subblocks;
+ subblocks = BLOCK_CHAIN (subblocks))
output_block (subblocks, depth + 1);
}
}
@@ -5186,10 +5203,10 @@ output_decl (decl, containing_scope)
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))
+ || (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))
@@ -5314,7 +5331,7 @@ output_decl (decl, containing_scope)
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") )
@@ -5351,13 +5368,13 @@ output_decl (decl, containing_scope)
/* 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);
- }
+ }
+ 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
@@ -5416,7 +5433,7 @@ output_decl (decl, containing_scope)
if (debug_info_level <= DINFO_LEVEL_TERSE)
if (! TYPE_DECL_IS_STUB (decl)
|| (! TYPE_USED_FOR_FUNCTION (TREE_TYPE (decl)) && ! in_class))
- return;
+ return;
/* In the special case of a TYPE_DECL node representing
the declaration of some type tag, if the given TYPE_DECL is
@@ -5457,7 +5474,7 @@ output_decl (decl, containing_scope)
any variable declarations or definitions. */
if (debug_info_level <= DINFO_LEVEL_TERSE)
- break;
+ break;
/* Output any DIEs that are needed to specify the type of this data
object. */
@@ -5491,7 +5508,7 @@ output_decl (decl, containing_scope)
function. */
{
- void (*func) PARAMS ((void *));
+ void (*func) PARAMS ((void *));
register tree origin = decl_ultimate_origin (decl);
if (origin != NULL && TREE_CODE (origin) == PARM_DECL)
@@ -5512,7 +5529,7 @@ output_decl (decl, containing_scope)
if (DECL_NAME (decl) != 0)
{
output_type (member_declared_type (decl), containing_scope);
- output_die (output_member_die, decl);
+ output_die (output_member_die, decl);
}
break;
@@ -5612,7 +5629,7 @@ dwarfout_file_scope_decl (decl, set_finalizing)
these same functions should NOT be ignored however. */
if (DECL_EXTERNAL (decl) && DECL_FUNCTION_CODE (decl))
- return;
+ 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
@@ -5712,7 +5729,7 @@ dwarfout_file_scope_decl (decl, set_finalizing)
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,
+ ASM_OUTPUT_DWARF_DATA4 (asm_out_file,
(unsigned) int_size_in_bytes (TREE_TYPE (decl)));
ASM_OUTPUT_POP_SECTION (asm_out_file);
}
@@ -5722,7 +5739,7 @@ dwarfout_file_scope_decl (decl, set_finalizing)
any variable declarations or definitions. */
if (debug_info_level <= DINFO_LEVEL_TERSE)
- return;
+ return;
break;
@@ -5760,7 +5777,7 @@ dwarfout_file_scope_decl (decl, set_finalizing)
if (debug_info_level <= DINFO_LEVEL_TERSE)
if (! TYPE_DECL_IS_STUB (decl)
|| ! TYPE_USED_FOR_FUNCTION (TREE_TYPE (decl)))
- return;
+ return;
break;
@@ -5790,7 +5807,7 @@ dwarfout_file_scope_decl (decl, set_finalizing)
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)
@@ -5798,6 +5815,9 @@ dwarfout_file_scope_decl (decl, set_finalizing)
}
ASM_OUTPUT_POP_SECTION (asm_out_file);
+
+ if (TREE_CODE (decl) == FUNCTION_DECL && DECL_INITIAL (decl) != NULL)
+ current_funcdef_number++;
}
/* Output a marker (i.e. a label) for the beginning of the generated code
@@ -5835,9 +5855,8 @@ dwarfout_end_block (line, blocknum)
to their home locations). */
static void
-dwarfout_end_prologue (line, file)
+dwarfout_end_prologue (line)
unsigned int line ATTRIBUTE_UNUSED;
- const char *file ATTRIBUTE_UNUSED;
{
char label[MAX_ARTIFICIAL_LABEL_BYTES];
@@ -5845,7 +5864,7 @@ dwarfout_end_prologue (line, file)
return;
function_section (current_function_decl);
- sprintf (label, BODY_BEGIN_LABEL_FMT, current_function_funcdef_no);
+ sprintf (label, BODY_BEGIN_LABEL_FMT, current_funcdef_number);
ASM_OUTPUT_LABEL (asm_out_file, label);
}
@@ -5861,7 +5880,7 @@ dwarfout_end_function (line)
if (! use_gnu_debug_info_extensions)
return;
function_section (current_function_decl);
- sprintf (label, BODY_END_LABEL_FMT, current_function_funcdef_no);
+ sprintf (label, BODY_END_LABEL_FMT, current_funcdef_number);
ASM_OUTPUT_LABEL (asm_out_file, label);
}
@@ -5870,16 +5889,14 @@ dwarfout_end_function (line)
has been generated. */
static void
-dwarfout_end_epilogue (line, file)
- unsigned int line ATTRIBUTE_UNUSED;
- const char *file ATTRIBUTE_UNUSED;
+dwarfout_end_epilogue ()
{
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);
+ sprintf (label, FUNC_END_LABEL_FMT, current_funcdef_number);
ASM_OUTPUT_LABEL (asm_out_file, label);
}
@@ -5919,9 +5936,9 @@ generate_new_sfname_entry ()
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
- : "");
+ filename_table[0].name
+ ? filename_table[0].name
+ : "");
ASM_OUTPUT_POP_SECTION (asm_out_file);
}
@@ -5973,7 +5990,7 @@ lookup_filename (file_name)
same filename will find it as quickly as possible. */
shuffle_filename_entry (search_p);
- return filename_table[0].number;
+ return filename_table[0].number;
}
/* We come here whenever we have a new filename which is not registered
@@ -6051,18 +6068,18 @@ dwarfout_source_line (line, filename)
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];
+ {
+ 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);
- }
+ 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, '/');
+ const char *tail = strrchr (filename, '/');
- if (tail != NULL)
- filename = tail;
+ if (tail != NULL)
+ filename = tail;
}
dw2_asm_output_data (4, line, "%s:%u", filename, line);
@@ -6071,7 +6088,7 @@ dwarfout_source_line (line, filename)
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);
+ generate_srcinfo_entry (last_line_entry_num, this_file_entry_num);
prev_file_entry_num = this_file_entry_num;
}
}
@@ -6178,8 +6195,6 @@ 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;
@@ -6266,7 +6281,7 @@ dwarfout_init (main_input_filename)
/* 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);
@@ -6283,29 +6298,29 @@ dwarfout_init (main_input_filename)
}
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
+ /* 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);
+
+ 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. */
@@ -6324,16 +6339,16 @@ dwarfout_init (main_input_filename)
#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,
@@ -6459,7 +6474,7 @@ dwarfout_finish (main_input_filename)
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);
@@ -6468,7 +6483,7 @@ dwarfout_finish (main_input_filename)
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. */
@@ -6484,7 +6499,7 @@ dwarfout_finish (main_input_filename)
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);
@@ -6493,15 +6508,15 @@ dwarfout_finish (main_input_filename)
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
@@ -6515,7 +6530,7 @@ dwarfout_finish (main_input_filename)
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);
diff --git a/contrib/gcc/emit-rtl.c b/contrib/gcc/emit-rtl.c
index 172a82d..e2bbd85 100644
--- a/contrib/gcc/emit-rtl.c
+++ b/contrib/gcc/emit-rtl.c
@@ -50,6 +50,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "insn-config.h"
#include "recog.h"
#include "real.h"
+#include "obstack.h"
#include "bitmap.h"
#include "basic-block.h"
#include "ggc.h"
@@ -86,17 +87,11 @@ static int no_line_numbers;
/* Commonly used rtx's, so that we only need space for one copy.
These are initialized once for the entire compilation.
- All of these are unique; no other rtx-object will be equal to any
- of these. */
+ All of these except perhaps the floating-point CONST_DOUBLEs
+ are unique; no other rtx-object will be equal to any of these. */
rtx global_rtl[GR_MAX];
-/* Commonly used RTL for hard registers. These objects are not necessarily
- unique, so we allocate them separately from global_rtl. They are
- initialized once per compilation unit, then copied into regno_reg_rtx
- at the beginning of each function. */
-static GTY(()) rtx static_regno_reg_rtx[FIRST_PSEUDO_REGISTER];
-
/* We record floating-point CONST_DOUBLEs in each floating-point mode for
the values of 0, 1, and 2. For the integer entries and VOIDmode, we
record a copy of const[012]_rtx. */
@@ -148,16 +143,30 @@ rtx const_int_rtx[MAX_SAVED_CONST_INT * 2 + 1];
/* A hash table storing CONST_INTs whose absolute value is greater
than MAX_SAVED_CONST_INT. */
-static GTY ((if_marked ("ggc_marked_p"), param_is (struct rtx_def)))
- htab_t const_int_htab;
+static htab_t const_int_htab;
/* A hash table storing memory attribute structures. */
-static GTY ((if_marked ("ggc_marked_p"), param_is (struct mem_attrs)))
- htab_t mem_attrs_htab;
+static htab_t mem_attrs_htab;
+
+/* start_sequence and gen_sequence can make a lot of rtx expressions which are
+ shortly thrown away. We use two mechanisms to prevent this waste:
+
+ For sizes up to 5 elements, we keep a SEQUENCE and its associated
+ rtvec for use by gen_sequence. One entry for each size is
+ sufficient because most cases are calls to gen_sequence followed by
+ immediately emitting the SEQUENCE. Reuse is safe since emitting a
+ sequence is destructive on the insn in it anyway and hence can't be
+ redone.
+
+ We do not bother to save this cached data over nested function calls.
+ Instead, we just reinitialize them. */
+
+#define SEQUENCE_RESULT_SIZE 5
+
+static rtx sequence_result[SEQUENCE_RESULT_SIZE];
-/* A hash table storing all CONST_DOUBLEs. */
-static GTY ((if_marked ("ggc_marked_p"), param_is (struct rtx_def)))
- htab_t const_double_htab;
+/* During RTL generation, we also keep a list of free INSN rtl codes. */
+static rtx free_insn;
#define first_insn (cfun->emit->x_first_insn)
#define last_insn (cfun->emit->x_last_insn)
@@ -169,6 +178,7 @@ static GTY ((if_marked ("ggc_marked_p"), param_is (struct rtx_def)))
static rtx make_jump_insn_raw PARAMS ((rtx));
static rtx make_call_insn_raw PARAMS ((rtx));
static rtx find_line_note PARAMS ((rtx));
+static void mark_sequence_stack PARAMS ((struct sequence_stack *));
static rtx change_address_1 PARAMS ((rtx, enum machine_mode, rtx,
int));
static void unshare_all_rtl_1 PARAMS ((rtx));
@@ -178,13 +188,10 @@ static void mark_label_nuses PARAMS ((rtx));
static hashval_t const_int_htab_hash PARAMS ((const void *));
static int const_int_htab_eq PARAMS ((const void *,
const void *));
-static hashval_t const_double_htab_hash PARAMS ((const void *));
-static int const_double_htab_eq PARAMS ((const void *,
- const void *));
-static rtx lookup_const_double PARAMS ((rtx));
static hashval_t mem_attrs_htab_hash PARAMS ((const void *));
static int mem_attrs_htab_eq PARAMS ((const void *,
const void *));
+static void mem_attrs_mark PARAMS ((const void *));
static mem_attrs *get_mem_attrs PARAMS ((HOST_WIDE_INT, tree, rtx,
rtx, unsigned int,
enum machine_mode));
@@ -201,10 +208,10 @@ static hashval_t
const_int_htab_hash (x)
const void *x;
{
- return (hashval_t) INTVAL ((struct rtx_def *) x);
+ return (hashval_t) INTVAL ((const struct rtx_def *) x);
}
-/* Returns nonzero if the value represented by X (which is really a
+/* Returns non-zero if the value represented by X (which is really a
CONST_INT) is the same as that given by Y (which is really a
HOST_WIDE_INT *). */
@@ -213,41 +220,7 @@ const_int_htab_eq (x, y)
const void *x;
const void *y;
{
- return (INTVAL ((rtx) x) == *((const HOST_WIDE_INT *) y));
-}
-
-/* Returns a hash code for X (which is really a CONST_DOUBLE). */
-static hashval_t
-const_double_htab_hash (x)
- const void *x;
-{
- rtx value = (rtx) x;
- hashval_t h;
-
- if (GET_MODE (value) == VOIDmode)
- h = CONST_DOUBLE_LOW (value) ^ CONST_DOUBLE_HIGH (value);
- else
- h = real_hash (CONST_DOUBLE_REAL_VALUE (value));
- return h;
-}
-
-/* Returns nonzero if the value represented by X (really a ...)
- is the same as that represented by Y (really a ...) */
-static int
-const_double_htab_eq (x, y)
- const void *x;
- const void *y;
-{
- rtx a = (rtx)x, b = (rtx)y;
-
- if (GET_MODE (a) != GET_MODE (b))
- return 0;
- if (GET_MODE (a) == VOIDmode)
- return (CONST_DOUBLE_LOW (a) == CONST_DOUBLE_LOW (b)
- && CONST_DOUBLE_HIGH (a) == CONST_DOUBLE_HIGH (b));
- else
- return real_identical (CONST_DOUBLE_REAL_VALUE (a),
- CONST_DOUBLE_REAL_VALUE (b));
+ return (INTVAL ((const struct rtx_def *) x) == *((const HOST_WIDE_INT *) y));
}
/* Returns a hash code for X (which is a really a mem_attrs *). */
@@ -264,7 +237,7 @@ mem_attrs_htab_hash (x)
^ (size_t) p->expr);
}
-/* Returns nonzero if the value represented by X (which is really a
+/* Returns non-zero if the value represented by X (which is really a
mem_attrs *) is the same as that given by Y (which is also really a
mem_attrs *). */
@@ -280,6 +253,25 @@ mem_attrs_htab_eq (x, y)
&& p->size == q->size && p->align == q->align);
}
+/* This routine is called when we determine that we need a mem_attrs entry.
+ It marks the associated decl and RTL as being used, if present. */
+
+static void
+mem_attrs_mark (x)
+ const void *x;
+{
+ mem_attrs *p = (mem_attrs *) x;
+
+ if (p->expr)
+ ggc_mark_tree (p->expr);
+
+ if (p->offset)
+ ggc_mark_rtx (p->offset);
+
+ if (p->size)
+ ggc_mark_rtx (p->size);
+}
+
/* Allocate a new mem_attrs structure and insert it into the hash table if
one identical to it is not already in the table. We are doing this for
MEM of mode MODE. */
@@ -371,133 +363,32 @@ gen_int_mode (c, mode)
return GEN_INT (trunc_int_for_mode (c, mode));
}
-/* CONST_DOUBLEs might be created from pairs of integers, or from
- REAL_VALUE_TYPEs. Also, their length is known only at run time,
- so we cannot use gen_rtx_raw_CONST_DOUBLE. */
-
-/* Determine whether REAL, a CONST_DOUBLE, already exists in the
- hash table. If so, return its counterpart; otherwise add it
- to the hash table and return it. */
-static rtx
-lookup_const_double (real)
- rtx real;
-{
- void **slot = htab_find_slot (const_double_htab, real, INSERT);
- if (*slot == 0)
- *slot = real;
-
- return (rtx) *slot;
-}
+/* CONST_DOUBLEs needs special handling because their length is known
+ only at run-time. */
-/* Return a CONST_DOUBLE rtx for a floating-point value specified by
- VALUE in mode MODE. */
rtx
-const_double_from_real_value (value, mode)
- REAL_VALUE_TYPE value;
+gen_rtx_CONST_DOUBLE (mode, arg0, arg1)
enum machine_mode mode;
+ HOST_WIDE_INT arg0, arg1;
{
- rtx real = rtx_alloc (CONST_DOUBLE);
- PUT_MODE (real, mode);
-
- memcpy (&CONST_DOUBLE_LOW (real), &value, sizeof (REAL_VALUE_TYPE));
-
- return lookup_const_double (real);
-}
-
-/* Return a CONST_DOUBLE or CONST_INT for a value specified as a pair
- of ints: I0 is the low-order word and I1 is the high-order word.
- Do not use this routine for non-integer modes; convert to
- REAL_VALUE_TYPE and use CONST_DOUBLE_FROM_REAL_VALUE. */
-
-rtx
-immed_double_const (i0, i1, mode)
- HOST_WIDE_INT i0, i1;
- enum machine_mode mode;
-{
- rtx value;
- unsigned int i;
-
- if (mode != VOIDmode)
- {
- int width;
- if (GET_MODE_CLASS (mode) != MODE_INT
- && GET_MODE_CLASS (mode) != MODE_PARTIAL_INT
- /* We can get a 0 for an error mark. */
- && GET_MODE_CLASS (mode) != MODE_VECTOR_INT
- && GET_MODE_CLASS (mode) != MODE_VECTOR_FLOAT)
- abort ();
-
- /* We clear out all bits that don't belong in MODE, unless they and
- our sign bit are all one. So we get either a reasonable negative
- value or a reasonable unsigned value for this mode. */
- width = GET_MODE_BITSIZE (mode);
- if (width < HOST_BITS_PER_WIDE_INT
- && ((i0 & ((HOST_WIDE_INT) (-1) << (width - 1)))
- != ((HOST_WIDE_INT) (-1) << (width - 1))))
- i0 &= ((HOST_WIDE_INT) 1 << width) - 1, i1 = 0;
- else if (width == HOST_BITS_PER_WIDE_INT
- && ! (i1 == ~0 && i0 < 0))
- i1 = 0;
- else if (width > 2 * HOST_BITS_PER_WIDE_INT)
- /* We cannot represent this value as a constant. */
- abort ();
-
- /* If this would be an entire word for the target, but is not for
- the host, then sign-extend on the host so that the number will
- look the same way on the host that it would on the target.
-
- For example, when building a 64 bit alpha hosted 32 bit sparc
- targeted compiler, then we want the 32 bit unsigned value -1 to be
- represented as a 64 bit value -1, and not as 0x00000000ffffffff.
- The latter confuses the sparc backend. */
-
- if (width < HOST_BITS_PER_WIDE_INT
- && (i0 & ((HOST_WIDE_INT) 1 << (width - 1))))
- i0 |= ((HOST_WIDE_INT) (-1) << width);
-
- /* If MODE fits within HOST_BITS_PER_WIDE_INT, always use a
- CONST_INT.
-
- ??? Strictly speaking, this is wrong if we create a CONST_INT for
- a large unsigned constant with the size of MODE being
- HOST_BITS_PER_WIDE_INT and later try to interpret that constant
- in a wider mode. In that case we will mis-interpret it as a
- negative number.
-
- Unfortunately, the only alternative is to make a CONST_DOUBLE for
- any constant in any mode if it is an unsigned constant larger
- than the maximum signed integer in an int on the host. However,
- doing this will break everyone that always expects to see a
- CONST_INT for SImode and smaller.
-
- We have always been making CONST_INTs in this case, so nothing
- new is being broken. */
-
- if (width <= HOST_BITS_PER_WIDE_INT)
- i1 = (i0 < 0) ? ~(HOST_WIDE_INT) 0 : 0;
- }
-
- /* If this integer fits in one word, return a CONST_INT. */
- if ((i1 == 0 && i0 >= 0) || (i1 == ~0 && i0 < 0))
- return GEN_INT (i0);
-
- /* We use VOIDmode for integers. */
- value = rtx_alloc (CONST_DOUBLE);
- PUT_MODE (value, VOIDmode);
+ rtx r = rtx_alloc (CONST_DOUBLE);
+ int i;
- CONST_DOUBLE_LOW (value) = i0;
- CONST_DOUBLE_HIGH (value) = i1;
+ PUT_MODE (r, mode);
+ X0EXP (r, 0) = NULL_RTX;
+ XWINT (r, 1) = arg0;
+ XWINT (r, 2) = arg1;
- for (i = 2; i < (sizeof CONST_DOUBLE_FORMAT - 1); i++)
- XWINT (value, i) = 0;
+ for (i = GET_RTX_LENGTH (CONST_DOUBLE) - 1; i > 2; --i)
+ XWINT (r, i) = 0;
- return lookup_const_double (value);
+ return r;
}
rtx
gen_rtx_REG (mode, regno)
enum machine_mode mode;
- unsigned int regno;
+ int regno;
{
/* In case the MD file explicitly references the frame pointer, have
all such references point to the same frame pointer. This is
@@ -515,12 +406,10 @@ gen_rtx_REG (mode, regno)
if (mode == Pmode && !reload_in_progress)
{
- if (regno == FRAME_POINTER_REGNUM
- && (!reload_completed || frame_pointer_needed))
+ if (regno == FRAME_POINTER_REGNUM)
return frame_pointer_rtx;
#if FRAME_POINTER_REGNUM != HARD_FRAME_POINTER_REGNUM
- if (regno == HARD_FRAME_POINTER_REGNUM
- && (!reload_completed || frame_pointer_needed))
+ if (regno == HARD_FRAME_POINTER_REGNUM)
return hard_frame_pointer_rtx;
#endif
#if FRAME_POINTER_REGNUM != ARG_POINTER_REGNUM && HARD_FRAME_POINTER_REGNUM != ARG_POINTER_REGNUM
@@ -533,31 +422,11 @@ gen_rtx_REG (mode, regno)
#endif
if (regno == PIC_OFFSET_TABLE_REGNUM
&& fixed_regs[PIC_OFFSET_TABLE_REGNUM])
- return pic_offset_table_rtx;
+ return pic_offset_table_rtx;
if (regno == STACK_POINTER_REGNUM)
return stack_pointer_rtx;
}
-#if 0
- /* If the per-function register table has been set up, try to re-use
- an existing entry in that table to avoid useless generation of RTL.
-
- This code is disabled for now until we can fix the various backends
- which depend on having non-shared hard registers in some cases. Long
- term we want to re-enable this code as it can significantly cut down
- on the amount of useless RTL that gets generated.
-
- We'll also need to fix some code that runs after reload that wants to
- set ORIGINAL_REGNO. */
-
- if (cfun
- && cfun->emit
- && regno_reg_rtx
- && regno < FIRST_PSEUDO_REGISTER
- && reg_raw_mode[regno] == mode)
- return regno_reg_rtx[regno];
-#endif
-
return gen_raw_REG (mode, regno);
}
@@ -594,7 +463,7 @@ gen_rtx_SUBREG (mode, reg, offset)
if (offset >= GET_MODE_SIZE (GET_MODE (reg)))
abort ();
#endif
- return gen_rtx_raw_SUBREG (mode, reg, offset);
+ return gen_rtx_fmt_ei (SUBREG, mode, reg, offset);
}
/* Generate a SUBREG representing the least-significant part of REG if MODE
@@ -663,7 +532,7 @@ gen_rtx VPARAMS ((enum rtx_code code, enum machine_mode mode, ...))
HOST_WIDE_INT arg0 = va_arg (p, HOST_WIDE_INT);
HOST_WIDE_INT arg1 = va_arg (p, HOST_WIDE_INT);
- rt_val = immed_double_const (arg0, arg1, mode);
+ rt_val = gen_rtx_CONST_DOUBLE (mode, arg0, arg1);
}
break;
@@ -802,7 +671,12 @@ gen_reg_rtx (mode)
which makes much better code. Besides, allocating DCmode
pseudos overstrains reload on some machines like the 386. */
rtx realpart, imagpart;
- enum machine_mode partmode = GET_MODE_INNER (mode);
+ int size = GET_MODE_UNIT_SIZE (mode);
+ enum machine_mode partmode
+ = mode_for_size (size * BITS_PER_UNIT,
+ (GET_MODE_CLASS (mode) == MODE_COMPLEX_FLOAT
+ ? MODE_FLOAT : MODE_INT),
+ 0);
realpart = gen_reg_rtx (partmode);
imagpart = gen_reg_rtx (partmode);
@@ -819,17 +693,17 @@ gen_reg_rtx (mode)
rtx *new1;
tree *new2;
- new = ggc_realloc (f->emit->regno_pointer_align, old_size * 2);
+ new = xrealloc (f->emit->regno_pointer_align, old_size * 2);
memset (new + old_size, 0, old_size);
f->emit->regno_pointer_align = (unsigned char *) new;
- new1 = (rtx *) ggc_realloc (f->emit->x_regno_reg_rtx,
- old_size * 2 * sizeof (rtx));
+ new1 = (rtx *) xrealloc (f->emit->x_regno_reg_rtx,
+ old_size * 2 * sizeof (rtx));
memset (new1 + old_size, 0, old_size * sizeof (rtx));
regno_reg_rtx = new1;
- new2 = (tree *) ggc_realloc (f->emit->regno_decl,
- old_size * 2 * sizeof (tree));
+ new2 = (tree *) xrealloc (f->emit->regno_decl,
+ old_size * 2 * sizeof (tree));
memset (new2 + old_size, 0, old_size * sizeof (tree));
f->emit->regno_decl = new2;
@@ -925,11 +799,7 @@ subreg_hard_regno (x, check_mode)
abort ();
if (check_mode && ! HARD_REGNO_MODE_OK (base_regno, GET_MODE (reg)))
abort ();
-#ifdef ENABLE_CHECKING
- if (!subreg_offset_representable_p (REGNO (reg), GET_MODE (reg),
- SUBREG_BYTE (x), mode))
- abort ();
-#endif
+
/* Catch non-congruent offsets too. */
byte_offset = SUBREG_BYTE (x);
if ((byte_offset % GET_MODE_SIZE (mode)) != 0)
@@ -996,12 +866,8 @@ gen_lowpart_common (mode, x)
return gen_rtx_fmt_e (GET_CODE (x), mode, XEXP (x, 0));
}
else if (GET_CODE (x) == SUBREG || GET_CODE (x) == REG
- || GET_CODE (x) == CONCAT || GET_CODE (x) == CONST_VECTOR)
+ || GET_CODE (x) == CONCAT)
return simplify_gen_subreg (mode, x, GET_MODE (x), offset);
- else if ((GET_MODE_CLASS (mode) == MODE_VECTOR_INT
- || GET_MODE_CLASS (mode) == MODE_VECTOR_FLOAT)
- && GET_MODE (x) == VOIDmode)
- return simplify_gen_subreg (mode, x, int_mode_for_mode (mode), offset);
/* If X is a CONST_INT or a CONST_DOUBLE, extract the appropriate bits
from the low-order part of the constant. */
else if ((GET_MODE_CLASS (mode) == MODE_INT
@@ -1034,7 +900,94 @@ gen_lowpart_common (mode, x)
}
}
- /* The floating-point emulator can handle all conversions between
+#ifndef REAL_ARITHMETIC
+ /* If X is an integral constant but we want it in floating-point, it
+ must be the case that we have a union of an integer and a floating-point
+ value. If the machine-parameters allow it, simulate that union here
+ and return the result. The two-word and single-word cases are
+ different. */
+
+ else if (((HOST_FLOAT_FORMAT == TARGET_FLOAT_FORMAT
+ && HOST_BITS_PER_WIDE_INT == BITS_PER_WORD)
+ || flag_pretend_float)
+ && GET_MODE_CLASS (mode) == MODE_FLOAT
+ && GET_MODE_SIZE (mode) == UNITS_PER_WORD
+ && GET_CODE (x) == CONST_INT
+ && sizeof (float) * HOST_BITS_PER_CHAR == HOST_BITS_PER_WIDE_INT)
+ {
+ union {HOST_WIDE_INT i; float d; } u;
+
+ u.i = INTVAL (x);
+ return CONST_DOUBLE_FROM_REAL_VALUE (u.d, mode);
+ }
+ else if (((HOST_FLOAT_FORMAT == TARGET_FLOAT_FORMAT
+ && HOST_BITS_PER_WIDE_INT == BITS_PER_WORD)
+ || flag_pretend_float)
+ && GET_MODE_CLASS (mode) == MODE_FLOAT
+ && GET_MODE_SIZE (mode) == 2 * UNITS_PER_WORD
+ && (GET_CODE (x) == CONST_INT || GET_CODE (x) == CONST_DOUBLE)
+ && GET_MODE (x) == VOIDmode
+ && (sizeof (double) * HOST_BITS_PER_CHAR
+ == 2 * HOST_BITS_PER_WIDE_INT))
+ {
+ union {HOST_WIDE_INT i[2]; double d; } u;
+ HOST_WIDE_INT low, high;
+
+ if (GET_CODE (x) == CONST_INT)
+ low = INTVAL (x), high = low >> (HOST_BITS_PER_WIDE_INT -1);
+ else
+ low = CONST_DOUBLE_LOW (x), high = CONST_DOUBLE_HIGH (x);
+#ifdef HOST_WORDS_BIG_ENDIAN
+ u.i[0] = high, u.i[1] = low;
+#else
+ u.i[0] = low, u.i[1] = high;
+#endif
+ return CONST_DOUBLE_FROM_REAL_VALUE (u.d, mode);
+ }
+
+ /* Similarly, if this is converting a floating-point value into a
+ single-word integer. Only do this is the host and target parameters are
+ compatible. */
+
+ else if (((HOST_FLOAT_FORMAT == TARGET_FLOAT_FORMAT
+ && HOST_BITS_PER_WIDE_INT == BITS_PER_WORD)
+ || flag_pretend_float)
+ && (GET_MODE_CLASS (mode) == MODE_INT
+ || GET_MODE_CLASS (mode) == MODE_PARTIAL_INT)
+ && GET_CODE (x) == CONST_DOUBLE
+ && GET_MODE_CLASS (GET_MODE (x)) == MODE_FLOAT
+ && GET_MODE_BITSIZE (mode) == BITS_PER_WORD)
+ return constant_subword (x, (offset / UNITS_PER_WORD), GET_MODE (x));
+
+ /* Similarly, if this is converting a floating-point value into a
+ two-word integer, we can do this one word at a time and make an
+ integer. Only do this is the host and target parameters are
+ compatible. */
+
+ else if (((HOST_FLOAT_FORMAT == TARGET_FLOAT_FORMAT
+ && HOST_BITS_PER_WIDE_INT == BITS_PER_WORD)
+ || flag_pretend_float)
+ && (GET_MODE_CLASS (mode) == MODE_INT
+ || GET_MODE_CLASS (mode) == MODE_PARTIAL_INT)
+ && GET_CODE (x) == CONST_DOUBLE
+ && GET_MODE_CLASS (GET_MODE (x)) == MODE_FLOAT
+ && GET_MODE_BITSIZE (mode) == 2 * BITS_PER_WORD)
+ {
+ rtx lowpart, highpart;
+
+ lowpart = constant_subword (x,
+ (offset / UNITS_PER_WORD) + WORDS_BIG_ENDIAN,
+ GET_MODE (x));
+ highpart = constant_subword (x,
+ (offset / UNITS_PER_WORD) + (! WORDS_BIG_ENDIAN),
+ GET_MODE (x));
+ if (lowpart && GET_CODE (lowpart) == CONST_INT
+ && highpart && GET_CODE (highpart) == CONST_INT)
+ return immed_double_const (INTVAL (lowpart), INTVAL (highpart), mode);
+ }
+#else /* ifndef REAL_ARITHMETIC */
+
+ /* When we have a FP emulator, we can handle all conversions between
FP and integer operands. This simplifies reload because it
doesn't have to deal with constructs like (subreg:DI
(const_double:SF ...)) or (subreg:DF (const_int ...)). */
@@ -1044,21 +997,22 @@ gen_lowpart_common (mode, x)
else if (GET_MODE_CLASS (mode) == MODE_FLOAT
&& GET_MODE_BITSIZE (mode) == 32
&& GET_CODE (x) == CONST_INT)
- {
+ {
REAL_VALUE_TYPE r;
- long i = INTVAL (x);
+ HOST_WIDE_INT i;
- real_from_target (&r, &i, mode);
+ i = INTVAL (x);
+ r = REAL_VALUE_FROM_TARGET_SINGLE (i);
return CONST_DOUBLE_FROM_REAL_VALUE (r, mode);
- }
+ }
else if (GET_MODE_CLASS (mode) == MODE_FLOAT
&& GET_MODE_BITSIZE (mode) == 64
&& (GET_CODE (x) == CONST_INT || GET_CODE (x) == CONST_DOUBLE)
&& GET_MODE (x) == VOIDmode)
{
REAL_VALUE_TYPE r;
+ HOST_WIDE_INT i[2];
HOST_WIDE_INT low, high;
- long i[2];
if (GET_CODE (x) == CONST_INT)
{
@@ -1071,17 +1025,18 @@ gen_lowpart_common (mode, x)
high = CONST_DOUBLE_HIGH (x);
}
- if (HOST_BITS_PER_WIDE_INT > 32)
- high = low >> 31 >> 1;
-
+#if HOST_BITS_PER_WIDE_INT == 32
/* REAL_VALUE_TARGET_DOUBLE takes the addressing order of the
target machine. */
if (WORDS_BIG_ENDIAN)
i[0] = high, i[1] = low;
else
i[0] = low, i[1] = high;
+#else
+ i[0] = low;
+#endif
- real_from_target (&r, i, mode);
+ r = REAL_VALUE_FROM_TARGET_DOUBLE (i);
return CONST_DOUBLE_FROM_REAL_VALUE (r, mode);
}
else if ((GET_MODE_CLASS (mode) == MODE_INT
@@ -1099,16 +1054,16 @@ gen_lowpart_common (mode, x)
switch (GET_MODE_BITSIZE (GET_MODE (x)))
{
case 32:
- REAL_VALUE_TO_TARGET_SINGLE (r, i[3 * endian]);
+ REAL_VALUE_TO_TARGET_SINGLE (r, i[3 * endian]);
i[1] = 0;
i[2] = 0;
- i[3 - 3 * endian] = 0;
- break;
+ i[3 - 3 * endian] = 0;
+ break;
case 64:
- REAL_VALUE_TO_TARGET_DOUBLE (r, i + 2 * endian);
+ REAL_VALUE_TO_TARGET_DOUBLE (r, i + 2 * endian);
i[2 - 2 * endian] = 0;
i[3 - 2 * endian] = 0;
- break;
+ break;
case 96:
REAL_VALUE_TO_TARGET_LONG_DOUBLE (r, i + endian);
i[3 - 3 * endian] = 0;
@@ -1134,6 +1089,7 @@ gen_lowpart_common (mode, x)
mode);
#endif
}
+#endif /* ifndef REAL_ARITHMETIC */
/* Otherwise, we can't do this. */
return 0;
@@ -1276,8 +1232,8 @@ gen_highpart (mode, x)
be VOIDmode constant. */
rtx
gen_highpart_mode (outermode, innermode, exp)
- enum machine_mode outermode, innermode;
- rtx exp;
+ enum machine_mode outermode, innermode;
+ rtx exp;
{
if (GET_MODE (exp) != VOIDmode)
{
@@ -1288,7 +1244,6 @@ gen_highpart_mode (outermode, innermode, exp)
return simplify_gen_subreg (outermode, exp, innermode,
subreg_highpart_offset (outermode, innermode));
}
-
/* Return offset in bytes to get OUTERMODE low part
of the value in mode INNERMODE stored in memory in target format. */
@@ -1320,7 +1275,7 @@ subreg_highpart_offset (outermode, innermode)
int difference = (GET_MODE_SIZE (innermode) - GET_MODE_SIZE (outermode));
if (GET_MODE_SIZE (innermode) < GET_MODE_SIZE (outermode))
- abort ();
+ abort ();
if (difference > 0)
{
@@ -1368,6 +1323,7 @@ constant_subword (op, offset, mode)
&& GET_MODE_SIZE (mode) == UNITS_PER_WORD)
return op;
+#ifdef REAL_ARITHMETIC
/* The output is some bits, the width of the target machine's word.
A wider-word host can surely hold them in a CONST_INT. A narrower-word
host can't. */
@@ -1446,10 +1402,32 @@ constant_subword (op, offset, mode)
else
abort ();
}
+#else /* no REAL_ARITHMETIC */
+ if (((HOST_FLOAT_FORMAT == TARGET_FLOAT_FORMAT
+ && HOST_BITS_PER_WIDE_INT == BITS_PER_WORD)
+ || flag_pretend_float)
+ && GET_MODE_CLASS (mode) == MODE_FLOAT
+ && GET_MODE_SIZE (mode) == 2 * UNITS_PER_WORD
+ && GET_CODE (op) == CONST_DOUBLE)
+ {
+ /* The constant is stored in the host's word-ordering,
+ but we want to access it in the target's word-ordering. Some
+ compilers don't like a conditional inside macro args, so we have two
+ copies of the return. */
+#ifdef HOST_WORDS_BIG_ENDIAN
+ return GEN_INT (offset == WORDS_BIG_ENDIAN
+ ? CONST_DOUBLE_HIGH (op) : CONST_DOUBLE_LOW (op));
+#else
+ return GEN_INT (offset != WORDS_BIG_ENDIAN
+ ? CONST_DOUBLE_HIGH (op) : CONST_DOUBLE_LOW (op));
+#endif
+ }
+#endif /* no REAL_ARITHMETIC */
/* Single word float is a little harder, since single- and double-word
values often do not have the same high-order bits. We have already
verified that we want the only defined word of the single-word value. */
+#ifdef REAL_ARITHMETIC
if (GET_MODE_CLASS (mode) == MODE_FLOAT
&& GET_MODE_BITSIZE (mode) == 32
&& GET_CODE (op) == CONST_DOUBLE)
@@ -1473,6 +1451,40 @@ constant_subword (op, offset, mode)
return GEN_INT (val);
}
+#else
+ if (((HOST_FLOAT_FORMAT == TARGET_FLOAT_FORMAT
+ && HOST_BITS_PER_WIDE_INT == BITS_PER_WORD)
+ || flag_pretend_float)
+ && sizeof (float) * 8 == HOST_BITS_PER_WIDE_INT
+ && GET_MODE_CLASS (mode) == MODE_FLOAT
+ && GET_MODE_SIZE (mode) == UNITS_PER_WORD
+ && GET_CODE (op) == CONST_DOUBLE)
+ {
+ double d;
+ union {float f; HOST_WIDE_INT i; } u;
+
+ REAL_VALUE_FROM_CONST_DOUBLE (d, op);
+
+ u.f = d;
+ return GEN_INT (u.i);
+ }
+ if (((HOST_FLOAT_FORMAT == TARGET_FLOAT_FORMAT
+ && HOST_BITS_PER_WIDE_INT == BITS_PER_WORD)
+ || flag_pretend_float)
+ && sizeof (double) * 8 == HOST_BITS_PER_WIDE_INT
+ && GET_MODE_CLASS (mode) == MODE_FLOAT
+ && GET_MODE_SIZE (mode) == UNITS_PER_WORD
+ && GET_CODE (op) == CONST_DOUBLE)
+ {
+ double d;
+ union {double d; HOST_WIDE_INT i; } u;
+
+ REAL_VALUE_FROM_CONST_DOUBLE (d, op);
+
+ u.d = d;
+ return GEN_INT (u.i);
+ }
+#endif /* no REAL_ARITHMETIC */
/* The only remaining cases that we can handle are integers.
Convert to proper endianness now since these cases need it.
@@ -1668,10 +1680,10 @@ component_ref_for_mem_expr (ref)
|| TREE_CODE (inner) == VIEW_CONVERT_EXPR
|| TREE_CODE (inner) == SAVE_EXPR
|| TREE_CODE (inner) == PLACEHOLDER_EXPR)
- if (TREE_CODE (inner) == PLACEHOLDER_EXPR)
- inner = find_placeholder (inner, &placeholder_ptr);
- else
- inner = TREE_OPERAND (inner, 0);
+ if (TREE_CODE (inner) == PLACEHOLDER_EXPR)
+ inner = find_placeholder (inner, &placeholder_ptr);
+ else
+ inner = TREE_OPERAND (inner, 0);
if (! DECL_P (inner))
inner = NULL_TREE;
@@ -1774,7 +1786,7 @@ set_mem_attributes_minus_bitpos (ref, t, objectp, bitpos)
size = (DECL_SIZE_UNIT (t)
&& host_integerp (DECL_SIZE_UNIT (t), 1)
? GEN_INT (tree_low_cst (DECL_SIZE_UNIT (t), 1)) : 0);
- align = DECL_ALIGN (t);
+ align = DECL_ALIGN (t);
}
/* If this is a constant, we know the alignment. */
@@ -1804,14 +1816,11 @@ set_mem_attributes_minus_bitpos (ref, t, objectp, bitpos)
else if (TREE_CODE (t) == ARRAY_REF)
{
tree off_tree = size_zero_node;
- /* We can't modify t, because we use it at the end of the
- function. */
- tree t2 = t;
do
{
- tree index = TREE_OPERAND (t2, 1);
- tree array = TREE_OPERAND (t2, 0);
+ tree index = TREE_OPERAND (t, 1);
+ tree array = TREE_OPERAND (t, 0);
tree domain = TYPE_DOMAIN (TREE_TYPE (array));
tree low_bound = (domain ? TYPE_MIN_VALUE (domain) : 0);
tree unit_size = TYPE_SIZE_UNIT (TREE_TYPE (TREE_TYPE (array)));
@@ -1829,7 +1838,7 @@ set_mem_attributes_minus_bitpos (ref, t, objectp, bitpos)
component to one. */
if (! TREE_CONSTANT (index)
&& contains_placeholder_p (index))
- index = build (WITH_RECORD_EXPR, TREE_TYPE (index), index, t2);
+ index = build (WITH_RECORD_EXPR, TREE_TYPE (index), index, t);
if (! TREE_CONSTANT (unit_size)
&& contains_placeholder_p (unit_size))
unit_size = build (WITH_RECORD_EXPR, sizetype,
@@ -1841,28 +1850,28 @@ set_mem_attributes_minus_bitpos (ref, t, objectp, bitpos)
index,
unit_size)),
off_tree));
- t2 = TREE_OPERAND (t2, 0);
+ t = TREE_OPERAND (t, 0);
}
- while (TREE_CODE (t2) == ARRAY_REF);
+ while (TREE_CODE (t) == ARRAY_REF);
- if (DECL_P (t2))
+ if (DECL_P (t))
{
- expr = t2;
+ expr = t;
offset = NULL;
if (host_integerp (off_tree, 1))
{
HOST_WIDE_INT ioff = tree_low_cst (off_tree, 1);
HOST_WIDE_INT aoff = (ioff & -ioff) * BITS_PER_UNIT;
- align = DECL_ALIGN (t2);
+ align = DECL_ALIGN (t);
if (aoff && aoff < align)
align = aoff;
offset = GEN_INT (ioff);
apply_bitpos = bitpos;
}
}
- else if (TREE_CODE (t2) == COMPONENT_REF)
+ else if (TREE_CODE (t) == COMPONENT_REF)
{
- expr = component_ref_for_mem_expr (t2);
+ expr = component_ref_for_mem_expr (t);
if (host_integerp (off_tree, 1))
{
offset = GEN_INT (tree_low_cst (off_tree, 1));
@@ -1872,10 +1881,10 @@ set_mem_attributes_minus_bitpos (ref, t, objectp, bitpos)
the size we got from the type? */
}
else if (flag_argument_noalias > 1
- && TREE_CODE (t2) == INDIRECT_REF
- && TREE_CODE (TREE_OPERAND (t2, 0)) == PARM_DECL)
+ && TREE_CODE (t) == INDIRECT_REF
+ && TREE_CODE (TREE_OPERAND (t, 0)) == PARM_DECL)
{
- expr = t2;
+ expr = t;
offset = NULL;
}
}
@@ -1933,7 +1942,7 @@ set_mem_alias_set (mem, set)
rtx mem;
HOST_WIDE_INT set;
{
-#ifdef ENABLE_CHECKING
+#ifdef ENABLE_CHECKING
/* If the new and old alias sets don't conflict, something is wrong. */
if (!alias_sets_conflict_p (set, MEM_ALIAS_SET (mem)))
abort ();
@@ -2073,7 +2082,7 @@ adjust_address_1 (memref, mode, offset, validate, adjust)
unsigned int memalign = MEM_ALIGN (memref);
/* ??? Prefer to create garbage instead of creating shared rtl.
- This may happen even if offset is nonzero -- consider
+ This may happen even if offset is non-zero -- consider
(plus (plus reg reg) const_int) -- so do this always. */
addr = copy_rtx (addr);
@@ -2151,7 +2160,7 @@ offset_address (memref, offset, pow2)
new = simplify_gen_binary (PLUS, Pmode, addr, offset);
- /* At this point we don't know _why_ the address is invalid. It
+ /* At this point we don't know _why_ the address is invalid. It
could have secondary memory refereces, multiplies or anything.
However, if we did go and rearrange things, we can wind up not
@@ -2178,7 +2187,7 @@ offset_address (memref, offset, pow2)
GET_MODE (new));
return new;
}
-
+
/* Return a memory reference like MEMREF, but with its address changed to
ADDR. The caller is asserting that the actual piece of memory pointed
to is the same, just the form of the address is being changed, such as
@@ -2290,8 +2299,14 @@ widen_memory_access (memref, mode, offset)
rtx
gen_label_rtx ()
{
- return gen_rtx_CODE_LABEL (VOIDmode, 0, NULL_RTX, NULL_RTX,
- NULL, label_num++, NULL);
+ rtx label;
+
+ label = gen_rtx_CODE_LABEL (VOIDmode, 0, NULL_RTX,
+ NULL_RTX, label_num++, NULL, NULL);
+
+ LABEL_NUSES (label) = 0;
+ LABEL_ALTERNATE_NAME (label) = NULL;
+ return label;
}
/* For procedure integration. */
@@ -2347,6 +2362,22 @@ restore_emit_status (p)
struct function *p ATTRIBUTE_UNUSED;
{
last_label_num = 0;
+ clear_emit_caches ();
+}
+
+/* Clear out all parts of the state in F that can safely be discarded
+ after the function has been compiled, to let garbage collection
+ reclaim the memory. */
+
+void
+free_emit_status (f)
+ struct function *f;
+{
+ free (f->emit->x_regno_reg_rtx);
+ free (f->emit->regno_pointer_align);
+ free (f->emit->regno_decl);
+ free (f->emit);
+ f->emit = NULL;
}
/* Go through all the RTL insn bodies and copy any invalid shared
@@ -2501,11 +2532,11 @@ copy_most_rtx (orig, may_share)
copy = rtx_alloc (code);
PUT_MODE (copy, GET_MODE (orig));
- RTX_FLAG (copy, in_struct) = RTX_FLAG (orig, in_struct);
- RTX_FLAG (copy, volatil) = RTX_FLAG (orig, volatil);
- RTX_FLAG (copy, unchanging) = RTX_FLAG (orig, unchanging);
- RTX_FLAG (copy, integrated) = RTX_FLAG (orig, integrated);
- RTX_FLAG (copy, frame_related) = RTX_FLAG (orig, frame_related);
+ copy->in_struct = orig->in_struct;
+ copy->volatil = orig->volatil;
+ copy->unchanging = orig->unchanging;
+ copy->integrated = orig->integrated;
+ copy->frame_related = orig->frame_related;
format_ptr = GET_RTX_FORMAT (GET_CODE (copy));
@@ -2638,7 +2669,7 @@ copy_rtx_if_shared (orig)
/* This rtx may not be shared. If it has already been seen,
replace it with a copy of itself. */
- if (RTX_FLAG (x, used))
+ if (x->used)
{
rtx copy;
@@ -2649,7 +2680,7 @@ copy_rtx_if_shared (orig)
x = copy;
copied = 1;
}
- RTX_FLAG (x, used) = 1;
+ x->used = 1;
/* Now scan the subexpressions recursively.
We can store any replaced subexpressions directly into X
@@ -2728,7 +2759,7 @@ reset_used_flags (x)
break;
}
- RTX_FLAG (x, used) = 0;
+ x->used = 0;
format_ptr = GET_RTX_FORMAT (code);
for (i = 0; i < GET_RTX_LENGTH (code); i++)
@@ -2795,17 +2826,6 @@ get_insns ()
return first_insn;
}
-/* Specify a new insn as the first in the chain. */
-
-void
-set_first_insn (insn)
- rtx insn;
-{
- if (PREV_INSN (insn) != 0)
- abort ();
- first_insn = insn;
-}
-
/* Return the last insn emitted in current sequence or current function. */
rtx
@@ -2839,42 +2859,6 @@ get_last_insn_anywhere ()
return 0;
}
-/* Return the first nonnote insn emitted in current sequence or current
- function. This routine looks inside SEQUENCEs. */
-
-rtx
-get_first_nonnote_insn ()
-{
- rtx insn = first_insn;
-
- while (insn)
- {
- insn = next_insn (insn);
- if (insn == 0 || GET_CODE (insn) != NOTE)
- break;
- }
-
- return insn;
-}
-
-/* Return the last nonnote insn emitted in current sequence or current
- function. This routine looks inside SEQUENCEs. */
-
-rtx
-get_last_nonnote_insn ()
-{
- rtx insn = last_insn;
-
- while (insn)
- {
- insn = previous_insn (insn);
- if (insn == 0 || GET_CODE (insn) != NOTE)
- break;
- }
-
- return insn;
-}
-
/* Return a number larger than any instruction's uid in this function. */
int
@@ -3167,8 +3151,8 @@ prev_cc0_setter (insn)
/* Increment the label uses for all labels present in rtx. */
static void
-mark_label_nuses (x)
- rtx x;
+mark_label_nuses(x)
+ rtx x;
{
enum rtx_code code;
int i, j;
@@ -3182,9 +3166,9 @@ mark_label_nuses (x)
for (i = GET_RTX_LENGTH (code) - 1; i >= 0; i--)
{
if (fmt[i] == 'e')
- mark_label_nuses (XEXP (x, i));
+ mark_label_nuses (XEXP (x, i));
else if (fmt[i] == 'E')
- for (j = XVECLEN (x, i) - 1; j >= 0; j--)
+ for (j = XVECLEN (x, i) - 1; j >= 0; j--)
mark_label_nuses (XVECEXP (x, i, j));
}
}
@@ -3193,7 +3177,7 @@ mark_label_nuses (x)
/* Try splitting insns that can be split for better scheduling.
PAT is the pattern which might split.
TRIAL is the insn providing PAT.
- LAST is nonzero if we should return the last insn of the sequence produced.
+ LAST is non-zero if we should return the last insn of the sequence produced.
If this routine succeeds in splitting, it returns the first or last
replacement insn depending on the value of LAST. Otherwise, it
@@ -3210,8 +3194,6 @@ try_split (pat, trial, last)
rtx tem;
rtx note, seq;
int probability;
- rtx insn_last, insn;
- int njumps = 0;
if (any_condjump_p (trial)
&& (note = find_reg_note (trial, REG_BR_PROB, 0)))
@@ -3230,147 +3212,145 @@ try_split (pat, trial, last)
after = NEXT_INSN (after);
}
- if (!seq)
- return trial;
-
- /* Avoid infinite loop if any insn of the result matches
- the original pattern. */
- insn_last = seq;
- while (1)
- {
- if (INSN_P (insn_last)
- && rtx_equal_p (PATTERN (insn_last), pat))
- return trial;
- if (!NEXT_INSN (insn_last))
- break;
- insn_last = NEXT_INSN (insn_last);
- }
-
- /* Mark labels. */
- for (insn = insn_last; insn ; insn = PREV_INSN (insn))
+ if (seq)
{
- if (GET_CODE (insn) == JUMP_INSN)
+ /* SEQ can either be a SEQUENCE or the pattern of a single insn.
+ The latter case will normally arise only when being done so that
+ it, in turn, will be split (SFmode on the 29k is an example). */
+ if (GET_CODE (seq) == SEQUENCE)
{
- mark_jump_label (PATTERN (insn), insn, 0);
- njumps++;
- if (probability != -1
- && any_condjump_p (insn)
- && !find_reg_note (insn, REG_BR_PROB, 0))
+ int i, njumps = 0;
+
+ /* Avoid infinite loop if any insn of the result matches
+ the original pattern. */
+ for (i = 0; i < XVECLEN (seq, 0); i++)
+ if (GET_CODE (XVECEXP (seq, 0, i)) == INSN
+ && rtx_equal_p (PATTERN (XVECEXP (seq, 0, i)), pat))
+ return trial;
+
+ /* Mark labels. */
+ for (i = XVECLEN (seq, 0) - 1; i >= 0; i--)
+ if (GET_CODE (XVECEXP (seq, 0, i)) == JUMP_INSN)
+ {
+ rtx insn = XVECEXP (seq, 0, i);
+ mark_jump_label (PATTERN (insn),
+ XVECEXP (seq, 0, i), 0);
+ njumps++;
+ if (probability != -1
+ && any_condjump_p (insn)
+ && !find_reg_note (insn, REG_BR_PROB, 0))
+ {
+ /* We can preserve the REG_BR_PROB notes only if exactly
+ one jump is created, otherwise the machine description
+ is responsible for this step using
+ split_branch_probability variable. */
+ if (njumps != 1)
+ abort ();
+ REG_NOTES (insn)
+ = gen_rtx_EXPR_LIST (REG_BR_PROB,
+ GEN_INT (probability),
+ REG_NOTES (insn));
+ }
+ }
+
+ /* If we are splitting a CALL_INSN, look for the CALL_INSN
+ in SEQ and copy our CALL_INSN_FUNCTION_USAGE to it. */
+ if (GET_CODE (trial) == CALL_INSN)
+ for (i = XVECLEN (seq, 0) - 1; i >= 0; i--)
+ if (GET_CODE (XVECEXP (seq, 0, i)) == CALL_INSN)
+ CALL_INSN_FUNCTION_USAGE (XVECEXP (seq, 0, i))
+ = CALL_INSN_FUNCTION_USAGE (trial);
+
+ /* Copy notes, particularly those related to the CFG. */
+ for (note = REG_NOTES (trial); note ; note = XEXP (note, 1))
{
- /* We can preserve the REG_BR_PROB notes only if exactly
- one jump is created, otherwise the machine description
- is responsible for this step using
- split_branch_probability variable. */
- if (njumps != 1)
- abort ();
- REG_NOTES (insn)
- = gen_rtx_EXPR_LIST (REG_BR_PROB,
- GEN_INT (probability),
- REG_NOTES (insn));
- }
- }
- }
-
- /* If we are splitting a CALL_INSN, look for the CALL_INSN
- in SEQ and copy our CALL_INSN_FUNCTION_USAGE to it. */
- if (GET_CODE (trial) == CALL_INSN)
- {
- for (insn = insn_last; insn ; insn = PREV_INSN (insn))
- if (GET_CODE (insn) == CALL_INSN)
- {
- CALL_INSN_FUNCTION_USAGE (insn)
- = CALL_INSN_FUNCTION_USAGE (trial);
- SIBLING_CALL_P (insn) = SIBLING_CALL_P (trial);
- }
- }
+ switch (REG_NOTE_KIND (note))
+ {
+ case REG_EH_REGION:
+ for (i = XVECLEN (seq, 0) - 1; i >= 0; i--)
+ {
+ rtx insn = XVECEXP (seq, 0, i);
+ if (GET_CODE (insn) == CALL_INSN
+ || (flag_non_call_exceptions
+ && may_trap_p (PATTERN (insn))))
+ REG_NOTES (insn)
+ = gen_rtx_EXPR_LIST (REG_EH_REGION,
+ XEXP (note, 0),
+ REG_NOTES (insn));
+ }
+ break;
- /* Copy notes, particularly those related to the CFG. */
- for (note = REG_NOTES (trial); note; note = XEXP (note, 1))
- {
- switch (REG_NOTE_KIND (note))
- {
- case REG_EH_REGION:
- insn = insn_last;
- while (insn != NULL_RTX)
- {
- if (GET_CODE (insn) == CALL_INSN
- || (flag_non_call_exceptions
- && may_trap_p (PATTERN (insn))))
- REG_NOTES (insn)
- = gen_rtx_EXPR_LIST (REG_EH_REGION,
- XEXP (note, 0),
- REG_NOTES (insn));
- insn = PREV_INSN (insn);
- }
- break;
+ case REG_NORETURN:
+ case REG_SETJMP:
+ case REG_ALWAYS_RETURN:
+ for (i = XVECLEN (seq, 0) - 1; i >= 0; i--)
+ {
+ rtx insn = XVECEXP (seq, 0, i);
+ if (GET_CODE (insn) == CALL_INSN)
+ REG_NOTES (insn)
+ = gen_rtx_EXPR_LIST (REG_NOTE_KIND (note),
+ XEXP (note, 0),
+ REG_NOTES (insn));
+ }
+ break;
- case REG_NORETURN:
- case REG_SETJMP:
- case REG_ALWAYS_RETURN:
- insn = insn_last;
- while (insn != NULL_RTX)
- {
- if (GET_CODE (insn) == CALL_INSN)
- REG_NOTES (insn)
- = gen_rtx_EXPR_LIST (REG_NOTE_KIND (note),
- XEXP (note, 0),
- REG_NOTES (insn));
- insn = PREV_INSN (insn);
- }
- break;
+ case REG_NON_LOCAL_GOTO:
+ for (i = XVECLEN (seq, 0) - 1; i >= 0; i--)
+ {
+ rtx insn = XVECEXP (seq, 0, i);
+ if (GET_CODE (insn) == JUMP_INSN)
+ REG_NOTES (insn)
+ = gen_rtx_EXPR_LIST (REG_NOTE_KIND (note),
+ XEXP (note, 0),
+ REG_NOTES (insn));
+ }
+ break;
- case REG_NON_LOCAL_GOTO:
- insn = insn_last;
- while (insn != NULL_RTX)
- {
- if (GET_CODE (insn) == JUMP_INSN)
- REG_NOTES (insn)
- = gen_rtx_EXPR_LIST (REG_NOTE_KIND (note),
- XEXP (note, 0),
- REG_NOTES (insn));
- insn = PREV_INSN (insn);
+ default:
+ break;
+ }
}
- break;
- default:
- break;
+ /* If there are LABELS inside the split insns increment the
+ usage count so we don't delete the label. */
+ if (GET_CODE (trial) == INSN)
+ for (i = XVECLEN (seq, 0) - 1; i >= 0; i--)
+ if (GET_CODE (XVECEXP (seq, 0, i)) == INSN)
+ mark_label_nuses (PATTERN (XVECEXP (seq, 0, i)));
+
+ tem = emit_insn_after (seq, trial);
+
+ delete_related_insns (trial);
+ if (has_barrier)
+ emit_barrier_after (tem);
+
+ /* Recursively call try_split for each new insn created; by the
+ time control returns here that insn will be fully split, so
+ set LAST and continue from the insn after the one returned.
+ We can't use next_active_insn here since AFTER may be a note.
+ Ignore deleted insns, which can be occur if not optimizing. */
+ for (tem = NEXT_INSN (before); tem != after; tem = NEXT_INSN (tem))
+ if (! INSN_DELETED_P (tem) && INSN_P (tem))
+ tem = try_split (PATTERN (tem), tem, 1);
}
- }
-
- /* If there are LABELS inside the split insns increment the
- usage count so we don't delete the label. */
- if (GET_CODE (trial) == INSN)
- {
- insn = insn_last;
- while (insn != NULL_RTX)
+ /* Avoid infinite loop if the result matches the original pattern. */
+ else if (rtx_equal_p (seq, pat))
+ return trial;
+ else
{
- if (GET_CODE (insn) == INSN)
- mark_label_nuses (PATTERN (insn));
-
- insn = PREV_INSN (insn);
+ PATTERN (trial) = seq;
+ INSN_CODE (trial) = -1;
+ try_split (seq, trial, last);
}
- }
- tem = emit_insn_after_scope (seq, trial, INSN_SCOPE (trial));
-
- delete_insn (trial);
- if (has_barrier)
- emit_barrier_after (tem);
-
- /* Recursively call try_split for each new insn created; by the
- time control returns here that insn will be fully split, so
- set LAST and continue from the insn after the one returned.
- We can't use next_active_insn here since AFTER may be a note.
- Ignore deleted insns, which can be occur if not optimizing. */
- for (tem = NEXT_INSN (before); tem != after; tem = NEXT_INSN (tem))
- if (! INSN_DELETED_P (tem) && INSN_P (tem))
- tem = try_split (PATTERN (tem), tem, 1);
+ /* Return either the first or the last insn, depending on which was
+ requested. */
+ return last
+ ? (after ? PREV_INSN (after) : last_insn)
+ : NEXT_INSN (before);
+ }
- /* Return either the first or the last insn, depending on which was
- requested. */
- return last
- ? (after ? PREV_INSN (after) : last_insn)
- : NEXT_INSN (before);
+ return trial;
}
/* Make and return an INSN rtx, initializing all its slots.
@@ -3389,8 +3369,6 @@ make_insn_raw (pattern)
INSN_CODE (insn) = -1;
LOG_LINKS (insn) = NULL;
REG_NOTES (insn) = NULL;
- INSN_SCOPE (insn) = NULL;
- BLOCK_FOR_INSN (insn) = NULL;
#ifdef ENABLE_RTL_CHECKING
if (insn
@@ -3407,7 +3385,7 @@ make_insn_raw (pattern)
return insn;
}
-/* Like `make_insn_raw' but make a JUMP_INSN instead of an insn. */
+/* Like `make_insn' but make a JUMP_INSN instead of an insn. */
static rtx
make_jump_insn_raw (pattern)
@@ -3423,13 +3401,11 @@ make_jump_insn_raw (pattern)
LOG_LINKS (insn) = NULL;
REG_NOTES (insn) = NULL;
JUMP_LABEL (insn) = NULL;
- INSN_SCOPE (insn) = NULL;
- BLOCK_FOR_INSN (insn) = NULL;
return insn;
}
-/* Like `make_insn_raw' but make a CALL_INSN instead of an insn. */
+/* Like `make_insn' but make a CALL_INSN instead of an insn. */
static rtx
make_call_insn_raw (pattern)
@@ -3445,8 +3421,6 @@ make_call_insn_raw (pattern)
LOG_LINKS (insn) = NULL;
REG_NOTES (insn) = NULL;
CALL_INSN_FUNCTION_USAGE (insn) = NULL;
- INSN_SCOPE (insn) = NULL;
- BLOCK_FOR_INSN (insn) = NULL;
return insn;
}
@@ -3511,13 +3485,11 @@ add_insn_after (insn, after)
abort ();
}
- if (GET_CODE (after) != BARRIER
- && GET_CODE (insn) != BARRIER
+ if (basic_block_for_insn
+ && (unsigned int) INSN_UID (after) < basic_block_for_insn->num_elements
&& (bb = BLOCK_FOR_INSN (after)))
{
set_block_for_insn (insn, bb);
- if (INSN_P (insn))
- bb->flags |= BB_DIRTY;
/* Should not happen as first in the BB is always
either NOTE or LABEL. */
if (bb->end == after
@@ -3580,13 +3552,11 @@ add_insn_before (insn, before)
abort ();
}
- if (GET_CODE (before) != BARRIER
- && GET_CODE (insn) != BARRIER
+ if (basic_block_for_insn
+ && (unsigned int) INSN_UID (before) < basic_block_for_insn->num_elements
&& (bb = BLOCK_FOR_INSN (before)))
{
set_block_for_insn (insn, bb);
- if (INSN_P (insn))
- bb->flags |= BB_DIRTY;
/* Should not happen as first in the BB is always
either NOTE or LABEl. */
if (bb->head == insn
@@ -3660,11 +3630,10 @@ remove_insn (insn)
if (stack == 0)
abort ();
}
- if (GET_CODE (insn) != BARRIER
+ if (basic_block_for_insn
+ && (unsigned int) INSN_UID (insn) < basic_block_for_insn->num_elements
&& (bb = BLOCK_FOR_INSN (insn)))
{
- if (INSN_P (insn))
- bb->flags |= BB_DIRTY;
if (bb->head == insn)
{
/* Never ever delete the basic block note without deleting whole
@@ -3737,18 +3706,19 @@ reorder_insns (from, to, after)
reorder_insns_nobb (from, to, after);
- if (GET_CODE (after) != BARRIER
+ if (basic_block_for_insn
+ && (unsigned int) INSN_UID (after) < basic_block_for_insn->num_elements
&& (bb = BLOCK_FOR_INSN (after)))
{
rtx x;
- bb->flags |= BB_DIRTY;
-
- if (GET_CODE (from) != BARRIER
+
+ if (basic_block_for_insn
+ && ((unsigned int) INSN_UID (from)
+ < basic_block_for_insn->num_elements)
&& (bb2 = BLOCK_FOR_INSN (from)))
{
if (bb2->end == to)
bb2->end = prev;
- bb2->flags |= BB_DIRTY;
}
if (bb->end == after)
@@ -3770,7 +3740,7 @@ find_line_note (insn)
for (; insn; insn = PREV_INSN (insn))
if (GET_CODE (insn) == NOTE
- && NOTE_LINE_NUMBER (insn) >= 0)
+ && NOTE_LINE_NUMBER (insn) >= 0)
break;
return insn;
@@ -3871,7 +3841,7 @@ remove_unnecessary_notes ()
then there is no PC range in the generated code that will
actually be in this block, so there's no point in
remembering the existence of the block. */
- for (tmp = PREV_INSN (insn); tmp; tmp = PREV_INSN (tmp))
+ for (tmp = PREV_INSN (insn); tmp ; tmp = PREV_INSN (tmp))
{
/* This block contains a real instruction. Note that we
don't include labels; if the only thing in the block
@@ -3915,173 +3885,76 @@ remove_unnecessary_notes ()
}
-/* Emit insn(s) of given code and pattern
- at a specified place within the doubly-linked list.
-
- All of the emit_foo global entry points accept an object
- X which is either an insn list or a PATTERN of a single
- instruction.
+/* Emit an insn of given code and pattern
+ at a specified place within the doubly-linked list. */
- There are thus a few canonical ways to generate code and
- emit it at a specific place in the instruction stream. For
- example, consider the instruction named SPOT and the fact that
- we would like to emit some instructions before SPOT. We might
- do it like this:
-
- start_sequence ();
- ... emit the new instructions ...
- insns_head = get_insns ();
- end_sequence ();
-
- emit_insn_before (insns_head, SPOT);
-
- It used to be common to generate SEQUENCE rtl instead, but that
- is a relic of the past which no longer occurs. The reason is that
- SEQUENCE rtl results in much fragmented RTL memory since the SEQUENCE
- generated would almost certainly die right after it was created. */
-
-/* Make X be output before the instruction BEFORE. */
+/* Make an instruction with body PATTERN
+ and output it before the instruction BEFORE. */
rtx
-emit_insn_before (x, before)
- rtx x, before;
+emit_insn_before (pattern, before)
+ rtx pattern, before;
{
- rtx last = before;
- rtx insn;
-
-#ifdef ENABLE_RTL_CHECKING
- if (before == NULL_RTX)
- abort ();
-#endif
-
- if (x == NULL_RTX)
- return last;
+ rtx insn = before;
- switch (GET_CODE (x))
+ if (GET_CODE (pattern) == SEQUENCE)
{
- case INSN:
- case JUMP_INSN:
- case CALL_INSN:
- case CODE_LABEL:
- case BARRIER:
- case NOTE:
- insn = x;
- while (insn)
+ int i;
+
+ for (i = 0; i < XVECLEN (pattern, 0); i++)
{
- rtx next = NEXT_INSN (insn);
+ insn = XVECEXP (pattern, 0, i);
add_insn_before (insn, before);
- last = insn;
- insn = next;
}
- break;
-
-#ifdef ENABLE_RTL_CHECKING
- case SEQUENCE:
- abort ();
- break;
-#endif
-
- default:
- last = make_insn_raw (x);
- add_insn_before (last, before);
- break;
+ }
+ else
+ {
+ insn = make_insn_raw (pattern);
+ add_insn_before (insn, before);
}
- return last;
+ return insn;
}
-/* Make an instruction with body X and code JUMP_INSN
+/* Make an instruction with body PATTERN and code JUMP_INSN
and output it before the instruction BEFORE. */
rtx
-emit_jump_insn_before (x, before)
- rtx x, before;
+emit_jump_insn_before (pattern, before)
+ rtx pattern, before;
{
- rtx insn, last = NULL_RTX;
-
-#ifdef ENABLE_RTL_CHECKING
- if (before == NULL_RTX)
- abort ();
-#endif
+ rtx insn;
- switch (GET_CODE (x))
+ if (GET_CODE (pattern) == SEQUENCE)
+ insn = emit_insn_before (pattern, before);
+ else
{
- case INSN:
- case JUMP_INSN:
- case CALL_INSN:
- case CODE_LABEL:
- case BARRIER:
- case NOTE:
- insn = x;
- while (insn)
- {
- rtx next = NEXT_INSN (insn);
- add_insn_before (insn, before);
- last = insn;
- insn = next;
- }
- break;
-
-#ifdef ENABLE_RTL_CHECKING
- case SEQUENCE:
- abort ();
- break;
-#endif
-
- default:
- last = make_jump_insn_raw (x);
- add_insn_before (last, before);
- break;
+ insn = make_jump_insn_raw (pattern);
+ add_insn_before (insn, before);
}
- return last;
+ return insn;
}
-/* Make an instruction with body X and code CALL_INSN
+/* Make an instruction with body PATTERN and code CALL_INSN
and output it before the instruction BEFORE. */
rtx
-emit_call_insn_before (x, before)
- rtx x, before;
+emit_call_insn_before (pattern, before)
+ rtx pattern, before;
{
- rtx last = NULL_RTX, insn;
-
-#ifdef ENABLE_RTL_CHECKING
- if (before == NULL_RTX)
- abort ();
-#endif
+ rtx insn;
- switch (GET_CODE (x))
+ if (GET_CODE (pattern) == SEQUENCE)
+ insn = emit_insn_before (pattern, before);
+ else
{
- case INSN:
- case JUMP_INSN:
- case CALL_INSN:
- case CODE_LABEL:
- case BARRIER:
- case NOTE:
- insn = x;
- while (insn)
- {
- rtx next = NEXT_INSN (insn);
- add_insn_before (insn, before);
- last = insn;
- insn = next;
- }
- break;
-
-#ifdef ENABLE_RTL_CHECKING
- case SEQUENCE:
- abort ();
- break;
-#endif
-
- default:
- last = make_call_insn_raw (x);
- add_insn_before (last, before);
- break;
+ insn = make_call_insn_raw (pattern);
+ add_insn_before (insn, before);
+ PUT_CODE (insn, CALL_INSN);
}
- return last;
+ return insn;
}
/* Make an insn of code BARRIER
@@ -4127,106 +4000,50 @@ emit_note_before (subtype, before)
INSN_UID (note) = cur_insn_uid++;
NOTE_SOURCE_FILE (note) = 0;
NOTE_LINE_NUMBER (note) = subtype;
- BLOCK_FOR_INSN (note) = NULL;
add_insn_before (note, before);
return note;
}
-/* Helper for emit_insn_after, handles lists of instructions
- efficiently. */
-
-static rtx emit_insn_after_1 PARAMS ((rtx, rtx));
+/* Make an insn of code INSN with body PATTERN
+ and output it after the insn AFTER. */
-static rtx
-emit_insn_after_1 (first, after)
- rtx first, after;
+rtx
+emit_insn_after (pattern, after)
+ rtx pattern, after;
{
- rtx last;
- rtx after_after;
- basic_block bb;
+ rtx insn = after;
- if (GET_CODE (after) != BARRIER
- && (bb = BLOCK_FOR_INSN (after)))
+ if (GET_CODE (pattern) == SEQUENCE)
{
- bb->flags |= BB_DIRTY;
- for (last = first; NEXT_INSN (last); last = NEXT_INSN (last))
- if (GET_CODE (last) != BARRIER)
- set_block_for_insn (last, bb);
- if (GET_CODE (last) != BARRIER)
- set_block_for_insn (last, bb);
- if (bb->end == after)
- bb->end = last;
+ int i;
+
+ for (i = 0; i < XVECLEN (pattern, 0); i++)
+ {
+ insn = XVECEXP (pattern, 0, i);
+ add_insn_after (insn, after);
+ after = insn;
+ }
}
else
- for (last = first; NEXT_INSN (last); last = NEXT_INSN (last))
- continue;
-
- after_after = NEXT_INSN (after);
-
- NEXT_INSN (after) = first;
- PREV_INSN (first) = after;
- NEXT_INSN (last) = after_after;
- if (after_after)
- PREV_INSN (after_after) = last;
-
- if (after == last_insn)
- last_insn = last;
- return last;
-}
-
-/* Make X be output after the insn AFTER. */
-
-rtx
-emit_insn_after (x, after)
- rtx x, after;
-{
- rtx last = after;
-
-#ifdef ENABLE_RTL_CHECKING
- if (after == NULL_RTX)
- abort ();
-#endif
-
- if (x == NULL_RTX)
- return last;
-
- switch (GET_CODE (x))
{
- case INSN:
- case JUMP_INSN:
- case CALL_INSN:
- case CODE_LABEL:
- case BARRIER:
- case NOTE:
- last = emit_insn_after_1 (x, after);
- break;
-
-#ifdef ENABLE_RTL_CHECKING
- case SEQUENCE:
- abort ();
- break;
-#endif
-
- default:
- last = make_insn_raw (x);
- add_insn_after (last, after);
- break;
+ insn = make_insn_raw (pattern);
+ add_insn_after (insn, after);
}
- return last;
+ return insn;
}
/* Similar to emit_insn_after, except that line notes are to be inserted so
as to act as if this insn were at FROM. */
void
-emit_insn_after_with_line_notes (x, after, from)
- rtx x, after, from;
+emit_insn_after_with_line_notes (pattern, after, from)
+ rtx pattern, after, from;
{
rtx from_line = find_line_note (from);
rtx after_line = find_line_note (after);
- rtx insn = emit_insn_after (x, after);
+ rtx insn = emit_insn_after (pattern, after);
if (from_line)
emit_line_note_after (NOTE_SOURCE_FILE (from_line),
@@ -4239,84 +4056,24 @@ emit_insn_after_with_line_notes (x, after, from)
insn);
}
-/* Make an insn of code JUMP_INSN with body X
+/* Make an insn of code JUMP_INSN with body PATTERN
and output it after the insn AFTER. */
rtx
-emit_jump_insn_after (x, after)
- rtx x, after;
+emit_jump_insn_after (pattern, after)
+ rtx pattern, after;
{
- rtx last;
-
-#ifdef ENABLE_RTL_CHECKING
- if (after == NULL_RTX)
- abort ();
-#endif
+ rtx insn;
- switch (GET_CODE (x))
+ if (GET_CODE (pattern) == SEQUENCE)
+ insn = emit_insn_after (pattern, after);
+ else
{
- case INSN:
- case JUMP_INSN:
- case CALL_INSN:
- case CODE_LABEL:
- case BARRIER:
- case NOTE:
- last = emit_insn_after_1 (x, after);
- break;
-
-#ifdef ENABLE_RTL_CHECKING
- case SEQUENCE:
- abort ();
- break;
-#endif
-
- default:
- last = make_jump_insn_raw (x);
- add_insn_after (last, after);
- break;
+ insn = make_jump_insn_raw (pattern);
+ add_insn_after (insn, after);
}
- return last;
-}
-
-/* Make an instruction with body X and code CALL_INSN
- and output it after the instruction AFTER. */
-
-rtx
-emit_call_insn_after (x, after)
- rtx x, after;
-{
- rtx last;
-
-#ifdef ENABLE_RTL_CHECKING
- if (after == NULL_RTX)
- abort ();
-#endif
-
- switch (GET_CODE (x))
- {
- case INSN:
- case JUMP_INSN:
- case CALL_INSN:
- case CODE_LABEL:
- case BARRIER:
- case NOTE:
- last = emit_insn_after_1 (x, after);
- break;
-
-#ifdef ENABLE_RTL_CHECKING
- case SEQUENCE:
- abort ();
- break;
-#endif
-
- default:
- last = make_call_insn_raw (x);
- add_insn_after (last, after);
- break;
- }
-
- return last;
+ return insn;
}
/* Make an insn of code BARRIER
@@ -4363,7 +4120,6 @@ emit_note_after (subtype, after)
INSN_UID (note) = cur_insn_uid++;
NOTE_SOURCE_FILE (note) = 0;
NOTE_LINE_NUMBER (note) = subtype;
- BLOCK_FOR_INSN (note) = NULL;
add_insn_after (note, after);
return note;
}
@@ -4384,219 +4140,165 @@ emit_line_note_after (file, line, after)
return 0;
}
- note = rtx_alloc (NOTE);
+ note = rtx_alloc (NOTE);
INSN_UID (note) = cur_insn_uid++;
NOTE_SOURCE_FILE (note) = file;
NOTE_LINE_NUMBER (note) = line;
- BLOCK_FOR_INSN (note) = NULL;
add_insn_after (note, after);
return note;
}
-/* Like emit_insn_after, but set INSN_SCOPE according to SCOPE. */
-rtx
-emit_insn_after_scope (pattern, after, scope)
- rtx pattern, after;
- tree scope;
-{
- rtx last = emit_insn_after (pattern, after);
+/* Make an insn of code INSN with pattern PATTERN
+ and add it to the end of the doubly-linked list.
+ If PATTERN is a SEQUENCE, take the elements of it
+ and emit an insn for each element.
- after = NEXT_INSN (after);
- while (1)
- {
- if (active_insn_p (after))
- INSN_SCOPE (after) = scope;
- if (after == last)
- break;
- after = NEXT_INSN (after);
- }
- return last;
-}
+ Returns the last insn emitted. */
-/* Like emit_jump_insn_after, but set INSN_SCOPE according to SCOPE. */
rtx
-emit_jump_insn_after_scope (pattern, after, scope)
- rtx pattern, after;
- tree scope;
+emit_insn (pattern)
+ rtx pattern;
{
- rtx last = emit_jump_insn_after (pattern, after);
+ rtx insn = last_insn;
- after = NEXT_INSN (after);
- while (1)
+ if (GET_CODE (pattern) == SEQUENCE)
{
- if (active_insn_p (after))
- INSN_SCOPE (after) = scope;
- if (after == last)
- break;
- after = NEXT_INSN (after);
+ int i;
+
+ for (i = 0; i < XVECLEN (pattern, 0); i++)
+ {
+ insn = XVECEXP (pattern, 0, i);
+ add_insn (insn);
+ }
}
- return last;
+ else
+ {
+ insn = make_insn_raw (pattern);
+ add_insn (insn);
+ }
+
+ return insn;
}
-/* Like emit_call_insn_after, but set INSN_SCOPE according to SCOPE. */
+/* Emit the insns in a chain starting with INSN.
+ Return the last insn emitted. */
+
rtx
-emit_call_insn_after_scope (pattern, after, scope)
- rtx pattern, after;
- tree scope;
+emit_insns (insn)
+ rtx insn;
{
- rtx last = emit_call_insn_after (pattern, after);
+ rtx last = 0;
- after = NEXT_INSN (after);
- while (1)
+ while (insn)
{
- if (active_insn_p (after))
- INSN_SCOPE (after) = scope;
- if (after == last)
- break;
- after = NEXT_INSN (after);
+ rtx next = NEXT_INSN (insn);
+ add_insn (insn);
+ last = insn;
+ insn = next;
}
+
return last;
}
-/* Like emit_insn_before, but set INSN_SCOPE according to SCOPE. */
+/* Emit the insns in a chain starting with INSN and place them in front of
+ the insn BEFORE. Return the last insn emitted. */
+
rtx
-emit_insn_before_scope (pattern, before, scope)
- rtx pattern, before;
- tree scope;
+emit_insns_before (insn, before)
+ rtx insn;
+ rtx before;
{
- rtx first = PREV_INSN (before);
- rtx last = emit_insn_before (pattern, before);
+ rtx last = 0;
- first = NEXT_INSN (first);
- while (1)
+ while (insn)
{
- if (active_insn_p (first))
- INSN_SCOPE (first) = scope;
- if (first == last)
- break;
- first = NEXT_INSN (first);
+ rtx next = NEXT_INSN (insn);
+ add_insn_before (insn, before);
+ last = insn;
+ insn = next;
}
+
return last;
}
-
-/* Take X and emit it at the end of the doubly-linked
- INSN list.
- Returns the last insn emitted. */
+/* Emit the insns in a chain starting with FIRST and place them in back of
+ the insn AFTER. Return the last insn emitted. */
rtx
-emit_insn (x)
- rtx x;
+emit_insns_after (first, after)
+ rtx first;
+ rtx after;
{
- rtx last = last_insn;
- rtx insn;
+ rtx last;
+ rtx after_after;
+ basic_block bb;
+
+ if (!after)
+ abort ();
- if (x == NULL_RTX)
- return last;
+ if (!first)
+ return after;
- switch (GET_CODE (x))
+ if (basic_block_for_insn
+ && (unsigned int) INSN_UID (after) < basic_block_for_insn->num_elements
+ && (bb = BLOCK_FOR_INSN (after)))
{
- case INSN:
- case JUMP_INSN:
- case CALL_INSN:
- case CODE_LABEL:
- case BARRIER:
- case NOTE:
- insn = x;
- while (insn)
- {
- rtx next = NEXT_INSN (insn);
- add_insn (insn);
- last = insn;
- insn = next;
- }
- break;
+ for (last = first; NEXT_INSN (last); last = NEXT_INSN (last))
+ set_block_for_insn (last, bb);
+ set_block_for_insn (last, bb);
+ if (bb->end == after)
+ bb->end = last;
+ }
+ else
+ for (last = first; NEXT_INSN (last); last = NEXT_INSN (last))
+ continue;
-#ifdef ENABLE_RTL_CHECKING
- case SEQUENCE:
- abort ();
- break;
-#endif
+ after_after = NEXT_INSN (after);
- default:
- last = make_insn_raw (x);
- add_insn (last);
- break;
- }
+ NEXT_INSN (after) = first;
+ PREV_INSN (first) = after;
+ NEXT_INSN (last) = after_after;
+ if (after_after)
+ PREV_INSN (after_after) = last;
+ if (after == last_insn)
+ last_insn = last;
return last;
}
-/* Make an insn of code JUMP_INSN with pattern X
+/* Make an insn of code JUMP_INSN with pattern PATTERN
and add it to the end of the doubly-linked list. */
rtx
-emit_jump_insn (x)
- rtx x;
+emit_jump_insn (pattern)
+ rtx pattern;
{
- rtx last = NULL_RTX, insn;
-
- switch (GET_CODE (x))
+ if (GET_CODE (pattern) == SEQUENCE)
+ return emit_insn (pattern);
+ else
{
- case INSN:
- case JUMP_INSN:
- case CALL_INSN:
- case CODE_LABEL:
- case BARRIER:
- case NOTE:
- insn = x;
- while (insn)
- {
- rtx next = NEXT_INSN (insn);
- add_insn (insn);
- last = insn;
- insn = next;
- }
- break;
-
-#ifdef ENABLE_RTL_CHECKING
- case SEQUENCE:
- abort ();
- break;
-#endif
-
- default:
- last = make_jump_insn_raw (x);
- add_insn (last);
- break;
+ rtx insn = make_jump_insn_raw (pattern);
+ add_insn (insn);
+ return insn;
}
-
- return last;
}
-/* Make an insn of code CALL_INSN with pattern X
+/* Make an insn of code CALL_INSN with pattern PATTERN
and add it to the end of the doubly-linked list. */
rtx
-emit_call_insn (x)
- rtx x;
+emit_call_insn (pattern)
+ rtx pattern;
{
- rtx insn;
-
- switch (GET_CODE (x))
+ if (GET_CODE (pattern) == SEQUENCE)
+ return emit_insn (pattern);
+ else
{
- case INSN:
- case JUMP_INSN:
- case CALL_INSN:
- case CODE_LABEL:
- case BARRIER:
- case NOTE:
- insn = emit_insn (x);
- break;
-
-#ifdef ENABLE_RTL_CHECKING
- case SEQUENCE:
- abort ();
- break;
-#endif
-
- default:
- insn = make_call_insn_raw (x);
+ rtx insn = make_call_insn_raw (pattern);
add_insn (insn);
- break;
+ PUT_CODE (insn, CALL_INSN);
+ return insn;
}
-
- return insn;
}
/* Add the label LABEL to the end of the doubly-linked list. */
@@ -4679,7 +4381,6 @@ emit_note (file, line)
INSN_UID (note) = cur_insn_uid++;
NOTE_SOURCE_FILE (note) = file;
NOTE_LINE_NUMBER (note) = line;
- BLOCK_FOR_INSN (note) = NULL;
add_insn (note);
return note;
}
@@ -4814,9 +4515,6 @@ emit (x)
abort ();
}
-/* Space for free sequence stack entries. */
-static GTY ((deletable (""))) struct sequence_stack *free_sequence_stack;
-
/* Begin emitting insns to a sequence which can be packaged in an
RTL_EXPR. If this sequence will contain something that might cause
the compiler to pop arguments to function calls (because those
@@ -4830,13 +4528,7 @@ start_sequence ()
{
struct sequence_stack *tem;
- if (free_sequence_stack != NULL)
- {
- tem = free_sequence_stack;
- free_sequence_stack = tem->next;
- }
- else
- tem = (struct sequence_stack *) ggc_alloc (sizeof (struct sequence_stack));
+ tem = (struct sequence_stack *) xmalloc (sizeof (struct sequence_stack));
tem->next = seq_stack;
tem->first = first_insn;
@@ -4933,12 +4625,12 @@ pop_topmost_sequence ()
/* After emitting to a sequence, restore previous saved state.
To get the contents of the sequence just made, you must call
- `get_insns' *before* calling here.
+ `gen_sequence' *before* calling here.
If the compiler might have deferred popping arguments while
generating this sequence, and this sequence will not be immediately
inserted into the instruction stream, use do_pending_stack_adjust
- before calling get_insns. That will ensure that the deferred
+ before calling gen_sequence. That will ensure that the deferred
pops are inserted into this sequence, and not into some random
location in the instruction stream. See INHIBIT_DEFER_POP for more
information about deferred popping of arguments. */
@@ -4953,9 +4645,7 @@ end_sequence ()
seq_rtl_expr = tem->sequence_rtl_expr;
seq_stack = tem->next;
- memset (tem, 0, sizeof (*tem));
- tem->next = free_sequence_stack;
- free_sequence_stack = tem;
+ free (tem);
}
/* This works like end_sequence, but records the old sequence in FIRST
@@ -4967,7 +4657,7 @@ end_full_sequence (first, last)
{
*first = first_insn;
*last = last_insn;
- end_sequence ();
+ end_sequence();
}
/* Return 1 if currently emitting into a sequence. */
@@ -4977,6 +4667,45 @@ in_sequence_p ()
{
return seq_stack != 0;
}
+
+/* Generate a SEQUENCE rtx containing the insns already emitted
+ to the current sequence.
+
+ This is how the gen_... function from a DEFINE_EXPAND
+ constructs the SEQUENCE that it returns. */
+
+rtx
+gen_sequence ()
+{
+ 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++;
+
+ /* If only one insn, return it rather than a SEQUENCE.
+ (Now that we cache SEQUENCE expressions, it isn't worth special-casing
+ the case of an empty list.)
+ We only return the pattern of an insn if its code is INSN and it
+ has no notes. This ensures that no information gets lost. */
+ if (len == 1
+ && ! RTX_FRAME_RELATED_P (first_insn)
+ && GET_CODE (first_insn) == INSN
+ /* Don't throw away any reg notes. */
+ && REG_NOTES (first_insn) == 0)
+ return PATTERN (first_insn);
+
+ 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;
+}
/* Put the various virtual registers into REGNO_REG_RTX. */
@@ -4992,6 +4721,16 @@ init_virtual_regs (es)
ptr[VIRTUAL_CFA_REGNUM] = virtual_cfa_rtx;
}
+void
+clear_emit_caches ()
+{
+ int i;
+
+ /* Clear the start_sequence/gen_sequence cache. */
+ for (i = 0; i < SEQUENCE_RESULT_SIZE; i++)
+ sequence_result[i] = 0;
+ free_insn = 0;
+}
/* Used by copy_insn_1 to avoid copying SCRATCHes more than once. */
static rtx copy_insn_scratch_in[MAX_RECOG_OPERANDS];
@@ -5079,14 +4818,14 @@ copy_insn_1 (orig)
/* We do not copy the USED flag, which is used as a mark bit during
walks over the RTL. */
- RTX_FLAG (copy, used) = 0;
+ copy->used = 0;
/* We do not copy JUMP, CALL, or FRAME_RELATED for INSNs. */
if (GET_RTX_CLASS (code) == 'i')
{
- RTX_FLAG (copy, jump) = 0;
- RTX_FLAG (copy, call) = 0;
- RTX_FLAG (copy, frame_related) = 0;
+ copy->jump = 0;
+ copy->call = 0;
+ copy->frame_related = 0;
}
format_ptr = GET_RTX_FORMAT (GET_CODE (copy));
@@ -5174,7 +4913,7 @@ init_emit ()
{
struct function *f = cfun;
- f->emit = (struct emit_status *) ggc_alloc (sizeof (struct emit_status));
+ f->emit = (struct emit_status *) xmalloc (sizeof (struct emit_status));
first_insn = NULL;
last_insn = NULL;
seq_rtl_expr = NULL;
@@ -5186,26 +4925,21 @@ init_emit ()
last_label_num = 0;
seq_stack = NULL;
+ clear_emit_caches ();
+
/* Init the tables that describe all the pseudo regs. */
f->emit->regno_pointer_align_length = LAST_VIRTUAL_REGISTER + 101;
f->emit->regno_pointer_align
- = (unsigned char *) ggc_alloc_cleared (f->emit->regno_pointer_align_length
- * sizeof (unsigned char));
+ = (unsigned char *) xcalloc (f->emit->regno_pointer_align_length,
+ sizeof (unsigned char));
regno_reg_rtx
- = (rtx *) ggc_alloc_cleared (f->emit->regno_pointer_align_length
- * sizeof (rtx));
+ = (rtx *) xcalloc (f->emit->regno_pointer_align_length, sizeof (rtx));
f->emit->regno_decl
- = (tree *) ggc_alloc_cleared (f->emit->regno_pointer_align_length
- * sizeof (tree));
-
- /* Put copies of all the hard registers into regno_reg_rtx. */
- memcpy (regno_reg_rtx,
- static_regno_reg_rtx,
- FIRST_PSEUDO_REGISTER * sizeof (rtx));
+ = (tree *) xcalloc (f->emit->regno_pointer_align_length, sizeof (tree));
/* Put copies of all the virtual register rtx into regno_reg_rtx. */
init_virtual_regs (f->emit);
@@ -5241,6 +4975,46 @@ init_emit ()
#endif
}
+/* Mark SS for GC. */
+
+static void
+mark_sequence_stack (ss)
+ struct sequence_stack *ss;
+{
+ while (ss)
+ {
+ ggc_mark_rtx (ss->first);
+ ggc_mark_tree (ss->sequence_rtl_expr);
+ ss = ss->next;
+ }
+}
+
+/* Mark ES for GC. */
+
+void
+mark_emit_status (es)
+ struct emit_status *es;
+{
+ rtx *r;
+ tree *t;
+ int i;
+
+ if (es == 0)
+ return;
+
+ for (i = es->regno_pointer_align_length, r = es->x_regno_reg_rtx,
+ t = es->regno_decl;
+ i > 0; --i, ++r, ++t)
+ {
+ ggc_mark_rtx (*r);
+ ggc_mark_tree (*t);
+ }
+
+ mark_sequence_stack (es->sequence_stack);
+ ggc_mark_tree (es->sequence_rtl_expr);
+ ggc_mark_rtx (es->x_first_insn);
+}
+
/* Generate the constant 0. */
static rtx
@@ -5264,26 +5038,10 @@ gen_const_vector_0 (mode)
for (i = 0; i < units; ++i)
RTVEC_ELT (v, i) = CONST0_RTX (inner);
- tem = gen_rtx_raw_CONST_VECTOR (mode, v);
+ tem = gen_rtx_CONST_VECTOR (mode, v);
return tem;
}
-/* Generate a vector like gen_rtx_raw_CONST_VEC, but use the zero vector when
- all elements are zero. */
-rtx
-gen_rtx_CONST_VECTOR (mode, v)
- enum machine_mode mode;
- rtvec v;
-{
- rtx inner_zero = CONST0_RTX (GET_MODE_INNER (mode));
- int i;
-
- for (i = GET_MODE_NUNITS (mode) - 1; i >= 0; i--)
- if (RTVEC_ELT (v, i) != inner_zero)
- return gen_rtx_raw_CONST_VECTOR (mode, v);
- return CONST0_RTX (mode);
-}
-
/* Create some permanent unique rtl objects shared between all functions.
LINE_NUMBERS is nonzero if line numbers are to be generated. */
@@ -5295,16 +5053,14 @@ init_emit_once (line_numbers)
enum machine_mode mode;
enum machine_mode double_mode;
- /* Initialize the CONST_INT, CONST_DOUBLE, and memory attribute hash
- tables. */
+ /* Initialize the CONST_INT and memory attribute hash tables. */
const_int_htab = htab_create (37, const_int_htab_hash,
const_int_htab_eq, NULL);
-
- const_double_htab = htab_create (37, const_double_htab_hash,
- const_double_htab_eq, NULL);
+ ggc_add_deletable_htab (const_int_htab, 0, 0);
mem_attrs_htab = htab_create (37, mem_attrs_htab_hash,
mem_attrs_htab_eq, NULL);
+ ggc_add_deletable_htab (mem_attrs_htab, 0, mem_attrs_mark);
no_line_numbers = ! line_numbers;
@@ -5359,10 +5115,8 @@ init_emit_once (line_numbers)
gen_raw_REG (Pmode, VIRTUAL_OUTGOING_ARGS_REGNUM);
virtual_cfa_rtx = gen_raw_REG (Pmode, VIRTUAL_CFA_REGNUM);
- /* Initialize RTL for commonly used hard registers. These are
- copied into regno_reg_rtx as we begin to compile each function. */
- for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
- static_regno_reg_rtx[i] = gen_raw_REG (reg_raw_mode[i], i);
+ /* These rtx must be roots if GC is enabled. */
+ ggc_add_rtx_root (global_rtl, GR_MAX);
#ifdef INIT_EXPANDERS
/* This is to initialize {init|mark|free}_machine_status before the first
@@ -5379,6 +5133,7 @@ init_emit_once (line_numbers)
for (i = - MAX_SAVED_CONST_INT; i <= MAX_SAVED_CONST_INT; i++)
const_int_rtx[i + MAX_SAVED_CONST_INT] =
gen_rtx_raw_CONST_INT (VOIDmode, (HOST_WIDE_INT) i);
+ ggc_add_rtx_root (const_int_rtx, 2 * MAX_SAVED_CONST_INT + 1);
if (STORE_FLAG_VALUE >= - MAX_SAVED_CONST_INT
&& STORE_FLAG_VALUE <= MAX_SAVED_CONST_INT)
@@ -5386,20 +5141,35 @@ init_emit_once (line_numbers)
else
const_true_rtx = gen_rtx_CONST_INT (VOIDmode, STORE_FLAG_VALUE);
- REAL_VALUE_FROM_INT (dconst0, 0, 0, double_mode);
- REAL_VALUE_FROM_INT (dconst1, 1, 0, double_mode);
- REAL_VALUE_FROM_INT (dconst2, 2, 0, double_mode);
- REAL_VALUE_FROM_INT (dconstm1, -1, -1, double_mode);
+ dconst0 = REAL_VALUE_ATOF ("0", double_mode);
+ dconst1 = REAL_VALUE_ATOF ("1", double_mode);
+ dconst2 = REAL_VALUE_ATOF ("2", double_mode);
+ dconstm1 = REAL_VALUE_ATOF ("-1", double_mode);
for (i = 0; i <= 2; i++)
{
- REAL_VALUE_TYPE *r =
- (i == 0 ? &dconst0 : i == 1 ? &dconst1 : &dconst2);
-
for (mode = GET_CLASS_NARROWEST_MODE (MODE_FLOAT); mode != VOIDmode;
mode = GET_MODE_WIDER_MODE (mode))
- const_tiny_rtx[i][(int) mode] =
- CONST_DOUBLE_FROM_REAL_VALUE (*r, mode);
+ {
+ rtx tem = rtx_alloc (CONST_DOUBLE);
+ union real_extract u;
+
+ /* Zero any holes in a structure. */
+ memset ((char *) &u, 0, sizeof u);
+ u.d = i == 0 ? dconst0 : i == 1 ? dconst1 : dconst2;
+
+ /* Avoid trailing garbage in the rtx. */
+ if (sizeof (u) < sizeof (HOST_WIDE_INT))
+ CONST_DOUBLE_LOW (tem) = 0;
+ if (sizeof (u) < 2 * sizeof (HOST_WIDE_INT))
+ CONST_DOUBLE_HIGH (tem) = 0;
+
+ memcpy (&CONST_DOUBLE_LOW (tem), &u, sizeof u);
+ CONST_DOUBLE_CHAIN (tem) = NULL_RTX;
+ PUT_MODE (tem, mode);
+
+ const_tiny_rtx[i][(int) mode] = tem;
+ }
const_tiny_rtx[i][(int) VOIDmode] = GEN_INT (i);
@@ -5431,6 +5201,12 @@ init_emit_once (line_numbers)
if (STORE_FLAG_VALUE == 1)
const_tiny_rtx[1][(int) BImode] = const1_rtx;
+ /* For bounded pointers, `&const_tiny_rtx[0][0]' is not the same as
+ `(rtx *) const_tiny_rtx'. The former has bounds that only cover
+ `const_tiny_rtx[0]', whereas the latter has bounds that cover all. */
+ ggc_add_rtx_root ((rtx *) const_tiny_rtx, sizeof const_tiny_rtx / sizeof (rtx));
+ ggc_add_rtx_root (&const_true_rtx, 1);
+
#ifdef RETURN_ADDRESS_POINTER_REGNUM
return_address_pointer_rtx
= gen_raw_REG (Pmode, RETURN_ADDRESS_POINTER_REGNUM);
@@ -5477,6 +5253,13 @@ init_emit_once (line_numbers)
if (PIC_OFFSET_TABLE_REGNUM != INVALID_REGNUM)
pic_offset_table_rtx = gen_raw_REG (Pmode, PIC_OFFSET_TABLE_REGNUM);
+
+ ggc_add_rtx_root (&pic_offset_table_rtx, 1);
+ ggc_add_rtx_root (&struct_value_rtx, 1);
+ ggc_add_rtx_root (&struct_value_incoming_rtx, 1);
+ ggc_add_rtx_root (&static_chain_rtx, 1);
+ ggc_add_rtx_root (&static_chain_incoming_rtx, 1);
+ ggc_add_rtx_root (&return_address_pointer_rtx, 1);
}
/* Query and clear/ restore no_line_numbers. This is used by the
@@ -5500,72 +5283,3 @@ restore_line_number_status (old_value)
{
no_line_numbers = old_value;
}
-
-/* Produce exact duplicate of insn INSN after AFTER.
- Care updating of libcall regions if present. */
-
-rtx
-emit_copy_of_insn_after (insn, after)
- rtx insn, after;
-{
- rtx new;
- rtx note1, note2, link;
-
- switch (GET_CODE (insn))
- {
- case INSN:
- new = emit_insn_after (copy_insn (PATTERN (insn)), after);
- break;
-
- case JUMP_INSN:
- new = emit_jump_insn_after (copy_insn (PATTERN (insn)), after);
- break;
-
- case CALL_INSN:
- new = emit_call_insn_after (copy_insn (PATTERN (insn)), after);
- if (CALL_INSN_FUNCTION_USAGE (insn))
- CALL_INSN_FUNCTION_USAGE (new)
- = copy_insn (CALL_INSN_FUNCTION_USAGE (insn));
- SIBLING_CALL_P (new) = SIBLING_CALL_P (insn);
- CONST_OR_PURE_CALL_P (new) = CONST_OR_PURE_CALL_P (insn);
- break;
-
- default:
- abort ();
- }
-
- /* Update LABEL_NUSES. */
- mark_jump_label (PATTERN (new), new, 0);
-
- INSN_SCOPE (new) = INSN_SCOPE (insn);
-
- /* Copy all REG_NOTES except REG_LABEL since mark_jump_label will
- make them. */
- for (link = REG_NOTES (insn); link; link = XEXP (link, 1))
- if (REG_NOTE_KIND (link) != REG_LABEL)
- {
- if (GET_CODE (link) == EXPR_LIST)
- REG_NOTES (new)
- = copy_insn_1 (gen_rtx_EXPR_LIST (REG_NOTE_KIND (link),
- XEXP (link, 0),
- REG_NOTES (new)));
- else
- REG_NOTES (new)
- = copy_insn_1 (gen_rtx_INSN_LIST (REG_NOTE_KIND (link),
- XEXP (link, 0),
- REG_NOTES (new)));
- }
-
- /* Fix the libcall sequences. */
- if ((note1 = find_reg_note (new, REG_RETVAL, NULL_RTX)) != NULL)
- {
- rtx p = new;
- while ((note2 = find_reg_note (p, REG_LIBCALL, NULL_RTX)) == NULL)
- p = PREV_INSN (p);
- XEXP (note1, 0) = p;
- XEXP (note2, 0) = new;
- }
- return new;
-}
-
-#include "gt-emit-rtl.h"
diff --git a/contrib/gcc/f/BUGS b/contrib/gcc/f/BUGS
deleted file mode 100644
index acfe4ab..0000000
--- a/contrib/gcc/f/BUGS
+++ /dev/null
@@ -1,130 +0,0 @@
-_Note:_ This file is automatically generated from the files
-`bugs0.texi' and `bugs.texi'. `BUGS' is _not_ a source file, although
-it is normally included within source distributions.
-
- This file lists known bugs in the GCC-3.2 version of the GNU Fortran
-compiler. Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002 Free
-Software Foundation, Inc. You may copy, distribute, and modify it
-freely as long as you preserve this copyright notice and permission
-notice.
-
-Known Bugs In GNU Fortran
-*************************
-
- This section identifies bugs that `g77' _users_ might run into in
-the GCC-3.2 version of `g77'. This includes bugs that are actually in
-the `gcc' back end (GBE) or in `libf2c', because those sets of code are
-at least somewhat under the control of (and necessarily intertwined
-with) `g77', so it isn't worth separating them out.
-
- For information on bugs in _other_ versions of `g77', see
-`gcc/gcc/f/NEWS'. There, lists of bugs fixed in various versions of
-`g77' can help determine what bugs existed in prior versions.
-
- An online, "live" version of this document (derived directly from
-the mainline, development version of `g77' within `gcc') is available
-via `http://www.gnu.org/software/gcc/onlinedocs/g77/Trouble.html'.
-Follow the "Known Bugs" link.
-
- The following information was last updated on 2002-02-01:
-
- * `g77' fails to warn about use of a "live" iterative-DO variable as
- an implied-DO variable in a `WRITE' or `PRINT' statement (although
- it does warn about this in a `READ' statement).
-
- * Something about `g77''s straightforward handling of label
- references and definitions sometimes prevents the GBE from
- unrolling loops. Until this is solved, try inserting or removing
- `CONTINUE' statements as the terminal statement, using the `END DO'
- form instead, and so on.
-
- * Some confusion in diagnostics concerning failing `INCLUDE'
- statements from within `INCLUDE''d or `#include''d files.
-
- * `g77' assumes that `INTEGER(KIND=1)' constants range from `-2**31'
- to `2**31-1' (the range for two's-complement 32-bit values),
- instead of determining their range from the actual range of the
- type for the configuration (and, someday, for the constant).
-
- Further, it generally doesn't implement the handling of constants
- very well in that it makes assumptions about the configuration
- that it no longer makes regarding variables (types).
-
- Included with this item is the fact that `g77' doesn't recognize
- that, on IEEE-754/854-compliant systems, `0./0.' should produce a
- NaN and no warning instead of the value `0.' and a warning.
-
- * `g77' uses way too much memory and CPU time to process large
- aggregate areas having any initialized elements.
-
- For example, `REAL A(1000000)' followed by `DATA A(1)/1/' takes up
- way too much time and space, including the size of the generated
- assembler file.
-
- Version 0.5.18 improves cases like this--specifically, cases of
- _sparse_ initialization that leave large, contiguous areas
- uninitialized--significantly. However, even with the
- improvements, these cases still require too much memory and CPU
- time.
-
- (Version 0.5.18 also improves cases where the initial values are
- zero to a much greater degree, so if the above example ends with
- `DATA A(1)/0/', the compile-time performance will be about as good
- as it will ever get, aside from unrelated improvements to the
- compiler.)
-
- Note that `g77' does display a warning message to notify the user
- before the compiler appears to hang.
-
- * When debugging, after starting up the debugger but before being
- able to see the source code for the main program unit, the user
- must currently set a breakpoint at `MAIN__' (or `MAIN___' or
- `MAIN_' if `MAIN__' doesn't exist) and run the program until it
- hits the breakpoint. At that point, the main program unit is
- activated and about to execute its first executable statement, but
- that's the state in which the debugger should start up, as is the
- case for languages like C.
-
- * Debugging `g77'-compiled code using debuggers other than `gdb' is
- likely not to work.
-
- Getting `g77' and `gdb' to work together is a known
- problem--getting `g77' to work properly with other debuggers, for
- which source code often is unavailable to `g77' developers, seems
- like a much larger, unknown problem, and is a lower priority than
- making `g77' and `gdb' work together properly.
-
- On the other hand, information about problems other debuggers have
- with `g77' output might make it easier to properly fix `g77', and
- perhaps even improve `gdb', so it is definitely welcome. Such
- information might even lead to all relevant products working
- together properly sooner.
-
- * `g77' doesn't work perfectly on 64-bit configurations such as the
- Digital Semiconductor ("DEC") Alpha.
-
- This problem is largely resolved as of version 0.5.23.
-
- * `g77' currently inserts needless padding for things like `COMMON
- A,IPAD' where `A' is `CHARACTER*1' and `IPAD' is `INTEGER(KIND=1)'
- on machines like x86, because the back end insists that `IPAD' be
- aligned to a 4-byte boundary, but the processor has no such
- requirement (though it is usually good for performance).
-
- The `gcc' back end needs to provide a wider array of
- specifications of alignment requirements and preferences for
- targets, and front ends like `g77' should take advantage of this
- when it becomes available.
-
- * The `libf2c' routines that perform some run-time arithmetic on
- `COMPLEX' operands were modified circa version 0.5.20 of `g77' to
- work properly even in the presence of aliased operands.
-
- While the `g77' and `netlib' versions of `libf2c' differ on how
- this is accomplished, the main differences are that we believe the
- `g77' version works properly even in the presence of _partially_
- aliased operands.
-
- However, these modifications have reduced performance on targets
- such as x86, due to the extra copies of operands involved.
-
diff --git a/contrib/gcc/f/NEWS b/contrib/gcc/f/NEWS
deleted file mode 100644
index cc73668..0000000
--- a/contrib/gcc/f/NEWS
+++ /dev/null
@@ -1,531 +0,0 @@
-_Note:_ This file is automatically generated from the files
-`news0.texi' and `news.texi'. `NEWS' is _not_ a source file, although
-it is normally included within source distributions.
-
- This file lists news about the GCC-3.2 version (and some other
-versions) of the GNU Fortran compiler. Copyright (C)
-1995,1996,1997,1998,1999,2000,2001,2002 Free Software Foundation, Inc.
-You may copy, distribute, and modify it freely as long as you preserve
-this copyright notice and permission notice.
-
-News About GNU Fortran
-**********************
-
- Changes made to recent versions of GNU Fortran are listed below,
-with the most recent version first.
-
- The changes are generally listed in order:
-
- 1. Code-generation and run-time-library bug-fixes
-
- 2. Compiler and run-time-library crashes involving valid code that
- have been fixed
-
- 3. New features
-
- 4. Fixes and enhancements to existing features
-
- 5. New diagnostics
-
- 6. Internal improvements
-
- 7. Miscellany
-
- This order is not strict--for example, some items involve a
-combination of these elements.
-
- Note that two variants of `g77' are tracked below. The `egcs'
-variant is described vis-a-vis previous versions of `egcs' and/or an
-official FSF version, as appropriate. Note that all such variants are
-obsolete _as of July 1999_ - the information is retained here only for
-its historical value.
-
- Therefore, `egcs' versions sometimes have multiple listings to help
-clarify how they differ from other versions, though this can make
-getting a complete picture of what a particular `egcs' version contains
-somewhat more difficult.
-
- An online, "live" version of this document (derived directly from
-the mainline, development version of `g77' within `gcc') is available at
-`http://www.gnu.org/software/gcc/onlinedocs/g77/News.html'.
-
- The following information was last updated on 2002-10-28:
-
-In `GCC' 3.2 versus `GCC' 3.1:
-==============================
-
- * Problem Reports fixed (in chronological order of submission):
- `8308'
- gcc-3.x does not compile files with suffix .r (RATFOR) [Fixed
- in 3.2.1]
-
-In `GCC' 3.1 (formerly known as g77-0.5.27) versus `GCC' 3.0:
-=============================================================
-
- * Problem Reports fixed (in chronological order of submission):
- `947'
- Data statement initialization with subscript of kind INTEGER*2
-
- `3743'
- Reference to intrinsic `ISHFT' invalid
-
- `3807'
- Function BESJN(integer,double) problems
-
- `3957'
- g77 -pipe -xf77-cpp-input sends output to stdout
-
- `4279'
- g77 -h" gives bogus output
-
- `4730'
- ICE on valid input using CALL EXIT(%VAL(...))
-
- `4752'
- g77 -v -c -xf77-version /dev/null -xnone causes ice
-
- `4885'
- BACKSPACE example that doesn't work as of gcc/g77-3.0.x
-
- `5122'
- g77 rejects accepted use of INTEGER*2 as type of DATA
- statement loop index
-
- `5397'
- ICE on compiling source with 540 000 000 REAL array
-
- `5473'
- ICE on BESJN(integer*8,real)
-
- `5837'
- bug in loop unrolling
-
- * `g77' now has its man page generated from the texinfo
- documentation, to guarantee that it remains up to date.
-
- * `g77' used to reject the following program on 32-bit targets:
- PROGRAM PROG
- DIMENSION A(140 000 000)
- END
- with the message:
- prog.f: In program `prog':
- prog.f:2:
- DIMENSION A(140 000 000)
- ^
- Array `a' at (^) is too large to handle
- because 140 000 000 REALs is larger than the largest bit-extent
- that can be expressed in 32 bits. However, bit-sizes never play a
- role after offsets have been converted to byte addresses.
- Therefore this check has been removed, and the limit is now 2
- Gbyte of memory (around 530 000 000 REALs). Note: On GNU/Linux
- systems one has to compile programs that occupy more than 1 Gbyte
- statically, i.e. `g77 -static ...'.
-
- * Based on work done by Juergen Pfeifer (<juergen.pfeifer@gmx.net>)
- libf2c is now a shared library. One can still link in all objects
- with the program by specifying the `-static' option.
-
- * Robert Anderson (<rwa@alumni.princeton.edu>) thought up a two line
- change that enables g77 to compile such code as:
- SUBROUTINE SUB(A, N)
- DIMENSION N(2)
- DIMENSION A(N(1),N(2))
- A(1,1) = 1.
- END
- Note the use of array elements in the bounds of the adjustable
- array A.
-
- * George Helffrich (<george@geo.titech.ac.jp>) implemented a change
- in substring index checking (when specifying `-fbounds-check')
- that permits the use of zero length substrings of the form
- `string(1:0)'.
-
- * Based on code developed by Pedro Vazquez
- (<vazquez@penelope.iqm.unicamp.br>), the `libf2c' library is now
- able to read and write files larger than 2 Gbyte on 32-bit target
- machines, if the operating system supports this.
-
-In 0.5.26, `GCC' 3.0 versus `GCC' 2.95:
-=======================================
-
- * When a REWIND was issued after a WRITE statement on an unformatted
- file, the implicit truncation was performed by copying the
- truncated file to /tmp and copying the result back. This has been
- fixed by using the `ftruncate' OS function. Thanks go to the
- GAMESS developers for bringing this to our attention.
-
- * Using options `-g', `-ggdb' or `-gdwarf[-2]' (where appropriate
- for your target) now also enables debugging information for COMMON
- BLOCK and EQUIVALENCE items to be emitted. Thanks go to Andrew
- Vaught (<andy@xena.eas.asu.edu>) and George Helffrich
- (<george@geology.bristol.ac.uk>) for fixing this longstanding
- problem.
-
- * It is not necessary anymore to use the option `-femulate-complex'
- to compile Fortran code using COMPLEX arithmetic, even on 64-bit
- machines (like the Alpha). This will improve code generation.
-
- * INTRINSIC arithmetic functions are now treated as routines that do
- not depend on anything but their argument(s). This enables
- further instruction scheduling, because it is known that they
- cannot read or modify arbitrary locations.
-
- * Upgrade to `libf2c' as of 2000-12-05.
-
- This fixes a bug where a namelist containing initialization of
- LOGICAL items and a variable starting with T or F would be read
- incorrectly.
-
- * The `TtyNam' intrinsics now set NAME to all spaces (at run time)
- if the system has no `ttyname' implementation available.
-
- * Upgrade to `libf2c' as of 1999-06-28.
-
- This fixes a bug whereby input to a `NAMELIST' read involving a
- repeat count, such as `K(5)=10*3', was not properly handled by
- `libf2c'. The first item was written to `K(5)', but the remaining
- nine were written elsewhere (still within the array), not
- necessarily starting at `K(6)'.
-
-In 0.5.25, `GCC' 2.95 (`EGCS' 1.2) versus `EGCS' 1.1.2:
-=======================================================
-
- * `g77' no longer generates bad code for assignments, or other
- conversions, of `REAL' or `COMPLEX' constant expressions to type
- `INTEGER(KIND=2)' (often referred to as `INTEGER*8').
-
- For example, `INTEGER*8 J; J = 4E10' now works as documented.
-
- * `g77' no longer truncates `INTEGER(KIND=2)' (usually `INTEGER*8')
- subscript expressions when evaluating array references on systems
- with pointers widers than `INTEGER(KIND=1)' (such as Alphas).
-
- * `g77' no longer generates bad code for an assignment to a
- `COMPLEX' variable or array that partially overlaps one or more of
- the sources of the same assignment (a very rare construction). It
- now assigns through a temporary, in cases where such partial
- overlap is deemed possible.
-
- * `libg2c' (`libf2c') no longer loses track of the file being worked
- on during a `BACKSPACE' operation.
-
- * `libg2c' (`libf2c') fixes a bug whereby input to a `NAMELIST' read
- involving a repeat count, such as `K(5)=10*3', was not properly
- handled by `libf2c'. The first item was written to `K(5)', but
- the remaining nine were written elsewhere (still within the array),
- not necessarily starting at `K(6)'.
-
- * Automatic arrays now seem to be working on HP-UX systems.
-
- * The `Date' intrinsic now returns the correct result on big-endian
- systems.
-
- * Fix `g77' so it no longer crashes when compiling I/O statements
- using keywords that define `INTEGER' values, such as `IOSTAT=J',
- where J is other than default `INTEGER' (such as `INTEGER*2').
- Instead, it issues a diagnostic.
-
- * Fix `g77' so it properly handles `DATA A/RPT*VAL/', where RPT is
- not default `INTEGER', such as `INTEGER*2', instead of producing a
- spurious diagnostic. Also fix `DATA (A(I),I=1,N)', where `N' is
- not default `INTEGER' to work instead of crashing `g77'.
-
- * The `-ax' option is now obeyed when compiling Fortran programs.
- (It is passed to the `f771' driver.)
-
- * The new `-fbounds-check' option causes `g77' to compile run-time
- bounds checks of array subscripts, as well as of substring start
- and end points.
-
- * `libg2c' now supports building as multilibbed library, which
- provides better support for systems that require options such as
- `-mieee' to work properly.
-
- * Source file names with the suffixes `.FOR' and `.FPP' now are
- recognized by `g77' as if they ended in `.for' and `.fpp',
- respectively.
-
- * The order of arguments to the _subroutine_ forms of the `CTime',
- `DTime', `ETime', and `TtyNam' intrinsics has been swapped. The
- argument serving as the returned value for the corresponding
- function forms now is the _second_ argument, making these
- consistent with the other subroutine forms of `libU77' intrinsics.
-
- * `g77' now warns about a reference to an intrinsic that has an
- interface that is not Year 2000 (Y2K) compliant. Also, `libg2c'
- has been changed to increase the likelihood of catching references
- to the implementations of these intrinsics using the `EXTERNAL'
- mechanism (which would avoid the new warnings).
-
- * `g77' now warns about a reference to a function when the
- corresponding _subsequent_ function program unit disagrees with
- the reference concerning the type of the function.
-
- * `-fno-emulate-complex' is now the default option. This should
- result in improved performance of code that uses the `COMPLEX'
- data type.
-
- * The `-malign-double' option now reliably aligns _all_
- double-precision variables and arrays on Intel x86 targets.
-
- * Even without the `-malign-double' option, `g77' reliably aligns
- local double-precision variables that are not in `EQUIVALENCE'
- areas and not `SAVE''d.
-
- * `g77' now open-codes ("inlines") division of `COMPLEX' operands
- instead of generating a run-time call to the `libf2c' routines
- `c_div' or `z_div', unless the `-Os' option is specified.
-
- * `g77' no longer generates code to maintain `errno', a C-language
- concept, when performing operations such as the `SqRt' intrinsic.
-
- * `g77' developers can temporarily use the `-fflatten-arrays' option
- to compare how the compiler handles code generation using C-like
- constructs as compared to the Fortran-like method constructs
- normally used.
-
- * A substantial portion of the `g77' front end's code-generation
- component was rewritten. It now generates code using facilities
- more robustly supported by the `gcc' back end. One effect of this
- rewrite is that some codes no longer produce a spurious "label LAB
- used before containing binding contour" message.
-
- * Support for the `-fugly' option has been removed.
-
- * Improve documentation and indexing, including information on Year
- 2000 (Y2K) compliance, and providing more information on internals
- of the front end.
-
- * Upgrade to `libf2c' as of 1999-05-10.
-
-In 0.5.24 versus 0.5.23:
-========================
-
- There is no `g77' version 0.5.24 at this time, or planned. 0.5.24
-is the version number designated for bug fixes and, perhaps, some new
-features added, to 0.5.23. Version 0.5.23 requires `gcc' 2.8.1, as
-0.5.24 was planned to require.
-
- Due to `EGCS' becoming `GCC' (which is now an acronym for "GNU
-Compiler Collection"), and `EGCS' 1.2 becoming officially designated
-`GCC' 2.95, there seems to be no need for an actual 0.5.24 release.
-
- To reduce the confusion already resulting from use of 0.5.24 to
-designate `g77' versions within `EGCS' versions 1.0 and 1.1, as well as
-in versions of `g77' documentation and notices during that period,
-"mainline" `g77' version numbering resumes at 0.5.25 with `GCC' 2.95
-(`EGCS' 1.2), skipping over 0.5.24 as a placeholder version number.
-
- To repeat, there is no `g77' 0.5.24, but there is now a 0.5.25.
-Please remain calm and return to your keypunch units.
-
-In `EGCS' 1.1.2 versus `EGCS' 1.1.1:
-====================================
-
- * 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).
-
- * Improve documentation.
-
-In `EGCS' 1.1.1 versus `EGCS' 1.1:
-==================================
-
- * Fix `libg2c' so it performs an implicit `ENDFILE' operation (as
- appropriate) whenever a `REWIND' is done.
-
- (This bug was introduced in 0.5.23 and `egcs' 1.1 in `g77''s
- version of `libf2c'.)
-
- * Fix `libg2c' so it no longer crashes with a spurious diagnostic
- upon doing any I/O following a direct formatted write.
-
- (This bug was introduced in 0.5.23 and `egcs' 1.1 in `g77''s
- version of `libf2c'.)
-
- * Fix `g77' so it no longer crashes compiling references to the
- `Rand' intrinsic on some systems.
-
- * Fix `g77' portion of installation process so it works better on
- some systems (those with shells requiring `else true' clauses on
- `if' constructs for the completion code to be set properly).
-
-In `EGCS' 1.1 versus `EGCS' 1.0.3:
-==================================
-
- * Fix bugs in the `libU77' intrinsic `HostNm' that wrote one byte
- beyond the end of its `CHARACTER' argument, and in the `libU77'
- intrinsics `GMTime' and `LTime' that overwrote their arguments.
-
- * Assumed arrays with negative bounds (such as `REAL A(-1:*)') no
- longer elicit spurious diagnostics from `g77', even on systems
- with pointers having different sizes than integers.
-
- This bug is not known to have existed in any recent version of
- `gcc'. It was introduced in an early release of `egcs'.
-
- * Valid combinations of `EXTERNAL', passing that external as a dummy
- argument without explicitly giving it a type, and, in a subsequent
- program unit, referencing that external as an external function
- with a different type no longer crash `g77'.
-
- * `CASE DEFAULT' no longer crashes `g77'.
-
- * The `-Wunused' option no longer issues a spurious warning about
- the "master" procedure generated by `g77' for procedures
- containing `ENTRY' statements.
-
- * Support `FORMAT(I<EXPR>)' when EXPR is a compile-time constant
- `INTEGER' expression.
-
- * Fix `g77' `-g' option so procedures that use `ENTRY' can be
- stepped through, line by line, in `gdb'.
-
- * Allow any `REAL' argument to intrinsics `Second' and `CPU_Time'.
-
- * Use `tempnam', if available, to open scratch files (as in
- `OPEN(STATUS='SCRATCH')') so that the `TMPDIR' environment
- variable, if present, is used.
-
- * `g77''s version of `libf2c' separates out the setting of global
- state (such as command-line arguments and signal handling) from
- `main.o' into distinct, new library archive members.
-
- This should make it easier to write portable applications that
- have their own (non-Fortran) `main()' routine properly set up the
- `libf2c' environment, even when `libf2c' (now `libg2c') is a
- shared library.
-
- * `g77' no longer installs the `f77' command and `f77.1' man page in
- the `/usr' or `/usr/local' hierarchy, even if the `f77-install-ok'
- file exists in the source or build directory. See the
- installation documentation for more information.
-
- * `g77' no longer installs the `libf2c.a' library and `f2c.h'
- include file in the `/usr' or `/usr/local' hierarchy, even if the
- `f2c-install-ok' or `f2c-exists-ok' files exist in the source or
- build directory. See the installation documentation for more
- information.
-
- * The `libf2c.a' library produced by `g77' has been renamed to
- `libg2c.a'. It is installed only in the `gcc' "private" directory
- hierarchy, `gcc-lib'. This allows system administrators and users
- to choose which version of the `libf2c' library from `netlib' they
- wish to use on a case-by-case basis. See the installation
- documentation for more information.
-
- * The `f2c.h' include (header) file produced by `g77' has been
- renamed to `g2c.h'. It is installed only in the `gcc' "private"
- directory hierarchy, `gcc-lib'. This allows system administrators
- and users to choose which version of the include file from
- `netlib' they wish to use on a case-by-case basis. See the
- installation documentation for more information.
-
- * The `g77' command now expects the run-time library to be named
- `libg2c.a' instead of `libf2c.a', to ensure that a version other
- than the one built and installed as part of the same `g77' version
- is picked up.
-
- * During the configuration and build process, `g77' creates
- subdirectories it needs only as it needs them. Other cleaning up
- of the configuration and build process has been performed as well.
-
- * `install-info' now used to update the directory of Info
- documentation to contain an entry for `g77' (during installation).
-
- * Some diagnostics have been changed from warnings to errors, to
- prevent inadvertent use of the resulting, probably buggy, programs.
- These mostly include diagnostics about use of unsupported features
- in the `OPEN', `INQUIRE', `READ', and `WRITE' statements, and
- about truncations of various sorts of constants.
-
- * Improve compilation of `FORMAT' expressions so that a null byte is
- appended to the last operand if it is a constant. This provides a
- cleaner run-time diagnostic as provided by `libf2c' for statements
- like `PRINT '(I1', 42'.
-
- * Improve documentation and indexing.
-
- * The upgrade to `libf2c' as of 1998-06-18 should fix a variety of
- problems, including those involving some uses of the `T' format
- specifier, and perhaps some build (porting) problems as well.
-
-In `EGCS' 1.1 versus `g77' 0.5.23:
-==================================
-
- * Fix a code-generation bug that afflicted Intel x86 targets when
- `-O2' was specified compiling, for example, an old version of the
- `DNRM2' routine.
-
- The x87 coprocessor stack was being mismanaged in cases involving
- assigned `GOTO' and `ASSIGN'.
-
- * `g77' no longer produces incorrect code and initial values for
- `EQUIVALENCE' and `COMMON' aggregates that, due to "unnatural"
- ordering of members vis-a-vis their types, require initial padding.
-
- * Fix `g77' crash compiling code containing the construct
- `CMPLX(0.)' or similar.
-
- * `g77' no longer crashes when compiling code containing
- specification statements such as `INTEGER(KIND=7) PTR'.
-
- * `g77' no longer crashes when compiling code such as `J = SIGNAL(1,
- 2)'.
-
- * `g77' now treats `%LOC(EXPR)' and `LOC(EXPR)' as "ordinary"
- expressions when they are used as arguments in procedure calls.
- This change applies only to global (filewide) analysis, making it
- consistent with how `g77' actually generates code for these cases.
-
- Previously, `g77' treated these expressions as denoting special
- "pointer" arguments for the purposes of filewide analysis.
-
- * Fix `g77' crash (or apparently infinite run-time) when compiling
- certain complicated expressions involving `COMPLEX' arithmetic
- (especially multiplication).
-
- * Align static double-precision variables and arrays on Intel x86
- targets regardless of whether `-malign-double' is specified.
-
- Generally, this affects only local variables and arrays having the
- `SAVE' attribute or given initial values via `DATA'.
-
- * The `g77' driver now ensures that `-lg2c' is specified in the link
- phase prior to any occurrence of `-lm'. This prevents
- accidentally linking to a routine in the SunOS4 `-lm' library when
- the generated code wants to link to the one in `libf2c' (`libg2c').
-
- * `g77' emits more debugging information when `-g' is used.
-
- This new information allows, for example, `which __g77_length_a'
- to be used in `gdb' to determine the type of the phantom length
- argument supplied with `CHARACTER' variables.
-
- This information pertains to internally-generated type, variable,
- and other information, not to the longstanding deficiencies
- vis-a-vis `COMMON' and `EQUIVALENCE'.
-
- * The F90 `Date_and_Time' intrinsic now is supported.
-
- * The F90 `System_Clock' intrinsic allows the optional arguments
- (except for the `Count' argument) to be omitted.
-
- * Upgrade to `libf2c' as of 1998-06-18.
-
- * Improve documentation and indexing.
-
-In previous versions:
-=====================
-
- Information on previous versions is not provided in this
-`gcc/gcc/f/NEWS' file, to keep it short. See `gcc/gcc/f/news.texi', or
-any of its other derivations (Info, HTML, dvi forms) for such
-information.
-
diff --git a/contrib/gcc/f/g77spec.c b/contrib/gcc/f/g77spec.c
index 9206ef7..81725e3 100644
--- a/contrib/gcc/f/g77spec.c
+++ b/contrib/gcc/f/g77spec.c
@@ -1,6 +1,5 @@
/* Specific flags and argument handling of the Fortran front-end.
- Copyright (C) 1997, 1999, 2000, 2001, 2002, 2003
- Free Software Foundation, Inc.
+ Copyright (C) 1997, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
This file is part of GNU CC.
@@ -19,6 +18,8 @@ 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. */
+/* $FreeBSD$ */
+
/* This file contains a filter for the main `gcc' driver, which is
replicated for the `g77' driver by adding this filter. The purpose
of this filter is to be basically identical to gcc (in that
@@ -48,18 +49,28 @@ Boston, MA 02111-1307, USA. */
#include "config.h"
#include "system.h"
#include "gcc.h"
+#include <f/version.h>
#ifndef MATH_LIBRARY
#define MATH_LIBRARY "-lm"
#endif
+#ifndef MATH_LIBRARY_PROFILE
+#define MATH_LIBRARY_PROFILE "-lm"
+#endif
#ifndef FORTRAN_INIT
#define FORTRAN_INIT "-lfrtbegin"
#endif
+#ifndef FORTRAN_INIT_PROFILE
+#define FORTRAN_INIT_PROFILE "-lfrtbegin"
+#endif
#ifndef FORTRAN_LIBRARY
#define FORTRAN_LIBRARY "-lg2c"
#endif
+#ifndef FORTRAN_LIBRARY_PROFILE
+#define FORTRAN_LIBRARY_PROFILE "-lg2c"
+#endif
/* Options this driver needs to recognize, not just know how to
skip over. */
@@ -79,6 +90,7 @@ typedef enum
OPTION_nostdlib, /* Aka --no-standard-libraries, or
-nodefaultlibs. */
OPTION_o, /* Aka --output. */
+ OPTION_p, /* Aka --profile. */
OPTION_S, /* Aka --assemble. */
OPTION_syntax_only, /* -fsyntax-only. */
OPTION_v, /* Aka --verbose. */
@@ -99,14 +111,36 @@ static void append_arg PARAMS ((const char *));
static int g77_newargc;
static const char **g77_newargv;
+/* --- This comes from gcc.c (2.8.1) verbatim: */
+
+/* This defines which switch letters take arguments. */
+
+#define DEFAULT_SWITCH_TAKES_ARG(CHAR) \
+ ((CHAR) == 'D' || (CHAR) == 'U' || (CHAR) == 'o' \
+ || (CHAR) == 'e' || (CHAR) == 'T' || (CHAR) == 'u' \
+ || (CHAR) == 'I' || (CHAR) == 'm' || (CHAR) == 'x' \
+ || (CHAR) == 'L' || (CHAR) == 'A')
+
#ifndef SWITCH_TAKES_ARG
#define SWITCH_TAKES_ARG(CHAR) DEFAULT_SWITCH_TAKES_ARG(CHAR)
#endif
+/* This defines which multi-letter switches take arguments. */
+
+#define DEFAULT_WORD_SWITCH_TAKES_ARG(STR) \
+ (!strcmp (STR, "Tdata") || !strcmp (STR, "Ttext") \
+ || !strcmp (STR, "Tbss") || !strcmp (STR, "include") \
+ || !strcmp (STR, "imacros") || !strcmp (STR, "aux-info") \
+ || !strcmp (STR, "idirafter") || !strcmp (STR, "iprefix") \
+ || !strcmp (STR, "iwithprefix") || !strcmp (STR, "iwithprefixbefore") \
+ || !strcmp (STR, "isystem") || !strcmp (STR, "specs"))
+
#ifndef WORD_SWITCH_TAKES_ARG
#define WORD_SWITCH_TAKES_ARG(STR) DEFAULT_WORD_SWITCH_TAKES_ARG (STR)
#endif
+/* --- End of verbatim. */
+
/* Assumes text[0] == '-'. Returns number of argv items that belong to
(and follow) this one, an option id for options important to the
caller, and a pointer to the first char of the arg, if embedded (else
@@ -145,6 +179,9 @@ lookup_option (xopt, xskip, xarg, text)
opt = OPTION_L, arg = text + 2;
else if (text[1] == 'o')
opt = OPTION_o;
+ else if ((text[1] == 'p') && (text[2] == '\0')
+ || (text[1] == 'p') && (text[2] == 'g') && (text[3] == '\0'))
+ opt = OPTION_p;
else if ((text[1] == 'S') && (text[2] == '\0'))
opt = OPTION_S, skip = 0;
else if (text[1] == 'V')
@@ -269,6 +306,9 @@ lang_specific_driver (in_argc, in_argv, in_added_libraries)
/* By default, we throw on the math library if we have one. */
int need_math = (MATH_LIBRARY[0] != '\0');
+ /* If non-zero, the user gave us the `-p' or `-pg' flag. */
+ int saw_profile_flag = 0;
+
/* The number of input and output files in the incoming arg list. */
int n_infiles = 0;
int n_outfiles = 0;
@@ -337,6 +377,11 @@ lang_specific_driver (in_argc, in_argv, in_added_libraries)
++n_outfiles;
break;
+ case OPTION_p:
+ saw_profile_flag = 1;
+ library = FORTRAN_LIBRARY_PROFILE;
+ break;
+
case OPTION_v:
verbose = 1;
break;
@@ -352,7 +397,7 @@ lang_specific_driver (in_argc, in_argv, in_added_libraries)
case OPTION_version:
printf ("\
-GNU Fortran (GCC) %s\n\
+GNU Fortran (GCC %s) %s\n\
Copyright (C) 2002 Free Software Foundation, Inc.\n\
\n\
GNU Fortran comes with NO WARRANTY, to the extent permitted by law.\n\
@@ -360,7 +405,7 @@ You may redistribute copies of GNU Fortran\n\
under the terms of the GNU General Public License.\n\
For more information about these matters, see the file named COPYING\n\
or type the command `info -f g77 Copying'.\n\
-", version_string);
+", version_string, ffe_version_string);
exit (0);
break;
@@ -410,7 +455,7 @@ or type the command `info -f g77 Copying'.\n\
/* Not a filename or library. */
if (saw_library == 1 && need_math) /* -l<library>. */
- append_arg (MATH_LIBRARY);
+ append_arg (saw_profile_flag ? MATH_LIBRARY_PROFILE : MATH_LIBRARY);
saw_library = 0;
@@ -461,10 +506,12 @@ or type the command `info -f g77 Copying'.\n\
{
if (0 == use_init)
{
- append_arg (FORTRAN_INIT);
+ append_arg (saw_profile_flag ? FORTRAN_INIT_PROFILE
+ : FORTRAN_INIT);
use_init = 1;
}
- append_arg (FORTRAN_LIBRARY);
+ append_arg (saw_profile_flag ? FORTRAN_LIBRARY_PROFILE
+ : FORTRAN_LIBRARY);
}
}
else if (strcmp (argv[i], FORTRAN_LIBRARY) == 0)
@@ -472,7 +519,8 @@ or type the command `info -f g77 Copying'.\n\
else
{ /* Other library, or filename. */
if (saw_library == 1 && need_math)
- append_arg (MATH_LIBRARY);
+ append_arg (saw_profile_flag ? MATH_LIBRARY_PROFILE
+ : MATH_LIBRARY);
saw_library = 0;
}
}
@@ -491,13 +539,14 @@ or type the command `info -f g77 Copying'.\n\
case 0:
if (0 == use_init)
{
- append_arg (FORTRAN_INIT);
+ append_arg (saw_profile_flag ? FORTRAN_INIT_PROFILE
+ : FORTRAN_INIT);
use_init = 1;
}
append_arg (library);
case 1:
if (need_math)
- append_arg (MATH_LIBRARY);
+ append_arg (saw_profile_flag ? MATH_LIBRARY_PROFILE : MATH_LIBRARY);
default:
break;
}
@@ -541,9 +590,3 @@ int lang_specific_pre_link () /* Not used for F77. */
/* Number of extra output files that lang_specific_pre_link may generate. */
int lang_specific_extra_outfiles = 0; /* Not used for F77. */
-
-/* Table of language-specific spec functions. */
-const struct spec_function lang_specific_spec_functions[] =
-{
- { 0, 0 }
-};
diff --git a/contrib/gcc/final.c b/contrib/gcc/final.c
index 94a0f4c..d86ed5e 100644
--- a/contrib/gcc/final.c
+++ b/contrib/gcc/final.c
@@ -68,8 +68,6 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "target.h"
#include "debug.h"
#include "expr.h"
-#include "profile.h"
-#include "cfglayout.h"
#ifdef XCOFF_DEBUGGING_INFO
#include "xcoffout.h" /* Needed for external data
@@ -100,12 +98,6 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#define JUMP_TABLES_IN_TEXT_SECTION 0
#endif
-#if defined(READONLY_DATA_SECTION) || defined(READONLY_DATA_SECTION_ASM_OP)
-#define HAVE_READONLY_DATA_SECTION 1
-#else
-#define HAVE_READONLY_DATA_SECTION 0
-#endif
-
/* Last insn processed by final_scan_insn. */
static rtx debug_insn;
rtx current_output_insn;
@@ -122,12 +114,15 @@ static int high_function_linenum;
/* Filename of last NOTE. */
static const char *last_filename;
+/* Number of instrumented arcs when profile_arc_flag is set. */
+extern int count_instrumented_edges;
+
extern int length_unit_log; /* This is defined in insn-attrtab.c. */
/* Nonzero while outputting an `asm' with operands.
This means that inconsistencies are the user's fault, so don't abort.
The precise value is the insn being output, to pass to error_for_asm. */
-rtx this_is_asm_operands;
+static rtx this_is_asm_operands;
/* Number of operands of this insn, for an `asm' with operands. */
static unsigned int insn_noperands;
@@ -203,17 +198,6 @@ static char *line_note_exists;
rtx current_insn_predicate;
#endif
-struct function_list
-{
- struct function_list *next; /* next function */
- const char *name; /* function name */
- long cfg_checksum; /* function checksum */
- long count_edges; /* number of intrumented edges in this function */
-};
-
-static struct function_list *functions_head = 0;
-static struct function_list **functions_tail = &functions_head;
-
#ifdef HAVE_ATTR_length
static int asm_insn_count PARAMS ((rtx));
#endif
@@ -222,7 +206,6 @@ static void profile_after_prologue PARAMS ((FILE *));
static void notice_source_line PARAMS ((rtx));
static rtx walk_alter_subreg PARAMS ((rtx *));
static void output_asm_name PARAMS ((void));
-static void output_alternate_entry_point PARAMS ((FILE *, rtx));
static tree get_mem_expr_from_op PARAMS ((rtx, int *));
static void output_asm_operand_names PARAMS ((rtx *, int *, int));
static void output_operand PARAMS ((rtx, int));
@@ -254,268 +237,137 @@ init_final (filename)
}
/* Called at end of source file,
- to output the arc-profiling table for this entire compilation. */
+ to output the block-profiling table for this entire compilation. */
void
end_final (filename)
const char *filename;
{
- if (profile_arc_flag && profile_info.count_instrumented_edges)
+ if (profile_arc_flag)
{
char name[20];
- tree string_type, string_cst;
- tree structure_decl, structure_value, structure_pointer_type;
- tree field_decl, decl_chain, value_chain;
- tree sizeof_field_value, domain_type;
-
- /* Build types. */
- string_type = build_pointer_type (char_type_node);
+ int align = exact_log2 (BIGGEST_ALIGNMENT / BITS_PER_UNIT);
+ int size, rounded;
+ int long_bytes = LONG_TYPE_SIZE / BITS_PER_UNIT;
+ int gcov_type_bytes = GCOV_TYPE_SIZE / BITS_PER_UNIT;
+ int pointer_bytes = POINTER_SIZE / BITS_PER_UNIT;
+ unsigned int align2 = LONG_TYPE_SIZE;
+
+ size = gcov_type_bytes * count_instrumented_edges;
+ rounded = size;
+
+ rounded += (BIGGEST_ALIGNMENT / BITS_PER_UNIT) - 1;
+ rounded = (rounded / (BIGGEST_ALIGNMENT / BITS_PER_UNIT)
+ * (BIGGEST_ALIGNMENT / BITS_PER_UNIT));
+
+ /* ??? This _really_ ought to be done with a structure layout
+ and with assemble_constructor. If long_bytes != pointer_bytes
+ we'll be emitting unaligned data at some point. */
+ if (long_bytes != pointer_bytes)
+ abort ();
- /* Libgcc2 bb structure. */
- structure_decl = make_node (RECORD_TYPE);
- structure_pointer_type = build_pointer_type (structure_decl);
+ data_section ();
- /* Output the main header, of 7 words:
- 0: 1 if this file is initialized, else 0.
- 1: address of file name (LPBX1).
- 2: address of table of counts (LPBX2).
- 3: number of counts in the table.
- 4: always 0, libgcc2 uses this as a pointer to next ``struct bb''
+ /* Output the main header, of 11 words:
+ 0: 1 if this file is initialized, else 0.
+ 1: address of file name (LPBX1).
+ 2: address of table of counts (LPBX2).
+ 3: number of counts in the table.
+ 4: always 0, for compatibility with Sun.
The following are GNU extensions:
- 5: Number of bytes in this header.
- 6: address of table of function checksums (LPBX7). */
+ 5: address of table of start addrs of basic blocks (LPBX3).
+ 6: Number of bytes in this header.
+ 7: address of table of function names (LPBX4).
+ 8: address of table of line numbers (LPBX5) or 0.
+ 9: address of table of file names (LPBX6) or 0.
+ 10: space reserved for basic block profiling. */
- /* The zero word. */
- decl_chain =
- build_decl (FIELD_DECL, get_identifier ("zero_word"),
- long_integer_type_node);
- value_chain = build_tree_list (decl_chain,
- convert (long_integer_type_node,
- integer_zero_node));
+ ASM_OUTPUT_ALIGN (asm_out_file, align);
- /* Address of filename. */
- {
- char *cwd, *da_filename;
- int da_filename_len;
-
- field_decl =
- build_decl (FIELD_DECL, get_identifier ("filename"), string_type);
- TREE_CHAIN (field_decl) = decl_chain;
- decl_chain = field_decl;
-
- cwd = getpwd ();
- da_filename_len = strlen (filename) + strlen (cwd) + 4 + 1;
- da_filename = (char *) alloca (da_filename_len);
- strcpy (da_filename, cwd);
- strcat (da_filename, "/");
- strcat (da_filename, filename);
- strcat (da_filename, ".da");
- da_filename_len = strlen (da_filename);
- string_cst = build_string (da_filename_len + 1, da_filename);
- domain_type = build_index_type (build_int_2 (da_filename_len, 0));
- TREE_TYPE (string_cst)
- = build_array_type (char_type_node, domain_type);
- value_chain = tree_cons (field_decl,
- build1 (ADDR_EXPR, string_type, string_cst),
- value_chain);
- }
-
- /* Table of counts. */
- {
- tree gcov_type_type = make_unsigned_type (GCOV_TYPE_SIZE);
- tree gcov_type_pointer_type = build_pointer_type (gcov_type_type);
- tree domain_tree
- = build_index_type (build_int_2 (profile_info.
- count_instrumented_edges - 1, 0));
- tree gcov_type_array_type
- = build_array_type (gcov_type_type, domain_tree);
- tree gcov_type_array_pointer_type
- = build_pointer_type (gcov_type_array_type);
- tree counts_table;
-
- field_decl =
- build_decl (FIELD_DECL, get_identifier ("counts"),
- gcov_type_pointer_type);
- TREE_CHAIN (field_decl) = decl_chain;
- decl_chain = field_decl;
-
- /* No values. */
- counts_table
- = build (VAR_DECL, gcov_type_array_type, NULL_TREE, NULL_TREE);
- TREE_STATIC (counts_table) = 1;
- ASM_GENERATE_INTERNAL_LABEL (name, "LPBX", 2);
- DECL_NAME (counts_table) = get_identifier (name);
- assemble_variable (counts_table, 0, 0, 0);
-
- value_chain = tree_cons (field_decl,
- build1 (ADDR_EXPR,
- gcov_type_array_pointer_type,
- counts_table), value_chain);
- }
+ ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, "LPBX", 0);
- /* Count of the # of instrumented arcs. */
- field_decl
- = build_decl (FIELD_DECL, get_identifier ("ncounts"),
- long_integer_type_node);
- TREE_CHAIN (field_decl) = decl_chain;
- decl_chain = field_decl;
-
- value_chain = tree_cons (field_decl,
- convert (long_integer_type_node,
- build_int_2 (profile_info.
- count_instrumented_edges,
- 0)), value_chain);
- /* Pointer to the next bb. */
- field_decl
- = build_decl (FIELD_DECL, get_identifier ("next"),
- structure_pointer_type);
- TREE_CHAIN (field_decl) = decl_chain;
- decl_chain = field_decl;
-
- value_chain = tree_cons (field_decl, null_pointer_node, value_chain);
-
- /* sizeof(struct bb). We'll set this after entire structure
- is laid out. */
- field_decl
- = build_decl (FIELD_DECL, get_identifier ("sizeof_bb"),
- long_integer_type_node);
- TREE_CHAIN (field_decl) = decl_chain;
- decl_chain = field_decl;
-
- sizeof_field_value = tree_cons (field_decl, NULL, value_chain);
- value_chain = sizeof_field_value;
-
- /* struct bb_function []. */
- {
- struct function_list *item;
- int num_nodes;
- tree checksum_field, arc_count_field, name_field;
- tree domain;
- tree array_value_chain = NULL_TREE;
- tree bb_fn_struct_type;
- tree bb_fn_struct_array_type;
- tree bb_fn_struct_array_pointer_type;
- tree bb_fn_struct_pointer_type;
- tree field_value, field_value_chain;
+ /* Zero word. */
+ assemble_integer (const0_rtx, long_bytes, align2, 1);
- bb_fn_struct_type = make_node (RECORD_TYPE);
-
- checksum_field = build_decl (FIELD_DECL, get_identifier ("checksum"),
- long_integer_type_node);
-
- arc_count_field
- = build_decl (FIELD_DECL, get_identifier ("arc_count"),
- integer_type_node);
- TREE_CHAIN (checksum_field) = arc_count_field;
+ /* Address of filename. */
+ ASM_GENERATE_INTERNAL_LABEL (name, "LPBX", 1);
+ assemble_integer (gen_rtx_SYMBOL_REF (Pmode, name), pointer_bytes,
+ align2, 1);
- name_field
- = build_decl (FIELD_DECL, get_identifier ("name"), string_type);
- TREE_CHAIN (arc_count_field) = name_field;
+ /* Address of count table. */
+ ASM_GENERATE_INTERNAL_LABEL (name, "LPBX", 2);
+ assemble_integer (gen_rtx_SYMBOL_REF (Pmode, name), pointer_bytes,
+ align2, 1);
- TYPE_FIELDS (bb_fn_struct_type) = checksum_field;
+ /* Count of the # of instrumented arcs. */
+ assemble_integer (GEN_INT (count_instrumented_edges),
+ long_bytes, align2, 1);
- num_nodes = 0;
+ /* Zero word (link field). */
+ assemble_integer (const0_rtx, pointer_bytes, align2, 1);
- for (item = functions_head; item != 0; item = item->next)
- num_nodes++;
+ assemble_integer (const0_rtx, pointer_bytes, align2, 1);
- /* Note that the array contains a terminator, hence no - 1. */
- domain = build_index_type (build_int_2 (num_nodes, 0));
+ /* Byte count for extended structure. */
+ assemble_integer (GEN_INT (11 * UNITS_PER_WORD), long_bytes, align2, 1);
- bb_fn_struct_pointer_type = build_pointer_type (bb_fn_struct_type);
- bb_fn_struct_array_type
- = build_array_type (bb_fn_struct_type, domain);
- bb_fn_struct_array_pointer_type
- = build_pointer_type (bb_fn_struct_array_type);
+ /* Address of function name table. */
+ assemble_integer (const0_rtx, pointer_bytes, align2, 1);
- layout_type (bb_fn_struct_type);
- layout_type (bb_fn_struct_pointer_type);
- layout_type (bb_fn_struct_array_type);
- layout_type (bb_fn_struct_array_pointer_type);
+ /* Address of line number and filename tables if debugging. */
+ assemble_integer (const0_rtx, pointer_bytes, align2, 1);
+ assemble_integer (const0_rtx, pointer_bytes, align2, 1);
- for (item = functions_head; item != 0; item = item->next)
- {
- size_t name_len;
-
- /* create constructor for structure. */
- field_value_chain
- = build_tree_list (checksum_field,
- convert (long_integer_type_node,
- build_int_2 (item->cfg_checksum, 0)));
- field_value_chain
- = tree_cons (arc_count_field,
- convert (integer_type_node,
- build_int_2 (item->count_edges, 0)),
- field_value_chain);
-
- name_len = strlen (item->name);
- string_cst = build_string (name_len + 1, item->name);
- domain_type = build_index_type (build_int_2 (name_len, 0));
- TREE_TYPE (string_cst)
- = build_array_type (char_type_node, domain_type);
- field_value_chain = tree_cons (name_field,
- build1 (ADDR_EXPR, string_type,
- string_cst),
- field_value_chain);
-
- /* Add to chain. */
- array_value_chain
- = tree_cons (NULL_TREE, build (CONSTRUCTOR,
- bb_fn_struct_type, NULL_TREE,
- nreverse (field_value_chain)),
- array_value_chain);
- }
+ /* Space for extension ptr (link field). */
+ assemble_integer (const0_rtx, UNITS_PER_WORD, align2, 1);
- /* Add terminator. */
- field_value = build_tree_list (arc_count_field,
- convert (integer_type_node,
- build_int_2 (-1, 0)));
-
- array_value_chain = tree_cons (NULL_TREE,
- build (CONSTRUCTOR, bb_fn_struct_type,
- NULL_TREE, field_value),
- array_value_chain);
-
-
- /* Create constructor for array. */
- field_decl
- = build_decl (FIELD_DECL, get_identifier ("function_infos"),
- bb_fn_struct_pointer_type);
- value_chain = tree_cons (field_decl,
- build1 (ADDR_EXPR,
- bb_fn_struct_array_pointer_type,
- build (CONSTRUCTOR,
- bb_fn_struct_array_type,
- NULL_TREE,
- nreverse
- (array_value_chain))),
- value_chain);
- TREE_CHAIN (field_decl) = decl_chain;
- decl_chain = field_decl;
+ /* Output the file name changing the suffix to .d for
+ Sun tcov compatibility. */
+ ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, "LPBX", 1);
+ {
+ char *cwd = getpwd ();
+ int len = strlen (filename) + strlen (cwd) + 1;
+ char *data_file = (char *) alloca (len + 4);
+
+ strcpy (data_file, cwd);
+ strcat (data_file, "/");
+ strcat (data_file, filename);
+ strip_off_ending (data_file, len);
+ strcat (data_file, ".da");
+ assemble_string (data_file, strlen (data_file) + 1);
}
- /* Finish structure. */
- TYPE_FIELDS (structure_decl) = nreverse (decl_chain);
- layout_type (structure_decl);
-
- structure_value
- = build (VAR_DECL, structure_decl, NULL_TREE, NULL_TREE);
- DECL_INITIAL (structure_value)
- = build (CONSTRUCTOR, structure_decl, NULL_TREE,
- nreverse (value_chain));
- TREE_STATIC (structure_value) = 1;
- ASM_GENERATE_INTERNAL_LABEL (name, "LPBX", 0);
- DECL_NAME (structure_value) = get_identifier (name);
-
- /* Size of this structure. */
- TREE_VALUE (sizeof_field_value)
- = convert (long_integer_type_node,
- build_int_2 (int_size_in_bytes (structure_decl), 0));
-
- /* Build structure. */
- assemble_variable (structure_value, 0, 0, 0);
+ /* Make space for the table of counts. */
+ if (size == 0)
+ {
+ /* Realign data section. */
+ ASM_OUTPUT_ALIGN (asm_out_file, align);
+ ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, "LPBX", 2);
+ if (size != 0)
+ assemble_zeros (size);
+ }
+ else
+ {
+ ASM_GENERATE_INTERNAL_LABEL (name, "LPBX", 2);
+#ifdef ASM_OUTPUT_SHARED_LOCAL
+ if (flag_shared_data)
+ ASM_OUTPUT_SHARED_LOCAL (asm_out_file, name, size, rounded);
+ else
+#endif
+#ifdef ASM_OUTPUT_ALIGNED_DECL_LOCAL
+ ASM_OUTPUT_ALIGNED_DECL_LOCAL (asm_out_file, NULL_TREE, name,
+ size, BIGGEST_ALIGNMENT);
+#else
+#ifdef ASM_OUTPUT_ALIGNED_LOCAL
+ ASM_OUTPUT_ALIGNED_LOCAL (asm_out_file, name, size,
+ BIGGEST_ALIGNMENT);
+#else
+ ASM_OUTPUT_LOCAL (asm_out_file, name, size, rounded);
+#endif
+#endif
+ }
}
}
@@ -586,7 +438,9 @@ dbr_sequence_length ()
static int *insn_lengths;
+#ifdef HAVE_ATTR_length
varray_type insn_addresses_;
+#endif
/* Max uid for which the above arrays are valid. */
static int insn_lengths_max_uid;
@@ -673,7 +527,7 @@ get_attr_length (insn)
case JUMP_INSN:
body = PATTERN (insn);
- if (GET_CODE (body) == ADDR_VEC || GET_CODE (body) == ADDR_DIFF_VEC)
+ if (GET_CODE (body) == ADDR_VEC || GET_CODE (body) == ADDR_DIFF_VEC)
{
/* Alignment is machine-dependent and should be handled by
ADDR_VEC_ALIGN. */
@@ -933,8 +787,8 @@ insn_current_reference_address (branch)
void
compute_alignments ()
{
+ int i;
int log, max_skip, max_log;
- basic_block bb;
if (label_align)
{
@@ -951,8 +805,9 @@ compute_alignments ()
if (! optimize || optimize_size)
return;
- FOR_EACH_BB (bb)
+ for (i = 0; i < n_basic_blocks; i++)
{
+ basic_block bb = BASIC_BLOCK (i);
rtx label = bb->head;
int fallthru_frequency = 0, branch_frequency = 0, has_fallthru = 0;
edge e;
@@ -982,8 +837,8 @@ compute_alignments ()
if (!has_fallthru
&& (branch_frequency > BB_FREQ_MAX / 10
- || (bb->frequency > bb->prev_bb->frequency * 10
- && (bb->prev_bb->frequency
+ || (bb->frequency > BASIC_BLOCK (i - 1)->frequency * 10
+ && (BASIC_BLOCK (i - 1)->frequency
<= ENTRY_BLOCK_PTR->frequency / 2))))
{
log = JUMP_ALIGN (label);
@@ -994,10 +849,10 @@ compute_alignments ()
}
}
/* In case block is frequent and reached mostly by non-fallthru edge,
- align it. It is most likely a first block of loop. */
+ align it. It is most likely an first block of loop. */
if (has_fallthru
&& branch_frequency + fallthru_frequency > BB_FREQ_MAX / 10
- && branch_frequency > fallthru_frequency * 2)
+ && branch_frequency > fallthru_frequency * 5)
{
log = LOOP_ALIGN (label);
if (max_log < log)
@@ -1119,7 +974,11 @@ shorten_branches (first)
next = NEXT_INSN (insn);
/* ADDR_VECs only take room if read-only data goes into the text
section. */
- if (JUMP_TABLES_IN_TEXT_SECTION || !HAVE_READONLY_DATA_SECTION)
+ if (JUMP_TABLES_IN_TEXT_SECTION
+#if !defined(READONLY_DATA_SECTION)
+ || 1
+#endif
+ )
if (next && GET_CODE (next) == JUMP_INSN)
{
rtx nextbody = PATTERN (next);
@@ -1269,7 +1128,7 @@ shorten_branches (first)
}
}
- INSN_ADDRESSES (uid) = insn_current_address + insn_lengths[uid];
+ INSN_ADDRESSES (uid) = insn_current_address;
if (GET_CODE (insn) == NOTE || GET_CODE (insn) == BARRIER
|| GET_CODE (insn) == CODE_LABEL)
@@ -1282,7 +1141,11 @@ shorten_branches (first)
{
/* This only takes room if read-only data goes into the text
section. */
- if (JUMP_TABLES_IN_TEXT_SECTION || !HAVE_READONLY_DATA_SECTION)
+ if (JUMP_TABLES_IN_TEXT_SECTION
+#if !defined(READONLY_DATA_SECTION)
+ || 1
+#endif
+ )
insn_lengths[uid] = (XVECLEN (body,
GET_CODE (body) == ADDR_DIFF_VEC)
* GET_MODE_SIZE (GET_MODE (body)));
@@ -1483,7 +1346,11 @@ shorten_branches (first)
PUT_MODE (body, CASE_VECTOR_SHORTEN_MODE (min_addr - rel_addr,
max_addr - rel_addr,
body));
- if (JUMP_TABLES_IN_TEXT_SECTION || !HAVE_READONLY_DATA_SECTION)
+ if (JUMP_TABLES_IN_TEXT_SECTION
+#if !defined(READONLY_DATA_SECTION)
+ || 1
+#endif
+ )
{
insn_lengths[uid]
= (XVECLEN (body, 1) * GET_MODE_SIZE (GET_MODE (body)));
@@ -1513,7 +1380,7 @@ shorten_branches (first)
insn_current_address += insn_lengths[inner_uid];
}
- }
+ }
else
insn_current_address += insn_lengths[uid];
@@ -1670,7 +1537,7 @@ final_start_function (first, file, optimize)
if (write_symbols)
{
remove_unnecessary_notes ();
- scope_to_insns_finalize ();
+ reorder_blocks ();
number_blocks (current_function_decl);
/* We never actually put out begin/end notes for the top-level
block in the function. But, conceptually, that block is
@@ -1681,6 +1548,12 @@ final_start_function (first, file, optimize)
/* First output the function prologue: code to set up the stack frame. */
(*targetm.asm_out.function_prologue) (file, get_frame_size ());
+#ifdef VMS_DEBUGGING_INFO
+ /* Output label after the prologue of the function. */
+ if (write_symbols == VMS_DEBUG || write_symbols == VMS_AND_DWARF2_DEBUG)
+ vmsdbgout_after_prologue ();
+#endif
+
/* If the machine represents the prologue as RTL, the profiling code must
be emitted when NOTE_INSN_PROLOGUE_END is scanned. */
#ifdef HAVE_prologue
@@ -1718,7 +1591,7 @@ profile_function (file)
#ifndef NO_PROFILE_COUNTERS
data_section ();
ASM_OUTPUT_ALIGN (file, floor_log2 (align / BITS_PER_UNIT));
- ASM_OUTPUT_INTERNAL_LABEL (file, "LP", current_function_funcdef_no);
+ ASM_OUTPUT_INTERNAL_LABEL (file, "LP", current_function_profile_label_no);
assemble_integer (const0_rtx, LONG_TYPE_SIZE / BITS_PER_UNIT, align, 1);
#endif
@@ -1748,7 +1621,7 @@ profile_function (file)
#endif
#endif
- FUNCTION_PROFILER (file, current_function_funcdef_no);
+ FUNCTION_PROFILER (file, current_function_profile_label_no);
#if defined(STATIC_CHAIN_INCOMING_REGNUM) && defined(ASM_OUTPUT_REG_PUSH)
if (cxt)
@@ -1791,12 +1664,12 @@ final_end_function ()
(*targetm.asm_out.function_epilogue) (asm_out_file, get_frame_size ());
/* And debug output. */
- (*debug_hooks->end_epilogue) (last_linenum, last_filename);
+ (*debug_hooks->end_epilogue) ();
#if defined (DWARF2_UNWIND_INFO)
if (write_symbols != DWARF2_DEBUG && write_symbols != VMS_AND_DWARF2_DEBUG
&& dwarf2out_do_frame ())
- dwarf2out_end_epilogue (last_linenum, last_filename);
+ dwarf2out_end_epilogue ();
#endif
}
@@ -1890,12 +1763,16 @@ final (first, file, optimize, prescan)
#ifdef HAVE_ATTR_length
if ((unsigned) INSN_UID (insn) >= INSN_ADDRESSES_SIZE ())
{
+#ifdef STACK_REGS
+ /* Irritatingly, the reg-stack pass is creating new instructions
+ and because of REG_DEAD note abuse it has to run after
+ shorten_branches. Fake address of -1 then. */
+ insn_current_address = -1;
+#else
/* This can be triggered by bugs elsewhere in the compiler if
new insns are created after init_insn_lengths is called. */
- if (GET_CODE (insn) == NOTE)
- insn_current_address = -1;
- else
- abort ();
+ abort ();
+#endif
}
else
insn_current_address = INSN_ADDRESSES (INSN_UID (insn));
@@ -1904,23 +1781,6 @@ final (first, file, optimize, prescan)
insn = final_scan_insn (insn, file, optimize, prescan, 0);
}
- /* Store function names for edge-profiling. */
- /* ??? Probably should re-use the existing struct function. */
-
- if (cfun->arc_profile)
- {
- struct function_list *new_item = xmalloc (sizeof (struct function_list));
-
- *functions_tail = new_item;
- functions_tail = &new_item->next;
-
- new_item->next = 0;
- new_item->name = xstrdup (IDENTIFIER_POINTER
- (DECL_ASSEMBLER_NAME (current_function_decl)));
- new_item->cfg_checksum = profile_info.current_function_cfg_checksum;
- new_item->count_edges = profile_info.count_edges_instrumented_now;
- }
-
free (line_note_exists);
line_note_exists = NULL;
}
@@ -1947,39 +1807,6 @@ get_insn_template (code, insn)
}
}
-/* Emit the appropriate declaration for an alternate-entry-point
- symbol represented by INSN, to FILE. INSN is a CODE_LABEL with
- LABEL_KIND != LABEL_NORMAL.
-
- The case fall-through in this function is intentional. */
-static void
-output_alternate_entry_point (file, insn)
- FILE *file;
- rtx insn;
-{
- const char *name = LABEL_NAME (insn);
-
- switch (LABEL_KIND (insn))
- {
- case LABEL_WEAK_ENTRY:
-#ifdef ASM_WEAKEN_LABEL
- ASM_WEAKEN_LABEL (file, name);
-#endif
- case LABEL_GLOBAL_ENTRY:
- (*targetm.asm_out.globalize_label) (file, name);
- case LABEL_STATIC_ENTRY:
-#ifdef ASM_OUTPUT_TYPE_DIRECTIVE
- ASM_OUTPUT_TYPE_DIRECTIVE (file, name, "function");
-#endif
- ASM_OUTPUT_LABEL (file, name);
- break;
-
- case LABEL_NORMAL:
- default:
- abort ();
- }
-}
-
/* The final scan for one insn, INSN.
Args are same as in `final', except that INSN
is the insn being scanned.
@@ -2023,6 +1850,9 @@ final_scan_insn (insn, file, optimize, prescan, nopeepholes)
case NOTE_INSN_LOOP_VTOP:
case NOTE_INSN_FUNCTION_END:
case NOTE_INSN_REPEATED_LINE_NUMBER:
+ case NOTE_INSN_RANGE_BEG:
+ case NOTE_INSN_RANGE_END:
+ case NOTE_INSN_LIVE:
case NOTE_INSN_EXPECTED_VALUE:
break;
@@ -2056,7 +1886,7 @@ final_scan_insn (insn, file, optimize, prescan, nopeepholes)
case NOTE_INSN_FUNCTION_BEG:
app_disable ();
- (*debug_hooks->end_prologue) (last_linenum, last_filename);
+ (*debug_hooks->end_prologue) (last_linenum);
break;
case NOTE_INSN_BLOCK_BEG:
@@ -2186,12 +2016,8 @@ final_scan_insn (insn, file, optimize, prescan, nopeepholes)
#ifdef ASM_OUTPUT_MAX_SKIP_ALIGN
ASM_OUTPUT_MAX_SKIP_ALIGN (file, align, max_skip);
#else
-#ifdef ASM_OUTPUT_ALIGN_WITH_NOP
- ASM_OUTPUT_ALIGN_WITH_NOP (file, align);
-#else
ASM_OUTPUT_ALIGN (file, align);
#endif
-#endif
}
}
#ifdef HAVE_cc0
@@ -2274,14 +2100,17 @@ final_scan_insn (insn, file, optimize, prescan, nopeepholes)
ASM_OUTPUT_CASE_LABEL (file, "L", CODE_LABEL_NUMBER (insn),
NEXT_INSN (insn));
#else
- ASM_OUTPUT_INTERNAL_LABEL (file, "L", CODE_LABEL_NUMBER (insn));
+ if (LABEL_ALTERNATE_NAME (insn))
+ ASM_OUTPUT_ALTERNATE_LABEL_NAME (file, insn);
+ else
+ ASM_OUTPUT_INTERNAL_LABEL (file, "L", CODE_LABEL_NUMBER (insn));
#endif
#endif
break;
}
}
- if (LABEL_ALT_ENTRY_P (insn))
- output_alternate_entry_point (file, insn);
+ if (LABEL_ALTERNATE_NAME (insn))
+ ASM_OUTPUT_ALTERNATE_LABEL_NAME (file, insn);
else
ASM_OUTPUT_INTERNAL_LABEL (file, "L", CODE_LABEL_NUMBER (insn));
break;
@@ -2710,13 +2539,13 @@ final_scan_insn (insn, file, optimize, prescan, nopeepholes)
insn_code_number = recog_memoized (insn);
cleanup_subreg_operands (insn);
- /* Dump the insn in the assembly for debugging. */
- if (flag_dump_rtl_in_asm)
- {
- print_rtx_head = ASM_COMMENT_START;
- print_rtl_single (asm_out_file, insn);
- print_rtx_head = "";
- }
+ /* Dump the insn in the assembly for debugging. */
+ if (flag_dump_rtl_in_asm)
+ {
+ print_rtx_head = ASM_COMMENT_START;
+ print_rtl_single (asm_out_file, insn);
+ print_rtx_head = "";
+ }
if (! constrain_operands_cached (1))
fatal_insn_not_found (insn);
@@ -2926,7 +2755,7 @@ alter_subreg (xp)
ORIGINAL_REGNO (x) = ORIGINAL_REGNO (y);
/* This field has a different meaning for REGs and SUBREGs. Make
sure to clear it! */
- RTX_FLAG (x, used) = 0;
+ x->used = 0;
}
else
abort ();
@@ -3141,7 +2970,7 @@ output_operand_lossage VPARAMS ((const char *msgid, ...))
pfx_str = this_is_asm_operands ? _("invalid `asm': ") : "output_operand: ";
asprintf (&fmt_string, "%s%s", pfx_str, _(msgid));
vasprintf (&new_message, fmt_string, ap);
-
+
if (this_is_asm_operands)
error_for_asm (this_is_asm_operands, "%s", new_message);
else
@@ -3939,6 +3768,7 @@ split_double (value, first, second)
}
else
{
+#ifdef REAL_ARITHMETIC
REAL_VALUE_TYPE r;
long l[2];
REAL_VALUE_FROM_CONST_DOUBLE (r, value);
@@ -3967,6 +3797,30 @@ split_double (value, first, second)
*first = GEN_INT ((HOST_WIDE_INT) l[0]);
*second = GEN_INT ((HOST_WIDE_INT) l[1]);
+#else
+ if ((HOST_FLOAT_FORMAT != TARGET_FLOAT_FORMAT
+ || HOST_BITS_PER_WIDE_INT != BITS_PER_WORD)
+ && ! flag_pretend_float)
+ abort ();
+
+ if (
+#ifdef HOST_WORDS_BIG_ENDIAN
+ WORDS_BIG_ENDIAN
+#else
+ ! WORDS_BIG_ENDIAN
+#endif
+ )
+ {
+ /* Host and target agree => no need to swap. */
+ *first = GEN_INT (CONST_DOUBLE_LOW (value));
+ *second = GEN_INT (CONST_DOUBLE_HIGH (value));
+ }
+ else
+ {
+ *second = GEN_INT (CONST_DOUBLE_LOW (value));
+ *first = GEN_INT (CONST_DOUBLE_HIGH (value));
+ }
+#endif /* no REAL_ARITHMETIC */
}
}
@@ -4011,7 +3865,7 @@ leaf_function_p ()
return 1;
}
-/* Return 1 if branch is a forward branch.
+/* Return 1 if branch is an forward branch.
Uses insn_shuid array, so it works only in the final pass. May be used by
output templates to customary add branch prediction hints.
*/
diff --git a/contrib/gcc/flags.h b/contrib/gcc/flags.h
index 0a8979d..85e0792 100644
--- a/contrib/gcc/flags.h
+++ b/contrib/gcc/flags.h
@@ -1,5 +1,5 @@
/* Compilation switch flag definitions for GCC.
- Copyright (C) 1987, 1988, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002
+ Copyright (C) 1987, 1988, 1994, 1995, 1996, 1997, 1998, 1999, 2000
Free Software Foundation, Inc.
This file is part of GCC.
@@ -126,20 +126,10 @@ extern int warn_unknown_pragmas;
extern int warn_shadow;
-/* Warn if a switch on an enum, that does not have a default case,
- fails to have a case for every enum value. */
+/* Warn if a switch on an enum fails to have a case for every enum value. */
extern int warn_switch;
-/* Warn if a switch does not have a default case. */
-
-extern int warn_switch_default;
-
-/* Warn if a switch on an enum fails to have a case for every enum
- value (regardless of the presence or otherwise of a default case). */
-
-extern int warn_switch_enum;
-
/* Nonzero means warn about function definitions that default the return type
or that use a null return and have a return-type other than void. */
@@ -184,11 +174,6 @@ extern int warn_disabled_optimization;
extern int warn_deprecated_decl;
-/* Nonzero means warn about constructs which might not be strict
- aliasing safe. */
-
-extern int warn_strict_aliasing;
-
/* Nonzero if generating code to do profiling. */
extern int profile_flag;
@@ -209,10 +194,6 @@ extern int flag_branch_probabilities;
extern int flag_reorder_blocks;
-/* Nonzero if functions should be reordered. */
-
-extern int flag_reorder_functions;
-
/* Nonzero if registers should be renamed. */
extern int flag_rename_registers;
@@ -364,10 +345,6 @@ extern int flag_errno_math;
extern int flag_unsafe_math_optimizations;
-/* Nonzero means that no NaNs or +-Infs are expected. */
-
-extern int flag_finite_math_only;
-
/* Zero means that floating-point math operations cannot generate a
(user-visible) trap. This is the case, for example, in nonstop
IEEE 754 arithmetic. */
@@ -431,7 +408,7 @@ extern int flag_schedule_insns_after_reload;
/* The following flags have effect only for scheduling before register
allocation:
- flag_schedule_interblock means schedule insns across basic blocks.
+ flag_schedule_interblock means schedule insns accross basic blocks.
flag_schedule_speculative means allow speculative motion of non-load insns.
flag_schedule_speculative_load means allow speculative motion of some
load insns.
@@ -462,13 +439,19 @@ extern int flag_delayed_branch;
extern int flag_dump_unnumbered;
+/* Nonzero means pretend it is OK to examine bits of target floats,
+ even if that isn't true. The resulting code will have incorrect constants,
+ but the same series of instructions that the native compiler would make. */
+
+extern int flag_pretend_float;
+
/* Nonzero means change certain warnings into errors.
Usually these are warnings about failure to conform to some standard. */
extern int flag_pedantic_errors;
-/* Nonzero means generate position-independent code. 1 vs 2 for a
- target-dependent "small" or "large" mode. */
+/* Nonzero means generate position-independent code.
+ This is not fully implemented yet. */
extern int flag_pic;
@@ -563,10 +546,19 @@ extern int flag_peephole2;
/* Try to guess branch probablities. */
extern int flag_guess_branch_prob;
+/* -fbounded-pointers causes gcc to compile pointers as composite
+ objects occupying three words: the pointer value, the base address
+ of the referent object, and the address immediately beyond the end
+ of the referent object. The base and extent allow us to perform
+ runtime bounds checking. -fbounded-pointers implies -fcheck-bounds. */
+extern int flag_bounded_pointers;
+
/* -fcheck-bounds causes gcc to generate array bounds checks.
- For C, C++ and ObjC: defaults off.
+ For C, C++: defaults to value of flag_bounded_pointers.
+ For ObjC: defaults to off.
For Java: defaults to on.
- For Fortran: defaults to off. */
+ For Fortran: defaults to off.
+ For CHILL: defaults to off. */
extern int flag_bounds_check;
/* This will attempt to merge constant section constants, if 1 only
@@ -646,48 +638,11 @@ extern int flag_gcse_sm;
extern int flag_eliminate_dwarf2_dups;
-/* Nonzero means to collect statistics which might be expensive
+/* Non-zero means to collect statistics which might be expensive
and to print them when we are done. */
extern int flag_detailed_statistics;
/* Nonzero means enable synchronous exceptions for non-call instructions. */
extern int flag_non_call_exceptions;
-/* Nonzero means put zero initialized data in the bss section. */
-extern int flag_zero_initialized_in_bss;
-
-/* Nonzero means disable transformations observable by signaling NaNs. */
-extern int flag_signaling_nans;
-
-/* A string that's used when a random name is required. NULL means
- to make it really random. */
-
-extern const char *flag_random_seed;
-
-/* True if the given mode has a NaN representation and the treatment of
- NaN operands is important. Certain optimizations, such as folding
- x * 0 into x, are not correct for NaN operands, and are normally
- disabled for modes with NaNs. The user can ask for them to be
- done anyway using the -funsafe-math-optimizations switch. */
-#define HONOR_NANS(MODE) \
- (MODE_HAS_NANS (MODE) && !flag_finite_math_only)
-
-/* Like HONOR_NANs, but true if we honor signaling NaNs (or sNaNs). */
-#define HONOR_SNANS(MODE) (flag_signaling_nans && HONOR_NANS (MODE))
-
-/* As for HONOR_NANS, but true if the mode can represent infinity and
- the treatment of infinite values is important. */
-#define HONOR_INFINITIES(MODE) \
- (MODE_HAS_INFINITIES (MODE) && !flag_finite_math_only)
-
-/* Like HONOR_NANS, but true if the given mode distinguishes between
- postive and negative zero, and the sign of zero is important. */
-#define HONOR_SIGNED_ZEROS(MODE) \
- (MODE_HAS_SIGNED_ZEROS (MODE) && !flag_unsafe_math_optimizations)
-
-/* Like HONOR_NANS, but true if given mode supports sign-dependent rounding,
- and the rounding mode is important. */
-#define HONOR_SIGN_DEPENDENT_ROUNDING(MODE) \
- (MODE_HAS_SIGN_DEPENDENT_ROUNDING (MODE) && !flag_unsafe_math_optimizations)
-
#endif /* ! GCC_FLAGS_H */
diff --git a/contrib/gcc/function.c b/contrib/gcc/function.c
index daa2cab..f733076 100644
--- a/contrib/gcc/function.c
+++ b/contrib/gcc/function.c
@@ -53,8 +53,9 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "recog.h"
#include "output.h"
#include "basic-block.h"
+#include "obstack.h"
#include "toplev.h"
-#include "hashtab.h"
+#include "hash.h"
#include "ggc.h"
#include "tm_p.h"
#include "integrate.h"
@@ -74,6 +75,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
must define both, or neither. */
#ifndef NAME__MAIN
#define NAME__MAIN "__main"
+#define SYMBOL__MAIN __main
#endif
/* Round a value to the lowest integer less than it that is a multiple of
@@ -122,12 +124,24 @@ int current_function_uses_only_leaf_regs;
post-instantiation libcalls. */
int virtuals_instantiated;
-/* Assign unique numbers to labels generated for profiling, debugging, etc. */
-static int funcdef_no;
+/* Assign unique numbers to labels generated for profiling. */
+static int profile_label_no;
/* These variables hold pointers to functions to create and destroy
target specific, per-function data structures. */
-struct machine_function * (*init_machine_status) PARAMS ((void));
+void (*init_machine_status) PARAMS ((struct function *));
+void (*free_machine_status) PARAMS ((struct function *));
+/* This variable holds a pointer to a function to register any
+ data items in the target specific, per-function data structure
+ that will need garbage collection. */
+void (*mark_machine_status) PARAMS ((struct function *));
+
+/* Likewise, but for language-specific data. */
+void (*init_lang_status) PARAMS ((struct function *));
+void (*save_lang_status) PARAMS ((struct function *));
+void (*restore_lang_status) PARAMS ((struct function *));
+void (*mark_lang_status) PARAMS ((struct function *));
+void (*free_lang_status) PARAMS ((struct function *));
/* The FUNCTION_DECL for an inline function currently being expanded. */
tree inline_function_decl;
@@ -136,12 +150,12 @@ tree inline_function_decl;
struct function *cfun = 0;
/* These arrays record the INSN_UIDs of the prologue and epilogue insns. */
-static GTY(()) varray_type prologue;
-static GTY(()) varray_type epilogue;
+static varray_type prologue;
+static varray_type epilogue;
/* Array of INSN_UIDs to hold the INSN_UIDs for each sibcall epilogue
in this function. */
-static GTY(()) varray_type sibcall_epilogue;
+static varray_type sibcall_epilogue;
/* In order to evaluate some expressions, such as function calls returning
structures in memory, we need to temporarily allocate stack locations.
@@ -161,7 +175,7 @@ static GTY(()) varray_type sibcall_epilogue;
level where they are defined. They are marked a "kept" so that
free_temp_slots will not free them. */
-struct temp_slot GTY(())
+struct temp_slot
{
/* Points to next temporary slot. */
struct temp_slot *next;
@@ -181,13 +195,13 @@ struct temp_slot GTY(())
tree type;
/* The value of `sequence_rtl_expr' when this temporary is allocated. */
tree rtl_expr;
- /* Nonzero if this temporary is currently in use. */
+ /* Non-zero if this temporary is currently in use. */
char in_use;
- /* Nonzero if this temporary has its address taken. */
+ /* Non-zero if this temporary has its address taken. */
char addr_taken;
/* Nesting level at which this slot is being used. */
int level;
- /* Nonzero if this should survive a call to free_temp_slots. */
+ /* Non-zero if this should survive a call to free_temp_slots. */
int keep;
/* The offset of the slot from the frame_pointer, including extra space
for alignment. This info is for combine_temp_slots. */
@@ -202,7 +216,7 @@ struct temp_slot GTY(())
maintain this list in case two operands of an insn were required to match;
in that case we must ensure we use the same replacement. */
-struct fixup_replacement GTY(())
+struct fixup_replacement
{
rtx old;
rtx new;
@@ -211,9 +225,9 @@ struct fixup_replacement GTY(())
struct insns_for_mem_entry
{
- /* A MEM. */
- rtx key;
- /* These are the INSNs which reference the MEM. */
+ /* The KEY in HE will be a MEM. */
+ struct hash_entry he;
+ /* These are the INSNS which reference the MEM. */
rtx insns;
};
@@ -225,25 +239,25 @@ static struct temp_slot *find_temp_slot_from_address PARAMS ((rtx));
static void put_reg_into_stack PARAMS ((struct function *, rtx, tree,
enum machine_mode, enum machine_mode,
int, unsigned int, int,
- htab_t));
+ struct hash_table *));
static void schedule_fixup_var_refs PARAMS ((struct function *, rtx, tree,
enum machine_mode,
- htab_t));
+ struct hash_table *));
static void fixup_var_refs PARAMS ((rtx, enum machine_mode, int, rtx,
- htab_t));
+ struct hash_table *));
static struct fixup_replacement
*find_fixup_replacement PARAMS ((struct fixup_replacement **, rtx));
static void fixup_var_refs_insns PARAMS ((rtx, rtx, enum machine_mode,
int, int, rtx));
static void fixup_var_refs_insns_with_hash
- PARAMS ((htab_t, rtx,
+ PARAMS ((struct hash_table *, rtx,
enum machine_mode, int, rtx));
static void fixup_var_refs_insn PARAMS ((rtx, rtx, enum machine_mode,
int, int, rtx));
static void fixup_var_refs_1 PARAMS ((rtx, enum machine_mode, rtx *, rtx,
struct fixup_replacement **, rtx));
static rtx fixup_memory_subreg PARAMS ((rtx, rtx, enum machine_mode, int));
-static rtx walk_fixup_memory_subreg PARAMS ((rtx, rtx, enum machine_mode,
+static rtx walk_fixup_memory_subreg PARAMS ((rtx, rtx, enum machine_mode,
int));
static rtx fixup_stack_1 PARAMS ((rtx, rtx));
static void optimize_bit_field PARAMS ((rtx, rtx, rtx *));
@@ -255,8 +269,10 @@ static int instantiate_virtual_regs_1 PARAMS ((rtx *, rtx, int));
static void delete_handlers PARAMS ((void));
static void pad_to_arg_alignment PARAMS ((struct args_size *, int,
struct args_size *));
+#ifndef ARGS_GROW_DOWNWARD
static void pad_below PARAMS ((struct args_size *, enum machine_mode,
tree));
+#endif
static rtx round_trampoline_addr PARAMS ((rtx));
static rtx adjust_trampoline_addr PARAMS ((rtx));
static tree *identify_blocks_1 PARAMS ((rtx, tree *, tree *, tree *));
@@ -274,25 +290,29 @@ static int contains PARAMS ((rtx, varray_type));
#ifdef HAVE_return
static void emit_return_into_block PARAMS ((basic_block, rtx));
#endif
-static void put_addressof_into_stack PARAMS ((rtx, htab_t));
+static void put_addressof_into_stack PARAMS ((rtx, struct hash_table *));
static bool purge_addressof_1 PARAMS ((rtx *, rtx, int, int,
- htab_t));
+ struct hash_table *));
static void purge_single_hard_subreg_set PARAMS ((rtx));
#if defined(HAVE_epilogue) && defined(INCOMING_RETURN_ADDR_RTX)
static rtx keep_stack_depressed PARAMS ((rtx));
#endif
static int is_addressof PARAMS ((rtx *, void *));
-static hashval_t insns_for_mem_hash PARAMS ((const void *));
-static int insns_for_mem_comp PARAMS ((const void *, const void *));
+static struct hash_entry *insns_for_mem_newfunc PARAMS ((struct hash_entry *,
+ struct hash_table *,
+ hash_table_key));
+static unsigned long insns_for_mem_hash PARAMS ((hash_table_key));
+static bool insns_for_mem_comp PARAMS ((hash_table_key, hash_table_key));
static int insns_for_mem_walk PARAMS ((rtx *, void *));
-static void compute_insns_for_mem PARAMS ((rtx, rtx, htab_t));
+static void compute_insns_for_mem PARAMS ((rtx, rtx, struct hash_table *));
+static void mark_function_status PARAMS ((struct function *));
+static void maybe_mark_struct_function PARAMS ((void *));
static void prepare_function_start PARAMS ((void));
static void do_clobber_return_reg PARAMS ((rtx, void *));
static void do_use_return_reg PARAMS ((rtx, void *));
-static void instantiate_virtual_regs_lossage PARAMS ((rtx));
/* Pointer to chain of `struct function' for containing functions. */
-static GTY(()) struct function *outer_function_chain;
+static struct function *outer_function_chain;
/* Given a function decl for a containing function,
return the `struct function' for it. */
@@ -312,7 +332,7 @@ find_function_data (decl)
/* Save the current context for compilation of a nested function.
This is called from language-specific code. The caller should use
- the enter_nested langhook to save any language-specific state,
+ the save_lang_status callback to save any language-specific state,
since this function knows only about language-independent
variables. */
@@ -341,7 +361,8 @@ push_function_context_to (context)
outer_function_chain = p;
p->fixup_var_refs_queue = 0;
- (*lang_hooks.function.enter_nested) (p);
+ if (save_lang_status)
+ (*save_lang_status) (p);
cfun = 0;
}
@@ -370,7 +391,8 @@ pop_function_context_from (context)
restore_emit_status (p);
- (*lang_hooks.function.leave_nested) (p);
+ if (restore_lang_status)
+ (*restore_lang_status) (p);
/* Finish doing put_var_into_stack for any of our variables which became
addressable during the nested function. If only one entry has to be
@@ -423,8 +445,9 @@ free_after_parsing (f)
/* f->varasm is used by code generation. */
/* f->eh->eh_return_stub_label is used by code generation. */
- (*lang_hooks.function.final) (f);
- f->stmt = NULL;
+ if (free_lang_status)
+ (*free_lang_status) (f);
+ free_stmt_status (f);
}
/* Clear out all parts of the state in F that can safely be discarded
@@ -435,11 +458,16 @@ void
free_after_compilation (f)
struct function *f;
{
- f->eh = NULL;
- f->expr = NULL;
- f->emit = NULL;
- f->varasm = NULL;
- f->machine = NULL;
+ free_eh_status (f);
+ free_expr_status (f);
+ free_emit_status (f);
+ free_varasm_status (f);
+
+ if (free_machine_status)
+ (*free_machine_status) (f);
+
+ if (f->x_parm_reg_stack_loc)
+ free (f->x_parm_reg_stack_loc);
f->x_temp_slots = NULL;
f->arg_offset_rtx = NULL;
@@ -451,8 +479,6 @@ free_after_compilation (f)
f->x_nonlocal_goto_stack_level = NULL;
f->x_cleanup_label = NULL;
f->x_return_label = NULL;
- f->computed_goto_common_label = NULL;
- f->computed_goto_common_reg = NULL;
f->x_save_expr_regs = NULL;
f->x_stack_slot_list = NULL;
f->x_rtl_expr_chain = NULL;
@@ -534,7 +560,7 @@ assign_stack_local_1 (mode, size, align, function)
/* Allow the target to (possibly) increase the alignment of this
stack slot. */
- type = (*lang_hooks.types.type_for_mode) (mode, 0);
+ type = type_for_mode (mode, 0);
if (type)
alignment = LOCAL_ALIGNMENT (type, alignment);
@@ -654,7 +680,7 @@ assign_stack_temp_for_type (mode, size, keep, type)
align = GET_MODE_ALIGNMENT (mode);
if (! type)
- type = (*lang_hooks.types.type_for_mode) (mode, 0);
+ type = type_for_mode (mode, 0);
if (type)
align = LOCAL_ALIGNMENT (type, align);
@@ -876,7 +902,7 @@ assign_temp (type_or_decl, keep, memory_required, dont_promote)
/* The size of the temporary may be too large to fit into an integer. */
/* ??? Not sure this should happen except for user silliness, so limit
- this to things that aren't compiler-generated temporaries. The
+ this to things that aren't compiler-generated temporaries. The
rest of the time we'll abort in assign_stack_temp_for_type. */
if (decl && size == -1
&& TREE_CODE (TYPE_SIZE_UNIT (type)) == INTEGER_CST)
@@ -1324,16 +1350,12 @@ init_temp_slots ()
target_temp_slot_level = 0;
}
-/* Retroactively move an auto variable from a register to a stack
- slot. This is done when an address-reference to the variable is
- seen. If RESCAN is true, all previously emitted instructions are
- examined and modified to handle the fact that DECL is now
- addressable. */
+/* Retroactively move an auto variable from a register to a stack slot.
+ This is done when an address-reference to the variable is seen. */
void
-put_var_into_stack (decl, rescan)
+put_var_into_stack (decl)
tree decl;
- int rescan;
{
rtx reg;
enum machine_mode promoted_mode, decl_mode;
@@ -1347,8 +1369,8 @@ put_var_into_stack (decl, rescan)
context = decl_function_context (decl);
/* Get the current rtl used for this object and its original mode. */
- reg = (TREE_CODE (decl) == SAVE_EXPR
- ? SAVE_EXPR_RTL (decl)
+ reg = (TREE_CODE (decl) == SAVE_EXPR
+ ? SAVE_EXPR_RTL (decl)
: DECL_RTL_IF_SET (decl));
/* No need to do anything if decl has no rtx yet
@@ -1408,7 +1430,7 @@ put_var_into_stack (decl, rescan)
to put things in the stack for the sake of setjmp, try to keep it
in a register until we know we actually need the address. */
if (can_use_addressof)
- gen_mem_addressof (reg, decl, rescan);
+ gen_mem_addressof (reg, decl);
else
put_reg_into_stack (function, reg, TREE_TYPE (decl), promoted_mode,
decl_mode, volatilep, 0, usedp, 0);
@@ -1421,7 +1443,7 @@ put_var_into_stack (decl, rescan)
to the whole CONCAT, lest we do double fixups for the latter
references. */
enum machine_mode part_mode = GET_MODE (XEXP (reg, 0));
- tree part_type = (*lang_hooks.types.type_for_mode) (part_mode, 0);
+ tree part_type = type_for_mode (part_mode, 0);
rtx lopart = XEXP (reg, 0);
rtx hipart = XEXP (reg, 1);
#ifdef FRAME_GROWS_DOWNWARD
@@ -1455,7 +1477,7 @@ put_var_into_stack (decl, rescan)
/* Prevent sharing of rtl that might lose. */
if (GET_CODE (XEXP (reg, 0)) == PLUS)
XEXP (reg, 0) = copy_rtx (XEXP (reg, 0));
- if (usedp && rescan)
+ if (usedp)
{
schedule_fixup_var_refs (function, reg, TREE_TYPE (decl),
promoted_mode, 0);
@@ -1484,7 +1506,7 @@ put_reg_into_stack (function, reg, type, promoted_mode, decl_mode, volatile_p,
int volatile_p;
unsigned int original_regno;
int used_p;
- htab_t ht;
+ struct hash_table *ht;
{
struct function *func = function ? function : cfun;
rtx new = 0;
@@ -1532,7 +1554,7 @@ schedule_fixup_var_refs (function, reg, type, promoted_mode, ht)
rtx reg;
tree type;
enum machine_mode promoted_mode;
- htab_t ht;
+ struct hash_table *ht;
{
int unsigned_p = type ? TREE_UNSIGNED (type) : 0;
@@ -1558,7 +1580,7 @@ fixup_var_refs (var, promoted_mode, unsignedp, may_share, ht)
rtx var;
enum machine_mode promoted_mode;
int unsignedp;
- htab_t ht;
+ struct hash_table *ht;
rtx may_share;
{
tree pending;
@@ -1694,18 +1716,17 @@ fixup_var_refs_insns (insn, var, promoted_mode, unsignedp, toplevel, may_share)
static void
fixup_var_refs_insns_with_hash (ht, var, promoted_mode, unsignedp, may_share)
- htab_t ht;
+ struct hash_table *ht;
rtx var;
enum machine_mode promoted_mode;
int unsignedp;
rtx may_share;
{
- struct insns_for_mem_entry tmp;
- struct insns_for_mem_entry *ime;
+ struct insns_for_mem_entry *ime
+ = (struct insns_for_mem_entry *) hash_lookup (ht, var,
+ /*create=*/0, /*copy=*/0);
rtx insn_list;
- tmp.key = var;
- ime = (struct insns_for_mem_entry *) htab_find (ht, &tmp);
for (insn_list = ime->insns; insn_list != 0; insn_list = XEXP (insn_list, 1))
if (INSN_P (XEXP (insn_list, 0)))
fixup_var_refs_insn (XEXP (insn_list, 0), var, promoted_mode,
@@ -1851,7 +1872,7 @@ fixup_var_refs_insn (insn, var, promoted_mode, unsignedp, toplevel, no_share)
/* OLD might be a (subreg (mem)). */
if (GET_CODE (replacements->old) == SUBREG)
replacements->old
- = fixup_memory_subreg (replacements->old, insn,
+ = fixup_memory_subreg (replacements->old, insn,
promoted_mode, 0);
else
replacements->old
@@ -1869,7 +1890,7 @@ fixup_var_refs_insn (insn, var, promoted_mode, unsignedp, toplevel, no_share)
start_sequence ();
convert_move (replacements->new,
replacements->old, unsignedp);
- seq = get_insns ();
+ seq = gen_sequence ();
end_sequence ();
}
else
@@ -1951,7 +1972,7 @@ fixup_var_refs_1 (var, promoted_mode, loc, insn, replacements, no_share)
start_sequence ();
new_insn = emit_insn (gen_rtx_SET (VOIDmode, y, sub));
- seq = get_insns ();
+ seq = gen_sequence ();
end_sequence ();
if (recog_memoized (new_insn) < 0)
@@ -1962,7 +1983,7 @@ fixup_var_refs_1 (var, promoted_mode, loc, insn, replacements, no_share)
sub = force_operand (sub, y);
if (sub != y)
emit_insn (gen_move_insn (y, sub));
- seq = get_insns ();
+ seq = gen_sequence ();
end_sequence ();
}
@@ -2179,7 +2200,7 @@ fixup_var_refs_1 (var, promoted_mode, loc, insn, replacements, no_share)
return;
}
- replacement->new = *loc = fixup_memory_subreg (x, insn,
+ replacement->new = *loc = fixup_memory_subreg (x, insn,
promoted_mode, 0);
INSN_CODE (insn) = -1;
@@ -2387,12 +2408,12 @@ fixup_var_refs_1 (var, promoted_mode, loc, insn, replacements, no_share)
copy SET_SRC (x) to SET_DEST (x) in some way. So
we generate the move and see whether it requires more
than one insn. If it does, we emit those insns and
- delete INSN. Otherwise, we can just replace the pattern
+ delete INSN. Otherwise, we an just replace the pattern
of INSN; we have already verified above that INSN has
no other function that to do X. */
pat = gen_move_insn (SET_DEST (x), SET_SRC (x));
- if (NEXT_INSN (pat) != NULL_RTX)
+ if (GET_CODE (pat) == SEQUENCE)
{
last = emit_insn_before (pat, insn);
@@ -2410,7 +2431,7 @@ fixup_var_refs_1 (var, promoted_mode, loc, insn, replacements, no_share)
delete_insn (last);
}
else
- PATTERN (insn) = PATTERN (pat);
+ PATTERN (insn) = pat;
return;
}
@@ -2427,7 +2448,7 @@ fixup_var_refs_1 (var, promoted_mode, loc, insn, replacements, no_share)
rtx pat, last;
if (GET_CODE (SET_DEST (x)) == SUBREG)
- SET_DEST (x) = fixup_memory_subreg (SET_DEST (x), insn,
+ SET_DEST (x) = fixup_memory_subreg (SET_DEST (x), insn,
promoted_mode, 0);
else
SET_DEST (x) = fixup_stack_1 (SET_DEST (x), insn);
@@ -2436,7 +2457,7 @@ fixup_var_refs_1 (var, promoted_mode, loc, insn, replacements, no_share)
return;
pat = gen_move_insn (SET_DEST (x), SET_SRC (x));
- if (NEXT_INSN (pat) != NULL_RTX)
+ if (GET_CODE (pat) == SEQUENCE)
{
last = emit_insn_before (pat, insn);
@@ -2454,7 +2475,7 @@ fixup_var_refs_1 (var, promoted_mode, loc, insn, replacements, no_share)
delete_insn (last);
}
else
- PATTERN (insn) = PATTERN (pat);
+ PATTERN (insn) = pat;
return;
}
@@ -2481,7 +2502,7 @@ fixup_var_refs_1 (var, promoted_mode, loc, insn, replacements, no_share)
/* Convert (SUBREG (MEM)) to a MEM in a changed mode. */
if (GET_CODE (fixeddest) == SUBREG)
{
- fixeddest = fixup_memory_subreg (fixeddest, insn,
+ fixeddest = fixup_memory_subreg (fixeddest, insn,
promoted_mode, 0);
temp_mode = GET_MODE (fixeddest);
}
@@ -2526,7 +2547,7 @@ fixup_var_refs_1 (var, promoted_mode, loc, insn, replacements, no_share)
/* Previously, X had the form (SUBREG:m1 (REG:PROMOTED_MODE ...)).
The REG was placed on the stack, so X now has the form (SUBREG:m1
- (MEM:m2 ...)).
+ (MEM:m2 ...)).
Return an rtx (MEM:m1 newaddr) which is equivalent. If any insns
must be emitted to compute NEWADDR, put them before INSN.
@@ -2545,7 +2566,7 @@ fixup_memory_subreg (x, insn, promoted_mode, uncritical)
rtx mem = SUBREG_REG (x);
rtx addr = XEXP (mem, 0);
enum machine_mode mode = GET_MODE (x);
- rtx result, seq;
+ rtx result;
/* Paradoxical SUBREGs are usually invalid during RTL generation. */
if (GET_MODE_SIZE (mode) > GET_MODE_SIZE (GET_MODE (mem)) && ! uncritical)
@@ -2555,7 +2576,7 @@ fixup_memory_subreg (x, insn, promoted_mode, uncritical)
if (BYTES_BIG_ENDIAN)
/* If the PROMOTED_MODE is wider than the mode of the MEM, adjust
the offset so that it points to the right location within the
- MEM. */
+ MEM. */
offset -= (GET_MODE_SIZE (promoted_mode) - GET_MODE_SIZE (GET_MODE (mem)));
if (!flag_force_addr
@@ -2565,10 +2586,8 @@ fixup_memory_subreg (x, insn, promoted_mode, uncritical)
start_sequence ();
result = adjust_address (mem, mode, offset);
- seq = get_insns ();
+ emit_insn_before (gen_sequence (), insn);
end_sequence ();
-
- emit_insn_before (seq, insn);
return result;
}
@@ -2577,7 +2596,7 @@ fixup_memory_subreg (x, insn, promoted_mode, uncritical)
If X itself is a (SUBREG (MEM ...) ...), return the replacement expression.
Otherwise return X, with its contents possibly altered.
- INSN, PROMOTED_MODE and UNCRITICAL are as for
+ INSN, PROMOTED_MODE and UNCRITICAL are as for
fixup_memory_subreg. */
static rtx
@@ -2605,14 +2624,14 @@ walk_fixup_memory_subreg (x, insn, promoted_mode, uncritical)
for (i = GET_RTX_LENGTH (code) - 1; i >= 0; i--)
{
if (fmt[i] == 'e')
- XEXP (x, i) = walk_fixup_memory_subreg (XEXP (x, i), insn,
+ XEXP (x, i) = walk_fixup_memory_subreg (XEXP (x, i), insn,
promoted_mode, uncritical);
else if (fmt[i] == 'E')
{
int j;
for (j = 0; j < XVECLEN (x, i); j++)
XVECEXP (x, i, j)
- = walk_fixup_memory_subreg (XVECEXP (x, i, j), insn,
+ = walk_fixup_memory_subreg (XVECEXP (x, i, j), insn,
promoted_mode, uncritical);
}
}
@@ -2658,7 +2677,7 @@ fixup_stack_1 (x, insn)
start_sequence ();
temp = copy_to_reg (ad);
- seq = get_insns ();
+ seq = gen_sequence ();
end_sequence ();
emit_insn_before (seq, insn);
return replace_equiv_address (x, temp);
@@ -2769,7 +2788,7 @@ optimize_bit_field (body, insn, equiv_mem)
memref = adjust_address (memref, mode, offset);
insns = get_insns ();
end_sequence ();
- emit_insn_before (insns, insn);
+ emit_insns_before (insns, insn);
/* Store this memory reference where
we found the bit field reference. */
@@ -2837,7 +2856,7 @@ optimize_bit_field (body, insn, equiv_mem)
special; just let the optimization be suppressed. */
if (apply_change_group () && seq)
- emit_insn_before (seq, insn);
+ emit_insns_before (seq, insn);
}
}
}
@@ -2895,19 +2914,15 @@ static int cfa_offset;
#define ARG_POINTER_CFA_OFFSET(FNDECL) FIRST_PARM_OFFSET (FNDECL)
#endif
-/* Build up a (MEM (ADDRESSOF (REG))) rtx for a register REG that just
- had its address taken. DECL is the decl or SAVE_EXPR for the
- object stored in the register, for later use if we do need to force
- REG into the stack. REG is overwritten by the MEM like in
- put_reg_into_stack. RESCAN is true if previously emitted
- instructions must be rescanned and modified now that the REG has
- been transformed. */
+/* Build up a (MEM (ADDRESSOF (REG))) rtx for a register REG that just had its
+ address taken. DECL is the decl or SAVE_EXPR for the object stored in the
+ register, for later use if we do need to force REG into the stack. REG is
+ overwritten by the MEM like in put_reg_into_stack. */
rtx
-gen_mem_addressof (reg, decl, rescan)
+gen_mem_addressof (reg, decl)
rtx reg;
tree decl;
- int rescan;
{
rtx r = gen_rtx_ADDRESSOF (Pmode, gen_reg_rtx (GET_MODE (reg)),
REGNO (reg), decl);
@@ -2945,11 +2960,10 @@ gen_mem_addressof (reg, decl, rescan)
if (DECL_P (decl) && decl_rtl == reg)
SET_DECL_RTL (decl, reg);
- if (rescan
- && (TREE_USED (decl) || (DECL_P (decl) && DECL_INITIAL (decl) != 0)))
+ if (TREE_USED (decl) || (DECL_P (decl) && DECL_INITIAL (decl) != 0))
fixup_var_refs (reg, GET_MODE (reg), TREE_UNSIGNED (type), reg, 0);
}
- else if (rescan)
+ else
fixup_var_refs (reg, GET_MODE (reg), 0, reg, 0);
return reg;
@@ -2974,7 +2988,7 @@ flush_addressof (decl)
static void
put_addressof_into_stack (r, ht)
rtx r;
- htab_t ht;
+ struct hash_table *ht;
{
tree decl, type;
int volatile_p, used_p;
@@ -3026,7 +3040,7 @@ purge_addressof_1 (loc, insn, force, store, ht)
rtx *loc;
rtx insn;
int force, store;
- htab_t ht;
+ struct hash_table *ht;
{
rtx x;
RTX_CODE code;
@@ -3058,7 +3072,7 @@ purge_addressof_1 (loc, insn, force, store, ht)
if (GET_CODE (XEXP (x, 0)) != MEM)
put_addressof_into_stack (x, ht);
-
+
/* We must create a copy of the rtx because it was created by
overwriting a REG rtx which is always shared. */
sub = copy_rtx (XEXP (XEXP (x, 0), 0));
@@ -3072,7 +3086,7 @@ purge_addressof_1 (loc, insn, force, store, ht)
&& ! validate_replace_rtx (x, sub, insn))
abort ();
- insns = get_insns ();
+ insns = gen_sequence ();
end_sequence ();
emit_insn_before (insns, insn);
return true;
@@ -3160,16 +3174,10 @@ purge_addressof_1 (loc, insn, force, store, ht)
size_x = GET_MODE_BITSIZE (GET_MODE (x));
size_sub = GET_MODE_BITSIZE (GET_MODE (sub));
- /* Do not frob unchanging MEMs. If a later reference forces the
- pseudo to the stack, we can wind up with multiple writes to
- an unchanging memory, which is invalid. */
- if (RTX_UNCHANGING_P (x) && size_x != size_sub)
- ;
-
/* Don't even consider working with paradoxical subregs,
or the moral equivalent seen here. */
- else if (size_x <= size_sub
- && int_mode_for_mode (GET_MODE (sub)) != BLKmode)
+ if (size_x <= size_sub
+ && int_mode_for_mode (GET_MODE (sub)) != BLKmode)
{
/* Do a bitfield insertion to mirror what would happen
in memory. */
@@ -3189,7 +3197,7 @@ purge_addressof_1 (loc, insn, force, store, ht)
end_sequence ();
goto give_up;
}
- seq = get_insns ();
+ seq = gen_sequence ();
end_sequence ();
emit_insn_before (seq, insn);
compute_insns_for_mem (p ? NEXT_INSN (p) : get_insns (),
@@ -3203,7 +3211,7 @@ purge_addressof_1 (loc, insn, force, store, ht)
might have created. */
unshare_all_rtl_again (get_insns ());
- seq = get_insns ();
+ seq = gen_sequence ();
end_sequence ();
p = emit_insn_after (seq, insn);
if (NEXT_INSN (insn))
@@ -3228,7 +3236,7 @@ purge_addressof_1 (loc, insn, force, store, ht)
goto give_up;
}
- seq = get_insns ();
+ seq = gen_sequence ();
end_sequence ();
emit_insn_before (seq, insn);
compute_insns_for_mem (p ? NEXT_INSN (p) : get_insns (),
@@ -3289,34 +3297,50 @@ purge_addressof_1 (loc, insn, force, store, ht)
return result;
}
+/* Return a new hash table entry in HT. */
+
+static struct hash_entry *
+insns_for_mem_newfunc (he, ht, k)
+ struct hash_entry *he;
+ struct hash_table *ht;
+ hash_table_key k ATTRIBUTE_UNUSED;
+{
+ struct insns_for_mem_entry *ifmhe;
+ if (he)
+ return he;
+
+ ifmhe = ((struct insns_for_mem_entry *)
+ hash_allocate (ht, sizeof (struct insns_for_mem_entry)));
+ ifmhe->insns = NULL_RTX;
+
+ return &ifmhe->he;
+}
+
/* Return a hash value for K, a REG. */
-static hashval_t
+static unsigned long
insns_for_mem_hash (k)
- const void * k;
+ hash_table_key k;
{
- /* Use the address of the key for the hash value. */
- struct insns_for_mem_entry *m = (struct insns_for_mem_entry *) k;
- return htab_hash_pointer (m->key);
+ /* K is really a RTX. Just use the address as the hash value. */
+ return (unsigned long) k;
}
-/* Return nonzero if K1 and K2 (two REGs) are the same. */
+/* Return non-zero if K1 and K2 (two REGs) are the same. */
-static int
+static bool
insns_for_mem_comp (k1, k2)
- const void * k1;
- const void * k2;
+ hash_table_key k1;
+ hash_table_key k2;
{
- struct insns_for_mem_entry *m1 = (struct insns_for_mem_entry *) k1;
- struct insns_for_mem_entry *m2 = (struct insns_for_mem_entry *) k2;
- return m1->key == m2->key;
+ return k1 == k2;
}
struct insns_for_mem_walk_info
{
/* The hash table that we are using to record which INSNs use which
MEMs. */
- htab_t ht;
+ struct hash_table *ht;
/* The INSN we are currently processing. */
rtx insn;
@@ -3338,26 +3362,18 @@ insns_for_mem_walk (r, data)
{
struct insns_for_mem_walk_info *ifmwi
= (struct insns_for_mem_walk_info *) data;
- struct insns_for_mem_entry tmp;
- tmp.insns = NULL_RTX;
if (ifmwi->pass == 0 && *r && GET_CODE (*r) == ADDRESSOF
&& GET_CODE (XEXP (*r, 0)) == REG)
- {
- PTR *e;
- tmp.key = XEXP (*r, 0);
- e = htab_find_slot (ifmwi->ht, &tmp, INSERT);
- if (*e == NULL)
- {
- *e = ggc_alloc (sizeof (tmp));
- memcpy (*e, &tmp, sizeof (tmp));
- }
- }
+ hash_lookup (ifmwi->ht, XEXP (*r, 0), /*create=*/1, /*copy=*/0);
else if (ifmwi->pass == 1 && *r && GET_CODE (*r) == REG)
{
- struct insns_for_mem_entry *ifme;
- tmp.key = *r;
- ifme = (struct insns_for_mem_entry *) htab_find (ifmwi->ht, &tmp);
+ /* Lookup this MEM in the hashtable, creating it if necessary. */
+ struct insns_for_mem_entry *ifme
+ = (struct insns_for_mem_entry *) hash_lookup (ifmwi->ht,
+ *r,
+ /*create=*/0,
+ /*copy=*/0);
/* If we have not already recorded this INSN, do so now. Since
we process the INSNs in order, we know that if we have
@@ -3377,7 +3393,7 @@ static void
compute_insns_for_mem (insns, last_insn, ht)
rtx insns;
rtx last_insn;
- htab_t ht;
+ struct hash_table *ht;
{
rtx insn;
struct insns_for_mem_walk_info ifmwi;
@@ -3412,7 +3428,7 @@ purge_addressof (insns)
rtx insns;
{
rtx insn;
- htab_t ht;
+ struct hash_table ht;
/* When we actually purge ADDRESSOFs, we turn REGs into MEMs. That
requires a fixup pass over the instruction stream to correct
@@ -3421,20 +3437,23 @@ purge_addressof (insns)
mentioned in very many instructions. So, we speed up the process
by pre-calculating which REGs occur in which INSNs; that allows
us to perform the fixup passes much more quickly. */
- ht = htab_create_ggc (1000, insns_for_mem_hash, insns_for_mem_comp, NULL);
- compute_insns_for_mem (insns, NULL_RTX, ht);
+ hash_table_init (&ht,
+ insns_for_mem_newfunc,
+ insns_for_mem_hash,
+ insns_for_mem_comp);
+ compute_insns_for_mem (insns, NULL_RTX, &ht);
for (insn = insns; insn; insn = NEXT_INSN (insn))
if (GET_CODE (insn) == INSN || GET_CODE (insn) == JUMP_INSN
|| GET_CODE (insn) == CALL_INSN)
{
if (! purge_addressof_1 (&PATTERN (insn), insn,
- asm_noperands (PATTERN (insn)) > 0, 0, ht))
+ asm_noperands (PATTERN (insn)) > 0, 0, &ht))
/* If we could not replace the ADDRESSOFs in the insn,
something is wrong. */
abort ();
- if (! purge_addressof_1 (&REG_NOTES (insn), NULL_RTX, 0, 0, ht))
+ if (! purge_addressof_1 (&REG_NOTES (insn), NULL_RTX, 0, 0, &ht))
{
/* If we could not replace the ADDRESSOFs in the insn's notes,
we can just remove the offending notes instead. */
@@ -3455,6 +3474,7 @@ purge_addressof (insns)
}
/* Clean up. */
+ hash_table_free (&ht);
purge_bitfield_addressof_replacements = 0;
purge_addressof_replacements = 0;
@@ -3494,7 +3514,7 @@ purge_single_hard_subreg_set (pattern)
reg = SUBREG_REG (reg);
}
-
+
if (GET_CODE (reg) == REG && REGNO (reg) < FIRST_PSEUDO_REGISTER)
{
reg = gen_rtx_REG (mode, REGNO (reg) + offset);
@@ -3523,7 +3543,7 @@ purge_hard_subreg_sets (insn)
case SET:
if (GET_CODE (SET_DEST (pattern)) == SUBREG)
purge_single_hard_subreg_set (pattern);
- break;
+ break;
case PARALLEL:
{
int j;
@@ -3577,19 +3597,11 @@ instantiate_virtual_regs (fndecl, insns)
|| GET_CODE (insn) == CALL_INSN)
{
instantiate_virtual_regs_1 (&PATTERN (insn), insn, 1);
- if (INSN_DELETED_P (insn))
- continue;
instantiate_virtual_regs_1 (&REG_NOTES (insn), NULL_RTX, 0);
/* Instantiate any virtual registers in CALL_INSN_FUNCTION_USAGE. */
if (GET_CODE (insn) == CALL_INSN)
instantiate_virtual_regs_1 (&CALL_INSN_FUNCTION_USAGE (insn),
NULL_RTX, 0);
-
- /* Past this point all ASM statements should match. Verify that
- to avoid failures later in the compilation process. */
- if (asm_noperands (PATTERN (insn)) >= 0
- && ! check_asm_operands (PATTERN (insn)))
- instantiate_virtual_regs_lossage (insn);
}
/* Instantiate the stack slots for the parm registers, for later use in
@@ -3652,7 +3664,7 @@ instantiate_decls_1 (let, valid_only)
for (t = BLOCK_VARS (let); t; t = TREE_CHAIN (t))
if (DECL_RTL_SET_P (t))
- instantiate_decl (DECL_RTL (t),
+ instantiate_decl (DECL_RTL (t),
int_size_in_bytes (TREE_TYPE (t)),
valid_only);
@@ -3664,7 +3676,7 @@ instantiate_decls_1 (let, valid_only)
/* Subroutine of the preceding procedures: Given RTL representing a
decl and the size of the object, do any instantiation required.
- If VALID_ONLY is nonzero, it means that the RTL should only be
+ If VALID_ONLY is non-zero, it means that the RTL should only be
changed if the new address is valid. */
static void
@@ -3757,22 +3769,6 @@ instantiate_new_reg (x, poffset)
return new;
}
-
-/* Called when instantiate_virtual_regs has failed to update the instruction.
- Usually this means that non-matching instruction has been emit, however for
- asm statements it may be the problem in the constraints. */
-static void
-instantiate_virtual_regs_lossage (insn)
- rtx insn;
-{
- if (asm_noperands (PATTERN (insn)) >= 0)
- {
- error_for_asm (insn, "impossible constraint in `asm'");
- delete_insn (insn);
- }
- else
- abort ();
-}
/* Given a pointer to a piece of rtx and an optional pointer to the
containing object, instantiate any virtual registers present in it.
@@ -3809,10 +3805,6 @@ instantiate_virtual_regs_1 (loc, object, extra_insns)
if (x == 0)
return 1;
- /* We may have detected and deleted invalid asm statements. */
- if (object && INSN_P (object) && INSN_DELETED_P (object))
- return 1;
-
code = GET_CODE (x);
/* Check for some special cases. */
@@ -3850,10 +3842,7 @@ instantiate_virtual_regs_1 (loc, object, extra_insns)
/* The only valid sources here are PLUS or REG. Just do
the simplest possible thing to handle them. */
if (GET_CODE (src) != REG && GET_CODE (src) != PLUS)
- {
- instantiate_virtual_regs_lossage (object);
- return 1;
- }
+ abort ();
start_sequence ();
if (GET_CODE (src) != REG)
@@ -3864,12 +3853,12 @@ instantiate_virtual_regs_1 (loc, object, extra_insns)
seq = get_insns ();
end_sequence ();
- emit_insn_before (seq, object);
+ emit_insns_before (seq, object);
SET_DEST (x) = new;
if (! validate_change (object, &SET_SRC (x), temp, 0)
|| ! extra_insns)
- instantiate_virtual_regs_lossage (object);
+ abort ();
return 1;
}
@@ -3976,13 +3965,10 @@ instantiate_virtual_regs_1 (loc, object, extra_insns)
seq = get_insns ();
end_sequence ();
- emit_insn_before (seq, object);
+ emit_insns_before (seq, object);
if (! validate_change (object, loc, temp, 0)
&& ! validate_replace_rtx (x, temp, object))
- {
- instantiate_virtual_regs_lossage (object);
- return 1;
- }
+ abort ();
}
}
@@ -4133,10 +4119,10 @@ instantiate_virtual_regs_1 (loc, object, extra_insns)
seq = get_insns ();
end_sequence ();
- emit_insn_before (seq, object);
+ emit_insns_before (seq, object);
if (! validate_change (object, loc, temp, 0)
&& ! validate_replace_rtx (x, temp, object))
- instantiate_virtual_regs_lossage (object);
+ abort ();
}
}
@@ -4336,6 +4322,17 @@ assign_parms (fndecl)
rtx conversion_insns = 0;
struct args_size alignment_pad;
+ /* Nonzero if the last arg is named `__builtin_va_alist',
+ which is used on some machines for old-fashioned non-ANSI varargs.h;
+ this should be stuck onto the stack as if it had arrived there. */
+ int hide_last_arg
+ = (current_function_varargs
+ && fnargs
+ && (parm = tree_last (fnargs)) != 0
+ && DECL_NAME (parm)
+ && (! strcmp (IDENTIFIER_POINTER (DECL_NAME (parm)),
+ "__builtin_va_alist")));
+
/* Nonzero if function takes extra anonymous args.
This means the last named arg must be on the stack
right before the anonymous ones. */
@@ -4379,7 +4376,7 @@ assign_parms (fndecl)
}
max_parm_reg = LAST_VIRTUAL_REGISTER + 1;
- parm_reg_stack_loc = (rtx *) ggc_alloc_cleared (max_parm_reg * sizeof (rtx));
+ parm_reg_stack_loc = (rtx *) xcalloc (max_parm_reg, sizeof (rtx));
#ifdef INIT_CUMULATIVE_INCOMING_ARGS
INIT_CUMULATIVE_INCOMING_ARGS (args_so_far, fntype, NULL_RTX);
@@ -4404,7 +4401,7 @@ assign_parms (fndecl)
/* Set LAST_NAMED if this is last named arg before last
anonymous args. */
- if (stdarg)
+ if (stdarg || current_function_varargs)
{
tree tem;
@@ -4432,6 +4429,11 @@ assign_parms (fndecl)
continue;
}
+ /* For varargs.h function, save info about regs and stack space
+ used by the individual args, not including the va_alist arg. */
+ if (hide_last_arg && last_named)
+ current_function_args_info = args_so_far;
+
/* Find mode of arg as it is passed, and mode of arg
as it should be during execution of this function. */
passed_mode = TYPE_MODE (passed_type);
@@ -4472,15 +4474,6 @@ assign_parms (fndecl)
passed_pointer = 1;
passed_mode = nominal_mode = Pmode;
}
- /* See if the frontend wants to pass this by invisible reference. */
- else if (passed_type != nominal_type
- && POINTER_TYPE_P (passed_type)
- && TREE_TYPE (passed_type) == nominal_type)
- {
- nominal_type = passed_type;
- passed_pointer = 1;
- passed_mode = nominal_mode = Pmode;
- }
promoted_mode = passed_mode;
@@ -4588,12 +4581,6 @@ assign_parms (fndecl)
if (nregs > 0)
{
-#if defined (REG_PARM_STACK_SPACE) && !defined (MAYBE_REG_PARM_STACK_SPACE)
- /* When REG_PARM_STACK_SPACE is nonzero, stack space for
- split parameters was allocated by our caller, so we
- won't be pushing it in the prolog. */
- if (REG_PARM_STACK_SPACE (fndecl) == 0)
-#endif
current_function_pretend_args_size
= (((nregs * UNITS_PER_WORD) + (PARM_BOUNDARY / BITS_PER_UNIT) - 1)
/ (PARM_BOUNDARY / BITS_PER_UNIT)
@@ -4628,8 +4615,8 @@ assign_parms (fndecl)
to indicate there is no preallocated stack slot for the parm. */
if (entry_parm == stack_parm
- || (GET_CODE (entry_parm) == PARALLEL
- && XEXP (XVECEXP (entry_parm, 0, 0), 0) == NULL_RTX)
+ || (GET_CODE (entry_parm) == PARALLEL
+ && XEXP (XVECEXP (entry_parm, 0, 0), 0) == NULL_RTX)
#if defined (REG_PARM_STACK_SPACE) && ! defined (MAYBE_REG_PARM_STACK_SPACE)
/* On some machines, even if a parm value arrives in a register
there is still an (uninitialized) stack slot allocated for it.
@@ -4783,7 +4770,7 @@ assign_parms (fndecl)
if (passed_pointer)
{
rtx x = gen_rtx_MEM (TYPE_MODE (TREE_TYPE (passed_type)),
- parmreg);
+ parmreg);
set_mem_attributes (x, parm, 1);
SET_DECL_RTL (parm, x);
}
@@ -4792,7 +4779,7 @@ assign_parms (fndecl)
SET_DECL_RTL (parm, parmreg);
maybe_set_unchanging (DECL_RTL (parm), parm);
}
-
+
/* Copy the value into the register. */
if (nominal_mode != passed_mode
|| promoted_nominal_mode != promoted_mode)
@@ -4835,7 +4822,7 @@ assign_parms (fndecl)
/* The argument is already sign/zero extended, so note it
into the subreg. */
SUBREG_PROMOTED_VAR_P (tempreg) = 1;
- SUBREG_PROMOTED_UNSIGNED_SET (tempreg, unsignedp);
+ SUBREG_PROMOTED_UNSIGNED_P (tempreg) = unsignedp;
}
/* TREE_USED gets set erroneously during expand_assignment. */
@@ -4874,7 +4861,7 @@ assign_parms (fndecl)
push_to_sequence (conversion_insns);
emit_move_insn (tempreg, DECL_RTL (parm));
SET_DECL_RTL (parm,
- convert_to_mode (GET_MODE (parmreg),
+ convert_to_mode (GET_MODE (parmreg),
tempreg,
unsigned_p));
emit_move_insn (parmreg, DECL_RTL (parm));
@@ -4953,7 +4940,7 @@ assign_parms (fndecl)
but it's also rare and we need max_parm_reg to be
precisely correct. */
max_parm_reg = regno + 1;
- new = (rtx *) ggc_realloc (parm_reg_stack_loc,
+ new = (rtx *) xrealloc (parm_reg_stack_loc,
max_parm_reg * sizeof (rtx));
memset ((char *) (new + old_max_parm_reg), 0,
(max_parm_reg - old_max_parm_reg) * sizeof (rtx));
@@ -5044,7 +5031,7 @@ assign_parms (fndecl)
stack. So, we go back to that sequence, just so that
the fixups will happen. */
push_to_sequence (conversion_insns);
- put_var_into_stack (parm, /*rescan=*/true);
+ put_var_into_stack (parm);
conversion_insns = get_insns ();
end_sequence ();
}
@@ -5129,7 +5116,7 @@ assign_parms (fndecl)
/* Output all parameter conversion instructions (possibly including calls)
now that all parameters have been copied out of hard registers. */
- emit_insn (conversion_insns);
+ emit_insns (conversion_insns);
last_parm_insn = get_last_insn ();
@@ -5170,7 +5157,8 @@ assign_parms (fndecl)
/* For stdarg.h function, save info about
regs and stack space used by the named args. */
- current_function_args_info = args_so_far;
+ if (!hide_last_arg)
+ current_function_args_info = args_so_far;
/* Set the rtx used for the function return value. Put this in its
own variable so any optimizers that need this information don't have
@@ -5260,7 +5248,7 @@ promoted_input_arg (regno, pmode, punsignedp)
The starting offset and size for this parm are returned in *OFFSET_PTR
and *ARG_SIZE_PTR, respectively.
- IN_REGS is nonzero if the argument will be passed in registers. It will
+ IN_REGS is non-zero if the argument will be passed in registers. It will
never be set if REG_PARM_STACK_SPACE is not defined.
FNDECL is the function in which the argument was defined.
@@ -5298,9 +5286,6 @@ locate_and_pad_parm (passed_mode, type, in_regs, fndecl,
= type ? size_in_bytes (type) : size_int (GET_MODE_SIZE (passed_mode));
enum direction where_pad = FUNCTION_ARG_PADDING (passed_mode, type);
int boundary = FUNCTION_ARG_BOUNDARY (passed_mode, type);
-#ifdef ARGS_GROW_DOWNWARD
- tree s2 = sizetree;
-#endif
#ifdef REG_PARM_STACK_SPACE
/* If we have found a stack parm before we reach the end of the
@@ -5346,20 +5331,13 @@ locate_and_pad_parm (passed_mode, type, in_regs, fndecl,
offset_ptr->constant = -initial_offset_ptr->constant;
offset_ptr->var = 0;
}
-
if (where_pad != none
&& (!host_integerp (sizetree, 1)
|| (tree_low_cst (sizetree, 1) * BITS_PER_UNIT) % PARM_BOUNDARY))
- s2 = round_up (s2, PARM_BOUNDARY / BITS_PER_UNIT);
- SUB_PARM_SIZE (*offset_ptr, s2);
-
- if (!in_regs
-#ifdef REG_PARM_STACK_SPACE
- || REG_PARM_STACK_SPACE (fndecl) > 0
-#endif
- )
+ sizetree = round_up (sizetree, PARM_BOUNDARY / BITS_PER_UNIT);
+ SUB_PARM_SIZE (*offset_ptr, sizetree);
+ if (where_pad != downward)
pad_to_arg_alignment (offset_ptr, boundary, alignment_pad);
-
if (initial_offset_ptr->var)
arg_size_ptr->var = size_binop (MINUS_EXPR,
size_binop (MINUS_EXPR,
@@ -5371,13 +5349,6 @@ locate_and_pad_parm (passed_mode, type, in_regs, fndecl,
arg_size_ptr->constant = (-initial_offset_ptr->constant
- offset_ptr->constant);
- /* Pad_below needs the pre-rounded size to know how much to pad below.
- We only pad parameters which are not in registers as they have their
- padding done elsewhere. */
- if (where_pad == downward
- && !in_regs)
- pad_below (offset_ptr, passed_mode, sizetree);
-
#else /* !ARGS_GROW_DOWNWARD */
if (!in_regs
#ifdef REG_PARM_STACK_SPACE
@@ -5445,8 +5416,8 @@ pad_to_arg_alignment (offset_ptr, boundary, alignment_pad)
(ARGS_SIZE_TREE (*offset_ptr),
boundary / BITS_PER_UNIT);
offset_ptr->constant = 0; /*?*/
- if (boundary > PARM_BOUNDARY && boundary > STACK_BOUNDARY)
- alignment_pad->var = size_binop (MINUS_EXPR, offset_ptr->var,
+ if (boundary > PARM_BOUNDARY && boundary > STACK_BOUNDARY)
+ alignment_pad->var = size_binop (MINUS_EXPR, offset_ptr->var,
save_var);
}
else
@@ -5463,6 +5434,7 @@ pad_to_arg_alignment (offset_ptr, boundary, alignment_pad)
}
}
+#ifndef ARGS_GROW_DOWNWARD
static void
pad_below (offset_ptr, passed_mode, sizetree)
struct args_size *offset_ptr;
@@ -5490,6 +5462,7 @@ pad_below (offset_ptr, passed_mode, sizetree)
}
}
}
+#endif
/* Walk the tree of blocks describing the binding levels within a function
and warn about uninitialized variables.
@@ -5504,7 +5477,7 @@ uninitialized_vars_warning (block)
for (decl = BLOCK_VARS (block); decl; decl = TREE_CHAIN (decl))
{
if (warn_uninitialized
- && TREE_CODE (decl) == VAR_DECL
+ && TREE_CODE (decl) == VAR_DECL
/* These warnings are unreliable for and aggregates
because assigning the fields one by one can fail to convince
flow.c that the entire aggregate was initialized.
@@ -5524,7 +5497,7 @@ uninitialized_vars_warning (block)
warning_with_decl (decl,
"`%s' might be used uninitialized in this function");
if (extra_warnings
- && TREE_CODE (decl) == VAR_DECL
+ && TREE_CODE (decl) == VAR_DECL
&& DECL_RTL (decl) != 0
&& GET_CODE (DECL_RTL (decl)) == REG
&& regno_clobbered_at_setjmp (REGNO (DECL_RTL (decl))))
@@ -5580,7 +5553,7 @@ setjmp_protect (block)
||
#endif
! DECL_REGISTER (decl)))
- put_var_into_stack (decl, /*rescan=*/true);
+ put_var_into_stack (decl);
for (sub = BLOCK_SUBBLOCKS (block); sub; sub = TREE_CHAIN (sub))
setjmp_protect (sub);
}
@@ -5607,7 +5580,7 @@ setjmp_protect_args ()
||
#endif
! DECL_REGISTER (decl)))
- put_var_into_stack (decl, /*rescan=*/true);
+ put_var_into_stack (decl);
}
/* Return the context-pointer register corresponding to DECL,
@@ -5766,8 +5739,12 @@ trampoline_address (function)
#else
/* If rounding needed, allocate extra space
to ensure we have TRAMPOLINE_SIZE bytes left after rounding up. */
+#ifdef TRAMPOLINE_ALIGNMENT
#define TRAMPOLINE_REAL_SIZE \
(TRAMPOLINE_SIZE + (TRAMPOLINE_ALIGNMENT / BITS_PER_UNIT) - 1)
+#else
+#define TRAMPOLINE_REAL_SIZE (TRAMPOLINE_SIZE)
+#endif
tramp = assign_stack_local_1 (BLKmode, TRAMPOLINE_REAL_SIZE, 0,
fp ? fp : cfun);
#endif
@@ -5802,6 +5779,7 @@ static rtx
round_trampoline_addr (tramp)
rtx tramp;
{
+#ifdef TRAMPOLINE_ALIGNMENT
/* Round address up to desired boundary. */
rtx temp = gen_reg_rtx (Pmode);
rtx addend = GEN_INT (TRAMPOLINE_ALIGNMENT / BITS_PER_UNIT - 1);
@@ -5811,7 +5789,7 @@ round_trampoline_addr (tramp)
temp, 0, OPTAB_LIB_WIDEN);
tramp = expand_simple_binop (Pmode, AND, temp, mask,
temp, 0, OPTAB_LIB_WIDEN);
-
+#endif
return tramp;
}
@@ -5964,6 +5942,8 @@ reorder_blocks ()
/* Remove deleted blocks from the block fragment chains. */
reorder_fix_fragments (block);
+
+ VARRAY_FREE (block_stack);
}
/* Helper function for reorder_blocks. Reset TREE_ASM_WRITTEN. */
@@ -6051,7 +6031,7 @@ reorder_blocks_1 (insns, current_block, p_block_stack)
static void
reorder_fix_fragments (block)
- tree block;
+ tree block;
{
while (block)
{
@@ -6063,7 +6043,7 @@ reorder_fix_fragments (block)
if (! TREE_ASM_WRITTEN (dup_origin))
{
new_origin = BLOCK_FRAGMENT_CHAIN (dup_origin);
-
+
/* Find the first of the remaining fragments. There must
be at least one -- the current block. */
while (! TREE_ASM_WRITTEN (new_origin))
@@ -6332,7 +6312,8 @@ prepare_function_start ()
/* Indicate we have no need of a frame pointer yet. */
frame_pointer_needed = 0;
- /* By default assume not stdarg. */
+ /* By default assume not varargs or stdarg. */
+ current_function_varargs = 0;
current_function_stdarg = 0;
/* We haven't made any trampolines for this function yet. */
@@ -6343,19 +6324,10 @@ prepare_function_start ()
current_function_outgoing_args_size = 0;
- current_function_funcdef_no = funcdef_no++;
-
- cfun->arc_profile = profile_arc_flag || flag_test_coverage;
-
- cfun->arc_profile = profile_arc_flag || flag_test_coverage;
-
- cfun->function_frequency = FUNCTION_FREQUENCY_NORMAL;
-
- cfun->max_jumptable_ents = 0;
-
- (*lang_hooks.function.init) (cfun);
+ if (init_lang_status)
+ (*init_lang_status) (cfun);
if (init_machine_status)
- cfun->machine = (*init_machine_status) ();
+ (*init_machine_status) (cfun);
}
/* Initialize the rtl expansion mechanism so that we can do simple things
@@ -6379,7 +6351,7 @@ init_function_start (subr, filename, line)
{
prepare_function_start ();
- current_function_name = (*lang_hooks.decl_printable_name) (subr, 2);
+ current_function_name = (*decl_printable_name) (subr, 2);
cfun->decl = subr;
/* Nonzero if this is a nested function that uses a static chain. */
@@ -6434,6 +6406,15 @@ init_function_for_compilation ()
VARRAY_GROW (sibcall_epilogue, 0);
}
+/* Indicate that the current function uses extra args
+ not explicitly mentioned in the argument list in any fashion. */
+
+void
+mark_varargs ()
+{
+ current_function_varargs = 1;
+}
+
/* Expand a call to __main at the beginning of a possible main function. */
#if defined(INIT_SECTION_ASM_OP) && !defined(INVOKE__main)
@@ -6463,11 +6444,11 @@ expand_main_function ()
#endif
if (tmp != stack_pointer_rtx)
emit_move_insn (stack_pointer_rtx, tmp);
-
+
/* Enlist allocate_dynamic_stack_space to pick up the pieces. */
tmp = force_reg (Pmode, const0_rtx);
allocate_dynamic_stack_space (tmp, NULL_RTX, BIGGEST_ALIGNMENT);
- seq = get_insns ();
+ seq = gen_sequence ();
end_sequence ();
for (tmp = get_last_insn (); tmp; tmp = PREV_INSN (tmp))
@@ -6486,6 +6467,8 @@ expand_main_function ()
#endif
}
+extern struct obstack permanent_obstack;
+
/* The PENDING_SIZES represent the sizes of variable-sized types.
Create RTL for the various sizes now (using temporary variables),
so that we can refer to the sizes from the RTL we are generating
@@ -6614,17 +6597,18 @@ expand_function_start (subr, parms_have_cleanups)
subr, 1);
/* Structures that are returned in registers are not aggregate_value_p,
- so we may see a PARALLEL or a REG. */
- if (REG_P (hard_reg))
- SET_DECL_RTL (DECL_RESULT (subr), gen_reg_rtx (GET_MODE (hard_reg)));
- else if (GET_CODE (hard_reg) == PARALLEL)
- SET_DECL_RTL (DECL_RESULT (subr), gen_group_rtx (hard_reg));
+ so we may see a PARALLEL. Don't play pseudo games with this. */
+ if (! REG_P (hard_reg))
+ SET_DECL_RTL (DECL_RESULT (subr), hard_reg);
else
- abort ();
+ {
+ /* Create the pseudo. */
+ SET_DECL_RTL (DECL_RESULT (subr), gen_reg_rtx (GET_MODE (hard_reg)));
- /* Set DECL_REGISTER flag so that expand_function_end will copy the
- result to the real return register(s). */
- DECL_REGISTER (DECL_RESULT (subr)) = 1;
+ /* Needed because we may need to move this to memory
+ in case it's a named return value whose address is taken. */
+ DECL_REGISTER (DECL_RESULT (subr)) = 1;
+ }
}
/* Initialize rtx for parameters and local variables.
@@ -6636,8 +6620,8 @@ expand_function_start (subr, parms_have_cleanups)
avoid conflicts with the parameter passing registers. */
if (SMALL_REGISTER_CLASSES && current_function_needs_context)
- if (GET_CODE (static_chain_incoming_rtx) != REG)
- emit_move_insn (last_ptr, static_chain_incoming_rtx);
+ if (GET_CODE (static_chain_incoming_rtx) != REG)
+ emit_move_insn (last_ptr, static_chain_incoming_rtx);
/* The following was moved from init_function_start.
The move is supposed to make sdb output more accurate. */
@@ -6712,8 +6696,9 @@ expand_function_start (subr, parms_have_cleanups)
if (current_function_profile)
{
+ current_function_profile_label_no = profile_label_no++;
#ifdef PROFILE_HOOK
- PROFILE_HOOK (current_function_funcdef_no);
+ PROFILE_HOOK (current_function_profile_label_no);
#endif
}
@@ -6813,8 +6798,6 @@ use_return_register ()
diddle_return_value (do_use_return_reg, NULL);
}
-static GTY(()) rtx initial_trampoline;
-
/* Generate RTL for the end of the current function.
FILENAME and LINE are the current position in the source file.
@@ -6830,6 +6813,10 @@ expand_function_end (filename, line, end_bindings)
tree link;
rtx clobber_after;
+#ifdef TRAMPOLINE_TEMPLATE
+ static rtx initial_trampoline;
+#endif
+
finish_expr_for_function ();
/* If arg_pointer_save_area was referenced only from a nested
@@ -6868,6 +6855,8 @@ expand_function_end (filename, line, end_bindings)
initial_trampoline
= gen_rtx_MEM (BLKmode, assemble_trampoline_template ());
set_mem_align (initial_trampoline, TRAMPOLINE_ALIGNMENT);
+
+ ggc_add_rtx_root (&initial_trampoline, 1);
}
#endif
@@ -6877,14 +6866,14 @@ expand_function_end (filename, line, end_bindings)
#ifdef TRAMPOLINE_TEMPLATE
blktramp = replace_equiv_address (initial_trampoline, tramp);
emit_block_move (blktramp, initial_trampoline,
- GEN_INT (TRAMPOLINE_SIZE), BLOCK_OP_NORMAL);
+ GEN_INT (TRAMPOLINE_SIZE));
#endif
INITIALIZE_TRAMPOLINE (tramp, XEXP (DECL_RTL (function), 0), context);
seq = get_insns ();
end_sequence ();
/* Put those insns at entry to the containing function (this one). */
- emit_insn_before (seq, tail_recursion_reentry);
+ emit_insns_before (seq, tail_recursion_reentry);
}
/* If we are doing stack checking and this function makes calls,
@@ -6902,7 +6891,7 @@ expand_function_end (filename, line, end_bindings)
GEN_INT (STACK_CHECK_MAX_FRAME_SIZE));
seq = get_insns ();
end_sequence ();
- emit_insn_before (seq, tail_recursion_reentry);
+ emit_insns_before (seq, tail_recursion_reentry);
break;
}
}
@@ -7032,13 +7021,13 @@ expand_function_end (filename, line, end_bindings)
/* If this is a BLKmode structure being returned in registers,
then use the mode computed in expand_return. Note that if
- decl_rtl is memory, then its mode may have been changed,
+ decl_rtl is memory, then its mode may have been changed,
but that current_function_return_rtx has not. */
if (GET_MODE (real_decl_rtl) == BLKmode)
PUT_MODE (real_decl_rtl, GET_MODE (decl_rtl));
/* If a named return value dumped decl_return to memory, then
- we may need to re-do the PROMOTE_MODE signed/unsigned
+ we may need to re-do the PROMOTE_MODE signed/unsigned
extension. */
if (GET_MODE (real_decl_rtl) != GET_MODE (decl_rtl))
{
@@ -7052,16 +7041,8 @@ expand_function_end (filename, line, end_bindings)
convert_move (real_decl_rtl, decl_rtl, unsignedp);
}
else if (GET_CODE (real_decl_rtl) == PARALLEL)
- {
- /* If expand_function_start has created a PARALLEL for decl_rtl,
- move the result to the real return registers. Otherwise, do
- a group load from decl_rtl for a named return. */
- if (GET_CODE (decl_rtl) == PARALLEL)
- emit_group_move (real_decl_rtl, decl_rtl);
- else
- emit_group_load (real_decl_rtl, decl_rtl,
- int_size_in_bytes (TREE_TYPE (decl_result)));
- }
+ emit_group_load (real_decl_rtl, decl_rtl,
+ int_size_in_bytes (TREE_TYPE (decl_result)));
else
emit_move_insn (real_decl_rtl, decl_rtl);
}
@@ -7113,14 +7094,14 @@ expand_function_end (filename, line, end_bindings)
/* Emit the actual code to clobber return register. */
{
rtx seq, after;
-
+
start_sequence ();
clobber_return_register ();
- seq = get_insns ();
+ seq = gen_sequence ();
end_sequence ();
after = emit_insn_after (seq, clobber_after);
-
+
if (clobber_after != after)
cfun->x_clobber_return_insn = after;
}
@@ -7157,12 +7138,12 @@ get_arg_pointer_save_area (f)
{
rtx seq;
- /* Save the arg pointer at the beginning of the function. The
+ /* Save the arg pointer at the beginning of the function. The
generated stack slot may not be a valid memory address, so we
have to check it and fix it if necessary. */
start_sequence ();
emit_move_insn (validize_mem (ret), virtual_incoming_args_rtx);
- seq = get_insns ();
+ seq = gen_sequence ();
end_sequence ();
push_topmost_sequence ();
@@ -7173,38 +7154,35 @@ get_arg_pointer_save_area (f)
return ret;
}
-/* Extend a vector that records the INSN_UIDs of INSNS
- (a list of one or more insns). */
+/* Extend a vector that records the INSN_UIDs of INSNS (either a
+ sequence or a single insn). */
static void
record_insns (insns, vecp)
rtx insns;
varray_type *vecp;
{
- int i, len;
- rtx tmp;
-
- tmp = insns;
- len = 0;
- while (tmp != NULL_RTX)
+ if (GET_CODE (insns) == SEQUENCE)
{
- len++;
- tmp = NEXT_INSN (tmp);
- }
+ int len = XVECLEN (insns, 0);
+ int i = VARRAY_SIZE (*vecp);
- i = VARRAY_SIZE (*vecp);
- VARRAY_GROW (*vecp, i + len);
- tmp = insns;
- while (tmp != NULL_RTX)
+ VARRAY_GROW (*vecp, i + len);
+ while (--len >= 0)
+ {
+ VARRAY_INT (*vecp, i) = INSN_UID (XVECEXP (insns, 0, len));
+ ++i;
+ }
+ }
+ else
{
- VARRAY_INT (*vecp, i) = INSN_UID (tmp);
- i++;
- tmp = NEXT_INSN (tmp);
+ int i = VARRAY_SIZE (*vecp);
+ VARRAY_GROW (*vecp, i + 1);
+ VARRAY_INT (*vecp, i) = INSN_UID (insns);
}
}
-/* Determine how many INSN_UIDs in VEC are part of INSN. Because we can
- be running after reorg, SEQUENCE rtl is possible. */
+/* Determine how many INSN_UIDs in VEC are part of INSN. */
static int
contains (insn, vec)
@@ -7316,21 +7294,20 @@ struct epi_info
static void handle_epilogue_set PARAMS ((rtx, struct epi_info *));
static void emit_equiv_load PARAMS ((struct epi_info *));
-/* Modify INSN, a list of one or more insns that is part of the epilogue, to
- no modifications to the stack pointer. Return the new list of insns. */
+/* Modify SEQ, a SEQUENCE that is part of the epilogue, to no modifications
+ to the stack pointer. Return the new sequence. */
static rtx
-keep_stack_depressed (insns)
- rtx insns;
+keep_stack_depressed (seq)
+ rtx seq;
{
- int j;
+ int i, j;
struct epi_info info;
- rtx insn, next;
/* If the epilogue is just a single instruction, it ust be OK as is. */
- if (NEXT_INSN (insns) == NULL_RTX)
- return insns;
+ if (GET_CODE (seq) != SEQUENCE)
+ return seq;
/* Otherwise, start a sequence, initialize the information we have, and
process all the insns we were given. */
@@ -7340,16 +7317,13 @@ keep_stack_depressed (insns)
info.sp_offset = 0;
info.equiv_reg_src = 0;
- insn = insns;
- next = NULL_RTX;
- while (insn != NULL_RTX)
+ for (i = 0; i < XVECLEN (seq, 0); i++)
{
- next = NEXT_INSN (insn);
+ rtx insn = XVECEXP (seq, 0, i);
if (!INSN_P (insn))
{
add_insn (insn);
- insn = next;
continue;
}
@@ -7385,7 +7359,6 @@ keep_stack_depressed (insns)
{
emit_equiv_load (&info);
add_insn (insn);
- insn = next;
continue;
}
else if (GET_CODE (retaddr) == MEM
@@ -7486,18 +7459,16 @@ keep_stack_depressed (insns)
info.sp_equiv_reg = info.new_sp_equiv_reg;
info.sp_offset = info.new_sp_offset;
-
- insn = next;
}
- insns = get_insns ();
+ seq = gen_sequence ();
end_sequence ();
- return insns;
+ return seq;
}
/* SET is a SET from an insn in the epilogue. P is a pointer to the epi_info
structure that contains information about what we've seen so far. We
- process this SET by either updating that data or by emitting one or
+ process this SET by either updating that data or by emitting one or
more insns. */
static void
@@ -7607,10 +7578,12 @@ thread_prologue_and_epilogue_insns (f)
emit_insn (seq);
/* Retain a map of the prologue insns. */
+ if (GET_CODE (seq) != SEQUENCE)
+ seq = get_insns ();
record_insns (seq, &prologue);
prologue_end = emit_note (NULL, NOTE_INSN_PROLOGUE_END);
- seq = get_insns ();
+ seq = gen_sequence ();
end_sequence ();
/* Can't deal with multiple successors of the entry block
@@ -7701,8 +7674,19 @@ thread_prologue_and_epilogue_insns (f)
that with a conditional return instruction. */
else if (condjump_p (jump))
{
- if (! redirect_jump (jump, 0, 0))
+ rtx ret, *loc;
+
+ ret = SET_SRC (PATTERN (jump));
+ if (GET_CODE (XEXP (ret, 1)) == LABEL_REF)
+ loc = &XEXP (ret, 1);
+ else
+ loc = &XEXP (ret, 2);
+ ret = gen_rtx_RETURN (VOIDmode);
+
+ if (! validate_change (jump, loc, ret, 0))
continue;
+ if (JUMP_LABEL (jump))
+ LABEL_NUSES (JUMP_LABEL (jump))--;
/* If this block has only one successor, it both jumps
and falls through to the fallthru block, so we can't
@@ -7758,9 +7742,11 @@ thread_prologue_and_epilogue_insns (f)
emit_jump_insn (seq);
/* Retain a map of the epilogue insns. */
+ if (GET_CODE (seq) != SEQUENCE)
+ seq = get_insns ();
record_insns (seq, &epilogue);
- seq = get_insns ();
+ seq = gen_sequence ();
end_sequence ();
insert_insn_on_edge (seq, e);
@@ -7786,17 +7772,16 @@ epilogue_done:
continue;
start_sequence ();
- emit_insn (gen_sibcall_epilogue ());
- seq = get_insns ();
+ seq = gen_sibcall_epilogue ();
end_sequence ();
- /* Retain a map of the epilogue insns. Used in life analysis to
- avoid getting rid of sibcall epilogue insns. Do this before we
- actually emit the sequence. */
- record_insns (seq, &sibcall_epilogue);
-
i = PREV_INSN (insn);
newinsn = emit_insn_before (seq, insn);
+
+ /* Retain a map of the epilogue insns. Used in life analysis to
+ avoid getting rid of sibcall epilogue insns. */
+ record_insns (GET_CODE (seq) == SEQUENCE
+ ? seq : newinsn, &sibcall_epilogue);
}
#endif
@@ -7812,7 +7797,7 @@ epilogue_done:
note before the end of the first basic block, if there isn't
one already there.
- ??? This behavior is completely broken when dealing with
+ ??? This behaviour is completely broken when dealing with
multiple entry functions. We simply place the note always
into first basic block and let alternate entry points
to be missed.
@@ -7833,7 +7818,7 @@ epilogue_done:
}
/* Find the last line number note in the first block. */
- for (insn = ENTRY_BLOCK_PTR->next_bb->end;
+ for (insn = BASIC_BLOCK (0)->end;
insn != prologue_end && insn;
insn = PREV_INSN (insn))
if (GET_CODE (insn) == NOTE && NOTE_LINE_NUMBER (insn) > 0)
@@ -7906,7 +7891,7 @@ reposition_prologue_and_epilogue_notes (f)
break;
}
}
-
+
if (last)
{
rtx next;
@@ -7971,14 +7956,122 @@ reposition_prologue_and_epilogue_notes (f)
#endif /* HAVE_prologue or HAVE_epilogue */
}
+/* Mark P for GC. */
+
+static void
+mark_function_status (p)
+ struct function *p;
+{
+ struct var_refs_queue *q;
+ struct temp_slot *t;
+ int i;
+ rtx *r;
+
+ if (p == 0)
+ return;
+
+ ggc_mark_rtx (p->arg_offset_rtx);
+
+ if (p->x_parm_reg_stack_loc)
+ for (i = p->x_max_parm_reg, r = p->x_parm_reg_stack_loc;
+ i > 0; --i, ++r)
+ ggc_mark_rtx (*r);
+
+ ggc_mark_rtx (p->return_rtx);
+ ggc_mark_rtx (p->x_cleanup_label);
+ ggc_mark_rtx (p->x_return_label);
+ ggc_mark_rtx (p->x_save_expr_regs);
+ ggc_mark_rtx (p->x_stack_slot_list);
+ ggc_mark_rtx (p->x_parm_birth_insn);
+ ggc_mark_rtx (p->x_tail_recursion_label);
+ ggc_mark_rtx (p->x_tail_recursion_reentry);
+ ggc_mark_rtx (p->internal_arg_pointer);
+ ggc_mark_rtx (p->x_arg_pointer_save_area);
+ ggc_mark_tree (p->x_rtl_expr_chain);
+ ggc_mark_rtx (p->x_last_parm_insn);
+ ggc_mark_tree (p->x_context_display);
+ ggc_mark_tree (p->x_trampoline_list);
+ ggc_mark_rtx (p->epilogue_delay_list);
+ ggc_mark_rtx (p->x_clobber_return_insn);
+
+ for (t = p->x_temp_slots; t != 0; t = t->next)
+ {
+ ggc_mark (t);
+ ggc_mark_rtx (t->slot);
+ ggc_mark_rtx (t->address);
+ ggc_mark_tree (t->rtl_expr);
+ ggc_mark_tree (t->type);
+ }
+
+ for (q = p->fixup_var_refs_queue; q != 0; q = q->next)
+ {
+ ggc_mark (q);
+ ggc_mark_rtx (q->modified);
+ }
+
+ ggc_mark_rtx (p->x_nonlocal_goto_handler_slots);
+ ggc_mark_rtx (p->x_nonlocal_goto_handler_labels);
+ ggc_mark_rtx (p->x_nonlocal_goto_stack_level);
+ ggc_mark_tree (p->x_nonlocal_labels);
+
+ mark_hard_reg_initial_vals (p);
+}
+
+/* Mark the struct function pointed to by *ARG for GC, if it is not
+ NULL. This is used to mark the current function and the outer
+ function chain. */
+
+static void
+maybe_mark_struct_function (arg)
+ void *arg;
+{
+ struct function *f = *(struct function **) arg;
+
+ if (f == 0)
+ return;
+
+ ggc_mark_struct_function (f);
+}
+
+/* Mark a struct function * for GC. This is called from ggc-common.c. */
+
+void
+ggc_mark_struct_function (f)
+ struct function *f;
+{
+ ggc_mark (f);
+ ggc_mark_tree (f->decl);
+
+ mark_function_status (f);
+ mark_eh_status (f->eh);
+ mark_stmt_status (f->stmt);
+ mark_expr_status (f->expr);
+ mark_emit_status (f->emit);
+ mark_varasm_status (f->varasm);
+
+ if (mark_machine_status)
+ (*mark_machine_status) (f);
+ if (mark_lang_status)
+ (*mark_lang_status) (f);
+
+ if (f->original_arg_vector)
+ ggc_mark_rtvec ((rtvec) f->original_arg_vector);
+ if (f->original_decl_initial)
+ ggc_mark_tree (f->original_decl_initial);
+ if (f->outer)
+ ggc_mark_struct_function (f->outer);
+}
+
/* Called once, at initialization, to initialize function.c. */
void
init_function_once ()
{
+ ggc_add_root (&cfun, 1, sizeof cfun, maybe_mark_struct_function);
+ ggc_add_root (&outer_function_chain, 1, sizeof outer_function_chain,
+ maybe_mark_struct_function);
+
VARRAY_INT_INIT (prologue, 0, "prologue");
VARRAY_INT_INIT (epilogue, 0, "epilogue");
VARRAY_INT_INIT (sibcall_epilogue, 0, "sibcall_epilogue");
}
-
-#include "gt-function.h"
diff --git a/contrib/gcc/gcc.1 b/contrib/gcc/gcc.1
index 74200a1..857c588 100644
--- a/contrib/gcc/gcc.1
+++ b/contrib/gcc/gcc.1
@@ -1,3 +1,4 @@
+.\" $FreeBSD$
.\" Copyright (c) 1991, 1992, 1993, 1994 Free Software Foundation -*-Text-*-
.\" See section COPYING for conditions for redistribution
.\"
@@ -23,7 +24,7 @@
.Id $Id: gcc.1,v 1.9 1998/12/16 20:55:57 law Exp $
.TH GCC 1 "\*(Dt" "GNU Tools" "GNU Tools"
.SH NAME
-gcc, g++ \- GNU project C and C++ Compiler (gcc-2.95)
+gcc, g++ \- GNU project C and C++ Compiler (gcc-3.2.1)
.SH SYNOPSIS
.B gcc
.RI "[ " option " | " filename " ].\|.\|."
@@ -264,6 +265,8 @@ in the following sections.
\-O
\-O2
\-O3
+\-O0
+\-Os
.TP
.B Preprocessor Options
.RI \-A assertion
@@ -444,10 +447,25 @@ in the following sections.
.Sp
.I i386 Options
.br
+\-m386
\-m486
+\-mpentium
+\-mpentiumpro
\-mno\-486
+\-mcpu=\fIcpu type\fP
+\-march=\fIcpu type\fP
\-msoft\-float
+\-mrtd
+\-mregparm
+\-msvr3\-shlib
+\-mno\-ieee\-fp
\-mno\-fp\-ret\-in\-387
+\-mfancy\-math\-387
+\-mno\-wide\-multiply
+\-mdebug\-addr
+\-mno\-move
+\-mprofiler\-epilogue
+\-reg\-alloc=LIST
.Sp
.I HPPA Options
.br
@@ -520,6 +538,10 @@ in the following sections.
\-fverbose\-asm
.ad b
.hy 1
+.SH FreeBSD SPECIFIC OPTIONS
+.TP
+.BI "\-pthread"
+Link a user-threaded process against libc_r instead of libc.
.SH OVERALL OPTIONS
.TP
.BI "\-x " "language"
@@ -1202,13 +1224,17 @@ Like `\|\c
.B \-M\c
\&\|' but the output mentions only the user header files
included with `\|\c
-.B #include "\c
+.B
+#include "\c
.I file\c
+.B
\&"\c
\&\|'. System header files
included with `\|\c
-.B #include <\c
+.B
+#include <\c
.I file\c
+.B
\&>\c
\&\|' are omitted.
.TP
@@ -1485,8 +1511,10 @@ option are searched only for the case of `\|\c
\&"\c
\&\|';
they are not searched for `\|\c
-.B #include <\c
+.B
+#include <\c
.I file\c
+.B
\&>\c
\&\|'.
.Sp
@@ -2000,7 +2028,7 @@ cases where multiple declaration is valid and changes nothing.
.B \-Wnested-externs
Warn if an \c
.B extern\c
-\& declaration is encountered within an function.
+\& declaration is encountered within a function.
.TP
.B \-Wenum\-clash
Warn about conversion between different enumeration types (C++ only).
@@ -2432,6 +2460,12 @@ Optimize yet more. This turns on everything
does, along with also turning on
.B \-finline\-functions.
.TP
+.B \-Os
+Optimize for size. This enables all
+.B \-O2
+optimizations that do not typically increase code size. It also performs
+further optimizations designed to reduce code size.
+.TP
.B \-O0
Do not optimize.
.Sp
@@ -2981,17 +3015,17 @@ exist in SPARClite but not in SPARC v7.
.B \-mcypress
.TP
.B \-msupersparc
-These two options select the processor for which the code is optimised.
+These two options select the processor for which the code is optimized.
.Sp
With
.B \-mcypress
-(the default), the compiler optimises code for the Cypress CY7C602 chip, as
+(the default), the compiler optimizes code for the Cypress CY7C602 chip, as
used in the SparcStation/SparcServer 3xx series. This is also appropriate for
the older SparcStation 1, 2, IPX etc.
.Sp
With
.B \-msupersparc
-the compiler optimises code for the SuperSparc cpu, as used in the SparcStation
+the compiler optimizes code for the SuperSparc cpu, as used in the SparcStation
10, 1000 and 2000 series. This flag also enables use of the full SPARC v8
instruction set.
.PP
@@ -3570,12 +3604,51 @@ assembler files (with a `\|\c
These `\|\c
.B \-m\c
\&\|' options are defined for the Intel 80386 family of computers:
+.TP
.B \-m486
.TP
.B \-mno\-486
Control whether or not code is optimized for a 486 instead of an
386. Code generated for a 486 will run on a 386 and vice versa.
.TP
+.B \-mpentium
+Synonym for
+.B \-mcpu=pentium
+.TP
+.B \-mpentiumpro
+Synonym for
+.B \-mcpu=pentiumpro
+.TP
+.B \-mcpu=\fIcpu type\fP
+Assume the defaults for the machine type CPU TYPE when scheduling instructions.
+The choices for CPU TYPE are:
+.B i386,
+.B i486,
+.B i586
+(pentium),
+.B pentium,
+.B i686
+(pentiumpro), and
+.B pentiumpro.
+While picking a specific CPU TYPE will schedule things appropriately for that
+particular chip, the compiler will not generate any code that does not run on
+the i386 without the
+.B \-march=\fIcpu type\fP
+option being used.
+.TP
+.B \-march=\fIcpu type\fP
+Generate instructions for the machine type CPU TYPE. The choices for CPU TYPE
+are:
+.B i386,
+.B i486,
+.B pentium,
+and
+.B pentiumpro.
+Specifying
+.B \-march=\fIcpu type\fP
+implies
+.B \-mcpu=\fIcpu type\fP.
+.TP
.B \-msoft\-float
Generate output containing library calls for floating point.
.I Warning:
@@ -3606,6 +3679,11 @@ The option `\|\c
.B \-mno-fp-ret-in-387\c
\&\|' causes such values to be returned
in ordinary CPU registers instead.
+.TP
+.B \-mprofiler-epilogue
+.TP
+.B \-mno-profiler-epilogue
+Generate extra code to write profile information for function exits.
.PP
These `\|\c
.B \-m\c
@@ -4141,7 +4219,7 @@ if available, else
.B /tmp\c
\&).
.SH "SEE ALSO"
-cpp(1), as(1), ld(1), gdb(1), adb(1), dbx(1), sdb(1).
+as(1), cpp(1), gdb(1), ld(1)
.br
.RB "`\|" gcc "\|', `\|" cpp \|',
.RB "`\|" as "\|', `\|" ld \|',
diff --git a/contrib/gcc/gcc.c b/contrib/gcc/gcc.c
index c6a993f..8f4a71c 100644
--- a/contrib/gcc/gcc.c
+++ b/contrib/gcc/gcc.c
@@ -22,6 +22,8 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
This paragraph is here to try to keep Sun CC from dying.
The number of chars here seems crucial!!!! */
+/* $FreeBSD$ */
+
/* This program is the user interface to the C compiler and possibly to
other compilers. It is used because compilation is a complicated procedure
which involves running several programs and passing temporary files between
@@ -93,6 +95,9 @@ extern int getrusage PARAMS ((int, struct rusage *));
/* FIXME: when autoconf is fixed, remove the host check - dj */
#if defined(TARGET_EXECUTABLE_SUFFIX) && defined(HOST_EXECUTABLE_SUFFIX)
#define HAVE_TARGET_EXECUTABLE_SUFFIX
+#else
+#undef TARGET_EXECUTABLE_SUFFIX
+#define TARGET_EXECUTABLE_SUFFIX ""
#endif
/* By default there is no special suffix for host executables. */
@@ -119,6 +124,13 @@ extern int getrusage PARAMS ((int, struct rusage *));
static const char dir_separator_str[] = { DIR_SEPARATOR, 0 };
+#define obstack_chunk_alloc xmalloc
+#define obstack_chunk_free free
+
+#ifndef GET_ENV_PATH_LIST
+#define GET_ENV_PATH_LIST(VAR,NAME) do { (VAR) = getenv (NAME); } while (0)
+#endif
+
/* Most every one is fine with LIBRARY_PATH. For some, it conflicts. */
#ifndef LIBRARY_PATH_ENV
#define LIBRARY_PATH_ENV "LIBRARY_PATH"
@@ -208,7 +220,7 @@ static const char *compiler_version;
/* The target version specified with -V */
-static const char *const spec_version = DEFAULT_TARGET_VERSION;
+static const char *spec_version = DEFAULT_TARGET_VERSION;
/* The target machine specified with -b. */
@@ -237,9 +249,9 @@ static const struct modify_target
}
modify_target[] = MODIFY_TARGET_NAME;
#endif
-
+
/* The number of errors that have occurred; the link phase will not be
- run if this is nonzero. */
+ run if this is non-zero. */
static int error_count = 0;
/* Greatest exit code of sub-processes that has been encountered up to
@@ -267,6 +279,11 @@ static struct rusage rus, prus;
struct path_prefix;
static void init_spec PARAMS ((void));
+#ifndef VMS
+static char **split_directories PARAMS ((const char *, int *));
+static void free_split_directories PARAMS ((char **));
+static char *make_relative_prefix PARAMS ((const char *, const char *, const char *));
+#endif /* VMS */
static void store_arg PARAMS ((const char *, int, int));
static char *load_specs PARAMS ((const char *));
static void read_specs PARAMS ((const char *, int));
@@ -287,14 +304,9 @@ static void delete_failure_queue PARAMS ((void));
static void clear_failure_queue PARAMS ((void));
static int check_live_switch PARAMS ((int, int));
static const char *handle_braces PARAMS ((const char *));
-static const struct spec_function *lookup_spec_function PARAMS ((const char *));
-static const char *eval_spec_function PARAMS ((const char *, const char *));
-static const char *handle_spec_function PARAMS ((const char *));
static char *save_string PARAMS ((const char *, int));
static void set_collect_gcc_options PARAMS ((void));
static int do_spec_1 PARAMS ((const char *, int, const char *));
-static int do_spec_2 PARAMS ((const char *));
-static void do_self_spec PARAMS ((const char *));
static const char *find_file PARAMS ((const char *));
static int is_directory PARAMS ((const char *, const char *, int));
static void validate_switches PARAMS ((const char *));
@@ -315,7 +327,6 @@ static void add_assembler_option PARAMS ((const char *, int));
static void add_linker_option PARAMS ((const char *, int));
static void process_command PARAMS ((int, const char *const *));
static int execute PARAMS ((void));
-static void alloc_args PARAMS ((void));
static void clear_args PARAMS ((void));
static void fatal_error PARAMS ((int));
#ifdef ENABLE_SHARED_LIBGCC
@@ -326,9 +337,6 @@ static void init_gcc_specs PARAMS ((struct obstack *,
#if defined(HAVE_TARGET_OBJECT_SUFFIX) || defined(HAVE_TARGET_EXECUTABLE_SUFFIX)
static const char *convert_filename PARAMS ((const char *, int, int));
#endif
-
-static const char *if_exists_spec_function PARAMS ((int, const char **));
-static const char *if_exists_else_spec_function PARAMS ((int, const char **));
/* The Specs Language
@@ -420,7 +428,7 @@ or with constant text in a single argument.
and substitute the full name found.
%eSTR Print STR as an error message. STR is terminated by a newline.
Use this when inconsistent options are detected.
- %nSTR Print STR as a notice. STR is terminated by a newline.
+ %nSTR Print STR as an notice. STR is terminated by a newline.
%x{OPTION} Accumulate an option for %X.
%X Output the accumulated linker options specified by compilations.
%Y Output the accumulated assembler options specified by compilations.
@@ -452,12 +460,6 @@ or with constant text in a single argument.
%* substitute the variable part of a matched option. (See below.)
Note that each comma in the substituted string is replaced by
a single space.
- %:function(args)
- Call the named function FUNCTION, passing it ARGS. ARGS is
- first processed as a nested spec string, then split into an
- argument vector in the usual fashion. The function returns
- a string which is processed as if it had appeared literally
- as part of the current spec.
%{S} substitutes the -S switch, if that switch was given to CC.
If that switch was not specified, this substitutes nothing.
Here S is a metasyntactic variable.
@@ -647,11 +649,7 @@ proper position among the other output files. */
# endif
#endif
-#ifndef STARTFILE_PREFIX_SPEC
-# define STARTFILE_PREFIX_SPEC ""
-#endif
-
-static const char *asm_debug;
+static const char *asm_debug = ASM_DEBUG_SPEC;
static const char *cpp_spec = CPP_SPEC;
static const char *cpp_predefines = CPP_PREDEFINES;
static const char *cc1_spec = CC1_SPEC;
@@ -668,7 +666,6 @@ static const char *switches_need_spaces = SWITCHES_NEED_SPACES;
static const char *linker_name_spec = LINKER_NAME;
static const char *link_command_spec = LINK_COMMAND_SPEC;
static const char *link_libgcc_spec = LINK_LIBGCC_SPEC;
-static const char *startfile_prefix_spec = STARTFILE_PREFIX_SPEC;
/* Standard options to cpp, cc1, and as, to reduce duplication in specs.
There should be no need to override these in target dependent files,
@@ -676,48 +673,45 @@ static const char *startfile_prefix_spec = STARTFILE_PREFIX_SPEC;
of the GCC driver can correctly drive older tool chains with the
appropriate -B options. */
-/* When cpplib handles traditional preprocessing, get rid of this, and
- call cc1 (or cc1obj in objc/lang-specs.h) from the main specs so
- that we default the front end language better. */
static const char *trad_capable_cpp =
-"cc1 -E %{traditional|ftraditional|traditional-cpp:-traditional-cpp}";
+"%{traditional|ftraditional|traditional-cpp:trad}cpp0";
/* We don't wrap .d files in %W{} since a missing .d file, and
therefore no dependency entry, confuses make into thinking a .o
file that happens to exist is up-to-date. */
static const char *cpp_unique_options =
"%{C:%{!E:%eGNU C does not support -C without using -E}}\
- %{CC:%{!E:%eGNU C does not support -CC without using -E}}\
- %{!Q:-quiet} %{nostdinc*} %{C} %{CC} %{v} %{I*} %{P} %I\
+ %{nostdinc*} %{C} %{v} %{I*} %{P} %{$} %I\
%{MD:-MD %{!o:%b.d}%{o*:%.d%*}}\
%{MMD:-MMD %{!o:%b.d}%{o*:%.d%*}}\
%{M} %{MM} %{MF*} %{MG} %{MP} %{MQ*} %{MT*}\
%{!E:%{!M:%{!MM:%{MD|MMD:%{o*:-MQ %*}}}}}\
- %{!no-gcc:-D__GNUC__=%v1 -D__GNUC_MINOR__=%v2 -D__GNUC_PATCHLEVEL__=%v3}\
+ %{!no-gcc:-D__GNUC__=%v1 -D__GNUC_MINOR__=%v2 -D__GNUC_PATCHLEVEL__=%v3 -D__GXX_ABI_VERSION=102}\
%{!undef:%{!ansi:%{!std=*:%p}%{std=gnu*:%p}} %P} %{trigraphs}\
- %{remap} %{g3:-dD} %{H} %C %{D*&U*&A*} %{i*} %Z %i\
+ %{Os:-D__OPTIMIZE_SIZE__} %{O*:%{!O0:-D__OPTIMIZE__}}\
+ %{fno-inline|O0|!O*:-D__NO_INLINE__} %{ffast-math:-D__FAST_MATH__}\
+ %{ffreestanding:-D__STDC_HOSTED__=0} %{fno-hosted:-D__STDC_HOSTED__=0}\
+ %{!ffreestanding:%{!fno-hosted:-D__STDC_HOSTED__=1}} %{remap}\
+ %{g3:-dD} %{H} %C\
+ %{fshort-wchar:-U__WCHAR_TYPE__ -D__WCHAR_TYPE__=short\\ unsigned\\ int}\
+ %{D*&U*&A*} %{i*} %Z %i\
%{E|M|MM:%W{o*}}";
/* This contains cpp options which are common with cc1_options and are passed
- only when preprocessing only to avoid duplication. We pass the cc1 spec
- options to the preprocessor so that it the cc1 spec may manipulate
- options used to set target flags. Those special target flags settings may
- in turn cause preprocessor symbols to be defined specially. */
+ only when preprocessing only to avoid duplication. */
static const char *cpp_options =
-"%(cpp_unique_options) %1 %{m*} %{std*} %{ansi} %{W*&pedantic*} %{w} %{f*}\
- %{O*} %{undef}";
-
-/* This contains cpp options which are not passed when the preprocessor
- output will be used by another program. */
-static const char *cpp_debug_options = "%{d*}";
+"%(cpp_unique_options) %{std*} %{d*} %{W*} %{w} %{pedantic*}\
+ %{fshow-column} %{fno-show-column}\
+ %{fsigned-char&funsigned-char}\
+ %{fleading-underscore} %{fno-leading-underscore}\
+ %{fno-operator-names} %{ftabstop=*}";
/* NB: This is shared amongst all front-ends. */
static const char *cc1_options =
"%{pg:%{fomit-frame-pointer:%e-pg and -fomit-frame-pointer are incompatible}}\
%1 %{!Q:-quiet} -dumpbase %B %{d*} %{m*} %{a*}\
- -auxbase%{c|S:%{o*:-strip %*}%{!o*: %b}}%{!c:%{!S: %b}}\
- %{g*} %{O*} %{W*&pedantic*} %{w} %{std*} %{ansi}\
- %{v:-version} %{pg:-p} %{p} %{f*} %{undef}\
+ %{g*} %{O*} %{W*} %{w} %{pedantic*} %{std*} %{ansi}\
+ %{traditional} %{v:-version} %{pg:-p} %{p} %{f*}\
%{Qn:-fno-ident} %{--help:--help}\
%{--target-help:--target-help}\
%{!fsyntax-only:%{S:%W{o*}%{!o*:-o %b.s}}}\
@@ -747,12 +741,6 @@ static const char *multilib_exclusions;
static const char *const multilib_defaults_raw[] = MULTILIB_DEFAULTS;
-#ifndef DRIVER_SELF_SPECS
-#define DRIVER_SELF_SPECS ""
-#endif
-
-static const char *const driver_self_specs[] = { DRIVER_SELF_SPECS };
-
struct user_specs
{
struct user_specs *next;
@@ -761,10 +749,31 @@ struct user_specs
static struct user_specs *user_specs_head, *user_specs_tail;
+/* This defines which switch letters take arguments. */
+
+#define DEFAULT_SWITCH_TAKES_ARG(CHAR) \
+ ((CHAR) == 'D' || (CHAR) == 'U' || (CHAR) == 'o' \
+ || (CHAR) == 'e' || (CHAR) == 'T' || (CHAR) == 'u' \
+ || (CHAR) == 'I' || (CHAR) == 'm' || (CHAR) == 'x' \
+ || (CHAR) == 'L' || (CHAR) == 'A' || (CHAR) == 'V' \
+ || (CHAR) == 'B' || (CHAR) == 'b')
+
#ifndef SWITCH_TAKES_ARG
#define SWITCH_TAKES_ARG(CHAR) DEFAULT_SWITCH_TAKES_ARG(CHAR)
#endif
+/* This defines which multi-letter switches take arguments. */
+
+#define DEFAULT_WORD_SWITCH_TAKES_ARG(STR) \
+ (!strcmp (STR, "Tdata") || !strcmp (STR, "Ttext") \
+ || !strcmp (STR, "Tbss") || !strcmp (STR, "include") \
+ || !strcmp (STR, "imacros") || !strcmp (STR, "aux-info") \
+ || !strcmp (STR, "idirafter") || !strcmp (STR, "iprefix") \
+ || !strcmp (STR, "iwithprefix") || !strcmp (STR, "iwithprefixbefore") \
+ || !strcmp (STR, "isystem") || !strcmp (STR, "-param") \
+ || !strcmp (STR, "specs") \
+ || !strcmp (STR, "MF") || !strcmp (STR, "MT") || !strcmp (STR, "MQ"))
+
#ifndef WORD_SWITCH_TAKES_ARG
#define WORD_SWITCH_TAKES_ARG(STR) DEFAULT_WORD_SWITCH_TAKES_ARG (STR)
#endif
@@ -832,25 +841,26 @@ static const struct compiler default_compilers[] =
{".c", "@c", 0},
{"@c",
/* cc1 has an integrated ISO C preprocessor. We should invoke the
- external preprocessor if -save-temps is given. */
- "%{E|M|MM:%(trad_capable_cpp) %(cpp_options) %(cpp_debug_options)}\
+ external preprocessor if -save-temps or -traditional is given. */
+ "%{E|M|MM:%(trad_capable_cpp) -lang-c %{ansi:-std=c89} %(cpp_options)}\
%{!E:%{!M:%{!MM:\
- %{traditional|ftraditional:\
-%eGNU C no longer supports -traditional without -E}\
- %{save-temps|traditional-cpp|no-integrated-cpp:%(trad_capable_cpp) \
+ %{save-temps|no-integrated-cpp:%(trad_capable_cpp) -lang-c %{ansi:-std=c89}\
%(cpp_options) %{save-temps:%b.i} %{!save-temps:%g.i} \n\
cc1 -fpreprocessed %{save-temps:%b.i} %{!save-temps:%g.i} %(cc1_options)}\
- %{!save-temps:%{!traditional-cpp:%{!no-integrated-cpp:\
- cc1 %(cpp_unique_options) %(cc1_options)}}}\
+ %{!save-temps:%{!no-integrated-cpp:\
+ %{traditional|ftraditional|traditional-cpp:\
+ tradcpp0 -lang-c %{ansi:-std=c89} %(cpp_options) %{!pipe:%g.i} |\n\
+ cc1 -fpreprocessed %{!pipe:%g.i} %(cc1_options)}\
+ %{!traditional:%{!ftraditional:%{!traditional-cpp:\
+ cc1 -lang-c %{ansi:-std=c89} %(cpp_unique_options) %(cc1_options)}}}}}\
%{!fsyntax-only:%(invoke_as)}}}}", 0},
{"-",
"%{!E:%e-E required when input is from standard input}\
- %(trad_capable_cpp) %(cpp_options) %(cpp_debug_options)", 0},
+ %(trad_capable_cpp) -lang-c %{ansi:-std=c89} %(cpp_options)", 0},
{".h", "@c-header", 0},
{"@c-header",
"%{!E:%ecompilation of header file requested} \
- %(trad_capable_cpp) %(cpp_options) %(cpp_debug_options)",
- 0},
+ %(trad_capable_cpp) -lang-c %{ansi:-std=c89} %(cpp_options)", 0},
{".i", "@cpp-output", 0},
{"@cpp-output",
"%{!M:%{!MM:%{!E:cc1 -fpreprocessed %i %(cc1_options) %{!fsyntax-only:%(invoke_as)}}}}", 0},
@@ -860,7 +870,6 @@ static const struct compiler default_compilers[] =
{".S", "@assembler-with-cpp", 0},
{"@assembler-with-cpp",
"%(trad_capable_cpp) -lang-asm %(cpp_options)\
- %{E|M|MM:%(cpp_debug_options)}\
%{!M:%{!MM:%{!E:%{!S:-o %{|!pipe:%g.s} |\n\
as %(asm_debug) %(asm_options) %{!pipe:%g.s} %A }}}}", 0},
#include "specs.h"
@@ -870,7 +879,8 @@ static const struct compiler default_compilers[] =
/* Number of elements in default_compilers, not counting the terminator. */
-static const int n_default_compilers = ARRAY_SIZE (default_compilers) - 1;
+static int n_default_compilers
+ = (sizeof default_compilers / sizeof (struct compiler)) - 1;
/* A vector of options to give to the linker.
These options are accumulated by %x,
@@ -920,7 +930,6 @@ static const struct option_map option_map[] =
{"--bootclasspath", "-fbootclasspath=", "aj"},
{"--CLASSPATH", "-fclasspath=", "aj"},
{"--comments", "-C", 0},
- {"--comments-in-macros", "-CC", 0},
{"--compile", "-c", 0},
{"--debug", "-g", "oj"},
{"--define-macro", "-D", "aj"},
@@ -1190,7 +1199,7 @@ translate_options (argcp, argvp)
nskip += SWITCH_TAKES_ARG (c) - (p[1] != 0);
else if (WORD_SWITCH_TAKES_ARG (p))
nskip += WORD_SWITCH_TAKES_ARG (p);
- else if ((c == 'B' || c == 'b' || c == 'x')
+ else if ((c == 'B' || c == 'b' || c == 'V' || c == 'x')
&& p[1] == 0)
nskip += 1;
else if (! strcmp (p, "Xlinker"))
@@ -1320,9 +1329,11 @@ static const char *gcc_exec_prefix;
#ifndef TOOLDIR_BASE_PREFIX
#define TOOLDIR_BASE_PREFIX "/usr/local/"
#endif
+#ifndef FREEBSD_NATIVE
#ifndef STANDARD_BINDIR_PREFIX
#define STANDARD_BINDIR_PREFIX "/usr/local/bin"
#endif
+#endif /* not FREEBSD_NATIVE */
static const char *const standard_exec_prefix = STANDARD_EXEC_PREFIX;
static const char *const standard_exec_prefix_1 = "/usr/lib/gcc/";
@@ -1337,7 +1348,9 @@ static const char *const standard_startfile_prefix_2 = "/usr/lib/";
static const char *const tooldir_base_prefix = TOOLDIR_BASE_PREFIX;
static const char *tooldir_prefix;
+#ifndef FREEBSD_NATIVE
static const char *const standard_bindir_prefix = STANDARD_BINDIR_PREFIX;
+#endif /* not FREEBSD_NATIVE */
/* Subdirectory to use for locating libraries. Set by
set_multilib_dir based on the compilation options. */
@@ -1381,7 +1394,6 @@ static struct spec_list static_specs[] =
INIT_STATIC_SPEC ("invoke_as", &invoke_as),
INIT_STATIC_SPEC ("cpp", &cpp_spec),
INIT_STATIC_SPEC ("cpp_options", &cpp_options),
- INIT_STATIC_SPEC ("cpp_debug_options", &cpp_debug_options),
INIT_STATIC_SPEC ("cpp_unique_options", &cpp_unique_options),
INIT_STATIC_SPEC ("trad_capable_cpp", &trad_capable_cpp),
INIT_STATIC_SPEC ("cc1", &cc1_spec),
@@ -1408,7 +1420,6 @@ static struct spec_list static_specs[] =
INIT_STATIC_SPEC ("md_exec_prefix", &md_exec_prefix),
INIT_STATIC_SPEC ("md_startfile_prefix", &md_startfile_prefix),
INIT_STATIC_SPEC ("md_startfile_prefix_1", &md_startfile_prefix_1),
- INIT_STATIC_SPEC ("startfile_prefix_spec", &startfile_prefix_spec),
};
#ifdef EXTRA_SPECS /* additional specs needed */
@@ -1428,17 +1439,6 @@ static struct spec_list *extra_specs = (struct spec_list *) 0;
static struct spec_list *specs = (struct spec_list *) 0;
-/* List of static spec functions. */
-
-static const struct spec_function static_spec_functions[] =
-{
- { "if-exists", if_exists_spec_function },
- { "if-exists-else", if_exists_else_spec_function },
- { 0, 0 }
-};
-
-static int processing_spec_function;
-
/* Add appropriate libgcc specs to OBSTACK, taking into account
various permutations of -shared-libgcc, -shared, and such. */
@@ -1501,10 +1501,6 @@ init_spec ()
}
#endif
- /* Initialize here, not in definition. The IRIX 6 O32 cc sometimes chokes
- on ?: in file-scope variable initializations. */
- asm_debug = ASM_DEBUG_SPEC;
-
for (i = ARRAY_SIZE (static_specs) - 1; i >= 0; i--)
{
sl = &static_specs[i];
@@ -1543,12 +1539,12 @@ init_spec ()
{
const char *p = libgcc_spec;
int in_sep = 1;
-
+
/* Transform the extant libgcc_spec into one that uses the shared libgcc
when given the proper command line arguments. */
while (*p)
{
- if (in_sep && *p == '-' && strncmp (p, "-lgcc", 5) == 0)
+ if (in_sep && *p == '-' && strncmp (p, "-lgcc", 5) == 0)
{
init_gcc_specs (&obstack,
#ifdef NO_SHARED_LIBGCC_MULTILIB
@@ -1710,15 +1706,6 @@ static int signal_count;
static const char *programname;
-/* Allocate the argument vector. */
-
-static void
-alloc_args ()
-{
- argbuf_length = 10;
- argbuf = (const char **) xmalloc (argbuf_length * sizeof (const char *));
-}
-
/* Clear out the vector of arguments (after a command is executed). */
static void
@@ -1902,9 +1889,8 @@ read_specs (filename, main_p)
{
int name_len;
struct spec_list *sl;
- struct spec_list *newsl;
- /* Get original name. */
+ /* Get original name */
p1 += sizeof "%rename";
while (*p1 == ' ' || *p1 == '\t')
p1++;
@@ -1950,11 +1936,6 @@ read_specs (filename, main_p)
if (strcmp (p1, p2) == 0)
continue;
- for (newsl = specs; newsl; newsl = newsl->next)
- if (strcmp (newsl->name, p2) == 0)
- fatal ("%s: attempt to rename spec '%s' to already defined spec '%s'",
- filename, p1, p2);
-
if (verbose_flag)
{
notice ("rename spec %s to %s\n", p1, p2);
@@ -2185,7 +2166,7 @@ clear_failure_queue ()
/* Build a list of search directories from PATHS.
PREFIX is a string to prepend to the list.
- If CHECK_DIR_P is nonzero we ensure the directory exists.
+ If CHECK_DIR_P is non-zero we ensure the directory exists.
This is used mostly by putenv_from_prefixes so we use `collect_obstack'.
It is also used by the --print-search-dirs flag. */
@@ -2259,6 +2240,246 @@ putenv_from_prefixes (paths, env_var)
putenv (build_search_list (paths, env_var, 1));
}
+#ifndef VMS
+
+/* FIXME: the location independence code for VMS is hairier than this,
+ and hasn't been written. */
+
+/* Split a filename into component directories. */
+
+static char **
+split_directories (name, ptr_num_dirs)
+ const char *name;
+ int *ptr_num_dirs;
+{
+ int num_dirs = 0;
+ char **dirs;
+ const char *p, *q;
+ int ch;
+
+ /* Count the number of directories. Special case MSDOS disk names as part
+ of the initial directory. */
+ p = name;
+#ifdef HAVE_DOS_BASED_FILE_SYSTEM
+ if (name[1] == ':' && IS_DIR_SEPARATOR (name[2]))
+ {
+ p += 3;
+ num_dirs++;
+ }
+#endif /* HAVE_DOS_BASED_FILE_SYSTEM */
+
+ while ((ch = *p++) != '\0')
+ {
+ if (IS_DIR_SEPARATOR (ch))
+ {
+ num_dirs++;
+ while (IS_DIR_SEPARATOR (*p))
+ p++;
+ }
+ }
+
+ dirs = (char **) xmalloc (sizeof (char *) * (num_dirs + 2));
+
+ /* Now copy the directory parts. */
+ num_dirs = 0;
+ p = name;
+#ifdef HAVE_DOS_BASED_FILE_SYSTEM
+ if (name[1] == ':' && IS_DIR_SEPARATOR (name[2]))
+ {
+ dirs[num_dirs++] = save_string (p, 3);
+ p += 3;
+ }
+#endif /* HAVE_DOS_BASED_FILE_SYSTEM */
+
+ q = p;
+ while ((ch = *p++) != '\0')
+ {
+ if (IS_DIR_SEPARATOR (ch))
+ {
+ while (IS_DIR_SEPARATOR (*p))
+ p++;
+
+ dirs[num_dirs++] = save_string (q, p - q);
+ q = p;
+ }
+ }
+
+ if (p - 1 - q > 0)
+ dirs[num_dirs++] = save_string (q, p - 1 - q);
+
+ dirs[num_dirs] = NULL;
+ if (ptr_num_dirs)
+ *ptr_num_dirs = num_dirs;
+
+ return dirs;
+}
+
+/* Release storage held by split directories. */
+
+static void
+free_split_directories (dirs)
+ char **dirs;
+{
+ int i = 0;
+
+ while (dirs[i] != NULL)
+ free (dirs[i++]);
+
+ free ((char *) dirs);
+}
+
+/* Given three strings PROGNAME, BIN_PREFIX, PREFIX, return a string that gets
+ to PREFIX starting with the directory portion of PROGNAME and a relative
+ pathname of the difference between BIN_PREFIX and PREFIX.
+
+ For example, if BIN_PREFIX is /alpha/beta/gamma/gcc/delta, PREFIX is
+ /alpha/beta/gamma/omega/, and PROGNAME is /red/green/blue/gcc, then this
+ function will return /red/green/blue/../omega.
+
+ If no relative prefix can be found, return NULL. */
+
+static char *
+make_relative_prefix (progname, bin_prefix, prefix)
+ const char *progname;
+ const char *bin_prefix;
+ const char *prefix;
+{
+ char **prog_dirs, **bin_dirs, **prefix_dirs;
+ int prog_num, bin_num, prefix_num, std_loc_p;
+ int i, n, common;
+
+ prog_dirs = split_directories (progname, &prog_num);
+ bin_dirs = split_directories (bin_prefix, &bin_num);
+
+ /* If there is no full pathname, try to find the program by checking in each
+ of the directories specified in the PATH environment variable. */
+ if (prog_num == 1)
+ {
+ char *temp;
+
+ GET_ENV_PATH_LIST (temp, "PATH");
+ if (temp)
+ {
+ char *startp, *endp, *nstore;
+ size_t prefixlen = strlen (temp) + 1;
+ if (prefixlen < 2)
+ prefixlen = 2;
+
+ nstore = (char *) alloca (prefixlen + strlen (progname) + 1);
+
+ startp = endp = temp;
+ while (1)
+ {
+ if (*endp == PATH_SEPARATOR || *endp == 0)
+ {
+ if (endp == startp)
+ {
+ nstore[0] = '.';
+ nstore[1] = DIR_SEPARATOR;
+ nstore[2] = '\0';
+ }
+ else
+ {
+ strncpy (nstore, startp, endp - startp);
+ if (! IS_DIR_SEPARATOR (endp[-1]))
+ {
+ nstore[endp - startp] = DIR_SEPARATOR;
+ nstore[endp - startp + 1] = 0;
+ }
+ else
+ nstore[endp - startp] = 0;
+ }
+ strcat (nstore, progname);
+ if (! access (nstore, X_OK)
+#ifdef HAVE_HOST_EXECUTABLE_SUFFIX
+ || ! access (strcat (nstore, HOST_EXECUTABLE_SUFFIX), X_OK)
+#endif
+ )
+ {
+ free_split_directories (prog_dirs);
+ progname = nstore;
+ prog_dirs = split_directories (progname, &prog_num);
+ break;
+ }
+
+ if (*endp == 0)
+ break;
+ endp = startp = endp + 1;
+ }
+ else
+ endp++;
+ }
+ }
+ }
+
+ /* Remove the program name from comparison of directory names. */
+ prog_num--;
+
+ /* Determine if the compiler is installed in the standard location, and if
+ so, we don't need to specify relative directories. Also, if argv[0]
+ doesn't contain any directory specifiers, there is not much we can do. */
+ std_loc_p = 0;
+ if (prog_num == bin_num)
+ {
+ for (i = 0; i < bin_num; i++)
+ {
+ if (strcmp (prog_dirs[i], bin_dirs[i]) != 0)
+ break;
+ }
+
+ if (prog_num <= 0 || i == bin_num)
+ {
+ std_loc_p = 1;
+ free_split_directories (prog_dirs);
+ free_split_directories (bin_dirs);
+ prog_dirs = bin_dirs = (char **) 0;
+ return NULL;
+ }
+ }
+
+ prefix_dirs = split_directories (prefix, &prefix_num);
+
+ /* Find how many directories are in common between bin_prefix & prefix. */
+ n = (prefix_num < bin_num) ? prefix_num : bin_num;
+ for (common = 0; common < n; common++)
+ {
+ if (strcmp (bin_dirs[common], prefix_dirs[common]) != 0)
+ break;
+ }
+
+ /* If there are no common directories, there can be no relative prefix. */
+ if (common == 0)
+ {
+ free_split_directories (prog_dirs);
+ free_split_directories (bin_dirs);
+ free_split_directories (prefix_dirs);
+ return NULL;
+ }
+
+ /* Build up the pathnames in argv[0]. */
+ for (i = 0; i < prog_num; i++)
+ obstack_grow (&obstack, prog_dirs[i], strlen (prog_dirs[i]));
+
+ /* Now build up the ..'s. */
+ for (i = common; i < n; i++)
+ {
+ obstack_grow (&obstack, DIR_UP, sizeof (DIR_UP) - 1);
+ obstack_1grow (&obstack, DIR_SEPARATOR);
+ }
+
+ /* Put in directories to move over to prefix. */
+ for (i = common; i < prefix_num; i++)
+ obstack_grow (&obstack, prefix_dirs[i], strlen (prefix_dirs[i]));
+
+ free_split_directories (prog_dirs);
+ free_split_directories (bin_dirs);
+ free_split_directories (prefix_dirs);
+
+ obstack_1grow (&obstack, '\0');
+ return obstack_finish (&obstack);
+}
+#endif /* VMS */
+
/* Check whether NAME can be accessed in MODE. This is like access,
except that it never considers directories to be executable. */
@@ -2522,9 +2743,6 @@ execute ()
struct command *commands; /* each command buffer with above info. */
- if (processing_spec_function)
- abort ();
-
/* Count # of piped commands. */
for (n_commands = 1, i = 0; i < argbuf_index; i++)
if (strcmp (argbuf[i], "|") == 0)
@@ -2575,8 +2793,8 @@ execute ()
{
const char *const *j;
- if (verbose_only_flag)
- {
+ if (verbose_only_flag)
+ {
for (j = commands[i].argv; *j; j++)
{
const char *p;
@@ -2589,8 +2807,8 @@ execute ()
}
fputc ('"', stderr);
}
- }
- else
+ }
+ else
for (j = commands[i].argv; *j; j++)
fprintf (stderr, " %s", *j);
@@ -2601,7 +2819,7 @@ execute ()
}
fflush (stderr);
if (verbose_only_flag != 0)
- return 0;
+ return 0;
#ifdef DEBUG
notice ("\nGo ahead? (y or n) ");
fflush (stderr);
@@ -2615,33 +2833,6 @@ execute ()
#endif /* DEBUG */
}
-#ifdef ENABLE_VALGRIND_CHECKING
- /* Run the each command through valgrind. To simplifiy prepending the
- path to valgrind and the option "-q" (for quiet operation unless
- something triggers), we allocate a separate argv array. */
-
- for (i = 0; i < n_commands; i++)
- {
- const char **argv;
- int argc;
- int j;
-
- for (argc = 0; commands[i].argv[argc] != NULL; argc++)
- ;
-
- argv = alloca ((argc + 3) * sizeof (char *));
-
- argv[0] = VALGRIND_PATH;
- argv[1] = "-q";
- for (j = 2; j < argc + 2; j++)
- argv[j] = commands[i].argv[j - 2];
- argv[j] = NULL;
-
- commands[i].argv = argv;
- commands[i].prog = argv[0];
- }
-#endif
-
/* Run each piped subprocess. */
for (i = 0; i < n_commands; i++)
@@ -2734,7 +2925,7 @@ Internal error: %s (program %s)\n\
Please submit a full bug report.\n\
See %s for instructions.",
strsignal (WTERMSIG (status)), commands[j].prog,
- bug_report_url);
+ GCCBUGURL);
signal_count++;
ret_code = -1;
}
@@ -2812,6 +3003,9 @@ const char **outfiles;
/* Used to track if none of the -B paths are used. */
static int warn_B;
+/* Used to track if standard path isn't used and -b or -V is specified. */
+static int warn_std;
+
/* Gives value to pass as "warn" to add_prefix for standard prefixes. */
static int *warn_std_ptr = 0;
@@ -2917,7 +3111,7 @@ display_help ()
fputs (_(" -o <file> Place the output into <file>\n"), stdout);
fputs (_("\
-x <language> Specify the language of the following input files\n\
- Permissible languages include: c c++ assembler none\n\
+ Permissable languages include: c c++ assembler none\n\
'none' means revert to the default behavior of\n\
guessing the language based on the file's extension\n\
"), stdout);
@@ -3008,7 +3202,7 @@ process_command (argc, argv)
int j;
#endif
- GET_ENVIRONMENT (gcc_exec_prefix, "GCC_EXEC_PREFIX");
+ GET_ENV_PATH_LIST (gcc_exec_prefix, "GCC_EXEC_PREFIX");
n_switches = 0;
n_infiles = 0;
@@ -3027,64 +3221,10 @@ process_command (argc, argv)
}
}
- /* If there is a -V or -b option (or both), process it now, before
- trying to interpret the rest of the command line. */
- if (argc > 1 && argv[1][0] == '-'
- && (argv[1][1] == 'V' || argv[1][1] == 'b'))
- {
- const char *new_version = DEFAULT_TARGET_VERSION;
- const char *new_machine = DEFAULT_TARGET_MACHINE;
- const char *progname = argv[0];
- char **new_argv;
- char *new_argv0;
- int baselen;
-
- while (argc > 1 && argv[1][0] == '-'
- && (argv[1][1] == 'V' || argv[1][1] == 'b'))
- {
- char opt = argv[1][1];
- const char *arg;
- if (argv[1][2] != '\0')
- {
- arg = argv[1] + 2;
- argc -= 1;
- argv += 1;
- }
- else if (argc > 2)
- {
- arg = argv[2];
- argc -= 2;
- argv += 2;
- }
- else
- fatal ("`-%c' option must have argument", opt);
- if (opt == 'V')
- new_version = arg;
- else
- new_machine = arg;
- }
-
- for (baselen = strlen (progname); baselen > 0; baselen--)
- if (IS_DIR_SEPARATOR (progname[baselen-1]))
- break;
- new_argv0 = xmemdup (progname, baselen,
- baselen + concat_length (new_version, new_machine,
- "-gcc-", NULL) + 1);
- strcpy (new_argv0 + baselen, new_machine);
- strcat (new_argv0, "-gcc-");
- strcat (new_argv0, new_version);
-
- new_argv = xmemdup (argv, (argc + 1) * sizeof (argv[0]),
- (argc + 1) * sizeof (argv[0]));
- new_argv[0] = new_argv0;
-
- execvp (new_argv0, new_argv);
- fatal ("couldn't run `%s': %s", new_argv0, xstrerror (errno));
- }
-
/* Set up the default search paths. If there is no GCC_EXEC_PREFIX,
see if we can create it from the pathname specified in argv[0]. */
+#ifndef FREEBSD_NATIVE
#ifndef VMS
/* FIXME: make_relative_prefix doesn't yet work for VMS. */
if (!gcc_exec_prefix)
@@ -3095,6 +3235,7 @@ process_command (argc, argv)
putenv (concat ("GCC_EXEC_PREFIX=", gcc_exec_prefix, NULL));
}
#endif
+#endif /* not FREEBSD_NATIVE */
if (gcc_exec_prefix)
{
@@ -3121,7 +3262,7 @@ process_command (argc, argv)
/* COMPILER_PATH and LIBRARY_PATH have values
that are lists of directory names with colons. */
- GET_ENVIRONMENT (temp, "COMPILER_PATH");
+ GET_ENV_PATH_LIST (temp, "COMPILER_PATH");
if (temp)
{
const char *startp, *endp;
@@ -3156,7 +3297,7 @@ process_command (argc, argv)
}
}
- GET_ENVIRONMENT (temp, LIBRARY_PATH_ENV);
+ GET_ENV_PATH_LIST (temp, LIBRARY_PATH_ENV);
if (temp && *cross_compile == '0')
{
const char *startp, *endp;
@@ -3189,7 +3330,7 @@ process_command (argc, argv)
}
/* Use LPATH like LIBRARY_PATH (for the CMU build program). */
- GET_ENVIRONMENT (temp, "LPATH");
+ GET_ENV_PATH_LIST (temp, "LPATH");
if (temp && *cross_compile == '0')
{
const char *startp, *endp;
@@ -3221,6 +3362,44 @@ process_command (argc, argv)
}
}
+ /* Options specified as if they appeared on the command line. */
+ temp = getenv ("GCC_OPTIONS");
+ if ((temp) && (strlen (temp) > 0))
+ {
+ int len;
+ int optc = 1;
+ int new_argc;
+ const char **new_argv;
+ char *envopts;
+
+ while (isspace (*temp))
+ temp++;
+ len = strlen (temp);
+ envopts = (char *) xmalloc (len + 1);
+ strcpy (envopts, temp);
+
+ for (i = 0; i < (len - 1); i++)
+ if ((isspace (envopts[i])) && ! (isspace (envopts[i+1])))
+ optc++;
+
+ new_argv = (const char **) alloca ((optc + argc) * sizeof(char *));
+
+ for (i = 0, new_argc = 1; new_argc <= optc; new_argc++)
+ {
+ while (isspace (envopts[i]))
+ i++;
+ new_argv[new_argc] = envopts + i;
+ while (!isspace (envopts[i]) && (envopts[i] != '\0'))
+ i++;
+ envopts[i++] = '\0';
+ }
+ for (i = 1; i < argc; i++)
+ new_argv[new_argc++] = argv[i];
+
+ argv = new_argv;
+ argc = new_argc;
+ }
+
/* Convert new-style -- options to old-style. */
translate_options (&argc, &argv);
@@ -3229,6 +3408,7 @@ process_command (argc, argv)
/* Scan argv twice. Here, the first time, just count how many switches
there will be in their vector, and how many input files in theirs.
+ Also parse any switches that determine the configuration name, such as -b.
Here we also parse the switches that cc itself uses (e.g. -v). */
for (i = 1; i < argc; i++)
@@ -3257,7 +3437,7 @@ process_command (argc, argv)
{
/* translate_options () has turned --version into -fversion. */
printf (_("%s (GCC) %s\n"), programname, version_string);
- fputs (_("Copyright (C) 2003 Free Software Foundation, Inc.\n"),
+ fputs (_("Copyright (C) 2002 Free Software Foundation, Inc.\n"),
stdout);
fputs (_("This is free software; see the source for copying conditions. There is NO\n\
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n"),
@@ -3280,20 +3460,20 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n"
add_linker_option ("--help", 6);
}
else if (strcmp (argv[i], "-ftarget-help") == 0)
- {
- /* translate_options() has turned --target-help into -ftarget-help. */
- target_help_flag = 1;
+ {
+ /* translate_options() has turned --target-help into -ftarget-help. */
+ target_help_flag = 1;
- /* We will be passing a dummy file on to the sub-processes. */
- n_infiles++;
- n_switches++;
+ /* We will be passing a dummy file on to the sub-processes. */
+ n_infiles++;
+ n_switches++;
/* CPP driver cannot obtain switch from cc1_options. */
if (is_cpp_driver)
add_preprocessor_option ("--target-help", 13);
- add_assembler_option ("--target-help", 13);
- add_linker_option ("--target-help", 13);
- }
+ add_assembler_option ("--target-help", 13);
+ add_linker_option ("--target-help", 13);
+ }
else if (! strcmp (argv[i], "-pass-exit-codes"))
{
pass_exit_codes = 1;
@@ -3429,8 +3609,15 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n"
switch (c)
{
case 'b':
- case 'V':
- fatal ("`-%c' must come at the start of the command line", c);
+ n_switches++;
+ if (p[1] == 0 && i + 1 == argc)
+ fatal ("argument to `-b' is missing");
+ if (p[1] == 0)
+ spec_machine = argv[++i];
+ else
+ spec_machine = p + 1;
+
+ warn_std_ptr = &warn_std;
break;
case 'B':
@@ -3463,7 +3650,7 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n"
tmp[++ len] = 0;
value = tmp;
}
-
+
/* As a kludge, if the arg is "[foo/]stageN/", just
add "[foo/]include" to the include prefix. */
if ((len == 7
@@ -3506,6 +3693,48 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n"
verbose_flag++;
break;
+ case 'V':
+ n_switches++;
+ if (p[1] == 0 && i + 1 == argc)
+ fatal ("argument to `-V' is missing");
+ if (p[1] == 0)
+ spec_version = argv[++i];
+ else
+ spec_version = p + 1;
+ compiler_version = spec_version;
+ warn_std_ptr = &warn_std;
+
+ /* Validate the version number. Use the same checks
+ done when inserting it into a spec.
+
+ The format of the version string is
+ ([^0-9]*-)?[0-9]+[.][0-9]+([.][0-9]+)?([- ].*)? */
+ {
+ const char *v = compiler_version;
+
+ /* Ignore leading non-digits. i.e. "foo-" in "foo-2.7.2". */
+ while (! ISDIGIT (*v))
+ v++;
+
+ if (v > compiler_version && v[-1] != '-')
+ fatal ("invalid version number format");
+
+ /* Set V after the first period. */
+ while (ISDIGIT (*v))
+ v++;
+
+ if (*v != '.')
+ fatal ("invalid version number format");
+
+ v++;
+ while (ISDIGIT (*v))
+ v++;
+
+ if (*v != 0 && *v != ' ' && *v != '.' && *v != '-')
+ fatal ("invalid version number format");
+ }
+ break;
+
case 'S':
case 'c':
if (p[1] == 0)
@@ -3561,7 +3790,8 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n"
#ifdef MODIFY_TARGET_NAME
is_modify_target_name = 0;
- for (j = 0; j < ARRAY_SIZE (modify_target); j++)
+ for (j = 0;
+ j < sizeof modify_target / sizeof modify_target[0]; j++)
if (! strcmp (argv[i], modify_target[j].sw))
{
char *new_name
@@ -3594,7 +3824,7 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n"
if (is_modify_target_name)
break;
-#endif
+#endif
n_switches++;
@@ -3620,19 +3850,27 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n"
(such as cpp) rather than those of the host system. */
/* Use 2 as fourth arg meaning try just the machine as a suffix,
as well as trying the machine and the version. */
+#ifdef FREEBSD_NATIVE
+ add_prefix (&exec_prefixes, PREFIX"/bin/", "BINUTILS",
+ 0, 0, warn_std_ptr, 0);
+#endif /* FREEBSD_NATIVE */
#ifndef OS2
add_prefix (&exec_prefixes, standard_exec_prefix, "GCC",
PREFIX_PRIORITY_LAST, 1, warn_std_ptr, 0);
add_prefix (&exec_prefixes, standard_exec_prefix, "BINUTILS",
PREFIX_PRIORITY_LAST, 2, warn_std_ptr, 0);
+#ifndef FREEBSD_NATIVE
add_prefix (&exec_prefixes, standard_exec_prefix_1, "BINUTILS",
PREFIX_PRIORITY_LAST, 2, warn_std_ptr, 0);
+#endif /* not FREEBSD_NATIVE */
#endif
+#ifndef FREEBSD_NATIVE
add_prefix (&startfile_prefixes, standard_exec_prefix, "BINUTILS",
PREFIX_PRIORITY_LAST, 1, warn_std_ptr, 0);
add_prefix (&startfile_prefixes, standard_exec_prefix_1, "BINUTILS",
PREFIX_PRIORITY_LAST, 1, warn_std_ptr, 0);
+#endif /* not FREEBSD_NATIVE */
tooldir_prefix = concat (tooldir_base_prefix, spec_machine,
dir_separator_str, NULL);
@@ -3667,12 +3905,14 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n"
dir_separator_str, tooldir_prefix, NULL);
}
+#ifndef FREEBSD_NATIVE
add_prefix (&exec_prefixes,
concat (tooldir_prefix, "bin", dir_separator_str, NULL),
"BINUTILS", PREFIX_PRIORITY_LAST, 0, NULL, 0);
add_prefix (&startfile_prefixes,
concat (tooldir_prefix, "lib", dir_separator_str, NULL),
"BINUTILS", PREFIX_PRIORITY_LAST, 0, NULL, 1);
+#endif /* FREEBSD_NATIVE */
/* More prefixes are enabled in main, after we read the specs file
and determine whether this is cross-compilation or not. */
@@ -3696,7 +3936,7 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n"
#ifdef MODIFY_TARGET_NAME
is_modify_target_name = 0;
- for (j = 0; j < ARRAY_SIZE (modify_target); j++)
+ for (j = 0; j < sizeof modify_target / sizeof modify_target[0]; j++)
if (! strcmp (argv[i], modify_target[j].sw))
is_modify_target_name = 1;
@@ -3786,7 +4026,7 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n"
/* -save-temps overrides -pipe, so that temp files are produced */
if (save_temps_flag)
error ("warning: -pipe ignored because -save-temps specified");
- /* -time overrides -pipe because we can't get correct stats when
+ /* -time overrides -pipe because we can't get correct stats when
multiple children are running at once. */
else if (report_times)
error ("warning: -pipe ignored because -time specified");
@@ -3865,7 +4105,7 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n"
else
{
char ch = switches[n_switches].part1[0];
- if (ch == 'B')
+ if (ch == 'V' || ch == 'b' || ch == 'B')
switches[n_switches].validated = 1;
}
n_switches++;
@@ -4041,7 +4281,15 @@ do_spec (spec)
{
int value;
- value = do_spec_2 (spec);
+ clear_args ();
+ arg_going = 0;
+ delete_this_arg = 0;
+ this_is_output_file = 0;
+ this_is_library_file = 0;
+ input_from_pipe = 0;
+ suffix_subst = NULL;
+
+ value = do_spec_1 (spec, 0, NULL);
/* Force out any unfinished command.
If -pipe, this forces out the last command if it ended in `|'. */
@@ -4059,60 +4307,6 @@ do_spec (spec)
return value;
}
-static int
-do_spec_2 (spec)
- const char *spec;
-{
- clear_args ();
- arg_going = 0;
- delete_this_arg = 0;
- this_is_output_file = 0;
- this_is_library_file = 0;
- input_from_pipe = 0;
- suffix_subst = NULL;
-
- return do_spec_1 (spec, 0, NULL);
-}
-
-
-/* Process the given spec string and add any new options to the end
- of the switches/n_switches array. */
-
-static void
-do_self_spec (spec)
- const char *spec;
-{
- do_spec_2 (spec);
- do_spec_1 (" ", 0, NULL);
-
- if (argbuf_index > 0)
- {
- int i, first;
-
- first = n_switches;
- n_switches += argbuf_index;
- switches = xrealloc (switches,
- sizeof (struct switchstr) * (n_switches + 1));
-
- switches[n_switches] = switches[first];
- for (i = 0; i < argbuf_index; i++)
- {
- struct switchstr *sw;
-
- /* Each switch should start with '-'. */
- if (argbuf[i][0] != '-')
- abort ();
-
- sw = &switches[i + first];
- sw->part1 = &argbuf[i][1];
- sw->args = 0;
- sw->live_cond = SWITCH_OK;
- sw->validated = 0;
- sw->ordering = 0;
- }
- }
-}
-
/* Process the sub-spec SPEC as a portion of a larger spec.
This is like processing a whole spec except that we do
not initialize at the beginning and we do not supply a
@@ -4380,7 +4574,7 @@ do_spec_1 (spec, inswitch, soft_matched_part)
}
break;
case 'n':
- /* %nfoo means report a notice with `foo' on stderr. */
+ /* %nfoo means report an notice with `foo' on stderr. */
{
const char *q = p;
char *buf;
@@ -4446,7 +4640,7 @@ do_spec_1 (spec, inswitch, soft_matched_part)
}
suffix_length += strlen (TARGET_OBJECT_SUFFIX);
}
-
+
/* If the input_filename has the same suffix specified
for the %g, %u, or %U, and -save-temps is specified,
we could end up using that file as an intermediate
@@ -4454,7 +4648,7 @@ do_spec_1 (spec, inswitch, soft_matched_part)
gcc -save-temps foo.s would clobber foo.s with the
output of cpp0). So check for this condition and
generate a temp file as the intermediate. */
-
+
if (save_temps_flag)
{
temp_filename_length = basename_length + suffix_length;
@@ -4466,7 +4660,7 @@ do_spec_1 (spec, inswitch, soft_matched_part)
if (strcmp (temp_filename, input_filename) != 0)
{
struct stat st_temp;
-
+
/* Note, set_input() resets input_stat_set to 0. */
if (input_stat_set == 0)
{
@@ -4474,23 +4668,22 @@ do_spec_1 (spec, inswitch, soft_matched_part)
if (input_stat_set >= 0)
input_stat_set = 1;
}
-
+
/* If we have the stat for the input_filename
and we can do the stat for the temp_filename
then the they could still refer to the same
file if st_dev/st_ino's are the same. */
-
+
if (input_stat_set != 1
|| stat (temp_filename, &st_temp) < 0
|| input_stat.st_dev != st_temp.st_dev
|| input_stat.st_ino != st_temp.st_ino)
- {
+ {
temp_filename = save_string (temp_filename,
temp_filename_length + 1);
obstack_grow (&obstack, temp_filename,
temp_filename_length);
arg_going = 1;
- delete_this_arg = 0;
break;
}
}
@@ -4693,8 +4886,8 @@ do_spec_1 (spec, inswitch, soft_matched_part)
case 'C':
{
const char *const spec
- = (input_file_compiler->cpp_spec
- ? input_file_compiler->cpp_spec
+ = (input_file_compiler->cpp_spec
+ ? input_file_compiler->cpp_spec
: cpp_spec);
value = do_spec_1 (spec, 0, NULL);
if (value != 0)
@@ -4918,27 +5111,21 @@ do_spec_1 (spec, inswitch, soft_matched_part)
return -1;
break;
- case ':':
- p = handle_spec_function (p);
- if (p == 0)
- return -1;
- break;
-
case '%':
obstack_1grow (&obstack, '%');
break;
- case '.':
- {
- unsigned len = 0;
+ case '.':
+ {
+ unsigned len = 0;
- while (p[len] && p[len] != ' ' && p[len] != '%')
- len++;
- suffix_subst = save_string (p - 1, len + 1);
- p += len;
- }
+ while (p[len] && p[len] != ' ' && p[len] != '%')
+ len++;
+ suffix_subst = save_string (p - 1, len + 1);
+ p += len;
+ }
break;
-
+
case '*':
if (soft_matched_part)
{
@@ -5117,179 +5304,10 @@ do_spec_1 (spec, inswitch, soft_matched_part)
arg_going = 1;
}
- /* End of string. If we are processing a spec function, we need to
- end any pending argument. */
- if (processing_spec_function && arg_going)
- {
- obstack_1grow (&obstack, 0);
- string = obstack_finish (&obstack);
- if (this_is_library_file)
- string = find_file (string);
- store_arg (string, delete_this_arg, this_is_output_file);
- if (this_is_output_file)
- outfiles[input_file_number] = string;
- arg_going = 0;
- }
-
+ /* End of string. */
return 0;
}
-/* Look up a spec function. */
-
-static const struct spec_function *
-lookup_spec_function (name)
- const char *name;
-{
- static const struct spec_function * const spec_function_tables[] =
- {
- static_spec_functions,
- lang_specific_spec_functions,
- };
- const struct spec_function *sf;
- unsigned int i;
-
- for (i = 0; i < ARRAY_SIZE (spec_function_tables); i++)
- {
- for (sf = spec_function_tables[i]; sf->name != NULL; sf++)
- if (strcmp (sf->name, name) == 0)
- return sf;
- }
-
- return NULL;
-}
-
-/* Evaluate a spec function. */
-
-static const char *
-eval_spec_function (func, args)
- const char *func, *args;
-{
- const struct spec_function *sf;
- const char *funcval;
-
- /* Saved spec processing context. */
- int save_argbuf_index;
- int save_argbuf_length;
- const char **save_argbuf;
-
- int save_arg_going;
- int save_delete_this_arg;
- int save_this_is_output_file;
- int save_this_is_library_file;
- int save_input_from_pipe;
- const char *save_suffix_subst;
-
-
- sf = lookup_spec_function (func);
- if (sf == NULL)
- fatal ("unknown spec function `%s'", func);
-
- /* Push the spec processing context. */
- save_argbuf_index = argbuf_index;
- save_argbuf_length = argbuf_length;
- save_argbuf = argbuf;
-
- save_arg_going = arg_going;
- save_delete_this_arg = delete_this_arg;
- save_this_is_output_file = this_is_output_file;
- save_this_is_library_file = this_is_library_file;
- save_input_from_pipe = input_from_pipe;
- save_suffix_subst = suffix_subst;
-
- /* Create a new spec processing context, and build the function
- arguments. */
-
- alloc_args ();
- if (do_spec_2 (args) < 0)
- fatal ("error in args to spec function `%s'", func);
-
- /* argbuf_index is an index for the next argument to be inserted, and
- so contains the count of the args already inserted. */
-
- funcval = (*sf->func) (argbuf_index, argbuf);
-
- /* Pop the spec processing context. */
- argbuf_index = save_argbuf_index;
- argbuf_length = save_argbuf_length;
- free (argbuf);
- argbuf = save_argbuf;
-
- arg_going = save_arg_going;
- delete_this_arg = save_delete_this_arg;
- this_is_output_file = save_this_is_output_file;
- this_is_library_file = save_this_is_library_file;
- input_from_pipe = save_input_from_pipe;
- suffix_subst = save_suffix_subst;
-
- return funcval;
-}
-
-/* Handle a spec function call of the form:
-
- %:function(args)
-
- ARGS is processed as a spec in a separate context and split into an
- argument vector in the normal fashion. The function returns a string
- containing a spec which we then process in the caller's context, or
- NULL if no processing is required. */
-
-static const char *
-handle_spec_function (p)
- const char *p;
-{
- char *func, *args;
- const char *endp, *funcval;
- int count;
-
- processing_spec_function++;
-
- /* Get the function name. */
- for (endp = p; *endp != '\0'; endp++)
- {
- if (*endp == '(') /* ) */
- break;
- /* Only allow [A-Za-z0-9], -, and _ in function names. */
- if (!ISALNUM (*endp) && !(*endp == '-' || *endp == '_'))
- fatal ("malformed spec function name");
- }
- if (*endp != '(') /* ) */
- fatal ("no arguments for spec function");
- func = save_string (p, endp - p);
- p = ++endp;
-
- /* Get the arguments. */
- for (count = 0; *endp != '\0'; endp++)
- {
- /* ( */
- if (*endp == ')')
- {
- if (count == 0)
- break;
- count--;
- }
- else if (*endp == '(') /* ) */
- count++;
- }
- /* ( */
- if (*endp != ')')
- fatal ("malformed spec function arguments");
- args = save_string (p, endp - p);
- p = ++endp;
-
- /* p now points to just past the end of the spec function expression. */
-
- funcval = eval_spec_function (func, args);
- if (funcval != NULL && do_spec_1 (funcval, 0, NULL) < 0)
- p = NULL;
-
- free (func);
- free (args);
-
- processing_spec_function--;
-
- return p;
-}
-
/* Return 0 if we call do_spec_1 and that returns -1. */
static const char *
@@ -5754,6 +5772,7 @@ is_directory (path1, path2, linker)
*cp++ = '.';
*cp = '\0';
+#ifndef FREEBSD_NATIVE
/* Exclude directories that the linker is known to search. */
if (linker
&& ((cp - path == 6
@@ -5764,6 +5783,7 @@ is_directory (path1, path2, linker)
dir_separator_str, "lib",
dir_separator_str, ".", NULL)) == 0)))
return 0;
+#endif /* FREEBSD_NATIVE */
return (stat (path, &st) >= 0 && S_ISDIR (st.st_mode));
}
@@ -5804,7 +5824,7 @@ set_input (filename)
}
else
input_suffix = "";
-
+
/* If a spec for 'g', 'u', or 'U' is seen with -save-temps then
we will need to do a stat on the input_filename. The
INPUT_STAT_SET signals that the stat is needed. */
@@ -5872,8 +5892,8 @@ main (argc, argv)
signal (SIGCHLD, SIG_DFL);
#endif
- /* Allocate the argument vector. */
- alloc_args ();
+ argbuf_length = 10;
+ argbuf = (const char **) xmalloc (argbuf_length * sizeof (const char *));
obstack_init (&obstack);
@@ -5938,12 +5958,6 @@ main (argc, argv)
process_command (argc, argv);
- /* Process DRIVER_SELF_SPECS, adding any new options to the end
- of the command line. */
-
- for (i = 0; i < ARRAY_SIZE (driver_self_specs); i++)
- do_self_spec (driver_self_specs[i]);
-
/* Initialize the vector of specs to just the default.
This means one element containing 0s, as a terminator. */
@@ -5954,9 +5968,13 @@ main (argc, argv)
/* Read specs from a file if there is one. */
+#ifdef FREEBSD_NATIVE
+ just_machine_suffix = "";
+#else /* FREEBSD_NATIVE */
machine_suffix = concat (spec_machine, dir_separator_str,
spec_version, dir_separator_str, NULL);
just_machine_suffix = concat (spec_machine, dir_separator_str, NULL);
+#endif /* FREEBSD_NATIVE */
specs_file = find_a_file (&startfile_prefixes, "specs", R_OK, 0);
/* Read the specs file unless it is a default one. */
@@ -5967,20 +5985,18 @@ main (argc, argv)
/* We need to check standard_exec_prefix/just_machine_suffix/specs
for any override of as, ld and libraries. */
- specs_file = (char *) alloca (strlen (standard_exec_prefix)
+ specs_file = (char *) alloca (strlen (FBSD_DATA_PREFIX)
+ strlen (just_machine_suffix)
+ sizeof ("specs"));
- strcpy (specs_file, standard_exec_prefix);
+ strcpy (specs_file, FBSD_DATA_PREFIX);
strcat (specs_file, just_machine_suffix);
strcat (specs_file, "specs");
if (access (specs_file, R_OK) == 0)
read_specs (specs_file, TRUE);
- /* If not cross-compiling, look for startfiles in the standard places.
- Similarly, don't add the standard prefixes if startfile handling
- will be under control of startfile_prefix_spec. */
- if (*cross_compile == '0' && *startfile_prefix_spec == 0)
+ /* If not cross-compiling, look for startfiles in the standard places. */
+ if (*cross_compile == '0')
{
if (*md_exec_prefix)
{
@@ -6019,10 +6035,12 @@ main (argc, argv)
NULL, PREFIX_PRIORITY_LAST, 0, NULL, 1);
}
+#ifndef FREEBSD_NATIVE
add_prefix (&startfile_prefixes, standard_startfile_prefix_1,
"BINUTILS", PREFIX_PRIORITY_LAST, 0, NULL, 1);
add_prefix (&startfile_prefixes, standard_startfile_prefix_2,
"BINUTILS", PREFIX_PRIORITY_LAST, 0, NULL, 1);
+#endif /* not FREEBSD_NATIVE */
#if 0 /* Can cause surprises, and one can use -B./ instead. */
add_prefix (&startfile_prefixes, "./", NULL,
PREFIX_PRIORITY_LAST, 1, NULL, 0);
@@ -6036,16 +6054,10 @@ main (argc, argv)
concat (gcc_exec_prefix, machine_suffix,
standard_startfile_prefix, NULL),
"BINUTILS", PREFIX_PRIORITY_LAST, 0, NULL, 1);
- }
-
- if (*startfile_prefix_spec != 0
- && do_spec_2 (startfile_prefix_spec) == 0
- && do_spec_1 (" ", 0, NULL) == 0)
- {
- int ndx;
- for (ndx = 0; ndx < argbuf_index; ndx++)
- add_prefix (&startfile_prefixes, argbuf[ndx], "BINUTILS",
+#ifdef CROSS_STARTFILE_PREFIX
+ add_prefix (&startfile_prefixes, CROSS_STARTFILE_PREFIX, "BINUTILS",
PREFIX_PRIORITY_LAST, 0, NULL, 1);
+#endif
}
/* Process any user specified specs in the order given on the command
@@ -6141,7 +6153,7 @@ main (argc, argv)
if (! verbose_flag)
{
printf (_("\nFor bug reporting instructions, please see:\n"));
- printf ("%s.\n", bug_report_url);
+ printf ("%s.\n", GCCBUGURL);
return (0);
}
@@ -6191,7 +6203,7 @@ main (argc, argv)
}
if (n_infiles == added_libraries)
- fatal ("no input files");
+ fatal ("No input files specified");
/* Make a place to record the compiler output file names
that correspond to the input files. */
@@ -6222,7 +6234,7 @@ main (argc, argv)
input_file_compiler
= lookup_compiler (infiles[i].name, input_filename_length,
infiles[i].language);
-
+
if (input_file_compiler)
{
/* Ok, we found an applicable compiler. Run its spec. */
@@ -6316,7 +6328,7 @@ main (argc, argv)
if (print_help_list)
{
printf (("\nFor bug reporting instructions, please see:\n"));
- printf ("%s\n", bug_report_url);
+ printf ("%s\n", GCCBUGURL);
}
return (signal_count != 0 ? 2
@@ -6361,7 +6373,7 @@ lookup_compiler (name, length, language)
&& !strcmp (cp->suffix,
name + length - strlen (cp->suffix))
))
- break;
+ break;
}
#if defined (OS2) ||defined (HAVE_DOS_BASED_FILE_SYSTEM)
@@ -7228,43 +7240,3 @@ print_multilib_info ()
++p;
}
}
-
-/* if-exists built-in spec function.
-
- Checks to see if the file specified by the absolute pathname in
- ARGS exists. Returns that pathname if found.
-
- The usual use for this function is to check for a library file
- (whose name has been expanded with %s). */
-
-static const char *
-if_exists_spec_function (argc, argv)
- int argc;
- const char **argv;
-{
- /* Must have only one argument. */
- if (argc == 1 && IS_ABSOLUTE_PATHNAME (argv[0]) && ! access (argv[0], R_OK))
- return argv[0];
-
- return NULL;
-}
-
-/* if-exists-else built-in spec function.
-
- This is like if-exists, but takes an additional argument which
- is returned if the first argument does not exist. */
-
-static const char *
-if_exists_else_spec_function (argc, argv)
- int argc;
- const char **argv;
-{
- /* Must have exactly two arguments. */
- if (argc != 2)
- return NULL;
-
- if (IS_ABSOLUTE_PATHNAME (argv[0]) && ! access (argv[0], R_OK))
- return argv[0];
-
- return argv[1];
-}
diff --git a/contrib/gcc/ginclude/stdarg.h b/contrib/gcc/ginclude/stdarg.h
index e451c31..9f6215d 100644
--- a/contrib/gcc/ginclude/stdarg.h
+++ b/contrib/gcc/ginclude/stdarg.h
@@ -47,13 +47,18 @@ typedef __builtin_va_list __gnuc_va_list;
if this invocation was from the user program. */
#ifdef _STDARG_H
-#define va_start(v,l) __builtin_va_start(v,l)
-#define va_end(v) __builtin_va_end(v)
-#define va_arg(v,l) __builtin_va_arg(v,l)
+/* Note that the type used in va_arg is supposed to match the
+ actual type **after default promotions**.
+ Thus, va_arg (..., short) is not valid. */
+
+#define va_start(v,l) __builtin_stdarg_start((v),l)
+#define va_end __builtin_va_end
+#define va_arg __builtin_va_arg
#if !defined(__STRICT_ANSI__) || __STDC_VERSION__ + 0 >= 199900L
-#define va_copy(d,s) __builtin_va_copy(d,s)
+#define va_copy(d,s) __builtin_va_copy((d),(s))
#endif
-#define __va_copy(d,s) __builtin_va_copy(d,s)
+#define __va_copy(d,s) __builtin_va_copy((d),(s))
+
/* Define va_list, if desired, from __gnuc_va_list. */
/* We deliberately do not define va_list when called from
diff --git a/contrib/gcc/ginclude/varargs.h b/contrib/gcc/ginclude/varargs.h
index 4b9803e..098094c 100644
--- a/contrib/gcc/ginclude/varargs.h
+++ b/contrib/gcc/ginclude/varargs.h
@@ -1,7 +1,144 @@
+/* Copyright (C) 1989, 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. */
+
+/* As a special exception, if you include this header file into source
+ files compiled by GCC, this header 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 _VARARGS_H
#define _VARARGS_H
-#error "GCC no longer implements <varargs.h>."
-#error "Revise your code to use <stdarg.h>."
+#ifdef __NeXT__
+
+/* On Next, erase any vestiges of stdarg.h. */
+
+#ifdef _ANSI_STDARG_H_
+#define _VA_LIST_
+#endif
+#define _ANSI_STDARG_H_
+
+#undef va_alist
+#undef va_dcl
+#undef va_list
+#undef va_start
+#undef va_end
+#undef va_arg
+#endif /* __NeXT__ */
+
+/* These macros implement traditional (non-ANSI) varargs
+ for GNU C. */
+
+#define va_alist __builtin_va_alist
+
+/* ??? We don't process attributes correctly in K&R argument context. */
+typedef int __builtin_va_alist_t __attribute__((__mode__(__word__)));
+
+/* ??? It would be nice to get rid of the ellipsis here. It causes
+ current_function_varargs to be set in cc1. */
+#define va_dcl __builtin_va_alist_t __builtin_va_alist; ...
+
+/* Define __gnuc_va_list, just as in stdarg.h. */
+
+#ifndef __GNUC_VA_LIST
+#define __GNUC_VA_LIST
+typedef __builtin_va_list __gnuc_va_list;
+#endif
+
+#define va_start(v) __builtin_varargs_start((v))
+#define va_end __builtin_va_end
+#define va_arg __builtin_va_arg
+#define __va_copy(d,s) __builtin_va_copy((d),(s))
+
+/* Define va_list from __gnuc_va_list. */
+#ifdef _HIDDEN_VA_LIST /* On OSF1, this means varargs.h is "half-loaded". */
+#undef _VA_LIST
+#endif
+
+#if defined(__svr4__) || (defined(_SCO_DS) && !defined(__VA_LIST))
+/* SVR4.2 uses _VA_LIST for an internal alias for va_list,
+ so we must avoid testing it and setting it here.
+ SVR4 uses _VA_LIST as a flag in stdarg.h, but we should
+ have no conflict with that. */
+#ifndef _VA_LIST_
+#define _VA_LIST_
+#ifdef __i860__
+#ifndef _VA_LIST
+#define _VA_LIST va_list
+#endif
+#endif /* __i860__ */
+typedef __gnuc_va_list va_list;
+#ifdef _SCO_DS
+#define __VA_LIST
+#endif
+#endif /* _VA_LIST_ */
+
+#else /* not __svr4__ || _SCO_DS */
+
+/* The macro _VA_LIST_ is the same thing used by this file in Ultrix.
+ But on BSD NET2 we must not test or define or undef it.
+ (Note that the comments in NET 2's ansi.h
+ are incorrect for _VA_LIST_--see stdio.h!) */
+/* Michael Eriksson <mer@sics.se> at Thu Sep 30 11:00:57 1993:
+ Sequent defines _VA_LIST_ in <machine/machtypes.h> to be the type to
+ use for va_list (``typedef _VA_LIST_ va_list'') */
+#if !defined (_VA_LIST_) || defined (__BSD_NET2__) || defined (____386BSD____) || defined (__bsdi__) || defined (__sequent__) || defined (__FreeBSD__) || defined(WINNT)
+/* The macro _VA_LIST_DEFINED is used in Windows NT 3.5 */
+#ifndef _VA_LIST_DEFINED
+/* The macro _VA_LIST is used in SCO Unix 3.2. */
+#ifndef _VA_LIST
+/* The macro _VA_LIST_T_H is used in the Bull dpx2 */
+#ifndef _VA_LIST_T_H
+/* The macro __va_list__ is used by BeOS. */
+#ifndef __va_list__
+typedef __gnuc_va_list va_list;
+#endif /* not __va_list__ */
+#endif /* not _VA_LIST_T_H */
+#endif /* not _VA_LIST */
+#endif /* not _VA_LIST_DEFINED */
+#if !(defined (__BSD_NET2__) || defined (____386BSD____) || defined (__bsdi__) || defined (__sequent__) || defined (__FreeBSD__))
+#define _VA_LIST_
+#endif
+#ifndef _VA_LIST
+#define _VA_LIST
#endif
+#ifndef _VA_LIST_DEFINED
+#define _VA_LIST_DEFINED
+#endif
+#ifndef _VA_LIST_T_H
+#define _VA_LIST_T_H
+#endif
+#ifndef __va_list__
+#define __va_list__
+#endif
+
+#endif /* not _VA_LIST_, except on certain systems */
+
+#endif /* not __svr4__ */
+
+/* The next BSD release (if there is one) wants this symbol to be
+ undefined instead of _VA_LIST_. */
+#ifdef _BSD_VA_LIST
+#undef _BSD_VA_LIST
+#endif
+
+#endif /* _VARARGS_H */
diff --git a/contrib/gcc/libgcc2.c b/contrib/gcc/libgcc2.c
index dea803d..dd5eee7 100644
--- a/contrib/gcc/libgcc2.c
+++ b/contrib/gcc/libgcc2.c
@@ -43,11 +43,10 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "libgcc2.h"
-#ifdef DECLARE_LIBRARY_RENAMES
- DECLARE_LIBRARY_RENAMES
+#if defined (L_negdi2) || defined (L_divdi3) || defined (L_moddi3)
+#if defined (L_divdi3) || defined (L_moddi3)
+static inline
#endif
-
-#if defined (L_negdi2)
DWtype
__negdi2 (DWtype u)
{
@@ -150,9 +149,9 @@ __mulvsi3 (Wtype a, Wtype b)
Wtype
__negvsi2 (Wtype a)
{
- Wtype w;
+ Wtype w;
- w = -a;
+ w = -a;
if (a >= 0 ? w > 0 : w < 0)
abort ();
@@ -165,14 +164,14 @@ __negvsi2 (Wtype a)
DWtype
__negvdi2 (DWtype a)
{
- DWtype w;
+ DWtype w;
- w = -a;
+ w = -a;
if (a >= 0 ? w > 0 : w < 0)
abort ();
- return w;
+ return w;
}
#endif
@@ -180,16 +179,16 @@ __negvdi2 (DWtype a)
Wtype
__absvsi2 (Wtype a)
{
- Wtype w = a;
+ Wtype w = a;
- if (a < 0)
+ if (a < 0)
#ifdef L_negvsi2
- w = __negvsi2 (a);
+ w = __negvsi2 (a);
#else
- w = -a;
+ w = -a;
- if (w < 0)
- abort ();
+ if (w < 0)
+ abort ();
#endif
return w;
@@ -200,19 +199,19 @@ __absvsi2 (Wtype a)
DWtype
__absvdi2 (DWtype a)
{
- DWtype w = a;
+ DWtype w = a;
- if (a < 0)
+ if (a < 0)
#ifdef L_negvsi2
- w = __negvsi2 (a);
+ w = __negvsi2 (a);
#else
- w = -a;
+ w = -a;
- if (w < 0)
- abort ();
+ if (w < 0)
+ abort ();
#endif
- return w;
+ return w;
}
#endif
@@ -220,7 +219,7 @@ __absvdi2 (DWtype a)
DWtype
__mulvdi3 (DWtype u, DWtype v)
{
- DWtype w;
+ DWtype w;
w = u * v;
@@ -366,19 +365,8 @@ __muldi3 (DWtype u, DWtype v)
}
#endif
-#if (defined (L_udivdi3) || defined (L_divdi3) || \
- defined (L_umoddi3) || defined (L_moddi3))
-#if defined (sdiv_qrnnd)
-#define L_udiv_w_sdiv
-#endif
-#endif
-
#ifdef L_udiv_w_sdiv
#if defined (sdiv_qrnnd)
-#if (defined (L_udivdi3) || defined (L_divdi3) || \
- defined (L_umoddi3) || defined (L_moddi3))
-static inline __attribute__ ((__always_inline__))
-#endif
UWtype
__udiv_w_sdiv (UWtype *rp, UWtype a1, UWtype a0, UWtype d)
{
@@ -511,7 +499,7 @@ const UQItype __clz_tab[] =
#if (defined (L_udivdi3) || defined (L_divdi3) || \
defined (L_umoddi3) || defined (L_moddi3))
-static inline __attribute__ ((__always_inline__))
+static inline
#endif
UDWtype
__udivmoddi4 (UDWtype n, UDWtype d, UDWtype *rp)
@@ -744,14 +732,14 @@ __divdi3 (DWtype u, DWtype v)
if (uu.s.high < 0)
c = ~c,
- uu.ll = -uu.ll;
+ uu.ll = __negdi2 (uu.ll);
if (vv.s.high < 0)
c = ~c,
- vv.ll = -vv.ll;
+ vv.ll = __negdi2 (vv.ll);
w = __udivmoddi4 (uu.ll, vv.ll, (UDWtype *) 0);
if (c)
- w = -w;
+ w = __negdi2 (w);
return w;
}
@@ -770,13 +758,13 @@ __moddi3 (DWtype u, DWtype v)
if (uu.s.high < 0)
c = ~c,
- uu.ll = -uu.ll;
+ uu.ll = __negdi2 (uu.ll);
if (vv.s.high < 0)
- vv.ll = -vv.ll;
+ vv.ll = __negdi2 (vv.ll);
(void) __udivmoddi4 (uu.ll, vv.ll, &w);
if (c)
- w = -w;
+ w = __negdi2 (w);
return w;
}
@@ -1075,10 +1063,35 @@ __floatdidf (DWtype u)
#define WORD_SIZE (sizeof (Wtype) * BITS_PER_UNIT)
#define HIGH_HALFWORD_COEFF (((UDWtype) 1) << (WORD_SIZE / 2))
#define HIGH_WORD_COEFF (((UDWtype) 1) << WORD_SIZE)
-
#define DI_SIZE (sizeof (DWtype) * BITS_PER_UNIT)
-#define DF_SIZE DBL_MANT_DIG
-#define SF_SIZE FLT_MANT_DIG
+
+/* Define codes for all the float formats that we know of. Note
+ that this is copied from real.h. */
+
+#define UNKNOWN_FLOAT_FORMAT 0
+#define IEEE_FLOAT_FORMAT 1
+#define VAX_FLOAT_FORMAT 2
+#define IBM_FLOAT_FORMAT 3
+
+/* Default to IEEE float if not specified. Nearly all machines use it. */
+#ifndef HOST_FLOAT_FORMAT
+#define HOST_FLOAT_FORMAT IEEE_FLOAT_FORMAT
+#endif
+
+#if HOST_FLOAT_FORMAT == IEEE_FLOAT_FORMAT
+#define DF_SIZE 53
+#define SF_SIZE 24
+#endif
+
+#if HOST_FLOAT_FORMAT == IBM_FLOAT_FORMAT
+#define DF_SIZE 56
+#define SF_SIZE 24
+#endif
+
+#if HOST_FLOAT_FORMAT == VAX_FLOAT_FORMAT
+#define DF_SIZE 56
+#define SF_SIZE 24
+#endif
SFtype
__floatdisf (DWtype u)
@@ -1251,13 +1264,14 @@ __eprintf (const char *string, const char *expression,
#ifdef L_bb
-struct bb_function_info {
- long checksum;
- int arc_count;
- const char *name;
-};
+#if LONG_TYPE_SIZE == GCOV_TYPE_SIZE
+typedef long gcov_type;
+#else
+typedef long long gcov_type;
+#endif
+
-/* Structure emitted by --profile-arcs */
+/* Structure emitted by -a */
struct bb
{
long zero_word;
@@ -1265,19 +1279,26 @@ struct bb
gcov_type *counts;
long ncounts;
struct bb *next;
+ const unsigned long *addresses;
/* Older GCC's did not emit these fields. */
- long sizeof_bb;
- struct bb_function_info *function_infos;
+ long nwords;
+ const char **functions;
+ const long *line_nums;
+ const char **filenames;
+ char *flags;
};
#ifndef inhibit_libc
-/* Arc profile dumper. Requires atexit and stdio. */
+/* Simple minded basic block profiling output dumper for
+ systems that don't provide tcov support. At present,
+ it requires atexit and stdio. */
#undef NULL /* Avoid errors if stdio.h and our stddef.h mismatch. */
#include <stdio.h>
+#include "gbl-ctors.h"
#include "gcov-io.h"
#include <string.h>
#ifdef TARGET_HAS_F_SETLKW
@@ -1285,272 +1306,162 @@ struct bb
#include <errno.h>
#endif
-/* Chain of per-object file bb structures. */
static struct bb *bb_head;
-/* Dump the coverage counts. We merge with existing counts when
- possible, to avoid growing the .da files ad infinitum. */
-
void
__bb_exit_func (void)
{
- struct bb *ptr;
+ FILE *da_file;
int i;
- gcov_type program_sum = 0;
- gcov_type program_max = 0;
- long program_arcs = 0;
- gcov_type merged_sum = 0;
- gcov_type merged_max = 0;
- long merged_arcs = 0;
-
-#if defined (TARGET_HAS_F_SETLKW)
- struct flock s_flock;
+ struct bb *ptr;
- s_flock.l_type = F_WRLCK;
- s_flock.l_whence = SEEK_SET;
- s_flock.l_start = 0;
- s_flock.l_len = 0; /* Until EOF. */
- s_flock.l_pid = getpid ();
-#endif
+ if (bb_head == 0)
+ return;
- /* Non-merged stats for this program. */
- for (ptr = bb_head; ptr; ptr = ptr->next)
- {
- for (i = 0; i < ptr->ncounts; i++)
- {
- program_sum += ptr->counts[i];
+ i = strlen (bb_head->filename) - 3;
- if (ptr->counts[i] > program_max)
- program_max = ptr->counts[i];
- }
- program_arcs += ptr->ncounts;
- }
-
- for (ptr = bb_head; ptr; ptr = ptr->next)
+
+ for (ptr = bb_head; ptr != (struct bb *) 0; ptr = ptr->next)
{
- FILE *da_file;
- gcov_type object_max = 0;
- gcov_type object_sum = 0;
- long object_functions = 0;
- int merging = 0;
- int error = 0;
- struct bb_function_info *fn_info;
- gcov_type *count_ptr;
-
- /* Open for modification */
+ int firstchar;
+
+ /* Make sure the output file exists -
+ but don't clobber exiting data. */
+ if ((da_file = fopen (ptr->filename, "a")) != 0)
+ fclose (da_file);
+
+ /* Need to re-open in order to be able to write from the start. */
da_file = fopen (ptr->filename, "r+b");
-
- if (da_file)
- merging = 1;
- else
- {
- /* Try for appending */
- da_file = fopen (ptr->filename, "ab");
- /* Some old systems might not allow the 'b' mode modifier.
- Therefore, try to open without it. This can lead to a
- race condition so that when you delete and re-create the
- file, the file might be opened in text mode, but then,
- you shouldn't delete the file in the first place. */
- if (!da_file)
- da_file = fopen (ptr->filename, "a");
- }
-
- if (!da_file)
+ /* Some old systems might not allow the 'b' mode modifier.
+ Therefore, try to open without it. This can lead to a race
+ condition so that when you delete and re-create the file, the
+ file might be opened in text mode, but then, you shouldn't
+ delete the file in the first place. */
+ if (da_file == 0)
+ da_file = fopen (ptr->filename, "r+");
+ if (da_file == 0)
{
fprintf (stderr, "arc profiling: Can't open output file %s.\n",
ptr->filename);
- ptr->filename = 0;
continue;
}
-#if defined (TARGET_HAS_F_SETLKW)
/* After a fork, another process might try to read and/or write
the same file simultanously. So if we can, lock the file to
avoid race conditions. */
- while (fcntl (fileno (da_file), F_SETLKW, &s_flock)
- && errno == EINTR)
- continue;
+#if defined (TARGET_HAS_F_SETLKW)
+ {
+ struct flock s_flock;
+
+ s_flock.l_type = F_WRLCK;
+ s_flock.l_whence = SEEK_SET;
+ s_flock.l_start = 0;
+ s_flock.l_len = 1;
+ s_flock.l_pid = getpid ();
+
+ while (fcntl (fileno (da_file), F_SETLKW, &s_flock)
+ && errno == EINTR);
+ }
#endif
- for (fn_info = ptr->function_infos; fn_info->arc_count != -1; fn_info++)
- object_functions++;
- if (merging)
+ /* If the file is not empty, and the number of counts in it is the
+ same, then merge them in. */
+ firstchar = fgetc (da_file);
+ if (firstchar == EOF)
{
- /* Merge data from file. */
- long tmp_long;
- gcov_type tmp_gcov;
-
- if (/* magic */
- (__read_long (&tmp_long, da_file, 4) || tmp_long != -123l)
- /* functions in object file. */
- || (__read_long (&tmp_long, da_file, 4)
- || tmp_long != object_functions)
- /* extension block, skipped */
- || (__read_long (&tmp_long, da_file, 4)
- || fseek (da_file, tmp_long, SEEK_CUR)))
+ if (ferror (da_file))
{
- read_error:;
- fprintf (stderr, "arc profiling: Error merging output file %s.\n",
+ fprintf (stderr, "arc profiling: Can't read output file ");
+ perror (ptr->filename);
+ }
+ }
+ else
+ {
+ long n_counts = 0;
+
+ if (ungetc (firstchar, da_file) == EOF)
+ rewind (da_file);
+ if (__read_long (&n_counts, da_file, 8) != 0)
+ {
+ fprintf (stderr, "arc profiling: Can't read output file %s.\n",
ptr->filename);
- clearerr (da_file);
+ continue;
}
- else
+
+ if (n_counts == ptr->ncounts)
{
- /* Merge execution counts for each function. */
- count_ptr = ptr->counts;
-
- for (fn_info = ptr->function_infos; fn_info->arc_count != -1;
- fn_info++)
+ int i;
+
+ for (i = 0; i < n_counts; i++)
{
- if (/* function name delim */
- (__read_long (&tmp_long, da_file, 4)
- || tmp_long != -1)
- /* function name length */
- || (__read_long (&tmp_long, da_file, 4)
- || tmp_long != (long) strlen (fn_info->name))
- /* skip string */
- || fseek (da_file, ((tmp_long + 1) + 3) & ~3, SEEK_CUR)
- /* function name delim */
- || (__read_long (&tmp_long, da_file, 4)
- || tmp_long != -1))
- goto read_error;
-
- if (/* function checksum */
- (__read_long (&tmp_long, da_file, 4)
- || tmp_long != fn_info->checksum)
- /* arc count */
- || (__read_long (&tmp_long, da_file, 4)
- || tmp_long != fn_info->arc_count))
- goto read_error;
-
- for (i = fn_info->arc_count; i > 0; i--, count_ptr++)
- if (__read_gcov_type (&tmp_gcov, da_file, 8))
- goto read_error;
- else
- *count_ptr += tmp_gcov;
+ gcov_type v = 0;
+
+ if (__read_gcov_type (&v, da_file, 8) != 0)
+ {
+ fprintf (stderr,
+ "arc profiling: Can't read output file %s.\n",
+ ptr->filename);
+ break;
+ }
+ ptr->counts[i] += v;
}
}
- fseek (da_file, 0, SEEK_SET);
- }
-
- /* Calculate the per-object statistics. */
- for (i = 0; i < ptr->ncounts; i++)
- {
- object_sum += ptr->counts[i];
- if (ptr->counts[i] > object_max)
- object_max = ptr->counts[i];
}
- merged_sum += object_sum;
- if (merged_max < object_max)
- merged_max = object_max;
- merged_arcs += ptr->ncounts;
-
- /* Write out the data. */
- if (/* magic */
- __write_long (-123, da_file, 4)
- /* number of functions in object file. */
- || __write_long (object_functions, da_file, 4)
- /* length of extra data in bytes. */
- || __write_long ((4 + 8 + 8) + (4 + 8 + 8), da_file, 4)
-
- /* whole program statistics. If merging write per-object
- now, rewrite later */
- /* number of instrumented arcs. */
- || __write_long (merging ? ptr->ncounts : program_arcs, da_file, 4)
- /* sum of counters. */
- || __write_gcov_type (merging ? object_sum : program_sum, da_file, 8)
- /* maximal counter. */
- || __write_gcov_type (merging ? object_max : program_max, da_file, 8)
-
- /* per-object statistics. */
- /* number of counters. */
- || __write_long (ptr->ncounts, da_file, 4)
- /* sum of counters. */
- || __write_gcov_type (object_sum, da_file, 8)
- /* maximal counter. */
- || __write_gcov_type (object_max, da_file, 8))
+
+ rewind (da_file);
+
+ /* ??? Should first write a header to the file. Preferably, a 4 byte
+ magic number, 4 bytes containing the time the program was
+ compiled, 4 bytes containing the last modification time of the
+ source file, and 4 bytes indicating the compiler options used.
+
+ That way we can easily verify that the proper source/executable/
+ data file combination is being used from gcov. */
+
+ if (__write_gcov_type (ptr->ncounts, da_file, 8) != 0)
{
- write_error:;
+
fprintf (stderr, "arc profiling: Error writing output file %s.\n",
ptr->filename);
- error = 1;
}
else
{
- /* Write execution counts for each function. */
- count_ptr = ptr->counts;
-
- for (fn_info = ptr->function_infos; fn_info->arc_count != -1;
- fn_info++)
+ int j;
+ gcov_type *count_ptr = ptr->counts;
+ int ret = 0;
+ for (j = ptr->ncounts; j > 0; j--)
{
- if (__write_gcov_string (fn_info->name,
- strlen (fn_info->name), da_file, -1)
- || __write_long (fn_info->checksum, da_file, 4)
- || __write_long (fn_info->arc_count, da_file, 4))
- goto write_error;
-
- for (i = fn_info->arc_count; i > 0; i--, count_ptr++)
- if (__write_gcov_type (*count_ptr, da_file, 8))
- goto write_error; /* RIP Edsger Dijkstra */
+ if (__write_gcov_type (*count_ptr, da_file, 8) != 0)
+ {
+ ret = 1;
+ break;
+ }
+ count_ptr++;
}
+ if (ret)
+ fprintf (stderr, "arc profiling: Error writing output file %s.\n",
+ ptr->filename);
}
- if (fclose (da_file))
- {
- fprintf (stderr, "arc profiling: Error closing output file %s.\n",
- ptr->filename);
- error = 1;
- }
- if (error || !merging)
- ptr->filename = 0;
+ if (fclose (da_file) == EOF)
+ fprintf (stderr, "arc profiling: Error closing output file %s.\n",
+ ptr->filename);
}
- /* Upate whole program statistics. */
- for (ptr = bb_head; ptr; ptr = ptr->next)
- if (ptr->filename)
- {
- FILE *da_file;
-
- da_file = fopen (ptr->filename, "r+b");
- if (!da_file)
- {
- fprintf (stderr, "arc profiling: Cannot reopen %s.\n",
- ptr->filename);
- continue;
- }
-
-#if defined (TARGET_HAS_F_SETLKW)
- while (fcntl (fileno (da_file), F_SETLKW, &s_flock)
- && errno == EINTR)
- continue;
-#endif
-
- if (fseek (da_file, 4 * 3, SEEK_SET)
- /* number of instrumented arcs. */
- || __write_long (merged_arcs, da_file, 4)
- /* sum of counters. */
- || __write_gcov_type (merged_sum, da_file, 8)
- /* maximal counter. */
- || __write_gcov_type (merged_max, da_file, 8))
- fprintf (stderr, "arc profiling: Error updating program header %s.\n",
- ptr->filename);
- if (fclose (da_file))
- fprintf (stderr, "arc profiling: Error reclosing %s\n",
- ptr->filename);
- }
+ return;
}
-/* Add a new object file onto the bb chain. Invoked automatically
- when running an object file's global ctors. */
-
void
__bb_init_func (struct bb *blocks)
{
+ /* User is supposed to check whether the first word is non-0,
+ but just in case.... */
+
if (blocks->zero_word)
return;
- /* Initialize destructor and per-thread data. */
+ /* Initialize destructor. */
if (!bb_head)
atexit (__bb_exit_func);
@@ -1563,7 +1474,6 @@ __bb_init_func (struct bb *blocks)
/* Called before fork or exec - write out profile information gathered so
far and reset it to zero. This avoids duplication or loss of the
profile information gathered so far. */
-
void
__bb_fork_func (void)
{
@@ -1746,6 +1656,102 @@ mprotect (char *addr, int len, int prot)
TRANSFER_FROM_TRAMPOLINE
#endif
+#if defined (NeXT) && defined (__MACH__)
+
+/* Make stack executable so we can call trampolines on stack.
+ This is called from INITIALIZE_TRAMPOLINE in next.h. */
+#ifdef NeXTStep21
+ #include <mach.h>
+#else
+ #include <mach/mach.h>
+#endif
+
+void
+__enable_execute_stack (char *addr)
+{
+ kern_return_t r;
+ char *eaddr = addr + TRAMPOLINE_SIZE;
+ vm_address_t a = (vm_address_t) addr;
+
+ /* turn on execute access on stack */
+ r = vm_protect (task_self (), a, TRAMPOLINE_SIZE, FALSE, VM_PROT_ALL);
+ if (r != KERN_SUCCESS)
+ {
+ mach_error("vm_protect VM_PROT_ALL", r);
+ exit(1);
+ }
+
+ /* We inline the i-cache invalidation for speed */
+
+#ifdef CLEAR_INSN_CACHE
+ CLEAR_INSN_CACHE (addr, eaddr);
+#else
+ __clear_cache ((int) addr, (int) eaddr);
+#endif
+}
+
+#endif /* defined (NeXT) && defined (__MACH__) */
+
+#ifdef __convex__
+
+/* Make stack executable so we can call trampolines on stack.
+ This is called from INITIALIZE_TRAMPOLINE in convex.h. */
+
+#include <sys/mman.h>
+#include <sys/vmparam.h>
+#include <machine/machparam.h>
+
+void
+__enable_execute_stack (void)
+{
+ int fp;
+ static unsigned lowest = USRSTACK;
+ unsigned current = (unsigned) &fp & -NBPG;
+
+ if (lowest > current)
+ {
+ unsigned len = lowest - current;
+ mremap (current, &len, PROT_READ | PROT_WRITE | PROT_EXEC, MAP_PRIVATE);
+ lowest = current;
+ }
+
+ /* Clear instruction cache in case an old trampoline is in it. */
+ asm ("pich");
+}
+#endif /* __convex__ */
+
+#ifdef __sysV88__
+
+/* Modified from the convex -code above. */
+
+#include <sys/param.h>
+#include <errno.h>
+#include <sys/m88kbcs.h>
+
+void
+__enable_execute_stack (void)
+{
+ int save_errno;
+ static unsigned long lowest = USRSTACK;
+ unsigned long current = (unsigned long) &save_errno & -NBPC;
+
+ /* Ignore errno being set. memctl sets errno to EINVAL whenever the
+ address is seen as 'negative'. That is the case with the stack. */
+
+ save_errno=errno;
+ if (lowest > current)
+ {
+ unsigned len=lowest-current;
+ memctl(current,len,MCT_TEXT);
+ lowest = current;
+ }
+ else
+ memctl(current,NBPC,MCT_TEXT);
+ errno=save_errno;
+}
+
+#endif /* __sysV88__ */
+
#ifdef __sysV68__
#include <sys/signal.h>
@@ -1790,6 +1796,57 @@ __clear_insn_cache (void)
}
#endif /* __sysV68__ */
+
+#ifdef __pyr__
+
+#undef NULL /* Avoid errors if stdio.h and our stddef.h mismatch. */
+#include <stdio.h>
+#include <sys/mman.h>
+#include <sys/types.h>
+#include <sys/param.h>
+#include <sys/vmmac.h>
+
+/* Modified from the convex -code above.
+ mremap promises to clear the i-cache. */
+
+void
+__enable_execute_stack (void)
+{
+ int fp;
+ if (mprotect (((unsigned int)&fp/PAGSIZ)*PAGSIZ, PAGSIZ,
+ PROT_READ|PROT_WRITE|PROT_EXEC))
+ {
+ perror ("mprotect in __enable_execute_stack");
+ fflush (stderr);
+ abort ();
+ }
+}
+#endif /* __pyr__ */
+
+#if defined (sony_news) && defined (SYSTYPE_BSD)
+
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/param.h>
+#include <syscall.h>
+#include <machine/sysnews.h>
+
+/* cacheflush function for NEWS-OS 4.2.
+ This function is called from trampoline-initialize code
+ defined in config/mips/mips.h. */
+
+void
+cacheflush (char *beg, int size, int flag)
+{
+ if (syscall (SYS_sysnews, NEWS_CACHEFLUSH, beg, size, FLUSH_BCACHE))
+ {
+ perror ("cache_flush");
+ fflush (stderr);
+ abort ();
+ }
+}
+
+#endif /* sony_news */
#endif /* L_trampoline */
#ifndef __CYGWIN__
diff --git a/contrib/gcc/make-temp-file.c b/contrib/gcc/make-temp-file.c
index 8833504..563bd46 100644
--- a/contrib/gcc/make-temp-file.c
+++ b/contrib/gcc/make-temp-file.c
@@ -17,6 +17,8 @@ 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. */
+/* $FreeBSD$ */
+
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
@@ -112,10 +114,10 @@ choose_tmpdir ()
base = try (P_tmpdir, base);
#endif
- /* Try /var/tmp, /usr/tmp, then /tmp. */
+ /* Try /tmp, /var/tmp, then /usr/tmp. */
+ base = try (tmp, base);
base = try (vartmp, base);
base = try (usrtmp, base);
- base = try (tmp, base);
/* If all else fails, use the current directory! */
if (base == 0)
diff --git a/contrib/gcc/objc/sendmsg.c b/contrib/gcc/objc/sendmsg.c
deleted file mode 100644
index 245b8b9..0000000
--- a/contrib/gcc/objc/sendmsg.c
+++ /dev/null
@@ -1,651 +0,0 @@
-/* GNU Objective C Runtime message lookup
- Copyright (C) 1993, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
- Contributed by Kresten Krab Thorup
-
-This file is part of GNU CC.
-
-GNU CC is free software; you can redistribute it and/or modify it under the
-terms of the GNU General Public License as published by the Free Software
-Foundation; either version 2, or (at your option) any later version.
-
-GNU CC is distributed in the hope that it will be useful, but WITHOUT ANY
-WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
-details.
-
-You should have received a copy of the GNU General Public License along with
-GNU CC; see the file COPYING. If not, write to the Free Software
-Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-/* As a special exception, if you link this library with files compiled with
- GCC to produce an executable, this does not cause the resulting executable
- to be covered by the GNU General Public License. This exception does not
- however invalidate any other reasons why the executable file might be
- covered by the GNU General Public License. */
-
-#include "../tconfig.h"
-#include "runtime.h"
-#include "sarray.h"
-#include "encoding.h"
-#include "runtime-info.h"
-
-/* this is how we hack STRUCT_VALUE to be 1 or 0 */
-#define gen_rtx(args...) 1
-#define gen_rtx_MEM(args...) 1
-#define rtx int
-
-#if !defined(STRUCT_VALUE) || STRUCT_VALUE == 0
-#define INVISIBLE_STRUCT_RETURN 1
-#else
-#define INVISIBLE_STRUCT_RETURN 0
-#endif
-
-/* The uninstalled dispatch table */
-struct sarray* __objc_uninstalled_dtable = 0; /* !T:MUTEX */
-
-/* Send +initialize to class */
-static void __objc_send_initialize(Class);
-
-static void __objc_install_dispatch_table_for_class (Class);
-
-/* Forward declare some functions */
-static void __objc_init_install_dtable(id, SEL);
-
-/* Various forwarding functions that are used based upon the
- return type for the selector.
- __objc_block_forward for structures.
- __objc_double_forward for floats/doubles.
- __objc_word_forward for pointers or types that fit in registers.
- */
-static double __objc_double_forward(id, SEL, ...);
-static id __objc_word_forward(id, SEL, ...);
-typedef struct { id many[8]; } __big;
-#if INVISIBLE_STRUCT_RETURN
-static __big
-#else
-static id
-#endif
-__objc_block_forward(id, SEL, ...);
-static Method_t search_for_method_in_hierarchy (Class class, SEL sel);
-Method_t search_for_method_in_list(MethodList_t list, SEL op);
-id nil_method(id, SEL, ...);
-
-/* Given a selector, return the proper forwarding implementation. */
-__inline__
-IMP
-__objc_get_forward_imp (SEL sel)
-{
- const char *t = sel->sel_types;
-
- if (t && (*t == '[' || *t == '(' || *t == '{')
-#ifdef OBJC_MAX_STRUCT_BY_VALUE
- && objc_sizeof_type(t) > OBJC_MAX_STRUCT_BY_VALUE
-#endif
- )
- return (IMP)__objc_block_forward;
- else if (t && (*t == 'f' || *t == 'd'))
- return (IMP)__objc_double_forward;
- else
- return (IMP)__objc_word_forward;
-}
-
-/* Given a class and selector, return the selector's implementation. */
-__inline__
-IMP
-get_imp (Class class, SEL sel)
-{
- void* res = sarray_get_safe (class->dtable, (size_t) sel->sel_id);
- if (res == 0)
- {
- /* Not a valid method */
- if(class->dtable == __objc_uninstalled_dtable)
- {
- /* The dispatch table needs to be installed. */
- objc_mutex_lock(__objc_runtime_mutex);
- __objc_install_dispatch_table_for_class (class);
- objc_mutex_unlock(__objc_runtime_mutex);
- /* Call ourselves with the installed dispatch table
- and get the real method */
- res = get_imp(class, sel);
- }
- else
- {
- /* The dispatch table has been installed so the
- method just doesn't exist for the class.
- Return the forwarding implementation. */
- res = __objc_get_forward_imp(sel);
- }
- }
- return res;
-}
-
-/* Query if an object can respond to a selector, returns YES if the
-object implements the selector otherwise NO. Does not check if the
-method can be forwarded. */
-__inline__
-BOOL
-__objc_responds_to (id object, SEL sel)
-{
- void* res;
-
- /* Install dispatch table if need be */
- if (object->class_pointer->dtable == __objc_uninstalled_dtable)
- {
- objc_mutex_lock(__objc_runtime_mutex);
- __objc_install_dispatch_table_for_class (object->class_pointer);
- objc_mutex_unlock(__objc_runtime_mutex);
- }
-
- /* Get the method from the dispatch table */
- res = sarray_get_safe (object->class_pointer->dtable, (size_t) sel->sel_id);
- return (res != 0);
-}
-
-/* This is the lookup function. All entries in the table are either a
- valid method *or* zero. If zero then either the dispatch table
- needs to be installed or it doesn't exist and forwarding is attempted. */
-__inline__
-IMP
-objc_msg_lookup(id receiver, SEL op)
-{
- IMP result;
- if(receiver)
- {
- result = sarray_get_safe (receiver->class_pointer->dtable,
- (sidx)op->sel_id);
- if (result == 0)
- {
- /* Not a valid method */
- if(receiver->class_pointer->dtable == __objc_uninstalled_dtable)
- {
- /* The dispatch table needs to be installed.
- This happens on the very first method call to the class. */
- __objc_init_install_dtable(receiver, op);
-
- /* Get real method for this in newly installed dtable */
- result = get_imp(receiver->class_pointer, op);
- }
- else
- {
- /* The dispatch table has been installed so the
- method just doesn't exist for the class.
- Attempt to forward the method. */
- result = __objc_get_forward_imp(op);
- }
- }
- return result;
- }
- else
- return nil_method;
-}
-
-IMP
-objc_msg_lookup_super (Super_t super, SEL sel)
-{
- if (super->self)
- return get_imp (super->class, sel);
- else
- return nil_method;
-}
-
-int method_get_sizeof_arguments (Method*);
-
-retval_t
-objc_msg_sendv(id object, SEL op, arglist_t arg_frame)
-{
- Method* m = class_get_instance_method(object->class_pointer, op);
- const char *type;
- *((id*)method_get_first_argument (m, arg_frame, &type)) = object;
- *((SEL*)method_get_next_argument (arg_frame, &type)) = op;
- return __builtin_apply((apply_t)m->method_imp,
- arg_frame,
- method_get_sizeof_arguments (m));
-}
-
-void
-__objc_init_dispatch_tables()
-{
- __objc_uninstalled_dtable
- = sarray_new(200, 0);
-}
-
-/* This function is called by objc_msg_lookup when the
- dispatch table needs to be installed; thus it is called once
- for each class, namely when the very first message is sent to it. */
-static void
-__objc_init_install_dtable(id receiver, SEL op)
-{
- /* This may happen, if the programmer has taken the address of a
- method before the dtable was initialized... too bad for him! */
- if(receiver->class_pointer->dtable != __objc_uninstalled_dtable)
- return;
-
- objc_mutex_lock(__objc_runtime_mutex);
-
- if(CLS_ISCLASS(receiver->class_pointer))
- {
- /* receiver is an ordinary object */
- assert(CLS_ISCLASS(receiver->class_pointer));
-
- /* install instance methods table */
- __objc_install_dispatch_table_for_class (receiver->class_pointer);
-
- /* call +initialize -- this will in turn install the factory
- dispatch table if not already done :-) */
- __objc_send_initialize(receiver->class_pointer);
- }
- else
- {
- /* receiver is a class object */
- assert(CLS_ISCLASS((Class)receiver));
- assert(CLS_ISMETA(receiver->class_pointer));
-
- /* Install real dtable for factory methods */
- __objc_install_dispatch_table_for_class (receiver->class_pointer);
-
- if (strcmp (sel_get_name (op), "initialize"))
- __objc_send_initialize((Class)receiver);
- else
- CLS_SETINITIALIZED((Class)receiver);
- }
- objc_mutex_unlock(__objc_runtime_mutex);
-}
-
-/* Install dummy table for class which causes the first message to
- that class (or instances hereof) to be initialized properly */
-void
-__objc_install_premature_dtable(Class class)
-{
- assert(__objc_uninstalled_dtable);
- class->dtable = __objc_uninstalled_dtable;
-}
-
-/* Send +initialize to class if not already done */
-static void
-__objc_send_initialize(Class class)
-{
- /* This *must* be a class object */
- assert(CLS_ISCLASS(class));
- assert(!CLS_ISMETA(class));
-
- if (!CLS_ISINITIALIZED(class))
- {
- CLS_SETINITIALIZED(class);
- CLS_SETINITIALIZED(class->class_pointer);
-
- if(class->super_class)
- __objc_send_initialize(class->super_class);
-
- {
- SEL op = sel_register_name ("initialize");
- Class tmpclass = class;
- IMP imp = 0;
-
- while (!imp && tmpclass) {
- MethodList_t method_list = tmpclass->class_pointer->methods;
-
- while(!imp && method_list) {
- int i;
- Method_t method;
-
- for (i=0;i<method_list->method_count;i++) {
- method = &(method_list->method_list[i]);
- if (method->method_name
- && method->method_name->sel_id == op->sel_id) {
- imp = method->method_imp;
- break;
- }
- }
-
- method_list = method_list->method_next;
-
- }
-
- tmpclass = tmpclass->super_class;
- }
- if (imp)
- (*imp)((id)class, op);
-
- }
- }
-}
-
-/* Walk on the methods list of class and install the methods in the reverse
- order of the lists. Since methods added by categories are before the methods
- of class in the methods list, this allows categories to substitute methods
- declared in class. However if more than one category replaces the same
- method nothing is guaranteed about what method will be used.
- Assumes that __objc_runtime_mutex is locked down. */
-static void
-__objc_install_methods_in_dtable (Class class, MethodList_t method_list)
-{
- int i;
-
- if (!method_list)
- return;
-
- if (method_list->method_next)
- __objc_install_methods_in_dtable (class, method_list->method_next);
-
- for (i = 0; i < method_list->method_count; i++)
- {
- Method_t method = &(method_list->method_list[i]);
- sarray_at_put_safe (class->dtable,
- (sidx) method->method_name->sel_id,
- method->method_imp);
- }
-}
-
-/* Assumes that __objc_runtime_mutex is locked down. */
-static void
-__objc_install_dispatch_table_for_class (Class class)
-{
- Class super;
-
- /* If the class has not yet had its class links resolved, we must
- re-compute all class links */
- if(!CLS_ISRESOLV(class))
- __objc_resolve_class_links();
-
- super = class->super_class;
-
- if (super != 0 && (super->dtable == __objc_uninstalled_dtable))
- __objc_install_dispatch_table_for_class (super);
-
- /* Allocate dtable if necessary */
- if (super == 0)
- {
- objc_mutex_lock(__objc_runtime_mutex);
- class->dtable = sarray_new (__objc_selector_max_index, 0);
- objc_mutex_unlock(__objc_runtime_mutex);
- }
- else
- class->dtable = sarray_lazy_copy (super->dtable);
-
- __objc_install_methods_in_dtable (class, class->methods);
-}
-
-void
-__objc_update_dispatch_table_for_class (Class class)
-{
- Class next;
- struct sarray *arr;
-
- /* not yet installed -- skip it */
- if (class->dtable == __objc_uninstalled_dtable)
- return;
-
- objc_mutex_lock(__objc_runtime_mutex);
-
- arr = class->dtable;
- __objc_install_premature_dtable (class); /* someone might require it... */
- sarray_free (arr); /* release memory */
-
- /* could have been lazy... */
- __objc_install_dispatch_table_for_class (class);
-
- if (class->subclass_list) /* Traverse subclasses */
- for (next = class->subclass_list; next; next = next->sibling_class)
- __objc_update_dispatch_table_for_class (next);
-
- objc_mutex_unlock(__objc_runtime_mutex);
-}
-
-
-/* This function adds a method list to a class. This function is
- typically called by another function specific to the run-time. As
- such this function does not worry about thread safe issues.
-
- This one is only called for categories. Class objects have their
- methods installed right away, and their selectors are made into
- SEL's by the function __objc_register_selectors_from_class. */
-void
-class_add_method_list (Class class, MethodList_t list)
-{
- int i;
-
- /* Passing of a linked list is not allowed. Do multiple calls. */
- assert (!list->method_next);
-
- /* Check for duplicates. */
- for (i = 0; i < list->method_count; ++i)
- {
- Method_t method = &list->method_list[i];
-
- if (method->method_name) /* Sometimes these are NULL */
- {
- /* This is where selector names are transmogrified to SEL's */
- method->method_name =
- sel_register_typed_name ((const char*)method->method_name,
- method->method_types);
- }
- }
-
- /* Add the methods to the class's method list. */
- list->method_next = class->methods;
- class->methods = list;
-
- /* Update the dispatch table of class */
- __objc_update_dispatch_table_for_class (class);
-}
-
-Method_t
-class_get_instance_method(Class class, SEL op)
-{
- return search_for_method_in_hierarchy(class, op);
-}
-
-Method_t
-class_get_class_method(MetaClass class, SEL op)
-{
- return search_for_method_in_hierarchy(class, op);
-}
-
-
-/* Search for a method starting from the current class up its hierarchy.
- Return a pointer to the method's method structure if found. NULL
- otherwise. */
-
-static Method_t
-search_for_method_in_hierarchy (Class cls, SEL sel)
-{
- Method_t method = NULL;
- Class class;
-
- if (! sel_is_mapped (sel))
- return NULL;
-
- /* Scan the method list of the class. If the method isn't found in the
- list then step to its super class. */
- for (class = cls; ((! method) && class); class = class->super_class)
- method = search_for_method_in_list (class->methods, sel);
-
- return method;
-}
-
-
-
-/* Given a linked list of method and a method's name. Search for the named
- method's method structure. Return a pointer to the method's method
- structure if found. NULL otherwise. */
-Method_t
-search_for_method_in_list (MethodList_t list, SEL op)
-{
- MethodList_t method_list = list;
-
- if (! sel_is_mapped (op))
- return NULL;
-
- /* If not found then we'll search the list. */
- while (method_list)
- {
- int i;
-
- /* Search the method list. */
- for (i = 0; i < method_list->method_count; ++i)
- {
- Method_t method = &method_list->method_list[i];
-
- if (method->method_name)
- if (method->method_name->sel_id == op->sel_id)
- return method;
- }
-
- /* The method wasn't found. Follow the link to the next list of
- methods. */
- method_list = method_list->method_next;
- }
-
- return NULL;
-}
-
-static retval_t __objc_forward (id object, SEL sel, arglist_t args);
-
-/* Forwarding pointers/integers through the normal registers */
-static id
-__objc_word_forward (id rcv, SEL op, ...)
-{
- void *args, *res;
-
- args = __builtin_apply_args ();
- res = __objc_forward (rcv, op, args);
- if (res)
- __builtin_return (res);
- else
- return res;
-}
-
-/* Specific routine for forwarding floats/double because of
- architectural differences on some processors. i386s for
- example which uses a floating point stack versus general
- registers for floating point numbers. This forward routine
- makes sure that GCC restores the proper return values */
-static double
-__objc_double_forward (id rcv, SEL op, ...)
-{
- void *args, *res;
-
- args = __builtin_apply_args ();
- res = __objc_forward (rcv, op, args);
- __builtin_return (res);
-}
-
-#if INVISIBLE_STRUCT_RETURN
-static __big
-#else
-static id
-#endif
-__objc_block_forward (id rcv, SEL op, ...)
-{
- void *args, *res;
-
- args = __builtin_apply_args ();
- res = __objc_forward (rcv, op, args);
- if (res)
- __builtin_return (res);
- else
-#if INVISIBLE_STRUCT_RETURN
- return (__big) {{0, 0, 0, 0, 0, 0, 0, 0}};
-#else
- return nil;
-#endif
-}
-
-
-/* This function is installed in the dispatch table for all methods which are
- not implemented. Thus, it is called when a selector is not recognized. */
-static retval_t
-__objc_forward (id object, SEL sel, arglist_t args)
-{
- IMP imp;
- static SEL frwd_sel = 0; /* !T:SAFE2 */
- SEL err_sel;
-
- /* first try if the object understands forward:: */
- if (!frwd_sel)
- frwd_sel = sel_get_any_uid("forward::");
-
- if (__objc_responds_to (object, frwd_sel))
- {
- imp = get_imp(object->class_pointer, frwd_sel);
- return (*imp)(object, frwd_sel, sel, args);
- }
-
- /* If the object recognizes the doesNotRecognize: method then we're going
- to send it. */
- err_sel = sel_get_any_uid ("doesNotRecognize:");
- if (__objc_responds_to (object, err_sel))
- {
- imp = get_imp (object->class_pointer, err_sel);
- return (*imp) (object, err_sel, sel);
- }
-
- /* The object doesn't recognize the method. Check for responding to
- error:. If it does then sent it. */
- {
- size_t strlen (const char*);
- char msg[256 + strlen ((const char*)sel_get_name (sel))
- + strlen ((const char*)object->class_pointer->name)];
-
- sprintf (msg, "(%s) %s does not recognize %s",
- (CLS_ISMETA(object->class_pointer)
- ? "class"
- : "instance" ),
- object->class_pointer->name, sel_get_name (sel));
-
- err_sel = sel_get_any_uid ("error:");
- if (__objc_responds_to (object, err_sel))
- {
- imp = get_imp (object->class_pointer, err_sel);
- return (*imp) (object, sel_get_any_uid ("error:"), msg);
- }
-
- /* The object doesn't respond to doesNotRecognize: or error:; Therefore,
- a default action is taken. */
- objc_error (object, OBJC_ERR_UNIMPLEMENTED, "%s\n", msg);
-
- return 0;
- }
-}
-
-void
-__objc_print_dtable_stats()
-{
- int total = 0;
-
- objc_mutex_lock(__objc_runtime_mutex);
-
- printf("memory usage: (%s)\n",
-#ifdef OBJC_SPARSE2
- "2-level sparse arrays"
-#else
- "3-level sparse arrays"
-#endif
- );
-
- printf("arrays: %d = %ld bytes\n", narrays,
- (long)narrays*sizeof(struct sarray));
- total += narrays*sizeof(struct sarray);
- printf("buckets: %d = %ld bytes\n", nbuckets,
- (long)nbuckets*sizeof(struct sbucket));
- total += nbuckets*sizeof(struct sbucket);
-
- printf("idxtables: %d = %ld bytes\n", idxsize, (long)idxsize*sizeof(void*));
- total += idxsize*sizeof(void*);
- printf("-----------------------------------\n");
- printf("total: %d bytes\n", total);
- printf("===================================\n");
-
- objc_mutex_unlock(__objc_runtime_mutex);
-}
-
-/* Returns the uninstalled dispatch table indicator.
- If a class' dispatch table points to __objc_uninstalled_dtable
- then that means it needs its dispatch table to be installed. */
-__inline__
-struct sarray*
-objc_get_uninstalled_dtable()
-{
- return __objc_uninstalled_dtable;
-}
diff --git a/contrib/gcc/pexecute.c b/contrib/gcc/pexecute.c
index 347c4db..0f232ca 100644
--- a/contrib/gcc/pexecute.c
+++ b/contrib/gcc/pexecute.c
@@ -18,6 +18,8 @@ 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. */
+/* $FreeBSD$ */
+
/* This file exports two functions: pexecute and pwait. */
/* This file lives in at least two places: libiberty and gcc.
@@ -756,7 +758,7 @@ pexecute (program, argv, this_pname, temp_base, errmsg_fmt, errmsg_arg, flags)
fprintf (stderr, "%s: ", this_pname);
fprintf (stderr, install_error_msg, program);
fprintf (stderr, ": %s\n", xstrerror (errno));
- exit (-1);
+ _exit (-1);
/* NOTREACHED */
return 0;
diff --git a/contrib/gcc/print-tree.c b/contrib/gcc/print-tree.c
index 05ca52b..f535373 100644
--- a/contrib/gcc/print-tree.c
+++ b/contrib/gcc/print-tree.c
@@ -23,7 +23,6 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "config.h"
#include "system.h"
#include "tree.h"
-#include "real.h"
#include "ggc.h"
#include "langhooks.h"
@@ -48,7 +47,8 @@ void
debug_tree (node)
tree node;
{
- table = (struct bucket **) xcalloc (HASH_SIZE, sizeof (struct bucket *));
+ table = (struct bucket **) permalloc (HASH_SIZE * sizeof (struct bucket *));
+ memset ((char *) table, 0, HASH_SIZE * sizeof (struct bucket *));
print_node (stderr, "", node, 0);
table = 0;
fprintf (stderr, "\n");
@@ -124,6 +124,7 @@ print_node_brief (file, prefix, node, indent)
if (TREE_OVERFLOW (node))
fprintf (file, " overflow");
+#if !defined(REAL_IS_NOT_DOUBLE) || defined(REAL_ARITHMETIC)
d = TREE_REAL_CST (node);
if (REAL_VALUE_ISINF (d))
fprintf (file, " Inf");
@@ -131,10 +132,21 @@ print_node_brief (file, prefix, node, indent)
fprintf (file, " Nan");
else
{
- char string[60];
- real_to_decimal (string, &d, sizeof (string), 0, 1);
+ char string[100];
+
+ REAL_VALUE_TO_DECIMAL (d, "%e", string);
fprintf (file, " %s", string);
}
+#else
+ {
+ int i;
+ unsigned char *p = (unsigned char *) &TREE_REAL_CST (node);
+ fprintf (file, " 0x");
+ for (i = 0; i < sizeof TREE_REAL_CST (node); i++)
+ fprintf (file, "%02x", *p++);
+ fprintf (file, "");
+ }
+#endif
}
fprintf (file, ">");
@@ -211,7 +223,7 @@ print_node (file, prefix, node, indent)
}
/* Add this node to the table. */
- b = (struct bucket *) xmalloc (sizeof (struct bucket));
+ b = (struct bucket *) permalloc (sizeof (struct bucket));
b->node = node;
b->next = table[hash];
table[hash] = b;
@@ -328,9 +340,7 @@ print_node (file, prefix, node, indent)
if (TREE_CODE (node) == TYPE_DECL && TYPE_DECL_SUPPRESS_DEBUG (node))
fputs (" suppress-debug", file);
- if (TREE_CODE (node) == FUNCTION_DECL && DID_INLINE_FUNC (node))
- fputs (" autoinline", file);
- else if (TREE_CODE (node) == FUNCTION_DECL && DECL_INLINE (node))
+ if (TREE_CODE (node) == FUNCTION_DECL && DECL_INLINE (node))
fputs (" inline", file);
if (TREE_CODE (node) == FUNCTION_DECL && DECL_BUILT_IN (node))
fputs (" built-in", file);
@@ -353,8 +363,6 @@ print_node (file, prefix, node, indent)
if (TREE_CODE (node) == VAR_DECL && DECL_IN_TEXT_SECTION (node))
fputs (" in-text-section", file);
- if (TREE_CODE (node) == VAR_DECL && DECL_THREAD_LOCAL (node))
- fputs (" thread-local", file);
if (TREE_CODE (node) == PARM_DECL && DECL_TRANSPARENT_UNION (node))
fputs (" transparent-union", file);
@@ -387,7 +395,7 @@ print_node (file, prefix, node, indent)
print_node (file, "size", DECL_SIZE (node), indent + 4);
print_node (file, "unit size", DECL_SIZE_UNIT (node), indent + 4);
-
+
if (TREE_CODE (node) != FUNCTION_DECL
|| DECL_INLINE (node) || DECL_BUILT_IN (node))
indent_to (file, indent + 3);
@@ -418,7 +426,7 @@ print_node (file, prefix, node, indent)
if (DECL_POINTER_ALIAS_SET_KNOWN_P (node))
{
fprintf (file, " alias set ");
- fprintf (file, HOST_WIDE_INT_PRINT_DEC,
+ fprintf (file, HOST_WIDE_INT_PRINT_DEC,
DECL_POINTER_ALIAS_SET (node));
}
@@ -509,9 +517,6 @@ print_node (file, prefix, node, indent)
if (TYPE_PACKED (node))
fputs (" packed", file);
- if (TYPE_RESTRICT (node))
- fputs (" restrict", file);
-
if (TYPE_LANG_FLAG_0 (node))
fputs (" type_0", file);
if (TYPE_LANG_FLAG_1 (node))
@@ -639,7 +644,7 @@ print_node (file, prefix, node, indent)
if (TREE_CODE (node) == EXPR_WITH_FILE_LOCATION)
{
indent_to (file, indent+4);
- fprintf (file, "%s:%d:%d",
+ fprintf (file, "%s:%d:%d",
(EXPR_WFL_FILENAME_NODE (node ) ?
EXPR_WFL_FILENAME (node) : "(no file info)"),
EXPR_WFL_LINENO (node), EXPR_WFL_COLNO (node));
@@ -678,6 +683,7 @@ print_node (file, prefix, node, indent)
if (TREE_OVERFLOW (node))
fprintf (file, " overflow");
+#if !defined(REAL_IS_NOT_DOUBLE) || defined(REAL_ARITHMETIC)
d = TREE_REAL_CST (node);
if (REAL_VALUE_ISINF (d))
fprintf (file, " Inf");
@@ -685,10 +691,21 @@ print_node (file, prefix, node, indent)
fprintf (file, " Nan");
else
{
- char string[64];
- real_to_decimal (string, &d, sizeof (string), 0, 1);
+ char string[100];
+
+ REAL_VALUE_TO_DECIMAL (d, "%e", string);
fprintf (file, " %s", string);
}
+#else
+ {
+ int i;
+ unsigned char *p = (unsigned char *) &TREE_REAL_CST (node);
+ fprintf (file, " 0x");
+ for (i = 0; i < sizeof TREE_REAL_CST (node); i++)
+ fprintf (file, "%02x", *p++);
+ fprintf (file, "");
+ }
+#endif
}
break;
@@ -714,20 +731,7 @@ print_node (file, prefix, node, indent)
break;
case STRING_CST:
- {
- const char *p = TREE_STRING_POINTER (node);
- int i = TREE_STRING_LENGTH (node);
- fputs (" \"", file);
- while (--i >= 0)
- {
- char ch = *p++;
- if (ch >= ' ' && ch < 127)
- putc (ch, file);
- else
- fprintf(file, "\\%03o", ch & 0xFF);
- }
- fputc ('\"', file);
- }
+ fprintf (file, " \"%s\"", TREE_STRING_POINTER (node));
/* Print the chain at second level. */
if (indent == 4)
print_node (file, "chain", TREE_CHAIN (node), indent + 4);
diff --git a/contrib/gcc/recog.c b/contrib/gcc/recog.c
index bd42a5b..41193db 100644
--- a/contrib/gcc/recog.c
+++ b/contrib/gcc/recog.c
@@ -161,7 +161,7 @@ check_asm_operands (x)
c = constraints[c[0] - '0'];
if (! asm_operand_ok (operands[i], c))
- return 0;
+ return 0;
}
return 1;
@@ -191,7 +191,7 @@ static int num_changes = 0;
an INSN, CALL_INSN, or JUMP_INSN, the insn will be re-recognized with
the change in place.
- IN_GROUP is nonzero if this is part of a group of changes that must be
+ IN_GROUP is non-zero if this is part of a group of changes that must be
performed as a group. In that case, the changes will be stored. The
function `apply_change_group' will validate and apply the changes.
@@ -227,11 +227,11 @@ validate_change (object, loc, new, in_group)
else
changes_allocated *= 2;
- changes =
- (change_t*) xrealloc (changes,
- sizeof (change_t) * changes_allocated);
+ changes =
+ (change_t*) xrealloc (changes,
+ sizeof (change_t) * changes_allocated);
}
-
+
changes[num_changes].object = object;
changes[num_changes].loc = loc;
changes[num_changes].old = old;
@@ -272,7 +272,7 @@ insn_invalid_p (insn)
? &num_clobbers : 0);
int is_asm = icode < 0 && asm_noperands (PATTERN (insn)) >= 0;
-
+
/* If this is an asm and the operand aren't legal, then fail. Likewise if
this is not an asm and the insn wasn't recognized. */
if ((is_asm && ! check_asm_operands (PATTERN (insn)))
@@ -308,13 +308,6 @@ insn_invalid_p (insn)
return 0;
}
-/* Return number of changes made and not validated yet. */
-int
-num_changes_pending ()
-{
- return num_changes;
-}
-
/* Apply a group of changes previously issued with `validate_change'.
Return 1 if all changes are valid, zero otherwise. */
@@ -369,7 +362,7 @@ apply_change_group ()
int j;
newpat
- = gen_rtx_PARALLEL (VOIDmode,
+ = gen_rtx_PARALLEL (VOIDmode,
rtvec_alloc (XVECLEN (pat, 0) - 1));
for (j = 0; j < XVECLEN (newpat, 0); j++)
XVECEXP (newpat, 0, j) = XVECEXP (pat, 0, j);
@@ -399,14 +392,6 @@ apply_change_group ()
if (i == num_changes)
{
- basic_block bb;
-
- for (i = 0; i < num_changes; i++)
- if (changes[i].object
- && INSN_P (changes[i].object)
- && (bb = BLOCK_FOR_INSN (changes[i].object)))
- bb->flags |= BB_DIRTY;
-
num_changes = 0;
return 1;
}
@@ -678,10 +663,11 @@ validate_replace_src_1 (x, data)
}
/* Try replacing every occurrence of FROM in INSN with TO, avoiding
- SET_DESTs. */
+ SET_DESTs. After all changes have been made, validate by seeing if
+ INSN is still valid. */
-void
-validate_replace_src_group (from, to, insn)
+int
+validate_replace_src (from, to, insn)
rtx from, to, insn;
{
struct validate_replace_src_data d;
@@ -690,15 +676,6 @@ validate_replace_src_group (from, to, insn)
d.to = to;
d.insn = insn;
note_uses (&PATTERN (insn), validate_replace_src_1, &d);
-}
-
-/* Same as validate_repalace_src_group, but validate by seeing if
- INSN is still valid. */
-int
-validate_replace_src (from, to, insn)
- rtx from, to, insn;
-{
- validate_replace_src_group (from, to, insn);
return apply_change_group ();
}
@@ -801,7 +778,7 @@ find_single_use_1 (dest, loc)
case MEM:
case SUBREG:
return find_single_use_1 (dest, &XEXP (x, 0));
-
+
default:
break;
}
@@ -856,7 +833,7 @@ find_single_use_1 (dest, loc)
sequel. If so, return a pointer to the innermost rtx expression in which
it is used.
- If PLOC is nonzero, *PLOC is set to the insn containing the single use.
+ If PLOC is non-zero, *PLOC is set to the insn containing the single use.
This routine will return usually zero either before flow is called (because
there will be no LOG_LINKS notes) or after reload (because the REG_DEAD
@@ -954,7 +931,6 @@ general_operand (op, mode)
return 0;
if (GET_CODE (op) == CONST_INT
- && mode != VOIDmode
&& trunc_int_for_mode (INTVAL (op), mode) != INTVAL (op))
return 0;
@@ -986,15 +962,15 @@ general_operand (op, mode)
/* Avoid memories with nonzero SUBREG_BYTE, as offsetting the memory
may result in incorrect reference. We should simplify all valid
subregs of MEM anyway. But allow this after reload because we
- might be called from cleanup_subreg_operands.
+ might be called from cleanup_subreg_operands.
??? This is a kludge. */
if (!reload_completed && SUBREG_BYTE (op) != 0
&& GET_CODE (sub) == MEM)
- return 0;
+ return 0;
/* FLOAT_MODE subregs can't be paradoxical. Combine will occasionally
- create such rtl, and we must reject it. */
+ create such rtl, and we must reject it. */
if (GET_MODE_CLASS (GET_MODE (op)) == MODE_FLOAT
&& GET_MODE_SIZE (GET_MODE (op)) > GET_MODE_SIZE (GET_MODE (sub)))
return 0;
@@ -1083,10 +1059,13 @@ register_operand (op, mode)
if (! reload_completed && GET_CODE (sub) == MEM)
return general_operand (op, mode);
-#ifdef CANNOT_CHANGE_MODE_CLASS
+#ifdef CLASS_CANNOT_CHANGE_MODE
if (GET_CODE (sub) == REG
&& REGNO (sub) < FIRST_PSEUDO_REGISTER
- && REG_CANNOT_CHANGE_MODE_P (REGNO (sub), GET_MODE (sub), mode)
+ && (TEST_HARD_REG_BIT
+ (reg_class_contents[(int) CLASS_CANNOT_CHANGE_MODE],
+ REGNO (sub)))
+ && CLASS_CANNOT_CHANGE_MODE_P (mode, GET_MODE (sub))
&& GET_MODE_CLASS (GET_MODE (sub)) != MODE_COMPLEX_INT
&& GET_MODE_CLASS (GET_MODE (sub)) != MODE_COMPLEX_FLOAT)
return 0;
@@ -1157,7 +1136,6 @@ immediate_operand (op, mode)
return 0;
if (GET_CODE (op) == CONST_INT
- && mode != VOIDmode
&& trunc_int_for_mode (INTVAL (op), mode) != INTVAL (op))
return 0;
@@ -1240,7 +1218,6 @@ nonmemory_operand (op, mode)
return 0;
if (GET_CODE (op) == CONST_INT
- && mode != VOIDmode
&& trunc_int_for_mode (INTVAL (op), mode) != INTVAL (op))
return 0;
@@ -1357,7 +1334,7 @@ memory_address_p (mode, addr)
{
if (GET_CODE (addr) == ADDRESSOF)
return 1;
-
+
GO_IF_LEGITIMATE_ADDRESS (mode, addr, win);
return 0;
@@ -1611,7 +1588,7 @@ decode_asm_operands (body, operands, operand_locs, constraints, modes)
{
if (GET_CODE (XVECEXP (body, 0, i)) == CLOBBER)
break; /* Past last SET */
-
+
if (operands)
operands[i] = SET_DEST (XVECEXP (body, 0, i));
if (operand_locs)
@@ -1663,7 +1640,7 @@ decode_asm_operands (body, operands, operand_locs, constraints, modes)
return template;
}
-/* Check if an asm_operand matches it's constraints.
+/* Check if an asm_operand matches it's constraints.
Return > 0 if ok, = 0 if bad, < 0 if inconclusive. */
int
@@ -1731,7 +1708,7 @@ asm_operand_ok (op, constraint)
if (GET_CODE (op) == MEM
&& (1
|| GET_CODE (XEXP (op, 0)) == PRE_DEC
- || GET_CODE (XEXP (op, 0)) == POST_DEC))
+ || GET_CODE (XEXP (op, 0)) == POST_DEC))
return 1;
break;
@@ -1739,15 +1716,23 @@ asm_operand_ok (op, constraint)
if (GET_CODE (op) == MEM
&& (1
|| GET_CODE (XEXP (op, 0)) == PRE_INC
- || GET_CODE (XEXP (op, 0)) == POST_INC))
+ || GET_CODE (XEXP (op, 0)) == POST_INC))
return 1;
break;
case 'E':
+#ifndef REAL_ARITHMETIC
+ /* Match any floating double constant, but only if
+ we can examine the bits of it reliably. */
+ if ((HOST_FLOAT_FORMAT != TARGET_FLOAT_FORMAT
+ || HOST_BITS_PER_WIDE_INT != BITS_PER_WORD)
+ && GET_MODE (op) != VOIDmode && ! flag_pretend_float)
+ break;
+#endif
+ /* FALLTHRU */
+
case 'F':
- if (GET_CODE (op) == CONST_DOUBLE
- || (GET_CODE (op) == CONST_VECTOR
- && GET_MODE_CLASS (GET_MODE (op)) == MODE_VECTOR_FLOAT))
+ if (GET_CODE (op) == CONST_DOUBLE)
return 1;
break;
@@ -1848,18 +1833,6 @@ asm_operand_ok (op, constraint)
#ifdef EXTRA_CONSTRAINT
if (EXTRA_CONSTRAINT (op, c))
return 1;
- if (EXTRA_MEMORY_CONSTRAINT (c))
- {
- /* Every memory operand can be reloaded to fit. */
- if (memory_operand (op, VOIDmode))
- return 1;
- }
- if (EXTRA_ADDRESS_CONSTRAINT (c))
- {
- /* Every address operand can be reloaded to fit. */
- if (address_operand (op, VOIDmode))
- return 1;
- }
#endif
break;
}
@@ -2257,7 +2230,7 @@ preprocess_constraints ()
break;
case '&':
op_alt[j].earlyclobber = 1;
- break;
+ break;
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
@@ -2299,19 +2272,6 @@ preprocess_constraints ()
break;
default:
- if (EXTRA_MEMORY_CONSTRAINT (c))
- {
- op_alt[j].memory_ok = 1;
- break;
- }
- if (EXTRA_ADDRESS_CONSTRAINT (c))
- {
- op_alt[j].is_address = 1;
- op_alt[j].class = reg_class_subunion[(int) op_alt[j].class]
- [(int) MODE_BASE_REG_CLASS (VOIDmode)];
- break;
- }
-
op_alt[j].class = reg_class_subunion[(int) op_alt[j].class][(int) REG_CLASS_FROM_LETTER ((unsigned char) c)];
break;
}
@@ -2319,7 +2279,7 @@ preprocess_constraints ()
}
}
}
-
+
/* Check the operands of an insn against the insn's operand constraints
and return 1 if they are valid.
The information about the insn's operands, constraints, operand modes
@@ -2338,7 +2298,7 @@ preprocess_constraints ()
This is used in final, just before printing the assembler code and by
the routines that determine an insn's attribute.
- If STRICT is a positive nonzero value, it means that we have been
+ If STRICT is a positive non-zero value, it means that we have been
called after reload has been completed. In that case, we must
do all checks strictly. If it is zero, it means that we have been called
before reload has completed. In that case, we first try to see if we can
@@ -2539,10 +2499,20 @@ constrain_operands (strict)
break;
case 'E':
+#ifndef REAL_ARITHMETIC
+ /* Match any CONST_DOUBLE, but only if
+ we can examine the bits of it reliably. */
+ if ((HOST_FLOAT_FORMAT != TARGET_FLOAT_FORMAT
+ || HOST_BITS_PER_WIDE_INT != BITS_PER_WORD)
+ && GET_MODE (op) != VOIDmode && ! flag_pretend_float)
+ break;
+#endif
+ if (GET_CODE (op) == CONST_DOUBLE)
+ win = 1;
+ break;
+
case 'F':
- if (GET_CODE (op) == CONST_DOUBLE
- || (GET_CODE (op) == CONST_VECTOR
- && GET_MODE_CLASS (GET_MODE (op)) == MODE_VECTOR_FLOAT))
+ if (GET_CODE (op) == CONST_DOUBLE)
win = 1;
break;
@@ -2625,28 +2595,6 @@ constrain_operands (strict)
#ifdef EXTRA_CONSTRAINT
else if (EXTRA_CONSTRAINT (op, c))
win = 1;
-
- if (EXTRA_MEMORY_CONSTRAINT (c))
- {
- /* Every memory operand can be reloaded to fit. */
- if (strict < 0 && GET_CODE (op) == MEM)
- win = 1;
-
- /* Before reload, accept what reload can turn into mem. */
- if (strict < 0 && CONSTANT_P (op))
- win = 1;
-
- /* During reload, accept a pseudo */
- if (reload_in_progress && GET_CODE (op) == REG
- && REGNO (op) >= FIRST_PSEUDO_REGISTER)
- win = 1;
- }
- if (EXTRA_ADDRESS_CONSTRAINT (c))
- {
- /* Every address operand can be reloaded to fit. */
- if (strict < 0)
- win = 1;
- }
#endif
break;
}
@@ -2763,7 +2711,11 @@ split_insn (insn)
allocation, and there are unlikely to be very many
nops then anyways. */
if (reload_completed)
- delete_insn_and_edges (insn);
+ {
+ PUT_CODE (insn, NOTE);
+ NOTE_LINE_NUMBER (insn) = NOTE_INSN_DELETED;
+ NOTE_SOURCE_FILE (insn) = 0;
+ }
}
else
{
@@ -2779,7 +2731,7 @@ split_insn (insn)
NOTE_LINE_NUMBER (insn) = NOTE_INSN_DELETED;
/* ??? Coddle to md files that generate subregs in post-
- reload splitters instead of computing the proper
+ reload splitters instead of computing the proper
hard register. */
if (reload_completed && first != last)
{
@@ -2805,26 +2757,25 @@ split_all_insns (upd_life)
int upd_life;
{
sbitmap blocks;
- bool changed;
- basic_block bb;
+ int changed;
+ int i;
- blocks = sbitmap_alloc (last_basic_block);
+ blocks = sbitmap_alloc (n_basic_blocks);
sbitmap_zero (blocks);
- changed = false;
+ changed = 0;
- FOR_EACH_BB_REVERSE (bb)
+ for (i = n_basic_blocks - 1; i >= 0; --i)
{
+ basic_block bb = BASIC_BLOCK (i);
rtx insn, next;
- bool finish = false;
- for (insn = bb->head; !finish ; insn = next)
+ for (insn = bb->head; insn ; insn = next)
{
rtx last;
/* Can't use `next_real_insn' because that might go across
CODE_LABELS and short-out basic blocks. */
next = NEXT_INSN (insn);
- finish = (insn == bb->end);
last = split_insn (insn);
if (last)
{
@@ -2834,27 +2785,29 @@ split_all_insns (upd_life)
while (GET_CODE (last) == BARRIER)
last = PREV_INSN (last);
- SET_BIT (blocks, bb->index);
- changed = true;
+ SET_BIT (blocks, i);
+ changed = 1;
insn = last;
}
+
+ if (insn == bb->end)
+ break;
}
+
+ if (insn == NULL)
+ abort ();
}
if (changed)
{
- int old_last_basic_block = last_basic_block;
-
find_many_sub_basic_blocks (blocks);
-
- if (old_last_basic_block != last_basic_block && upd_life)
- blocks = sbitmap_resize (blocks, last_basic_block, 1);
}
if (changed && upd_life)
- update_life_info (blocks, UPDATE_LIFE_GLOBAL_RM_NOTES,
- PROP_DEATH_NOTES | PROP_REG_INFO);
-
+ {
+ count_or_remove_death_notes (blocks, 1);
+ update_life_info (blocks, UPDATE_LIFE_LOCAL, PROP_DEATH_NOTES);
+ }
#ifdef ENABLE_CHECKING
verify_flow_info ();
#endif
@@ -2862,7 +2815,7 @@ split_all_insns (upd_life)
sbitmap_free (blocks);
}
-/* Same as split_all_insns, but do not expect CFG to be available.
+/* Same as split_all_insns, but do not expect CFG to be available.
Used by machine depedent reorg passes. */
void
@@ -3081,8 +3034,7 @@ peephole2_optimize (dump_file)
regset_head rs_heads[MAX_INSNS_PER_PEEP2 + 2];
rtx insn, prev;
regset live;
- int i;
- basic_block bb;
+ int i, b;
#ifdef HAVE_conditional_execution
sbitmap blocks;
bool changed;
@@ -3096,15 +3048,16 @@ peephole2_optimize (dump_file)
live = INITIALIZE_REG_SET (rs_heads[i]);
#ifdef HAVE_conditional_execution
- blocks = sbitmap_alloc (last_basic_block);
+ blocks = sbitmap_alloc (n_basic_blocks);
sbitmap_zero (blocks);
changed = false;
#else
count_or_remove_death_notes (NULL, 1);
#endif
- FOR_EACH_BB_REVERSE (bb)
+ for (b = n_basic_blocks - 1; b >= 0; --b)
{
+ basic_block bb = BASIC_BLOCK (b);
struct propagate_block_info *pbi;
/* Indicate that all slots except the last holds invalid data. */
@@ -3133,7 +3086,6 @@ peephole2_optimize (dump_file)
rtx try, before_try, x;
int match_len;
rtx note;
- bool was_call = false;
/* Record this insn. */
if (--peep2_current < 0)
@@ -3151,7 +3103,7 @@ peephole2_optimize (dump_file)
cfg-related call notes. */
for (i = 0; i <= match_len; ++i)
{
- int j;
+ int j, k;
rtx old_insn, new_insn, note;
j = i + peep2_current;
@@ -3160,17 +3112,21 @@ peephole2_optimize (dump_file)
old_insn = peep2_insn_data[j].insn;
if (GET_CODE (old_insn) != CALL_INSN)
continue;
- was_call = true;
- new_insn = try;
- while (new_insn != NULL_RTX)
- {
- if (GET_CODE (new_insn) == CALL_INSN)
- break;
- new_insn = NEXT_INSN (new_insn);
- }
-
- if (new_insn == NULL_RTX)
+ new_insn = NULL_RTX;
+ if (GET_CODE (try) == SEQUENCE)
+ for (k = XVECLEN (try, 0) - 1; k >= 0; k--)
+ {
+ rtx x = XVECEXP (try, 0, k);
+ if (GET_CODE (x) == CALL_INSN)
+ {
+ new_insn = x;
+ break;
+ }
+ }
+ else if (GET_CODE (try) == CALL_INSN)
+ new_insn = try;
+ if (! new_insn)
abort ();
CALL_INSN_FUNCTION_USAGE (new_insn)
@@ -3210,23 +3166,22 @@ peephole2_optimize (dump_file)
if (i >= MAX_INSNS_PER_PEEP2 + 1)
i -= MAX_INSNS_PER_PEEP2 + 1;
- note = find_reg_note (peep2_insn_data[i].insn,
+ note = find_reg_note (peep2_insn_data[i].insn,
REG_EH_REGION, NULL_RTX);
/* Replace the old sequence with the new. */
- try = emit_insn_after_scope (try, peep2_insn_data[i].insn,
- INSN_SCOPE (peep2_insn_data[i].insn));
+ try = emit_insn_after (try, peep2_insn_data[i].insn);
before_try = PREV_INSN (insn);
delete_insn_chain (insn, peep2_insn_data[i].insn);
/* Re-insert the EH_REGION notes. */
- if (note || (was_call && nonlocal_goto_handler_labels))
+ if (note)
{
edge eh_edge;
for (eh_edge = bb->succ; eh_edge
; eh_edge = eh_edge->succ_next)
- if (eh_edge->flags & (EDGE_EH | EDGE_ABNORMAL_CALL))
+ if (eh_edge->flags & EDGE_EH)
break;
for (x = try ; x != before_try ; x = PREV_INSN (x))
@@ -3235,11 +3190,10 @@ peephole2_optimize (dump_file)
&& may_trap_p (PATTERN (x))
&& !find_reg_note (x, REG_EH_REGION, NULL)))
{
- if (note)
- REG_NOTES (x)
- = gen_rtx_EXPR_LIST (REG_EH_REGION,
- XEXP (note, 0),
- REG_NOTES (x));
+ REG_NOTES (x)
+ = gen_rtx_EXPR_LIST (REG_EH_REGION,
+ XEXP (note, 0),
+ REG_NOTES (x));
if (x != bb->end && eh_edge)
{
@@ -3247,8 +3201,7 @@ peephole2_optimize (dump_file)
int flags;
nfte = split_block (bb, x);
- flags = (eh_edge->flags
- & (EDGE_EH | EDGE_ABNORMAL));
+ flags = EDGE_EH | EDGE_ABNORMAL;
if (GET_CODE (x) == CALL_INSN)
flags |= EDGE_ABNORMAL_CALL;
nehe = make_edge (nfte->src, eh_edge->dest,
@@ -3279,7 +3232,7 @@ peephole2_optimize (dump_file)
death data structures are not so self-contained.
So record that we've made a modification to this
block and update life information at the end. */
- SET_BIT (blocks, bb->index);
+ SET_BIT (blocks, b);
changed = true;
for (i = 0; i < MAX_INSNS_PER_PEEP2 + 1; ++i)
@@ -3357,114 +3310,3 @@ peephole2_optimize (dump_file)
#endif
}
#endif /* HAVE_peephole2 */
-
-/* Common predicates for use with define_bypass. */
-
-/* True if the dependency between OUT_INSN and IN_INSN is on the store
- data not the address operand(s) of the store. IN_INSN must be
- single_set. OUT_INSN must be either a single_set or a PARALLEL with
- SETs inside. */
-
-int
-store_data_bypass_p (out_insn, in_insn)
- rtx out_insn, in_insn;
-{
- rtx out_set, in_set;
-
- in_set = single_set (in_insn);
- if (! in_set)
- abort ();
-
- if (GET_CODE (SET_DEST (in_set)) != MEM)
- return false;
-
- out_set = single_set (out_insn);
- if (out_set)
- {
- if (reg_mentioned_p (SET_DEST (out_set), SET_DEST (in_set)))
- return false;
- }
- else
- {
- rtx out_pat;
- int i;
-
- out_pat = PATTERN (out_insn);
- if (GET_CODE (out_pat) != PARALLEL)
- abort ();
-
- for (i = 0; i < XVECLEN (out_pat, 0); i++)
- {
- rtx exp = XVECEXP (out_pat, 0, i);
-
- if (GET_CODE (exp) == CLOBBER)
- continue;
-
- if (GET_CODE (exp) != SET)
- abort ();
-
- if (reg_mentioned_p (SET_DEST (exp), SET_DEST (in_set)))
- return false;
- }
- }
-
- return true;
-}
-
-/* True if the dependency between OUT_INSN and IN_INSN is in the IF_THEN_ELSE
- condition, and not the THEN or ELSE branch. OUT_INSN may be either a single
- or multiple set; IN_INSN should be single_set for truth, but for convenience
- of insn categorization may be any JUMP or CALL insn. */
-
-int
-if_test_bypass_p (out_insn, in_insn)
- rtx out_insn, in_insn;
-{
- rtx out_set, in_set;
-
- in_set = single_set (in_insn);
- if (! in_set)
- {
- if (GET_CODE (in_insn) == JUMP_INSN || GET_CODE (in_insn) == CALL_INSN)
- return false;
- abort ();
- }
-
- if (GET_CODE (SET_SRC (in_set)) != IF_THEN_ELSE)
- return false;
- in_set = SET_SRC (in_set);
-
- out_set = single_set (out_insn);
- if (out_set)
- {
- if (reg_mentioned_p (SET_DEST (out_set), XEXP (in_set, 1))
- || reg_mentioned_p (SET_DEST (out_set), XEXP (in_set, 2)))
- return false;
- }
- else
- {
- rtx out_pat;
- int i;
-
- out_pat = PATTERN (out_insn);
- if (GET_CODE (out_pat) != PARALLEL)
- abort ();
-
- for (i = 0; i < XVECLEN (out_pat, 0); i++)
- {
- rtx exp = XVECEXP (out_pat, 0, i);
-
- if (GET_CODE (exp) == CLOBBER)
- continue;
-
- if (GET_CODE (exp) != SET)
- abort ();
-
- if (reg_mentioned_p (SET_DEST (out_set), XEXP (in_set, 1))
- || reg_mentioned_p (SET_DEST (out_set), XEXP (in_set, 2)))
- return false;
- }
- }
-
- return true;
-}
diff --git a/contrib/gcc/reload.c b/contrib/gcc/reload.c
index b151af7..71ed1d6 100644
--- a/contrib/gcc/reload.c
+++ b/contrib/gcc/reload.c
@@ -244,7 +244,6 @@ static enum reg_class find_valid_class PARAMS ((enum machine_mode, int,
unsigned int));
static int reload_inner_reg_of_subreg PARAMS ((rtx, enum machine_mode, int));
static void push_replacement PARAMS ((rtx *, int, enum machine_mode));
-static void dup_replacements PARAMS ((rtx *, rtx *));
static void combine_reloads PARAMS ((void));
static int find_reusable_reload PARAMS ((rtx *, rtx, enum reg_class,
enum reload_type, int, int));
@@ -258,7 +257,6 @@ static int alternative_allows_memconst PARAMS ((const char *, int));
static rtx find_reloads_toplev PARAMS ((rtx, int, enum reload_type, int,
int, rtx, int *));
static rtx make_memloc PARAMS ((rtx, int));
-static int maybe_memory_address_p PARAMS ((enum machine_mode, rtx, rtx *));
static int find_reloads_address PARAMS ((enum machine_mode, rtx *, rtx, rtx *,
int, enum reload_type, int, rtx));
static rtx subst_reg_equivs PARAMS ((rtx, rtx));
@@ -277,7 +275,7 @@ static int find_inc_amount PARAMS ((rtx, rtx));
#ifdef HAVE_SECONDARY_RELOADS
/* Determine if any secondary reloads are needed for loading (if IN_P is
- nonzero) or storing (if IN_P is zero) X to or from a reload register of
+ non-zero) or storing (if IN_P is zero) X to or from a reload register of
register class RELOAD_CLASS in mode RELOAD_MODE. If secondary reloads
are needed, push them.
@@ -369,7 +367,7 @@ push_secondary_reload (in_p, x, opnum, optional, reload_class, reload_mode,
if (icode != CODE_FOR_nothing)
{
- /* If IN_P is nonzero, the reload register will be the output in
+ /* If IN_P is non-zero, the reload register will be the output in
operand 0. If IN_P is zero, the reload register will be the input
in operand 1. Outputs should have an initial "=", which we must
skip. */
@@ -646,7 +644,7 @@ get_secondary_mem (x, mode, opnum, type)
: type == RELOAD_FOR_OUTPUT ? RELOAD_FOR_OUTPUT_ADDRESS
: RELOAD_OTHER);
- find_reloads_address (mode, &loc, XEXP (loc, 0), &XEXP (loc, 0),
+ find_reloads_address (mode, (rtx*) 0, XEXP (loc, 0), &XEXP (loc, 0),
opnum, type, 0, 0);
}
@@ -819,13 +817,6 @@ reload_inner_reg_of_subreg (x, mode, output)
|| REGNO (inner) >= FIRST_PSEUDO_REGISTER)
return 0;
- if (!subreg_offset_representable_p
- (REGNO (SUBREG_REG (x)),
- GET_MODE (SUBREG_REG (x)),
- SUBREG_BYTE (x),
- GET_MODE (x)))
- return 1;
-
/* If INNER is not ok for MODE, then INNER will need reloading. */
if (! HARD_REGNO_MODE_OK (subreg_regno (x), mode))
return 1;
@@ -837,7 +828,7 @@ reload_inner_reg_of_subreg (x, mode, output)
&& output
&& GET_MODE_SIZE (GET_MODE (inner)) > UNITS_PER_WORD
&& ((GET_MODE_SIZE (GET_MODE (inner)) / UNITS_PER_WORD)
- != (int) HARD_REGNO_NREGS (REGNO (inner), GET_MODE (inner))));
+ != HARD_REGNO_NREGS (REGNO (inner), GET_MODE (inner))));
}
/* Record one reload that needs to be performed.
@@ -846,7 +837,7 @@ reload_inner_reg_of_subreg (x, mode, output)
(IN is zero for data not read, and OUT is zero for data not written.)
INLOC and OUTLOC point to the places in the instructions where
IN and OUT were found.
- If IN and OUT are both nonzero, it means the same register must be used
+ If IN and OUT are both non-zero, it means the same register must be used
to reload both IN and OUT.
CLASS is a register class required for the reloaded data.
@@ -975,8 +966,9 @@ push_reload (in, out, inloc, outloc, class,
if (in != 0 && GET_CODE (in) == SUBREG
&& (subreg_lowpart_p (in) || strict_low)
-#ifdef CANNOT_CHANGE_MODE_CLASS
- && !CANNOT_CHANGE_MODE_CLASS (GET_MODE (SUBREG_REG (in)), inmode, class)
+#ifdef CLASS_CANNOT_CHANGE_MODE
+ && (class != CLASS_CANNOT_CHANGE_MODE
+ || ! CLASS_CANNOT_CHANGE_MODE_P (GET_MODE (SUBREG_REG (in)), inmode))
#endif
&& (CONSTANT_P (SUBREG_REG (in))
|| GET_CODE (SUBREG_REG (in)) == PLUS
@@ -1013,8 +1005,8 @@ push_reload (in, out, inloc, outloc, class,
> UNITS_PER_WORD)
&& ((GET_MODE_SIZE (GET_MODE (SUBREG_REG (in)))
/ UNITS_PER_WORD)
- != (int) HARD_REGNO_NREGS (REGNO (SUBREG_REG (in)),
- GET_MODE (SUBREG_REG (in)))))
+ != HARD_REGNO_NREGS (REGNO (SUBREG_REG (in)),
+ GET_MODE (SUBREG_REG (in)))))
|| ! HARD_REGNO_MODE_OK (subreg_regno (in), inmode)))
#ifdef SECONDARY_INPUT_RELOAD_CLASS
|| (SECONDARY_INPUT_RELOAD_CLASS (class, inmode, in) != NO_REGS
@@ -1023,11 +1015,14 @@ push_reload (in, out, inloc, outloc, class,
SUBREG_REG (in))
== NO_REGS))
#endif
-#ifdef CANNOT_CHANGE_MODE_CLASS
+#ifdef CLASS_CANNOT_CHANGE_MODE
|| (GET_CODE (SUBREG_REG (in)) == REG
&& REGNO (SUBREG_REG (in)) < FIRST_PSEUDO_REGISTER
- && REG_CANNOT_CHANGE_MODE_P
- (REGNO (SUBREG_REG (in)), GET_MODE (SUBREG_REG (in)), inmode))
+ && (TEST_HARD_REG_BIT
+ (reg_class_contents[(int) CLASS_CANNOT_CHANGE_MODE],
+ REGNO (SUBREG_REG (in))))
+ && CLASS_CANNOT_CHANGE_MODE_P (GET_MODE (SUBREG_REG (in)),
+ inmode))
#endif
))
{
@@ -1085,8 +1080,10 @@ push_reload (in, out, inloc, outloc, class,
and in that case the constraint should label it input-output.) */
if (out != 0 && GET_CODE (out) == SUBREG
&& (subreg_lowpart_p (out) || strict_low)
-#ifdef CANNOT_CHANGE_MODE_CLASS
- && !CANNOT_CHANGE_MODE_CLASS (GET_MODE (SUBREG_REG (out)), outmode, class)
+#ifdef CLASS_CANNOT_CHANGE_MODE
+ && (class != CLASS_CANNOT_CHANGE_MODE
+ || ! CLASS_CANNOT_CHANGE_MODE_P (GET_MODE (SUBREG_REG (out)),
+ outmode))
#endif
&& (CONSTANT_P (SUBREG_REG (out))
|| strict_low
@@ -1110,8 +1107,8 @@ push_reload (in, out, inloc, outloc, class,
> UNITS_PER_WORD)
&& ((GET_MODE_SIZE (GET_MODE (SUBREG_REG (out)))
/ UNITS_PER_WORD)
- != (int) HARD_REGNO_NREGS (REGNO (SUBREG_REG (out)),
- GET_MODE (SUBREG_REG (out)))))
+ != HARD_REGNO_NREGS (REGNO (SUBREG_REG (out)),
+ GET_MODE (SUBREG_REG (out)))))
|| ! HARD_REGNO_MODE_OK (subreg_regno (out), outmode)))
#ifdef SECONDARY_OUTPUT_RELOAD_CLASS
|| (SECONDARY_OUTPUT_RELOAD_CLASS (class, outmode, out) != NO_REGS
@@ -1120,12 +1117,14 @@ push_reload (in, out, inloc, outloc, class,
SUBREG_REG (out))
== NO_REGS))
#endif
-#ifdef CANNOT_CHANGE_MODE_CLASS
+#ifdef CLASS_CANNOT_CHANGE_MODE
|| (GET_CODE (SUBREG_REG (out)) == REG
&& REGNO (SUBREG_REG (out)) < FIRST_PSEUDO_REGISTER
- && REG_CANNOT_CHANGE_MODE_P (REGNO (SUBREG_REG (out)),
- GET_MODE (SUBREG_REG (out)),
- outmode))
+ && (TEST_HARD_REG_BIT
+ (reg_class_contents[(int) CLASS_CANNOT_CHANGE_MODE],
+ REGNO (SUBREG_REG (out))))
+ && CLASS_CANNOT_CHANGE_MODE_P (GET_MODE (SUBREG_REG (out)),
+ outmode))
#endif
))
{
@@ -1286,12 +1285,17 @@ push_reload (in, out, inloc, outloc, class,
So add an additional reload. */
#ifdef SECONDARY_MEMORY_NEEDED
- /* If a memory location is needed for the copy, make one. */
- if (in != 0 && (GET_CODE (in) == REG || GET_CODE (in) == SUBREG)
- && reg_or_subregno (in) < FIRST_PSEUDO_REGISTER
- && SECONDARY_MEMORY_NEEDED (REGNO_REG_CLASS (reg_or_subregno (in)),
- class, inmode))
- get_secondary_mem (in, inmode, opnum, type);
+ {
+ int regnum;
+
+ /* If a memory location is needed for the copy, make one. */
+ if (in != 0
+ && ((regnum = true_regnum (in)) >= 0)
+ && regnum < FIRST_PSEUDO_REGISTER
+ && SECONDARY_MEMORY_NEEDED (REGNO_REG_CLASS (regnum),
+ class, inmode))
+ get_secondary_mem (in, inmode, opnum, type);
+ }
#endif
i = n_reloads;
@@ -1317,12 +1321,16 @@ push_reload (in, out, inloc, outloc, class,
n_reloads++;
#ifdef SECONDARY_MEMORY_NEEDED
- if (out != 0 && (GET_CODE (out) == REG || GET_CODE (out) == SUBREG)
- && reg_or_subregno (out) < FIRST_PSEUDO_REGISTER
- && SECONDARY_MEMORY_NEEDED (class,
- REGNO_REG_CLASS (reg_or_subregno (out)),
- outmode))
- get_secondary_mem (out, outmode, opnum, type);
+ {
+ int regnum;
+
+ if (out != 0
+ && ((regnum = true_regnum (out)) >= 0)
+ && regnum < FIRST_PSEUDO_REGISTER
+ && SECONDARY_MEMORY_NEEDED (class, REGNO_REG_CLASS (regnum),
+ outmode))
+ get_secondary_mem (out, outmode, opnum, type);
+ }
#endif
}
else
@@ -1567,25 +1575,6 @@ push_replacement (loc, reloadnum, mode)
r->mode = mode;
}
}
-
-/* Duplicate any replacement we have recorded to apply at
- location ORIG_LOC to also be performed at DUP_LOC.
- This is used in insn patterns that use match_dup. */
-
-static void
-dup_replacements (dup_loc, orig_loc)
- rtx *dup_loc;
- rtx *orig_loc;
-{
- int i, n = n_replacements;
-
- for (i = 0; i < n; i++)
- {
- struct replacement *r = &replacements[i];
- if (r->where == orig_loc)
- push_replacement (dup_loc, r->what, r->mode);
- }
-}
/* Transfer all replacements that used to be in reload FROM to be in
reload TO. */
@@ -1604,7 +1593,7 @@ transfer_replacements (to, from)
/* IN_RTX is the value loaded by a reload that we now decided to inherit,
or a subpart of it. If we have any replacements registered for IN_RTX,
cancel the reloads that were supposed to load them.
- Return nonzero if we canceled any reloads. */
+ Return non-zero if we canceled any reloads. */
int
remove_address_replacements (in_rtx)
rtx in_rtx;
@@ -1844,7 +1833,7 @@ combine_reloads ()
If FOR_REAL is -1, this should not be done, because this call
is just to see if a register can be found, not to find and install it.
- EARLYCLOBBER is nonzero if OUT is an earlyclobber operand. This
+ EARLYCLOBBER is non-zero if OUT is an earlyclobber operand. This
puts an additional constraint on being able to use IN for OUT since
IN must not appear elsewhere in the insn (it is assumed that IN itself
is safe from the earlyclobber). */
@@ -2147,13 +2136,13 @@ operands_match_p (x, y)
/* If two operands must match, because they are really a single
operand of an assembler insn, then two postincrements are invalid
because the assembler insn would increment only once.
- On the other hand, a postincrement matches ordinary indexing
+ On the other hand, an postincrement matches ordinary indexing
if the postincrement is the output operand. */
if (code == POST_DEC || code == POST_INC || code == POST_MODIFY)
return operands_match_p (XEXP (x, 0), y);
/* Two preincrements are invalid
because the assembler insn would increment only once.
- On the other hand, a preincrement matches ordinary indexing
+ On the other hand, an preincrement matches ordinary indexing
if the preincrement is the input operand.
In this case, return 2, since some callers need to do special
things when this happens. */
@@ -2476,8 +2465,6 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p)
char pref_or_nothing[MAX_RECOG_OPERANDS];
/* Nonzero for a MEM operand whose entire address needs a reload. */
int address_reloaded[MAX_RECOG_OPERANDS];
- /* Nonzero for an address operand that needs to be completely reloaded. */
- int address_operand_reloaded[MAX_RECOG_OPERANDS];
/* Value of enum reload_type to use for operand. */
enum reload_type operand_type[MAX_RECOG_OPERANDS];
/* Value of enum reload_type to use within address of operand. */
@@ -2656,7 +2643,6 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p)
RTX_CODE code = GET_CODE (recog_data.operand[i]);
address_reloaded[i] = 0;
- address_operand_reloaded[i] = 0;
operand_type[i] = (modified[i] == RELOAD_READ ? RELOAD_FOR_INPUT
: modified[i] == RELOAD_WRITE ? RELOAD_FOR_OUTPUT
: RELOAD_OTHER);
@@ -2668,14 +2654,12 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p)
if (*constraints[i] == 0)
/* Ignore things like match_operator operands. */
;
- else if (constraints[i][0] == 'p'
- || EXTRA_ADDRESS_CONSTRAINT (constraints[i][0]))
+ else if (constraints[i][0] == 'p')
{
- address_operand_reloaded[i]
- = find_reloads_address (recog_data.operand_mode[i], (rtx*) 0,
- recog_data.operand[i],
- recog_data.operand_loc[i],
- i, operand_type[i], ind_levels, insn);
+ find_reloads_address (recog_data.operand_mode[i], (rtx*) 0,
+ recog_data.operand[i],
+ recog_data.operand_loc[i],
+ i, operand_type[i], ind_levels, insn);
/* If we now have a simple operand where we used to have a
PLUS or MULT, re-recognize and try again. */
@@ -2692,10 +2676,6 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p)
recog_data.operand[i] = *recog_data.operand_loc[i];
substed_operand[i] = recog_data.operand[i];
-
- /* Address operands are reloaded in their existing mode,
- no matter what is specified in the machine description. */
- operand_mode[i] = GET_MODE (recog_data.operand[i]);
}
else if (code == MEM)
{
@@ -2876,12 +2856,6 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p)
if (GET_CODE (SUBREG_REG (operand)) == REG
&& REGNO (SUBREG_REG (operand)) < FIRST_PSEUDO_REGISTER)
{
- if (!subreg_offset_representable_p
- (REGNO (SUBREG_REG (operand)),
- GET_MODE (SUBREG_REG (operand)),
- SUBREG_BYTE (operand),
- GET_MODE (operand)))
- force_reload = 1;
offset += subreg_regno_offset (REGNO (SUBREG_REG (operand)),
GET_MODE (SUBREG_REG (operand)),
SUBREG_BYTE (operand),
@@ -2937,6 +2911,26 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p)
)
#endif
)
+ /* This following hunk of code should no longer be
+ needed at all with SUBREG_BYTE. If you need this
+ code back, please explain to me why so I can
+ fix the real problem. -DaveM */
+#if 0
+ /* Subreg of a hard reg which can't handle the subreg's mode
+ or which would handle that mode in the wrong number of
+ registers for subregging to work. */
+ || (GET_CODE (operand) == REG
+ && REGNO (operand) < FIRST_PSEUDO_REGISTER
+ && ((GET_MODE_SIZE (operand_mode[i]) <= UNITS_PER_WORD
+ && (GET_MODE_SIZE (GET_MODE (operand))
+ > UNITS_PER_WORD)
+ && ((GET_MODE_SIZE (GET_MODE (operand))
+ / UNITS_PER_WORD)
+ != HARD_REGNO_NREGS (REGNO (operand),
+ GET_MODE (operand))))
+ || ! HARD_REGNO_MODE_OK (REGNO (operand) + offset,
+ operand_mode[i])))
+#endif
)
force_reload = 1;
}
@@ -3160,11 +3154,20 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p)
break;
case 'E':
+#ifndef REAL_ARITHMETIC
+ /* Match any floating double constant, but only if
+ we can examine the bits of it reliably. */
+ if ((HOST_FLOAT_FORMAT != TARGET_FLOAT_FORMAT
+ || HOST_BITS_PER_WIDE_INT != BITS_PER_WORD)
+ && GET_MODE (operand) != VOIDmode && ! flag_pretend_float)
+ break;
+#endif
+ if (GET_CODE (operand) == CONST_DOUBLE)
+ win = 1;
+ break;
+
case 'F':
- if (GET_CODE (operand) == CONST_DOUBLE
- || (GET_CODE (operand) == CONST_VECTOR
- && (GET_MODE_CLASS (GET_MODE (operand))
- == MODE_VECTOR_FLOAT)))
+ if (GET_CODE (operand) == CONST_DOUBLE)
win = 1;
break;
@@ -3241,49 +3244,6 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p)
if (REG_CLASS_FROM_LETTER (c) == NO_REGS)
{
#ifdef EXTRA_CONSTRAINT
- if (EXTRA_MEMORY_CONSTRAINT (c))
- {
- if (force_reload)
- break;
- if (EXTRA_CONSTRAINT (operand, c))
- win = 1;
- /* If the address was already reloaded,
- we win as well. */
- if (GET_CODE (operand) == MEM && address_reloaded[i])
- win = 1;
- /* Likewise if the address will be reloaded because
- reg_equiv_address is nonzero. For reg_equiv_mem
- we have to check. */
- if (GET_CODE (operand) == REG
- && REGNO (operand) >= FIRST_PSEUDO_REGISTER
- && reg_renumber[REGNO (operand)] < 0
- && ((reg_equiv_mem[REGNO (operand)] != 0
- && EXTRA_CONSTRAINT (reg_equiv_mem[REGNO (operand)], c))
- || (reg_equiv_address[REGNO (operand)] != 0)))
- win = 1;
-
- /* If we didn't already win, we can reload
- constants via force_const_mem, and other
- MEMs by reloading the address like for 'o'. */
- if ((CONSTANT_P (operand) && GET_CODE (operand) != HIGH)
- || GET_CODE (operand) == MEM)
- badop = 0;
- constmemok = 1;
- offmemok = 1;
- break;
- }
- if (EXTRA_ADDRESS_CONSTRAINT (c))
- {
- if (EXTRA_CONSTRAINT (operand, c))
- win = 1;
-
- /* If we didn't already win, we can reload
- the address into a base register. */
- this_alternative[i] = (int) MODE_BASE_REG_CLASS (VOIDmode);
- badop = 0;
- break;
- }
-
if (EXTRA_CONSTRAINT (operand, c))
win = 1;
#endif
@@ -3646,7 +3606,7 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p)
for (i = 0; i < noperands; i++)
goal_alternative_matched[i] = -1;
-
+
for (i = 0; i < noperands; i++)
if (! goal_alternative_win[i]
&& goal_alternative_matches[i] >= 0)
@@ -3850,7 +3810,6 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p)
}
else if (goal_alternative_matched[i] < 0
&& goal_alternative_matches[i] < 0
- && !address_operand_reloaded[i]
&& optimize)
{
/* For each non-matching operand that's a MEM or a pseudo-register
@@ -3998,7 +3957,9 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p)
{
int opno = recog_data.dup_num[i];
*recog_data.dup_loc[i] = *recog_data.operand_loc[opno];
- dup_replacements (recog_data.dup_loc[i], recog_data.operand_loc[opno]);
+ if (operand_reloadnum[opno] >= 0)
+ push_replacement (recog_data.dup_loc[i], operand_reloadnum[opno],
+ insn_data[insn_code_number].operand[opno].mode);
}
#if 0
@@ -4352,7 +4313,7 @@ alternative_allows_memconst (constraint, altnum)
/* Scan the requested alternative for 'm' or 'o'.
If one of them is present, this alternative accepts memory constants. */
while ((c = *constraint++) && c != ',' && c != '#')
- if (c == 'm' || c == 'o' || EXTRA_MEMORY_CONSTRAINT (c))
+ if (c == 'm' || c == 'o')
return 1;
return 0;
}
@@ -4477,6 +4438,34 @@ find_reloads_toplev (x, opnum, type, ind_levels, is_set_dest, insn,
return tem;
}
+ /* If the SUBREG is wider than a word, the above test will fail.
+ For example, we might have a SImode SUBREG of a DImode SUBREG_REG
+ for a 16 bit target, or a DImode SUBREG of a TImode SUBREG_REG for
+ a 32 bit target. We still can - and have to - handle this
+ for non-paradoxical subregs of CONST_INTs. */
+ if (regno >= FIRST_PSEUDO_REGISTER && reg_renumber[regno] < 0
+ && reg_equiv_constant[regno] != 0
+ && GET_CODE (reg_equiv_constant[regno]) == CONST_INT
+ && (GET_MODE_SIZE (GET_MODE (x))
+ < GET_MODE_SIZE (GET_MODE (SUBREG_REG (x)))))
+ {
+ int shift = SUBREG_BYTE (x) * BITS_PER_UNIT;
+ if (WORDS_BIG_ENDIAN)
+ shift = (GET_MODE_BITSIZE (GET_MODE (SUBREG_REG (x)))
+ - GET_MODE_BITSIZE (GET_MODE (x))
+ - shift);
+ /* Here we use the knowledge that CONST_INTs have a
+ HOST_WIDE_INT field. */
+ if (shift >= HOST_BITS_PER_WIDE_INT)
+ shift = HOST_BITS_PER_WIDE_INT - 1;
+ return GEN_INT (INTVAL (reg_equiv_constant[regno]) >> shift);
+ }
+
+ if (regno >= FIRST_PSEUDO_REGISTER && reg_renumber[regno] < 0
+ && reg_equiv_constant[regno] != 0
+ && GET_MODE (reg_equiv_constant[regno]) == VOIDmode)
+ abort ();
+
/* If the subreg contains a reg that will be converted to a mem,
convert the subreg to a narrower memref now.
Otherwise, we would get (subreg (mem ...) ...),
@@ -4556,27 +4545,6 @@ make_memloc (ad, regno)
return tem;
}
-/* Returns true if AD could be turned into a valid memory reference
- to mode MODE by reloading the part pointed to by PART into a
- register. */
-
-static int
-maybe_memory_address_p (mode, ad, part)
- enum machine_mode mode;
- rtx ad;
- rtx *part;
-{
- int retv;
- rtx tem = *part;
- rtx reg = gen_rtx_REG (GET_MODE (tem), max_reg_num ());
-
- *part = reg;
- retv = memory_address_p (mode, ad);
- *part = tem;
-
- return retv;
-}
-
/* Record all reloads needed for handling memory address AD
which appears in *LOC in a memory reference to mode MODE
which itself is found in location *MEMREFLOC.
@@ -4643,9 +4611,9 @@ find_reloads_address (mode, memrefloc, ad, loc, opnum, type, ind_levels, insn)
tem = make_memloc (ad, regno);
if (! strict_memory_address_p (GET_MODE (tem), XEXP (tem, 0)))
{
- find_reloads_address (GET_MODE (tem), &tem, XEXP (tem, 0),
- &XEXP (tem, 0), opnum,
- ADDR_TYPE (type), ind_levels, insn);
+ find_reloads_address (GET_MODE (tem), (rtx*) 0, XEXP (tem, 0),
+ &XEXP (tem, 0), opnum, ADDR_TYPE (type),
+ ind_levels, insn);
}
/* We can avoid a reload if the register's equivalent memory
expression is valid as an indirect memory address.
@@ -4857,24 +4825,26 @@ find_reloads_address (mode, memrefloc, ad, loc, opnum, type, ind_levels, insn)
that the index needs a reload and find_reloads_address_1 will take care
of it.
- Handle all base registers here, not just fp/ap/sp, because on some
- targets (namely Sparc) we can also get invalid addresses from preventive
- subreg big-endian corrections made by find_reloads_toplev.
-
- If we decide to do something, it must be that `double_reg_address_ok'
- is true. We generate a reload of the base register + constant and
+ If we decide to do something here, it must be that
+ `double_reg_address_ok' is true and that this address rtl was made by
+ eliminate_regs. We generate a reload of the fp/sp/ap + constant and
rework the sum so that the reload register will be added to the index.
This is safe because we know the address isn't shared.
- We check for the base register as both the first and second operand of
- the innermost PLUS. */
+ We check for fp/ap/sp as both the first and second operand of the
+ innermost PLUS. */
else if (GET_CODE (ad) == PLUS && GET_CODE (XEXP (ad, 1)) == CONST_INT
&& GET_CODE (XEXP (ad, 0)) == PLUS
- && GET_CODE (XEXP (XEXP (ad, 0), 0)) == REG
- && REGNO (XEXP (XEXP (ad, 0), 0)) < FIRST_PSEUDO_REGISTER
- && REG_MODE_OK_FOR_BASE_P (XEXP (XEXP (ad, 0), 0), mode)
- && ! maybe_memory_address_p (mode, ad, &XEXP (XEXP (ad, 0), 1)))
+ && (XEXP (XEXP (ad, 0), 0) == frame_pointer_rtx
+#if FRAME_POINTER_REGNUM != HARD_FRAME_POINTER_REGNUM
+ || XEXP (XEXP (ad, 0), 0) == hard_frame_pointer_rtx
+#endif
+#if FRAME_POINTER_REGNUM != ARG_POINTER_REGNUM
+ || XEXP (XEXP (ad, 0), 0) == arg_pointer_rtx
+#endif
+ || XEXP (XEXP (ad, 0), 0) == stack_pointer_rtx)
+ && ! memory_address_p (mode, ad))
{
*loc = ad = gen_rtx_PLUS (GET_MODE (ad),
plus_constant (XEXP (XEXP (ad, 0), 0),
@@ -4891,10 +4861,15 @@ find_reloads_address (mode, memrefloc, ad, loc, opnum, type, ind_levels, insn)
else if (GET_CODE (ad) == PLUS && GET_CODE (XEXP (ad, 1)) == CONST_INT
&& GET_CODE (XEXP (ad, 0)) == PLUS
- && GET_CODE (XEXP (XEXP (ad, 0), 1)) == REG
- && REGNO (XEXP (XEXP (ad, 0), 1)) < FIRST_PSEUDO_REGISTER
- && REG_MODE_OK_FOR_BASE_P (XEXP (XEXP (ad, 0), 1), mode)
- && ! maybe_memory_address_p (mode, ad, &XEXP (XEXP (ad, 0), 0)))
+ && (XEXP (XEXP (ad, 0), 1) == frame_pointer_rtx
+#if HARD_FRAME_POINTER_REGNUM != FRAME_POINTER_REGNUM
+ || XEXP (XEXP (ad, 0), 1) == hard_frame_pointer_rtx
+#endif
+#if FRAME_POINTER_REGNUM != ARG_POINTER_REGNUM
+ || XEXP (XEXP (ad, 0), 1) == arg_pointer_rtx
+#endif
+ || XEXP (XEXP (ad, 0), 1) == stack_pointer_rtx)
+ && ! memory_address_p (mode, ad))
{
*loc = ad = gen_rtx_PLUS (GET_MODE (ad),
XEXP (XEXP (ad, 0), 0),
@@ -5239,19 +5214,6 @@ find_reloads_address_1 (mode, x, context, loc, opnum, type, ind_levels, insn)
SUBREG_BYTE (orig_op1),
GET_MODE (orig_op1))));
}
- /* Plus in the index register may be created only as a result of
- register remateralization for expresion like &localvar*4. Reload it.
- It may be possible to combine the displacement on the outer level,
- but it is probably not worthwhile to do so. */
- if (context)
- {
- find_reloads_address (GET_MODE (x), loc, XEXP (x, 0), &XEXP (x, 0),
- opnum, ADDR_TYPE (type), ind_levels, insn);
- push_reload (*loc, NULL_RTX, loc, (rtx*) 0,
- (context ? INDEX_REG_CLASS : MODE_BASE_REG_CLASS (mode)),
- GET_MODE (x), VOIDmode, 0, 0, opnum, type);
- return 1;
- }
if (code0 == MULT || code0 == SIGN_EXTEND || code0 == TRUNCATE
|| code0 == ZERO_EXTEND || code1 == MEM)
@@ -5379,7 +5341,7 @@ find_reloads_address_1 (mode, x, context, loc, opnum, type, ind_levels, insn)
We can't use ADDR_TYPE (type) here, because we need to
write back the value after reading it, hence we actually
need two registers. */
- find_reloads_address (GET_MODE (tem), &tem, XEXP (tem, 0),
+ find_reloads_address (GET_MODE (tem), 0, XEXP (tem, 0),
&XEXP (tem, 0), opnum,
RELOAD_OTHER,
ind_levels, insn);
@@ -5682,7 +5644,7 @@ find_reloads_address_1 (mode, x, context, loc, opnum, type, ind_levels, insn)
{
enum reg_class class = (context ? INDEX_REG_CLASS
: MODE_BASE_REG_CLASS (mode));
- if ((unsigned) CLASS_MAX_NREGS (class, GET_MODE (SUBREG_REG (x)))
+ if (CLASS_MAX_NREGS (class, GET_MODE (SUBREG_REG (x)))
> reg_class_size[class])
{
x = find_reloads_subreg_address (x, 0, opnum, type,
@@ -6026,7 +5988,7 @@ copy_replacements_1 (px, py, orig_replacements)
}
}
-/* Change any replacements being done to *X to be done to *Y. */
+/* Change any replacements being done to *X to be done to *Y */
void
move_replacements (x, y)
@@ -6897,7 +6859,7 @@ regno_clobbered_p (regno, insn, mode, sets)
&& GET_CODE (XEXP (elt, 0)) == REG)
{
unsigned int test = REGNO (XEXP (elt, 0));
-
+
if (test >= regno && test < endregno)
return 1;
}
diff --git a/contrib/gcc/toplev.c b/contrib/gcc/toplev.c
index f213f2d..8b60d9e 100644
--- a/contrib/gcc/toplev.c
+++ b/contrib/gcc/toplev.c
@@ -1,6 +1,6 @@
/* Top level of GNU C compiler
Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
This file is part of GCC.
@@ -19,6 +19,8 @@ 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. */
+/* $FreeBSD$ */
+
/* This is the top level of cc1/c++.
It parses command args, opens files, invokes the various passes
in the proper order, and counts the time used by each.
@@ -29,6 +31,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#undef FFS /* Some systems define this in param.h. */
#include "system.h"
#include <signal.h>
+#include <setjmp.h>
#ifdef HAVE_SYS_RESOURCE_H
# include <sys/resource.h>
@@ -66,11 +69,9 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "reload.h"
#include "dwarf2asm.h"
#include "integrate.h"
-#include "real.h"
#include "debug.h"
#include "target.h"
#include "langhooks.h"
-#include "cfglayout.h"
#if defined (DWARF2_UNWIND_INFO) || defined (DWARF2_DEBUGGING_INFO)
#include "dwarf2out.h"
@@ -88,6 +89,10 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "xcoffout.h" /* Needed for external data
declarations for e.g. AIX 4.x. */
#endif
+
+#ifdef HALF_PIC_DEBUG
+#include "halfpic.h"
+#endif
/* Carry information from ASM_DECLARE_OBJECT_NAME
to ASM_FINISH_DECLARE_OBJECT. */
@@ -95,20 +100,21 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
extern int size_directive_output;
extern tree last_assemble_variable_decl;
-extern void reg_alloc PARAMS ((void));
-
static void general_init PARAMS ((char *));
static void parse_options_and_default_flags PARAMS ((int, char **));
static void do_compile PARAMS ((void));
static void process_options PARAMS ((void));
-static void backend_init PARAMS ((void));
+static void lang_independent_init PARAMS ((void));
static int lang_dependent_init PARAMS ((const char *));
static void init_asm_output PARAMS ((const char *));
static void finalize PARAMS ((void));
static void set_target_switch PARAMS ((const char *));
+static const char *decl_name PARAMS ((tree, int));
+static void float_signal PARAMS ((int)) ATTRIBUTE_NORETURN;
static void crash_signal PARAMS ((int)) ATTRIBUTE_NORETURN;
+static void set_float_handler PARAMS ((jmp_buf));
static void compile_file PARAMS ((void));
static void display_help PARAMS ((void));
static void display_target_options PARAMS ((void));
@@ -126,9 +132,6 @@ static int print_single_switch PARAMS ((FILE *, int, int, const char *,
static void print_switch_values PARAMS ((FILE *, int, int, const char *,
const char *, const char *));
-/* Nonzero to dump debug info whilst parsing (-dy option). */
-static int set_yydebug;
-
/* Length of line when printing switch values. */
#define MAX_LINE 75
@@ -169,10 +172,6 @@ int input_file_stack_tick;
const char *dump_base_name;
-/* Name to use as a base for auxiliary output files. */
-
-const char *aux_base_name;
-
/* Format to use to print dumpfile index value */
#ifndef DUMPFILE_FORMAT
#define DUMPFILE_FORMAT ".%02d."
@@ -184,14 +183,9 @@ const char *aux_base_name;
extern int target_flags;
-/* A mask of target_flags that includes bit X if X was set or cleared
- on the command line. */
-
-int target_flags_explicit;
-
/* Debug hooks - dependent upon command line options. */
-const struct gcc_debug_hooks *debug_hooks = &do_nothing_debug_hooks;
+struct gcc_debug_hooks *debug_hooks = &do_nothing_debug_hooks;
/* Describes a dump file. */
@@ -225,19 +219,16 @@ enum dump_file_index
DFI_ssa_ccp,
DFI_ssa_dce,
DFI_ussa,
- DFI_null,
DFI_cse,
DFI_addressof,
DFI_gcse,
DFI_loop,
+ DFI_cse2,
DFI_cfg,
DFI_bp,
- DFI_ce1,
- DFI_tracer,
- DFI_cse2,
DFI_life,
DFI_combine,
- DFI_ce2,
+ DFI_ce,
DFI_regmove,
DFI_sched,
DFI_lreg,
@@ -246,7 +237,7 @@ enum dump_file_index
DFI_flow2,
DFI_peephole2,
DFI_rnreg,
- DFI_ce3,
+ DFI_ce2,
DFI_sched2,
DFI_stack,
DFI_bbro,
@@ -260,7 +251,7 @@ enum dump_file_index
Remaining -d letters:
- " o q "
+ " o q u "
" H JK OPQ TUV YZ"
*/
@@ -274,19 +265,16 @@ static struct dump_file_info dump_file[DFI_MAX] =
{ "ssaccp", 'W', 1, 0, 0 },
{ "ssadce", 'X', 1, 0, 0 },
{ "ussa", 'e', 1, 0, 0 }, /* Yes, duplicate enable switch. */
- { "null", 'u', 0, 0, 0 },
{ "cse", 's', 0, 0, 0 },
{ "addressof", 'F', 0, 0, 0 },
{ "gcse", 'G', 1, 0, 0 },
{ "loop", 'L', 1, 0, 0 },
+ { "cse2", 't', 1, 0, 0 },
{ "cfg", 'f', 1, 0, 0 },
{ "bp", 'b', 1, 0, 0 },
- { "ce1", 'C', 1, 0, 0 },
- { "tracer", 'T', 1, 0, 0 },
- { "cse2", 't', 1, 0, 0 },
{ "life", 'f', 1, 0, 0 }, /* Yes, duplicate enable switch. */
{ "combine", 'c', 1, 0, 0 },
- { "ce2", 'C', 1, 0, 0 },
+ { "ce", 'C', 1, 0, 0 },
{ "regmove", 'N', 1, 0, 0 },
{ "sched", 'S', 1, 0, 0 },
{ "lreg", 'l', 1, 0, 0 },
@@ -295,7 +283,7 @@ static struct dump_file_info dump_file[DFI_MAX] =
{ "flow2", 'w', 1, 0, 0 },
{ "peephole2", 'z', 1, 0, 0 },
{ "rnreg", 'n', 1, 0, 0 },
- { "ce3", 'E', 1, 0, 0 },
+ { "ce2", 'E', 1, 0, 0 },
{ "sched2", 'R', 1, 0, 0 },
{ "stack", 'k', 1, 0, 0 },
{ "bbro", 'B', 1, 0, 0 },
@@ -348,8 +336,8 @@ int use_gnu_debug_info_extensions = 0;
int optimize = 0;
/* Nonzero means optimize for size. -Os.
- The only valid values are zero and nonzero. When optimize_size is
- nonzero, optimize defaults to 2, but certain individual code
+ The only valid values are zero and non-zero. When optimize_size is
+ non-zero, optimize defaults to 2, but certain individual code
bloating optimizations are disabled. */
int optimize_size = 0;
@@ -365,6 +353,29 @@ tree current_function_decl;
if none. */
tree current_function_func_begin_label;
+/* Pointer to function to compute the name to use to print a declaration.
+ DECL is the declaration in question.
+ VERBOSITY determines what information will be printed:
+ 0: DECL_NAME, demangled as necessary.
+ 1: and scope information.
+ 2: and any other information that might be interesting, such as function
+ parameter types in C++. */
+
+const char *(*decl_printable_name) PARAMS ((tree, int));
+
+/* Pointer to function to compute rtl for a language-specific tree code. */
+
+typedef rtx (*lang_expand_expr_t)
+ PARAMS ((union tree_node *, rtx, enum machine_mode,
+ enum expand_modifier modifier));
+
+lang_expand_expr_t lang_expand_expr = 0;
+
+/* Pointer to function to finish handling an incomplete decl at the
+ end of compilation. */
+
+void (*incomplete_decl_finalize_hook) PARAMS ((tree)) = 0;
+
/* Nonzero if doing dwarf2 duplicate elimination. */
int flag_eliminate_dwarf2_dups = 0;
@@ -389,10 +400,6 @@ int flag_branch_probabilities = 0;
int flag_reorder_blocks = 0;
-/* Nonzero if functions should be reordered. */
-
-int flag_reorder_functions = 0;
-
/* Nonzero if registers should be renamed. */
int flag_rename_registers = 0;
@@ -577,24 +584,12 @@ int flag_errno_math = 1;
int flag_unsafe_math_optimizations = 0;
-/* Nonzero means that no NaNs or +-Infs are expected. */
-
-int flag_finite_math_only = 0;
-
/* Zero means that floating-point math operations cannot generate a
(user-visible) trap. This is the case, for example, in nonstop
- IEEE 754 arithmetic. Trapping conditions include division by zero,
- overflow, underflow, invalid and inexact, but does not include
- operations on signaling NaNs (see below). */
+ IEEE 754 arithmetic. */
int flag_trapping_math = 1;
-/* Nonzero means disable transformations observable by signaling NaNs.
- This option implies that any operation on a IEEE signaling NaN can
- generate a (user-visible) trap. */
-
-int flag_signaling_nans = 0;
-
/* 0 means straightforward implementation of complex divide acceptable.
1 means wide ranges of inputs must work for complex divide.
2 means C99-like requirements for complex divide (not yet implemented). */
@@ -621,22 +616,6 @@ int flag_syntax_only = 0;
static int flag_gcse;
-/* Nonzero means perform loop optimizer. */
-
-static int flag_loop_optimize;
-
-/* Nonzero means perform crossjumping. */
-
-static int flag_crossjumping;
-
-/* Nonzero means perform if conversion. */
-
-static int flag_if_conversion;
-
-/* Nonzero means perform if conversion after reload. */
-
-static int flag_if_conversion2;
-
/* Nonzero means to use global dataflow analysis to eliminate
useless null pointer tests. */
@@ -705,15 +684,12 @@ int flag_shared_data;
int flag_delayed_branch;
/* Nonzero if we are compiling pure (sharable) code.
- Value is 1 if we are doing "small" pic; value is 2 if we're doing
- "large" pic. */
+ Value is 1 if we are doing reasonable (i.e. simple
+ offset into offset table) pic. Value is 2 if we can
+ only perform register offsets. */
int flag_pic;
-/* Set to the default thread-local storage (tls) model to use. */
-
-enum tls_model flag_tls_default = TLS_MODEL_GLOBAL_DYNAMIC;
-
/* Nonzero means generate extra code for exception handling and enable
exception handling. */
@@ -732,6 +708,12 @@ int flag_asynchronous_unwind_tables = 0;
int flag_no_common;
+/* Nonzero means pretend it is OK to examine bits of target floats,
+ even if that isn't true. The resulting code will have incorrect constants,
+ but the same series of instructions that the native compiler would make. */
+
+int flag_pretend_float;
+
/* Nonzero means change certain warnings into errors.
Usually these are warnings about failure to conform to some standard. */
@@ -803,9 +785,6 @@ int flag_gnu_linker = 0;
int flag_gnu_linker = 1;
#endif
-/* Nonzero means put zero initialized data in the bss section. */
-int flag_zero_initialized_in_bss = 1;
-
/* Enable SSA. */
int flag_ssa = 0;
@@ -818,6 +797,9 @@ int flag_ssa_dce = 0;
/* Tag all structures with __attribute__(packed). */
int flag_pack_struct = 0;
+/* Nonzero means that -Wformat accepts certain system-dependent formats. */
+int flag_format_extensions = 0;
+
/* Emit code to check for stack overflow; also may cause large objects
to be allocated dynamically. */
int flag_stack_check;
@@ -860,10 +842,19 @@ int flag_peephole2 = 0;
/* This will try to guess branch probabilities. */
int flag_guess_branch_prob = 0;
+/* -fbounded-pointers causes gcc to compile pointers as composite
+ objects occupying three words: the pointer value, the base address
+ of the referent object, and the address immediately beyond the end
+ of the referent object. The base and extent allow us to perform
+ runtime bounds checking. -fbounded-pointers implies -fcheck-bounds. */
+int flag_bounded_pointers = 0;
+
/* -fcheck-bounds causes gcc to generate array bounds checks.
- For C, C++, ObjC: defaults to off.
+ For C, C++: defaults to value of flag_bounded_pointers.
+ For ObjC: defaults to off.
For Java: defaults to on.
- For Fortran: defaults to off. */
+ For Fortran: defaults to off.
+ For CHILL: defaults to off. */
int flag_bounds_check = 0;
/* This will attempt to merge constant section constants, if 1 only
@@ -876,13 +867,6 @@ int flag_merge_constants = 1;
one, unconditionally renumber instruction UIDs. */
int flag_renumber_insns = 1;
-/* If nonzero, use the graph coloring register allocator. */
-int flag_new_regalloc = 0;
-
-/* Nonzero if we perform superblock formation. */
-
-int flag_tracer = 0;
-
/* Values of the -falign-* flags: how much to align labels in code.
0 means `use default', 1 means `don't align'.
For each variable, there is an _log variant which is the power
@@ -969,6 +953,11 @@ static const param_info lang_independent_params[] = {
{ NULL, 0, NULL }
};
+/* A default for same. */
+#ifndef USER_LABEL_PREFIX
+#define USER_LABEL_PREFIX ""
+#endif
+
/* Table of language-independent -f options.
STRING is the option name. VARIABLE is the address of the variable.
ON_VALUE is the value to store in VARIABLE
@@ -977,6 +966,8 @@ static const param_info lang_independent_params[] = {
static const lang_independent_options f_options[] =
{
+ {"format-extensions", &flag_format_extensions, 1,
+ N_("-Wformat accepts certain FreeBSD system-dependent formats") },
{"eliminate-dwarf2-dups", &flag_eliminate_dwarf2_dups, 1,
N_("Perform DWARF2 duplicate elimination") },
{"float-store", &flag_float_store, 1,
@@ -993,8 +984,6 @@ static const lang_independent_options f_options[] =
N_("When possible do not generate stack frames") },
{"optimize-sibling-calls", &flag_optimize_sibling_calls, 1,
N_("Optimize sibling and tail recursive calls") },
- {"tracer", &flag_tracer, 1,
- N_("Perform superblock formation via tail duplication") },
{"cse-follow-jumps", &flag_cse_follow_jumps, 1,
N_("When running CSE, follow jumps to their targets") },
{"cse-skip-blocks", &flag_cse_skip_blocks, 1,
@@ -1051,20 +1040,14 @@ static const lang_independent_options f_options[] =
N_("Perform enhanced load motion during global subexpression elimination") },
{"gcse-sm", &flag_gcse_sm, 1,
N_("Perform store motion after global subexpression elimination") },
- {"loop-optimize", &flag_loop_optimize, 1,
- N_("Perform the loop optimizations") },
- {"crossjumping", &flag_crossjumping, 1,
- N_("Perform cross-jumping optimization") },
- {"if-conversion", &flag_if_conversion, 1,
- N_("Perform conversion of conditional jumps to branchless equivalents") },
- {"if-conversion2", &flag_if_conversion2, 1,
- N_("Perform conversion of conditional jumps to conditional execution") },
{"rerun-cse-after-loop", &flag_rerun_cse_after_loop, 1,
N_("Run CSE pass after loop optimizations") },
{"rerun-loop-opt", &flag_rerun_loop_opt, 1,
N_("Run the loop optimizer twice") },
{"delete-null-pointer-checks", &flag_delete_null_pointer_checks, 1,
N_("Delete useless null pointer checks") },
+ {"pretend-float", &flag_pretend_float, 1,
+ N_("Pretend that host and target use the same FP format") },
{"schedule-insns", &flag_schedule_insns, 1,
N_("Reschedule instructions before register allocation") },
{"schedule-insns2", &flag_schedule_insns_after_reload, 1,
@@ -1096,12 +1079,8 @@ static const lang_independent_options f_options[] =
N_("Create data files needed by gcov") },
{"branch-probabilities", &flag_branch_probabilities, 1,
N_("Use profiling information for branch probabilities") },
- {"profile", &profile_flag, 1,
- N_("Enable basic program profiling code") },
{"reorder-blocks", &flag_reorder_blocks, 1,
N_("Reorder basic blocks to improve code placement") },
- {"reorder-functions", &flag_reorder_functions, 1,
- N_("Reorder functions to improve code placement") },
{"rename-registers", &flag_rename_registers, 1,
N_("Do the register renaming optimization pass") },
{"cprop-registers", &flag_cprop_registers, 1,
@@ -1115,7 +1094,7 @@ static const lang_independent_options f_options[] =
{"data-sections", &flag_data_sections, 1,
N_("place data items into their own section") },
{"verbose-asm", &flag_verbose_asm, 1,
- N_("Add extra commentary to assembler output") },
+ N_("Add extra commentry to assembler output") },
{"gnu-linker", &flag_gnu_linker, 1,
N_("Output GNU ld formatted global initializers") },
{"regmove", &flag_regmove, 1,
@@ -1143,15 +1122,13 @@ static const lang_independent_options f_options[] =
{"align-functions", &align_functions, 0,
N_("Align the start of functions") },
{"merge-constants", &flag_merge_constants, 1,
- N_("Attempt to merge identical constants across compilation units") },
+ N_("Attempt to merge identical constants accross compilation units") },
{"merge-all-constants", &flag_merge_constants, 2,
N_("Attempt to merge identical constants and constant variables") },
{"dump-unnumbered", &flag_dump_unnumbered, 1,
N_("Suppress output of instruction numbers and line number notes in debugging dumps") },
{"instrument-functions", &flag_instrument_function_entry_exit, 1,
N_("Instrument function entry/exit with profiling calls") },
- {"zero-initialized-in-bss", &flag_zero_initialized_in_bss, 1,
- N_("Put zero initialized data in the bss section") },
{"ssa", &flag_ssa, 1,
N_("Enable SSA optimizations") },
{"ssa-ccp", &flag_ssa_ccp, 1,
@@ -1164,8 +1141,6 @@ static const lang_independent_options f_options[] =
N_("Process #ident directives") },
{ "peephole2", &flag_peephole2, 1,
N_("Enables an rtl peephole pass run before sched2") },
- {"finite-math-only", &flag_finite_math_only, 1,
- N_("Assume no NaNs or +-Infs are generated") },
{ "guess-branch-probability", &flag_guess_branch_prob, 1,
N_("Enables guessing of branch probabilities") },
{"math-errno", &flag_errno_math, 1,
@@ -1174,10 +1149,10 @@ static const lang_independent_options f_options[] =
N_("Floating-point operations can trap") },
{"unsafe-math-optimizations", &flag_unsafe_math_optimizations, 1,
N_("Allow math optimizations that may violate IEEE or ANSI standards") },
- {"signaling-nans", &flag_signaling_nans, 1,
- N_("Disable optimizations observable by IEEE signaling NaNs") },
+ {"bounded-pointers", &flag_bounded_pointers, 1,
+ N_("Compile pointers as triples: value, base & end") },
{"bounds-check", &flag_bounds_check, 1,
- N_("Generate code to check bounds before indexing arrays") },
+ N_("Generate code to check bounds before dereferencing pointers and arrays") },
{"single-precision-constant", &flag_single_precision_constant, 1,
N_("Convert floating point constant to single precision constant") },
{"time-report", &time_report, 1,
@@ -1186,8 +1161,6 @@ static const lang_independent_options f_options[] =
N_("Report on permanent memory allocation at end of run") },
{ "trapv", &flag_trapv, 1,
N_("Trap for signed overflow in addition / subtraction / multiplication") },
- { "new-ra", &flag_new_regalloc, 1,
- N_("Use graph coloring register allocation.") },
};
/* Table of language-specific options. */
@@ -1203,9 +1176,11 @@ documented_lang_options[] =
used here is to only describe those options which are not
enabled by default. */
- { "-ansi",
- N_("Compile just for ISO C90") },
- { "-std= ",
+ { "-ansi",
+ N_("Compile just for ISO C89") },
+ { "-fallow-single-precision",
+ N_("Do not promote floats to double if using -traditional") },
+ { "-std= ",
N_("Determine language standard") },
{ "-fsigned-bitfields", "" },
@@ -1213,103 +1188,104 @@ documented_lang_options[] =
N_("Make bit-fields by unsigned by default") },
{ "-fno-signed-bitfields", "" },
{ "-fno-unsigned-bitfields","" },
- { "-fsigned-char",
+ { "-fsigned-char",
N_("Make 'char' be signed by default") },
- { "-funsigned-char",
+ { "-funsigned-char",
N_("Make 'char' be unsigned by default") },
{ "-fno-signed-char", "" },
{ "-fno-unsigned-char", "" },
+ { "-ftraditional", "" },
+ { "-traditional",
+ N_("Attempt to support traditional K&R style C") },
+ { "-fnotraditional", "" },
+ { "-fno-traditional", "" },
+
{ "-fasm", "" },
- { "-fno-asm",
+ { "-fno-asm",
N_("Do not recognize the 'asm' keyword") },
{ "-fbuiltin", "" },
- { "-fno-builtin",
+ { "-fno-builtin",
N_("Do not recognize any built in functions") },
- { "-fhosted",
+ { "-fhosted",
N_("Assume normal C execution environment") },
{ "-fno-hosted", "" },
{ "-ffreestanding",
N_("Assume that standard libraries & main might not exist") },
{ "-fno-freestanding", "" },
- { "-fcond-mismatch",
+ { "-fcond-mismatch",
N_("Allow different types as args of ? operator") },
{ "-fno-cond-mismatch", "" },
- { "-fdollars-in-identifiers",
+ { "-fdollars-in-identifiers",
N_("Allow the use of $ inside identifiers") },
{ "-fno-dollars-in-identifiers", "" },
{ "-fpreprocessed", "" },
{ "-fno-preprocessed", "" },
- { "-fshort-double",
+ { "-fshort-double",
N_("Use the same size for double as for float") },
{ "-fno-short-double", "" },
- { "-fshort-enums",
+ { "-fshort-enums",
N_("Use the smallest fitting integer to hold enums") },
{ "-fno-short-enums", "" },
- { "-fshort-wchar",
+ { "-fshort-wchar",
N_("Override the underlying type for wchar_t to `unsigned short'") },
{ "-fno-short-wchar", "" },
- { "-Wall",
+ { "-Wall",
N_("Enable most warning messages") },
{ "-Wbad-function-cast",
N_("Warn about casting functions to incompatible types") },
{ "-Wno-bad-function-cast", "" },
+ { "-Wno-missing-noreturn", "" },
{ "-Wmissing-format-attribute",
N_("Warn about functions which might be candidates for format attributes") },
{ "-Wno-missing-format-attribute", "" },
- { "-Wcast-qual",
+ { "-Wcast-qual",
N_("Warn about casts which discard qualifiers") },
{ "-Wno-cast-qual", "" },
- { "-Wchar-subscripts",
+ { "-Wchar-subscripts",
N_("Warn about subscripts whose type is 'char'") },
{ "-Wno-char-subscripts", "" },
- { "-Wcomment",
+ { "-Wcomment",
N_("Warn if nested comments are detected") },
{ "-Wno-comment", "" },
- { "-Wcomments",
+ { "-Wcomments",
N_("Warn if nested comments are detected") },
{ "-Wno-comments", "" },
- { "-Wconversion",
+ { "-Wconversion",
N_("Warn about possibly confusing type conversions") },
{ "-Wno-conversion", "" },
- { "-Wdiv-by-zero", "" },
- { "-Wno-div-by-zero",
- N_("Do not warn about compile-time integer division by zero") },
- { "-Wfloat-equal",
- N_("Warn about testing equality of floating point numbers") },
- { "-Wno-float-equal", "" },
- { "-Wformat",
+ { "-Wformat",
N_("Warn about printf/scanf/strftime/strfmon format anomalies") },
{ "-Wno-format", "" },
+ { "-Wformat-y2k", "" },
+ { "-Wno-format-y2k",
+ N_("Don't warn about strftime formats yielding 2 digit years") },
{ "-Wformat-extra-args", "" },
{ "-Wno-format-extra-args",
N_("Don't warn about too many arguments to format functions") },
- { "-Wformat-nonliteral",
+ { "-Wformat-nonliteral",
N_("Warn about non-string-literal format strings") },
{ "-Wno-format-nonliteral", "" },
{ "-Wformat-security",
N_("Warn about possible security problems with format functions") },
{ "-Wno-format-security", "" },
- { "-Wformat-y2k", "" },
- { "-Wno-format-y2k",
- N_("Don't warn about strftime formats yielding 2 digit years") },
{ "-Wimplicit-function-declaration",
N_("Warn about implicit function declarations") },
{ "-Wno-implicit-function-declaration", "" },
{ "-Werror-implicit-function-declaration", "" },
- { "-Wimplicit-int",
+ { "-Wimplicit-int",
N_("Warn when a declaration does not specify a type") },
{ "-Wno-implicit-int", "" },
{ "-Wimplicit", "" },
{ "-Wno-implicit", "" },
- { "-Wimport",
+ { "-Wimport",
N_("Warn about the use of the #import directive") },
{ "-Wno-import", "" },
{ "-Wlong-long","" },
- { "-Wno-long-long",
+ { "-Wno-long-long",
N_("Do not warn about using 'long long' when -pedantic") },
- { "-Wmain",
+ { "-Wmain",
N_("Warn about suspicious declarations of main") },
{ "-Wno-main", "" },
{ "-Wmissing-braces",
@@ -1318,48 +1294,48 @@ documented_lang_options[] =
{ "-Wmissing-declarations",
N_("Warn about global funcs without previous declarations") },
{ "-Wno-missing-declarations", "" },
- { "-Wmissing-prototypes",
+ { "-Wmissing-prototypes",
N_("Warn about global funcs without prototypes") },
{ "-Wno-missing-prototypes", "" },
- { "-Wmultichar",
+ { "-Wmultichar",
N_("Warn about use of multicharacter literals") },
{ "-Wno-multichar", "" },
- { "-Wnested-externs",
+ { "-Wnested-externs",
N_("Warn about externs not at file scope level") },
{ "-Wno-nested-externs", "" },
- { "-Wparentheses",
+ { "-Wparentheses",
N_("Warn about possible missing parentheses") },
{ "-Wno-parentheses", "" },
- { "-Wpointer-arith",
+ { "-Wsequence-point",
+ N_("Warn about possible violations of sequence point rules") },
+ { "-Wno-sequence-point", "" },
+ { "-Wpointer-arith",
N_("Warn about function pointer arithmetic") },
{ "-Wno-pointer-arith", "" },
{ "-Wredundant-decls",
N_("Warn about multiple declarations of the same object") },
{ "-Wno-redundant-decls", "" },
- { "-Wreturn-type",
- N_("Warn whenever a function's return-type defaults to int") },
- { "-Wno-return-type", "" },
- { "-Wsequence-point",
- N_("Warn about possible violations of sequence point rules") },
- { "-Wno-sequence-point", "" },
- { "-Wsign-compare",
+ { "-Wsign-compare",
N_("Warn about signed/unsigned comparisons") },
{ "-Wno-sign-compare", "" },
- { "-Wstrict-prototypes",
+ { "-Wfloat-equal",
+ N_("Warn about testing equality of floating point numbers") },
+ { "-Wno-float-equal", "" },
+ { "-Wunknown-pragmas",
+ N_("Warn about unrecognized pragmas") },
+ { "-Wno-unknown-pragmas", "" },
+ { "-Wstrict-prototypes",
N_("Warn about non-prototyped function decls") },
{ "-Wno-strict-prototypes", "" },
- { "-Wtraditional",
- N_("Warn about constructs whose meanings change in ISO C") },
+ { "-Wtraditional",
+ N_("Warn about constructs whose meaning change in ISO C") },
{ "-Wno-traditional", "" },
- { "-Wtrigraphs",
+ { "-Wtrigraphs",
N_("Warn when trigraphs are encountered") },
{ "-Wno-trigraphs", "" },
{ "-Wundef", "" },
{ "-Wno-undef", "" },
- { "-Wunknown-pragmas",
- N_("Warn about unrecognized pragmas") },
- { "-Wno-unknown-pragmas", "" },
- { "-Wwrite-strings",
+ { "-Wwrite-strings",
N_("Mark strings as 'const char *'") },
{ "-Wno-write-strings", "" },
@@ -1381,7 +1357,7 @@ static const struct
const int value;
const char *const description;
}
-target_switches[] = TARGET_SWITCHES;
+target_switches [] = TARGET_SWITCHES;
/* This table is similar, but allows the switch to have a value. */
@@ -1392,7 +1368,7 @@ static const struct
const char **const variable;
const char *const description;
}
-target_options[] = TARGET_OPTIONS;
+target_options [] = TARGET_OPTIONS;
#endif
/* Options controlling warnings. */
@@ -1433,20 +1409,10 @@ int warn_uninitialized;
int warn_shadow;
-/* Warn if a switch on an enum, that does not have a default case,
- fails to have a case for every enum value. */
+/* Warn if a switch on an enum fails to have a case for every enum value. */
int warn_switch;
-/* Warn if a switch does not have a default case. */
-
-int warn_switch_default;
-
-/* Warn if a switch on an enum fails to have a case for every enum
- value (regardless of the presence or otherwise of a default case). */
-
-int warn_switch_enum;
-
/* Nonzero means warn about function definitions that default the return type
or that use a null return and have a return-type other than void. */
@@ -1490,16 +1456,11 @@ int warn_disabled_optimization;
int warn_missing_noreturn;
-/* Nonzero means warn about uses of __attribute__((deprecated))
+/* Nonzero means warn about uses of __attribute__((deprecated))
declarations. */
int warn_deprecated_decl = 1;
-/* Nonzero means warn about constructs which might not be
- strict-aliasing safe. */
-
-int warn_strict_aliasing;
-
/* Likewise for -W. */
static const lang_independent_options W_options[] =
@@ -1521,11 +1482,7 @@ static const lang_independent_options W_options[] =
{"shadow", &warn_shadow, 1,
N_("Warn when one local variable shadows another") },
{"switch", &warn_switch, 1,
- N_("Warn about enumerated switches, with no default, missing a case") },
- {"switch-default", &warn_switch_default, 1,
- N_("Warn about enumerated switches missing a default case") },
- {"switch-enum", &warn_switch_enum, 1,
- N_("Warn about all enumerated switches missing a specific case") },
+ N_("Warn about enumerated switches missing a specific case") },
{"aggregate-return", &warn_aggregate_return, 1,
N_("Warn about returning structures, unions or arrays") },
{"cast-align", &warn_cast_align, 1,
@@ -1545,9 +1502,7 @@ static const lang_independent_options W_options[] =
{"deprecated-declarations", &warn_deprecated_decl, 1,
N_("Warn about uses of __attribute__((deprecated)) declarations") },
{"missing-noreturn", &warn_missing_noreturn, 1,
- N_("Warn about functions which might be candidates for attribute noreturn") },
- {"strict-aliasing", &warn_strict_aliasing, 1,
- N_ ("Warn about code which might break the strict aliasing rules") }
+ N_("Warn about functions which might be candidates for attribute noreturn") }
};
void
@@ -1571,25 +1526,19 @@ set_Wunused (setting)
-ffast-math and -fno-fast-math imply. */
void
-set_fast_math_flags (set)
- int set;
+set_fast_math_flags ()
{
- flag_trapping_math = !set;
- flag_unsafe_math_optimizations = set;
- flag_finite_math_only = set;
- flag_errno_math = !set;
- if (set)
- flag_signaling_nans = 0;
+ flag_trapping_math = 0;
+ flag_unsafe_math_optimizations = 1;
+ flag_errno_math = 0;
}
-/* Return true iff flags are set as if -ffast-math. */
-bool
-fast_math_flags_set_p ()
+void
+set_no_fast_math_flags ()
{
- return (!flag_trapping_math
- && flag_unsafe_math_optimizations
- && flag_finite_math_only
- && !flag_errno_math);
+ flag_trapping_math = 1;
+ flag_unsafe_math_optimizations = 0;
+ flag_errno_math = 1;
}
@@ -1630,8 +1579,20 @@ read_integral_parameter (p, pname, defval)
return atoi (p);
}
+
+
+/* This is the default decl_printable_name function. */
+
+static const char *
+decl_name (decl, verbosity)
+ tree decl;
+ int verbosity ATTRIBUTE_UNUSED;
+{
+ return IDENTIFIER_POINTER (DECL_NAME (decl));
+}
-/* This calls abort and is used to avoid problems when abort is a macro.
+
+/* This calls abort and is used to avoid problems when abort if a macro.
It is used when we need to pass the address of abort. */
void
@@ -1684,6 +1645,73 @@ floor_log2_wide (x)
return log;
}
+static int float_handler_set;
+int float_handled;
+jmp_buf float_handler;
+
+/* Signals actually come here. */
+
+static void
+float_signal (signo)
+ /* If this is missing, some compilers complain. */
+ int signo ATTRIBUTE_UNUSED;
+{
+ if (float_handled == 0)
+ crash_signal (signo);
+ float_handled = 0;
+
+ /* On System-V derived systems, we must reinstall the signal handler.
+ This is harmless on BSD-derived systems. */
+ signal (SIGFPE, float_signal);
+ longjmp (float_handler, 1);
+}
+
+/* Specify where to longjmp to when a floating arithmetic error happens.
+ If HANDLER is 0, it means don't handle the errors any more. */
+
+static void
+set_float_handler (handler)
+ jmp_buf handler;
+{
+ float_handled = (handler != 0);
+ if (handler)
+ memcpy (float_handler, handler, sizeof (float_handler));
+
+ if (float_handled && ! float_handler_set)
+ {
+ signal (SIGFPE, float_signal);
+ float_handler_set = 1;
+ }
+}
+
+/* This is a wrapper function for code which might elicit an
+ arithmetic exception. That code should be passed in as a function
+ pointer FN, and one argument DATA. DATA is usually a struct which
+ contains the real input and output for function FN. This function
+ returns 0 (failure) if longjmp was called (i.e. an exception
+ occurred.) It returns 1 (success) otherwise. */
+
+int
+do_float_handler (fn, data)
+ void (*fn) PARAMS ((PTR));
+ PTR data;
+{
+ jmp_buf buf;
+
+ if (setjmp (buf))
+ {
+ /* We got here via longjmp () caused by an exception in function
+ fn (). */
+ set_float_handler (NULL);
+ return 0;
+ }
+
+ set_float_handler (buf);
+ (*fn)(data);
+ set_float_handler (NULL);
+ return 1;
+}
+
/* Handler for fatal signals, such as SIGSEGV. These are transformed
into ICE messages, which is much more user friendly. */
@@ -1691,7 +1719,7 @@ static void
crash_signal (signo)
int signo;
{
- internal_error ("%s", strsignal (signo));
+ internal_error ("internal error: %s", strsignal (signo));
}
/* Strip off a legitimate source ending from the input string NAME of
@@ -1705,7 +1733,7 @@ strip_off_ending (name, len)
int len;
{
int i;
- for (i = 2; i < 6 && len > i; i++)
+ for (i = 2; i < 6 && len > i; i++)
{
if (name[len - i] == '.')
{
@@ -1737,30 +1765,12 @@ output_quoted_string (asm_file, string)
putc (c, asm_file);
}
else
- fprintf (asm_file, "\\%03o", (unsigned char) c);
+ fprintf (asm_file, "\\%03o", c);
}
putc ('\"', asm_file);
#endif
}
-/* Output NAME into FILE after having turned it into something
- usable as an identifier in a target's assembly file. */
-void
-output_clean_symbol_name (file, name)
- FILE *file;
- const char *name;
-{
- /* Make a copy of NAME. */
- char *id = xstrdup (name);
-
- /* Make it look like a valid identifier for an assembler. */
- clean_symbol_name (id);
-
- fputs (id, file);
- free (id);
-}
-
-
/* Output a file name in the form wanted by System V. */
void
@@ -1775,7 +1785,7 @@ output_file_directive (asm_file, input_name)
while (na > input_name)
{
if (IS_DIR_SEPARATOR (na[-1]))
- break;
+ break;
na--;
}
@@ -1838,13 +1848,8 @@ open_dump_file (index, decl)
free (dump_name);
if (decl)
- fprintf (rtl_dump_file, "\n;; Function %s%s\n\n",
- (*lang_hooks.decl_printable_name) (decl, 2),
- cfun->function_frequency == FUNCTION_FREQUENCY_HOT
- ? " (hot)"
- : cfun->function_frequency == FUNCTION_FREQUENCY_UNLIKELY_EXECUTED
- ? " (unlikely executed)"
- : "");
+ fprintf (rtl_dump_file, "\n;; Function %s\n\n",
+ decl_printable_name (decl, 2));
timevar_pop (TV_DUMP);
return 1;
@@ -1888,7 +1893,7 @@ close_dump_file (index, func, insns)
/* Do any final processing required for the declarations in VEC, of
which there are LEN. We write out inline functions and variables
that have been deferred until this point, but which are required.
- Returns nonzero if anything was put out. */
+ Returns non-zero if anything was put out. */
int
wrapup_global_declarations (vec, len)
@@ -1904,13 +1909,12 @@ wrapup_global_declarations (vec, len)
{
decl = vec[i];
- /* We're not deferring this any longer. Assignment is
- conditional to avoid needlessly dirtying PCH pages. */
- if (DECL_DEFER_OUTPUT (decl) != 0)
- DECL_DEFER_OUTPUT (decl) = 0;
+ /* We're not deferring this any longer. */
+ DECL_DEFER_OUTPUT (decl) = 0;
- if (TREE_CODE (decl) == VAR_DECL && DECL_SIZE (decl) == 0)
- (*lang_hooks.finish_incomplete_decl) (decl);
+ if (TREE_CODE (decl) == VAR_DECL && DECL_SIZE (decl) == 0
+ && incomplete_decl_finalize_hook != 0)
+ (*incomplete_decl_finalize_hook) (decl);
}
/* Now emit any global variables or functions that we have been
@@ -2037,33 +2041,27 @@ check_global_declarations (vec, len)
assemble_external (decl);
}
- /* Warn about static fns or vars defined but not used. */
- if (((warn_unused_function && TREE_CODE (decl) == FUNCTION_DECL)
- /* We don't warn about "static const" variables because the
- "rcs_id" idiom uses that construction. */
+ /* Warn about static fns or vars defined but not used,
+ but not about inline functions or static consts
+ since defining those in header files is normal practice. */
+ if (((warn_unused_function
+ && TREE_CODE (decl) == FUNCTION_DECL && ! DECL_INLINE (decl))
|| (warn_unused_variable
&& TREE_CODE (decl) == VAR_DECL && ! TREE_READONLY (decl)))
&& ! DECL_IN_SYSTEM_HEADER (decl)
- && ! TREE_USED (decl)
- /* The TREE_USED bit for file-scope decls is kept in the identifier,
- to handle multiple external decls in different scopes. */
- && ! TREE_USED (DECL_NAME (decl))
&& ! DECL_EXTERNAL (decl)
&& ! TREE_PUBLIC (decl)
- /* Global register variables must be declared to reserve them. */
- && ! (TREE_CODE (decl) == VAR_DECL && DECL_REGISTER (decl))
- /* Otherwise, ask the language. */
- && (*lang_hooks.decls.warn_unused_global) (decl))
+ && ! TREE_USED (decl)
+ && (TREE_CODE (decl) == FUNCTION_DECL || ! DECL_REGISTER (decl))
+ /* The TREE_USED bit for file-scope decls
+ is kept in the identifier, to handle multiple
+ external decls in different scopes. */
+ && ! TREE_USED (DECL_NAME (decl)))
warning_with_decl (decl, "`%s' defined but not used");
- /* Avoid confusing the debug information machinery when there are
- errors. */
- if (errorcount == 0 && sorrycount == 0)
- {
- timevar_push (TV_SYMOUT);
- (*debug_hooks->global_decl) (decl);
- timevar_pop (TV_SYMOUT);
- }
+ timevar_push (TV_SYMOUT);
+ (*debug_hooks->global_decl) (decl);
+ timevar_pop (TV_SYMOUT);
}
}
@@ -2087,6 +2085,7 @@ push_srcloc (file, line)
fs = (struct file_stack *) xmalloc (sizeof (struct file_stack));
fs->name = input_filename = file;
fs->line = lineno = line;
+ fs->indent_level = 0;
fs->next = input_file_stack;
input_file_stack = fs;
input_file_stack_tick++;
@@ -2118,16 +2117,18 @@ pop_srcloc ()
static void
compile_file ()
{
+ tree globals;
+
/* Initialize yet another pass. */
init_final (main_input_filename);
- init_branch_prob (aux_base_name);
+ init_branch_prob (dump_base_name);
timevar_push (TV_PARSE);
- /* Call the parser, which parses the entire file (calling
- rest_of_compilation for each function). */
- (*lang_hooks.parse_file) (set_yydebug);
+ /* Call the parser, which parses the entire file
+ (calling rest_of_compilation for each function). */
+ yyparse ();
/* In case there were missing block closers,
get us back to the global binding level. */
@@ -2135,12 +2136,31 @@ compile_file ()
/* Compilation is now finished except for writing
what's left of the symbol table output. */
+
timevar_pop (TV_PARSE);
if (flag_syntax_only)
return;
- (*lang_hooks.decls.final_write_globals)();
+ globals = getdecls ();
+
+ /* Really define vars that have had only a tentative definition.
+ Really output inline functions that must actually be callable
+ and have not been output so far. */
+
+ {
+ int len = list_length (globals);
+ tree *vec = (tree *) xmalloc (sizeof (tree) * len);
+ int i;
+ tree decl;
+
+ /* Process the decls in reverse order--earliest first.
+ Put them into VEC from back to front, then take out from front. */
+
+ for (i = 0, decl = globals; i < len; i++, decl = TREE_CHAIN (decl))
+ vec[len - i - 1] = decl;
+
+ wrapup_global_declarations (vec, len);
/* This must occur after the loop to output deferred functions. Else
the profiler initializer would not be emitted if all the functions
@@ -2151,6 +2171,12 @@ compile_file ()
loop above. */
output_func_start_profiler ();
+ check_global_declarations (vec, len);
+
+ /* Clean up. */
+ free (vec);
+ }
+
/* Write out any pending weak symbol declarations. */
weak_finish ();
@@ -2170,7 +2196,7 @@ compile_file ()
dw2_output_indirect_constants ();
- end_final (aux_base_name);
+ end_final (dump_base_name);
if (profile_arc_flag || flag_test_coverage || flag_branch_probabilities)
{
@@ -2242,7 +2268,7 @@ rest_of_decl_compilation (decl, asmspec, top_level, at_end)
{
alias = TREE_VALUE (TREE_VALUE (alias));
alias = get_identifier (TREE_STRING_POINTER (alias));
- assemble_alias (decl, alias);
+ assemble_alias (decl, alias);
}
}
@@ -2252,12 +2278,11 @@ rest_of_decl_compilation (decl, asmspec, top_level, at_end)
|| TREE_CODE (decl) == FUNCTION_DECL)
{
timevar_push (TV_VARCONST);
-
if (asmspec)
make_decl_rtl (decl, asmspec);
-
- /* Don't output anything when a tentative file-scope definition
- is seen. But at end of compilation, do output code for them. */
+ /* Don't output anything
+ when a tentative file-scope definition is seen.
+ But at end of compilation, do output code for them. */
if (at_end || !DECL_DEFER_OUTPUT (decl))
assemble_variable (decl, top_level, at_end, 0);
if (decl == last_assemble_variable_decl)
@@ -2265,7 +2290,6 @@ rest_of_decl_compilation (decl, asmspec, top_level, at_end)
ASM_FINISH_DECLARE_OBJECT (asm_out_file, decl,
top_level, at_end);
}
-
timevar_pop (TV_VARCONST);
}
else if (DECL_REGISTER (decl) && asmspec != 0)
@@ -2301,17 +2325,6 @@ rest_of_decl_compilation (decl, asmspec, top_level, at_end)
timevar_pop (TV_SYMOUT);
}
#endif
-#ifdef DWARF2_DEBUGGING_INFO
- else if ((write_symbols == DWARF2_DEBUG
- || write_symbols == VMS_AND_DWARF2_DEBUG)
- && top_level
- && TREE_CODE (decl) == TYPE_DECL)
- {
- timevar_push (TV_SYMOUT);
- dwarf2out_decl (decl);
- timevar_pop (TV_SYMOUT);
- }
-#endif
}
/* Called after finishing a record, union or enumeral type. */
@@ -2326,11 +2339,6 @@ rest_of_type_compilation (type, toplev)
int toplev ATTRIBUTE_UNUSED;
#endif
{
- /* Avoid confusing the debug information machinery when there are
- errors. */
- if (errorcount != 0 || sorrycount != 0)
- return;
-
timevar_push (TV_SYMOUT);
#if defined (DBX_DEBUGGING_INFO) || defined (XCOFF_DEBUGGING_INFO)
if (write_symbols == DBX_DEBUG || write_symbols == XCOFF_DEBUG)
@@ -2349,7 +2357,7 @@ rest_of_type_compilation (type, toplev)
timevar_pop (TV_SYMOUT);
}
-/* This is called from finish_function (within langhooks.parse_file)
+/* This is called from finish_function (within yyparse)
after each top-level definition is parsed.
It is supposed to compile that function or variable
and output the assembler code for it.
@@ -2364,6 +2372,7 @@ rest_of_compilation (decl)
int failure = 0;
int rebuild_label_notes_after_reload;
int register_life_up_to_date;
+ int cleanup_crossjump;
timevar_push (TV_REST_OF_COMPILATION);
@@ -2434,17 +2443,12 @@ rest_of_compilation (decl)
goto exit_rest_of_compilation;
}
}
- else
- {
- /* ??? Note that we used to just make it look like if
- the "inline" keyword was specified when we decide
- to inline it (because of -finline-functions).
- garloff at suse dot de, 2002-04-24: Add another flag to
- actually record this piece of information. */
- if (!DECL_INLINE (decl))
- DID_INLINE_FUNC (decl) = 1;
- inlinable = DECL_INLINE (decl) = 1;
- }
+ else
+ /* ??? Note that this has the effect of making it look
+ like "inline" was specified for a function if we choose
+ to inline it. This isn't quite right, but it's
+ probably not worth the trouble to fix. */
+ inlinable = DECL_INLINE (decl) = 1;
}
insns = get_insns ();
@@ -2464,11 +2468,10 @@ rest_of_compilation (decl)
convert_from_eh_region_ranges ();
/* If function is inline, and we don't yet know whether to
- compile it by itself, defer decision till end of compilation.
- wrapup_global_declarations will (indirectly) call
- rest_of_compilation again for those functions that need to
- be output. Also defer those functions that we are supposed
- to defer. */
+ compile it by itself, defer decision till end of compilation.
+ finish_compilation will call rest_of_compilation again
+ for those functions that need to be output. Also defer those
+ functions that we are supposed to defer. */
if (inlinable
|| (DECL_INLINE (decl)
@@ -2507,7 +2510,7 @@ rest_of_compilation (decl)
free_bb_for_insn ();
}
- set_nothrow_function_flags ();
+ current_function_nothrow = nothrow_function_p ();
if (current_function_nothrow)
/* Now we know that this can't throw; set the flag for the benefit
of other functions later in this translation unit. */
@@ -2562,7 +2565,7 @@ rest_of_compilation (decl)
distinguish between the return value of this function and the
return value of called functions. Also, we can remove all SETs
of subregs of hard registers; they are only here because of
- integrate. Also, we can now initialize pseudos intended to
+ integrate. Also, we can now initialize pseudos intended to
carry magic hard reg data throughout the function. */
rtx_equal_function_value_matters = 0;
purge_hard_subreg_sets (get_insns ());
@@ -2574,56 +2577,21 @@ rest_of_compilation (decl)
|| errorcount || sorrycount)
goto exit_rest_of_compilation;
- timevar_push (TV_JUMP);
- open_dump_file (DFI_sibling, decl);
- insns = get_insns ();
- rebuild_jump_labels (insns);
- find_exception_handler_labels ();
- find_basic_blocks (insns, max_reg_num (), rtl_dump_file);
-
- delete_unreachable_blocks ();
-
- /* We have to issue these warnings now already, because CFG cleanups
- further down may destroy the required information. */
- check_function_return_warnings ();
-
- /* Turn NOTE_INSN_PREDICTIONs into branch predictions. */
- if (flag_guess_branch_prob)
- {
- timevar_push (TV_BRANCH_PROB);
- note_prediction_to_br_prob ();
- timevar_pop (TV_BRANCH_PROB);
- }
-
/* We may have potential sibling or tail recursion sites. Select one
(of possibly multiple) methods of performing the call. */
if (flag_optimize_sibling_calls)
{
- rtx insn;
- optimize_sibling_and_tail_recursive_calls ();
-
- /* Recompute the CFG as sibling optimization clobbers it randomly. */
- free_bb_for_insn ();
- find_exception_handler_labels ();
- rebuild_jump_labels (insns);
- find_basic_blocks (insns, max_reg_num (), rtl_dump_file);
+ timevar_push (TV_JUMP);
+ open_dump_file (DFI_sibling, decl);
- /* There is pass ordering problem - we must lower NOTE_INSN_PREDICTION
- notes before simplifying cfg and we must do lowering after sibcall
- that unhides parts of RTL chain and cleans up the CFG.
+ optimize_sibling_and_tail_recursive_calls ();
- Until sibcall is replaced by tree-level optimizer, lets just
- sweep away the NOTE_INSN_PREDICTION notes that leaked out. */
- for (insn = get_insns (); insn; insn = NEXT_INSN (insn))
- if (GET_CODE (insn) == NOTE
- && NOTE_LINE_NUMBER (insn) == NOTE_INSN_PREDICTION)
- delete_insn (insn);
+ close_dump_file (DFI_sibling, print_rtl, get_insns ());
+ timevar_pop (TV_JUMP);
}
- close_dump_file (DFI_sibling, print_rtl, get_insns ());
- timevar_pop (TV_JUMP);
- scope_to_insns_initialize ();
/* Complete generation of exception handling code. */
+ find_exception_handler_labels ();
if (doing_eh (0))
{
timevar_push (TV_JUMP);
@@ -2654,10 +2622,7 @@ rest_of_compilation (decl)
unshare_all_rtl (current_function_decl, insns);
#ifdef SETJMP_VIA_SAVE_AREA
- /* This must be performed before virtual register instantiation.
- Please be aware the everything in the compiler that can look
- at the RTL up to this point must understand that REG_SAVE_AREA
- is just like a use of the REG contained inside. */
+ /* This must be performed before virtual register instantiation. */
if (current_function_calls_alloca)
optimize_save_area_alloca (insns);
#endif
@@ -2674,33 +2639,24 @@ rest_of_compilation (decl)
timevar_push (TV_JUMP);
/* Turn NOTE_INSN_EXPECTED_VALUE into REG_BR_PROB. Do this
before jump optimization switches branch directions. */
- if (flag_guess_branch_prob)
- expected_value_to_br_prob ();
+ expected_value_to_br_prob ();
reg_scan (insns, max_reg_num (), 0);
rebuild_jump_labels (insns);
find_basic_blocks (insns, max_reg_num (), rtl_dump_file);
- delete_trivially_dead_insns (insns, max_reg_num ());
- if (rtl_dump_file)
- dump_flow_info (rtl_dump_file);
- cleanup_cfg ((optimize ? CLEANUP_EXPENSIVE : 0) | CLEANUP_PRE_LOOP
- | (flag_thread_jumps ? CLEANUP_THREADING : 0));
+ cleanup_cfg ((optimize ? CLEANUP_EXPENSIVE : 0) | CLEANUP_PRE_LOOP);
/* CFG is no longer maintained up-to-date. */
- if (optimize)
- {
- free_bb_for_insn ();
- copy_loop_headers (insns);
- find_basic_blocks (insns, max_reg_num (), rtl_dump_file);
- }
+ free_bb_for_insn ();
+ copy_loop_headers (insns);
purge_line_number_notes (insns);
timevar_pop (TV_JUMP);
- close_dump_file (DFI_jump, print_rtl, insns);
/* Now is when we stop if -fsyntax-only and -Wreturn-type. */
if (rtl_dump_and_exit || flag_syntax_only || DECL_DEFER_OUTPUT (decl))
{
+ close_dump_file (DFI_jump, print_rtl, insns);
goto exit_rest_of_compilation;
}
@@ -2714,6 +2670,7 @@ rest_of_compilation (decl)
timevar_push (TV_TO_SSA);
open_dump_file (DFI_ssa, decl);
+ find_basic_blocks (insns, max_reg_num (), rtl_dump_file);
cleanup_cfg (CLEANUP_EXPENSIVE | CLEANUP_PRE_LOOP);
convert_to_ssa ();
@@ -2749,7 +2706,7 @@ rest_of_compilation (decl)
open_dump_file (DFI_ssa_dce, decl);
insns = get_insns ();
- ssa_eliminate_dead_code ();
+ ssa_eliminate_dead_code();
close_dump_file (DFI_ssa_dce, print_rtl_with_bb, insns);
timevar_pop (TV_SSA_DCE);
@@ -2768,23 +2725,31 @@ rest_of_compilation (decl)
timevar_pop (TV_FROM_SSA);
ggc_collect ();
+ /* CFG is no longer maintained up-to-date. */
+ free_bb_for_insn ();
}
timevar_push (TV_JUMP);
- if (optimize)
- cleanup_cfg (CLEANUP_EXPENSIVE | CLEANUP_PRE_LOOP);
- /* Try to identify useless null pointer tests and delete them. */
- if (flag_delete_null_pointer_checks)
+ if (optimize > 0)
{
- open_dump_file (DFI_null, decl);
- if (rtl_dump_file)
- dump_flow_info (rtl_dump_file);
+ find_basic_blocks (insns, max_reg_num (), rtl_dump_file);
+ cleanup_cfg (CLEANUP_EXPENSIVE | CLEANUP_PRE_LOOP
+ | (flag_thread_jumps ? CLEANUP_THREADING : 0));
- if (delete_null_pointer_checks (insns))
- cleanup_cfg (CLEANUP_EXPENSIVE | CLEANUP_PRE_LOOP);
+ /* ??? Run if-conversion before delete_null_pointer_checks,
+ since the later does not preserve the CFG. This should
+ be changed -- no since converting if's that are going to
+ be deleted. */
+ timevar_push (TV_IFCVT);
+ if_convert (0);
+ timevar_pop (TV_IFCVT);
- close_dump_file (DFI_null, print_rtl_with_bb, insns);
+ /* CFG is no longer maintained up-to-date. */
+ free_bb_for_insn ();
+ /* Try to identify useless null pointer tests and delete them. */
+ if (flag_delete_null_pointer_checks)
+ delete_null_pointer_checks (insns);
}
/* Jump optimization, and the removal of NULL pointer checks, may
@@ -2795,7 +2760,7 @@ rest_of_compilation (decl)
renumber_insns (rtl_dump_file);
timevar_pop (TV_JUMP);
- close_dump_file (DFI_jump, print_rtl_with_bb, insns);
+ close_dump_file (DFI_jump, print_rtl, insns);
ggc_collect ();
@@ -2807,32 +2772,44 @@ rest_of_compilation (decl)
if (optimize > 0)
{
open_dump_file (DFI_cse, decl);
- if (rtl_dump_file)
- dump_flow_info (rtl_dump_file);
timevar_push (TV_CSE);
reg_scan (insns, max_reg_num (), 1);
tem = cse_main (insns, max_reg_num (), 0, rtl_dump_file);
- if (tem)
- rebuild_jump_labels (insns);
- purge_all_dead_edges (0);
-
- delete_trivially_dead_insns (insns, max_reg_num ());
/* If we are not running more CSE passes, then we are no longer
expecting CSE to be run. But always rerun it in a cheap mode. */
cse_not_expected = !flag_rerun_cse_after_loop && !flag_gcse;
if (tem || optimize > 1)
- cleanup_cfg (CLEANUP_EXPENSIVE | CLEANUP_PRE_LOOP);
+ {
+ timevar_push (TV_JUMP);
+ rebuild_jump_labels (insns);
+ find_basic_blocks (insns, max_reg_num (), rtl_dump_file);
+ cleanup_cfg (CLEANUP_EXPENSIVE | CLEANUP_PRE_LOOP);
+ timevar_pop (TV_JUMP);
+ /* CFG is no longer maintained up-to-date. */
+ free_bb_for_insn ();
+ }
+
+ /* Run this after jump optmizations remove all the unreachable code
+ so that unreachable code will not keep values live. */
+ delete_trivially_dead_insns (insns, max_reg_num (), 0);
+
/* Try to identify useless null pointer tests and delete them. */
- if (flag_delete_null_pointer_checks)
+ if (flag_delete_null_pointer_checks || flag_thread_jumps)
{
timevar_push (TV_JUMP);
+ find_basic_blocks (insns, max_reg_num (), rtl_dump_file);
+
+ cleanup_cfg (CLEANUP_EXPENSIVE | CLEANUP_PRE_LOOP
+ | (flag_thread_jumps ? CLEANUP_THREADING : 0));
- if (delete_null_pointer_checks (insns))
- cleanup_cfg (CLEANUP_EXPENSIVE | CLEANUP_PRE_LOOP);
+ if (flag_delete_null_pointer_checks)
+ delete_null_pointer_checks (insns);
+ /* CFG is no longer maintained up-to-date. */
+ free_bb_for_insn ();
timevar_pop (TV_JUMP);
}
@@ -2841,14 +2818,12 @@ rest_of_compilation (decl)
renumber_insns (rtl_dump_file);
timevar_pop (TV_CSE);
- close_dump_file (DFI_cse, print_rtl_with_bb, insns);
+ close_dump_file (DFI_cse, print_rtl, insns);
}
open_dump_file (DFI_addressof, decl);
purge_addressof (insns);
- if (optimize)
- purge_all_dead_edges (0);
reg_scan (insns, max_reg_num (), 1);
close_dump_file (DFI_addressof, print_rtl, insns);
@@ -2865,14 +2840,17 @@ rest_of_compilation (decl)
timevar_push (TV_GCSE);
open_dump_file (DFI_gcse, decl);
+ find_basic_blocks (insns, max_reg_num (), rtl_dump_file);
+ cleanup_cfg (CLEANUP_EXPENSIVE | CLEANUP_PRE_LOOP);
tem = gcse_main (insns, rtl_dump_file);
rebuild_jump_labels (insns);
- delete_trivially_dead_insns (insns, max_reg_num ());
save_csb = flag_cse_skip_blocks;
save_cfj = flag_cse_follow_jumps;
flag_cse_skip_blocks = flag_cse_follow_jumps = 0;
+ /* CFG is no longer maintained up-to-date. */
+ free_bb_for_insn ();
/* If -fexpensive-optimizations, re-run CSE to clean up things done
by gcse. */
if (flag_expensive_optimizations)
@@ -2880,8 +2858,6 @@ rest_of_compilation (decl)
timevar_push (TV_CSE);
reg_scan (insns, max_reg_num (), 1);
tem2 = cse_main (insns, max_reg_num (), 0, rtl_dump_file);
- purge_all_dead_edges (0);
- delete_trivially_dead_insns (insns, max_reg_num ());
timevar_pop (TV_CSE);
cse_not_expected = !flag_rerun_cse_after_loop;
}
@@ -2893,7 +2869,11 @@ rest_of_compilation (decl)
tem = tem2 = 0;
timevar_push (TV_JUMP);
rebuild_jump_labels (insns);
+ delete_trivially_dead_insns (insns, max_reg_num (), 0);
+ find_basic_blocks (insns, max_reg_num (), rtl_dump_file);
cleanup_cfg (CLEANUP_EXPENSIVE | CLEANUP_PRE_LOOP);
+ /* CFG is no longer maintained up-to-date. */
+ free_bb_for_insn ();
timevar_pop (TV_JUMP);
if (flag_expensive_optimizations)
@@ -2901,78 +2881,123 @@ rest_of_compilation (decl)
timevar_push (TV_CSE);
reg_scan (insns, max_reg_num (), 1);
tem2 = cse_main (insns, max_reg_num (), 0, rtl_dump_file);
- purge_all_dead_edges (0);
- delete_trivially_dead_insns (insns, max_reg_num ());
timevar_pop (TV_CSE);
}
}
- close_dump_file (DFI_gcse, print_rtl_with_bb, insns);
+ close_dump_file (DFI_gcse, print_rtl, insns);
timevar_pop (TV_GCSE);
ggc_collect ();
flag_cse_skip_blocks = save_csb;
flag_cse_follow_jumps = save_cfj;
-#ifdef ENABLE_CHECKING
- verify_flow_info ();
-#endif
}
/* Move constant computations out of loops. */
- if (optimize > 0 && flag_loop_optimize)
+ if (optimize > 0)
{
- int do_unroll, do_prefetch;
-
timevar_push (TV_LOOP);
- delete_dead_jumptables ();
- cleanup_cfg (CLEANUP_EXPENSIVE | CLEANUP_PRE_LOOP);
open_dump_file (DFI_loop, decl);
- /* CFG is no longer maintained up-to-date. */
free_bb_for_insn ();
- do_unroll = flag_unroll_loops ? LOOP_UNROLL : LOOP_AUTO_UNROLL;
- do_prefetch = flag_prefetch_loop_arrays ? LOOP_PREFETCH : 0;
if (flag_rerun_loop_opt)
{
cleanup_barriers ();
/* We only want to perform unrolling once. */
- loop_optimize (insns, rtl_dump_file, do_unroll);
- do_unroll = 0;
+ loop_optimize (insns, rtl_dump_file, LOOP_FIRST_PASS);
/* The first call to loop_optimize makes some instructions
trivially dead. We delete those instructions now in the
hope that doing so will make the heuristics in loop work
better and possibly speed up compilation. */
- delete_trivially_dead_insns (insns, max_reg_num ());
+ delete_trivially_dead_insns (insns, max_reg_num (), 0);
/* The regscan pass is currently necessary as the alias
analysis code depends on this information. */
reg_scan (insns, max_reg_num (), 1);
}
cleanup_barriers ();
- loop_optimize (insns, rtl_dump_file, do_unroll | LOOP_BCT | do_prefetch);
+ loop_optimize (insns, rtl_dump_file,
+ (flag_unroll_loops ? LOOP_UNROLL : 0) | LOOP_BCT
+ | (flag_prefetch_loop_arrays ? LOOP_PREFETCH : 0));
- /* Loop can create trivially dead instructions. */
- delete_trivially_dead_insns (insns, max_reg_num ());
close_dump_file (DFI_loop, print_rtl, insns);
timevar_pop (TV_LOOP);
- find_basic_blocks (insns, max_reg_num (), rtl_dump_file);
ggc_collect ();
}
+ if (optimize > 0)
+ {
+ timevar_push (TV_CSE2);
+ open_dump_file (DFI_cse2, decl);
+
+ if (flag_rerun_cse_after_loop)
+ {
+ /* Running another jump optimization pass before the second
+ cse pass sometimes simplifies the RTL enough to allow
+ the second CSE pass to do a better job. Jump_optimize can change
+ max_reg_num so we must rerun reg_scan afterwards.
+ ??? Rework to not call reg_scan so often. */
+ timevar_push (TV_JUMP);
+
+ /* The previous call to loop_optimize makes some instructions
+ trivially dead. We delete those instructions now in the
+ hope that doing so will make the heuristics in jump work
+ better and possibly speed up compilation. */
+ delete_trivially_dead_insns (insns, max_reg_num (), 0);
+
+ reg_scan (insns, max_reg_num (), 0);
+
+ timevar_push (TV_IFCVT);
+
+ find_basic_blocks (insns, max_reg_num (), rtl_dump_file);
+ cleanup_cfg (CLEANUP_EXPENSIVE);
+ if_convert (0);
+
+ timevar_pop(TV_IFCVT);
+
+ timevar_pop (TV_JUMP);
+
+ /* CFG is no longer maintained up-to-date. */
+ free_bb_for_insn ();
+ reg_scan (insns, max_reg_num (), 0);
+ tem = cse_main (insns, max_reg_num (), 1, rtl_dump_file);
+
+ if (tem)
+ {
+ timevar_push (TV_JUMP);
+ rebuild_jump_labels (insns);
+ find_basic_blocks (insns, max_reg_num (), rtl_dump_file);
+ cleanup_cfg (CLEANUP_EXPENSIVE);
+ /* CFG is no longer maintained up-to-date. */
+ free_bb_for_insn ();
+ timevar_pop (TV_JUMP);
+ }
+ }
+
+ close_dump_file (DFI_cse2, print_rtl, insns);
+ timevar_pop (TV_CSE2);
+
+ ggc_collect ();
+ }
+
+ cse_not_expected = 1;
+
+ regclass_init ();
+
/* Do control and data flow analysis; wrote some of the results to
the dump file. */
timevar_push (TV_FLOW);
open_dump_file (DFI_cfg, decl);
- if (rtl_dump_file)
- dump_flow_info (rtl_dump_file);
- if (optimize)
- cleanup_cfg (CLEANUP_EXPENSIVE
- | (flag_thread_jumps ? CLEANUP_THREADING : 0));
+
+ find_basic_blocks (insns, max_reg_num (), rtl_dump_file);
+ cleanup_cfg ((optimize ? CLEANUP_EXPENSIVE : 0)
+ | (flag_thread_jumps ? CLEANUP_THREADING : 0));
+ check_function_return_warnings ();
/* It may make more sense to mark constant functions after dead code is
eliminated by life_analyzis, but we need to do it early, as -fprofile-arcs
@@ -2981,20 +3006,25 @@ rest_of_compilation (decl)
life_analyzis rarely eliminates modification of external memory.
*/
- if (optimize)
- mark_constant_function ();
+ mark_constant_function ();
close_dump_file (DFI_cfg, print_rtl_with_bb, insns);
- /* Do branch profiling and static profile estimation passes. */
- if (optimize > 0 || cfun->arc_profile || flag_branch_probabilities)
+ if (profile_arc_flag || flag_test_coverage || flag_branch_probabilities)
{
- struct loops loops;
-
timevar_push (TV_BRANCH_PROB);
open_dump_file (DFI_bp, decl);
- if (cfun->arc_profile || flag_branch_probabilities)
- branch_prob ();
+
+ branch_prob ();
+
+ close_dump_file (DFI_bp, print_rtl_with_bb, insns);
+ timevar_pop (TV_BRANCH_PROB);
+ }
+
+ open_dump_file (DFI_life, decl);
+ if (optimize)
+ {
+ struct loops loops;
/* Discover and record the loop depth at the head of each basic
block. The loop infrastructure does the real job for us. */
@@ -3008,79 +3038,12 @@ rest_of_compilation (decl)
estimate_probability (&loops);
flow_loops_free (&loops);
- close_dump_file (DFI_bp, print_rtl_with_bb, insns);
- timevar_pop (TV_BRANCH_PROB);
- }
- if (optimize > 0)
- {
- open_dump_file (DFI_ce1, decl);
- if (flag_if_conversion)
- {
- timevar_push (TV_IFCVT);
- if (rtl_dump_file)
- dump_flow_info (rtl_dump_file);
- cleanup_cfg (CLEANUP_EXPENSIVE);
- reg_scan (insns, max_reg_num (), 0);
- if_convert (0);
- timevar_pop (TV_IFCVT);
- }
- timevar_push (TV_JUMP);
- cleanup_cfg (CLEANUP_EXPENSIVE);
- reg_scan (insns, max_reg_num (), 0);
- timevar_pop (TV_JUMP);
- close_dump_file (DFI_ce1, print_rtl_with_bb, get_insns ());
- }
- if (flag_tracer)
- {
- timevar_push (TV_TRACER);
- open_dump_file (DFI_tracer, decl);
- if (rtl_dump_file)
- dump_flow_info (rtl_dump_file);
- tracer ();
- cleanup_cfg (CLEANUP_EXPENSIVE);
- reg_scan (insns, max_reg_num (), 0);
- close_dump_file (DFI_tracer, print_rtl_with_bb, get_insns ());
- timevar_pop (TV_TRACER);
}
-
- if (flag_rerun_cse_after_loop)
- {
- timevar_push (TV_CSE2);
- open_dump_file (DFI_cse2, decl);
- if (rtl_dump_file)
- dump_flow_info (rtl_dump_file);
- /* CFG is no longer maintained up-to-date. */
- tem = cse_main (insns, max_reg_num (), 1, rtl_dump_file);
- purge_all_dead_edges (0);
- delete_trivially_dead_insns (insns, max_reg_num ());
-
- if (tem)
- {
- timevar_push (TV_JUMP);
- rebuild_jump_labels (insns);
- cleanup_cfg (CLEANUP_EXPENSIVE);
- timevar_pop (TV_JUMP);
- }
- reg_scan (insns, max_reg_num (), 0);
- close_dump_file (DFI_cse2, print_rtl_with_bb, insns);
- ggc_collect ();
- timevar_pop (TV_CSE2);
- }
-
- cse_not_expected = 1;
-
- open_dump_file (DFI_life, decl);
- regclass_init ();
-
-#ifdef ENABLE_CHECKING
- verify_flow_info ();
-#endif
life_analysis (insns, rtl_dump_file, PROP_FINAL);
- if (optimize)
- cleanup_cfg ((optimize ? CLEANUP_EXPENSIVE : 0) | CLEANUP_UPDATE_LIFE
- | (flag_thread_jumps ? CLEANUP_THREADING : 0));
timevar_pop (TV_FLOW);
+ no_new_pseudos = 1;
+
if (warn_uninitialized || extra_warnings)
{
uninitialized_vars_warning (DECL_INITIAL (decl));
@@ -3090,19 +3053,15 @@ rest_of_compilation (decl)
if (optimize)
{
- if (!flag_new_regalloc && initialize_uninitialized_subregs ())
+ if (initialize_uninitialized_subregs ())
{
- /* Insns were inserted, and possibly pseudos created, so
- things might look a bit different. */
+ /* Insns were inserted, so things might look a bit different. */
insns = get_insns ();
- allocate_reg_life_data ();
- update_life_info (NULL, UPDATE_LIFE_GLOBAL_RM_NOTES,
- PROP_LOG_LINKS | PROP_REG_INFO | PROP_DEATH_NOTES);
+ life_analysis (insns, rtl_dump_file,
+ (PROP_LOG_LINKS | PROP_REG_INFO | PROP_DEATH_NOTES));
}
}
- no_new_pseudos = 1;
-
close_dump_file (DFI_life, print_rtl_with_bb, insns);
ggc_collect ();
@@ -3119,6 +3078,10 @@ rest_of_compilation (decl)
rebuild_jump_labels_after_combine
= combine_instructions (insns, max_reg_num ());
+ /* Always purge dead edges, as we may eliminate an insn throwing
+ exception. */
+ rebuild_jump_labels_after_combine |= purge_all_dead_edges (true);
+
/* Combining insns may have turned an indirect jump into a
direct jump. Rebuid the JUMP_LABEL fields of jumping
instructions. */
@@ -3139,16 +3102,16 @@ rest_of_compilation (decl)
/* Rerun if-conversion, as combine may have simplified things enough to
now meet sequence length restrictions. */
- if (flag_if_conversion)
+ if (optimize > 0)
{
timevar_push (TV_IFCVT);
- open_dump_file (DFI_ce2, decl);
+ open_dump_file (DFI_ce, decl);
no_new_pseudos = 0;
if_convert (1);
no_new_pseudos = 1;
- close_dump_file (DFI_ce2, print_rtl_with_bb, insns);
+ close_dump_file (DFI_ce, print_rtl_with_bb, insns);
timevar_pop (TV_IFCVT);
}
@@ -3161,7 +3124,6 @@ rest_of_compilation (decl)
regmove_optimize (insns, max_reg_num (), rtl_dump_file);
- cleanup_cfg (CLEANUP_EXPENSIVE | CLEANUP_UPDATE_LIFE);
close_dump_file (DFI_regmove, print_rtl_with_bb, insns);
timevar_pop (TV_REGMOVE);
@@ -3180,7 +3142,13 @@ rest_of_compilation (decl)
timevar_push (TV_MODE_SWITCH);
no_new_pseudos = 0;
- optimize_mode_switching (NULL);
+ if (optimize_mode_switching (NULL))
+ {
+ /* We did work, and so had to regenerate global life information.
+ Take advantage of this and don't re-recompute register life
+ information below. */
+ register_life_up_to_date = 1;
+ }
no_new_pseudos = 1;
timevar_pop (TV_MODE_SWITCH);
@@ -3228,102 +3196,61 @@ rest_of_compilation (decl)
if (! register_life_up_to_date)
recompute_reg_usage (insns, ! optimize_size);
- if (flag_new_regalloc)
- {
- delete_trivially_dead_insns (insns, max_reg_num ());
- reg_alloc ();
+ /* Allocate the reg_renumber array. */
+ allocate_reg_info (max_regno, FALSE, TRUE);
- timevar_pop (TV_LOCAL_ALLOC);
- if (dump_file[DFI_lreg].enabled)
- {
- timevar_push (TV_DUMP);
+ /* And the reg_equiv_memory_loc array. */
+ reg_equiv_memory_loc = (rtx *) xcalloc (max_regno, sizeof (rtx));
- close_dump_file (DFI_lreg, NULL, NULL);
- timevar_pop (TV_DUMP);
- }
+ allocate_initial_values (reg_equiv_memory_loc);
- /* XXX clean up the whole mess to bring live info in shape again. */
- timevar_push (TV_GLOBAL_ALLOC);
- open_dump_file (DFI_greg, decl);
+ regclass (insns, max_reg_num (), rtl_dump_file);
+ rebuild_label_notes_after_reload = local_alloc ();
- build_insn_chain (insns);
- failure = reload (insns, 0);
-
- timevar_pop (TV_GLOBAL_ALLOC);
-
- if (dump_file[DFI_greg].enabled)
- {
- timevar_push (TV_DUMP);
-
- dump_global_regs (rtl_dump_file);
-
- close_dump_file (DFI_greg, print_rtl_with_bb, insns);
- timevar_pop (TV_DUMP);
- }
+ timevar_pop (TV_LOCAL_ALLOC);
- if (failure)
- goto exit_rest_of_compilation;
- reload_completed = 1;
- rebuild_label_notes_after_reload = 0;
- }
- else
+ if (dump_file[DFI_lreg].enabled)
{
- /* Allocate the reg_renumber array. */
- allocate_reg_info (max_regno, FALSE, TRUE);
-
- /* And the reg_equiv_memory_loc array. */
- reg_equiv_memory_loc = (rtx *) xcalloc (max_regno, sizeof (rtx));
-
- allocate_initial_values (reg_equiv_memory_loc);
-
- regclass (insns, max_reg_num (), rtl_dump_file);
- rebuild_label_notes_after_reload = local_alloc ();
-
- timevar_pop (TV_LOCAL_ALLOC);
-
- if (dump_file[DFI_lreg].enabled)
- {
- timevar_push (TV_DUMP);
-
- dump_flow_info (rtl_dump_file);
- dump_local_alloc (rtl_dump_file);
+ timevar_push (TV_DUMP);
- close_dump_file (DFI_lreg, print_rtl_with_bb, insns);
- timevar_pop (TV_DUMP);
- }
+ dump_flow_info (rtl_dump_file);
+ dump_local_alloc (rtl_dump_file);
- ggc_collect ();
+ close_dump_file (DFI_lreg, print_rtl_with_bb, insns);
+ timevar_pop (TV_DUMP);
+ }
- timevar_push (TV_GLOBAL_ALLOC);
- open_dump_file (DFI_greg, decl);
+ ggc_collect ();
- /* If optimizing, allocate remaining pseudo-regs. Do the reload
- pass fixing up any insns that are invalid. */
+ timevar_push (TV_GLOBAL_ALLOC);
+ open_dump_file (DFI_greg, decl);
- if (optimize)
- failure = global_alloc (rtl_dump_file);
- else
- {
- build_insn_chain (insns);
- failure = reload (insns, 0);
- }
+ /* If optimizing, allocate remaining pseudo-regs. Do the reload
+ pass fixing up any insns that are invalid. */
- timevar_pop (TV_GLOBAL_ALLOC);
+ if (optimize)
+ failure = global_alloc (rtl_dump_file);
+ else
+ {
+ build_insn_chain (insns);
+ failure = reload (insns, 0);
+ }
- if (dump_file[DFI_greg].enabled)
- {
- timevar_push (TV_DUMP);
+ timevar_pop (TV_GLOBAL_ALLOC);
- dump_global_regs (rtl_dump_file);
+ if (dump_file[DFI_greg].enabled)
+ {
+ timevar_push (TV_DUMP);
- close_dump_file (DFI_greg, print_rtl_with_bb, insns);
- timevar_pop (TV_DUMP);
- }
+ dump_global_regs (rtl_dump_file);
- if (failure)
- goto exit_rest_of_compilation;
+ close_dump_file (DFI_greg, print_rtl_with_bb, insns);
+ timevar_pop (TV_DUMP);
}
+ if (failure)
+ goto exit_rest_of_compilation;
+
ggc_collect ();
open_dump_file (DFI_postreload, decl);
@@ -3344,7 +3271,6 @@ rest_of_compilation (decl)
timevar_push (TV_JUMP);
rebuild_jump_labels (insns);
- purge_all_dead_edges (0);
timevar_pop (TV_JUMP);
}
@@ -3360,13 +3286,10 @@ rest_of_compilation (decl)
#endif
/* If optimizing, then go ahead and split insns now. */
-#ifndef STACK_REGS
if (optimize > 0)
-#endif
split_all_insns (0);
- if (optimize)
- cleanup_cfg (CLEANUP_EXPENSIVE);
+ cleanup_cfg (optimize ? CLEANUP_EXPENSIVE : 0);
/* On some machines, the prologue and epilogue code, or parts thereof,
can be represented as RTL. Doing so lets us schedule insns between
@@ -3374,11 +3297,22 @@ rest_of_compilation (decl)
scheduling to operate in the epilogue. */
thread_prologue_and_epilogue_insns (insns);
+ /* Cross-jumping is O(N^3) on the number of edges, thus trying to
+ perform cross-jumping on flow graphs which have a high connectivity
+ will take a long time. This is similar to the test to disable GCSE. */
+ cleanup_crossjump = CLEANUP_CROSSJUMP;
+ if (n_basic_blocks > 1000 && n_edges / n_basic_blocks >= 20)
+ {
+ if (optimize && warn_disabled_optimization)
+ warning ("crossjump disabled: %d > 1000 basic blocks and %d >= 20 edges/basic block",
+ n_basic_blocks, n_edges / n_basic_blocks);
+ cleanup_crossjump = 0;
+ }
+
if (optimize)
{
+ cleanup_cfg (CLEANUP_EXPENSIVE | cleanup_crossjump);
life_analysis (insns, rtl_dump_file, PROP_FINAL);
- cleanup_cfg (CLEANUP_EXPENSIVE | CLEANUP_UPDATE_LIFE
- | (flag_crossjumping ? CLEANUP_CROSSJUMP : 0));
/* This is kind of a heuristic. We need to run combine_stack_adjustments
even for machines with possibly nonzero RETURN_POPS_ARGS
@@ -3416,24 +3350,28 @@ rest_of_compilation (decl)
open_dump_file (DFI_rnreg, decl);
if (flag_rename_registers)
- regrename_optimize ();
+ regrename_optimize ();
if (flag_cprop_registers)
- copyprop_hardreg_forward ();
+ copyprop_hardreg_forward ();
close_dump_file (DFI_rnreg, print_rtl_with_bb, insns);
timevar_pop (TV_RENAME_REGISTERS);
}
- if (flag_if_conversion2)
+ if (optimize > 0)
{
timevar_push (TV_IFCVT2);
- open_dump_file (DFI_ce3, decl);
+ open_dump_file (DFI_ce2, decl);
if_convert (1);
- close_dump_file (DFI_ce3, print_rtl_with_bb, insns);
+ close_dump_file (DFI_ce2, print_rtl_with_bb, insns);
timevar_pop (TV_IFCVT2);
}
+#ifdef STACK_REGS
+ if (optimize)
+ split_all_insns (1);
+#endif
#ifdef INSN_SCHEDULING
if (optimize > 0 && flag_schedule_insns_after_reload)
@@ -3476,12 +3414,12 @@ rest_of_compilation (decl)
timevar_push (TV_REORDER_BLOCKS);
open_dump_file (DFI_bbro, decl);
- /* Last attempt to optimize CFG, as scheduling, peepholing and insn
- splitting possibly introduced more crossjumping oppurtuntities.
- Except that we can't actually run crossjumping without running
- another DCE pass, which we can't do after reg-stack. */
- cleanup_cfg (CLEANUP_EXPENSIVE | CLEANUP_POST_REGSTACK
- | (flag_crossjumping ? CLEANUP_CROSSJUMP : 0));
+ /* Last attempt to optimize CFG, as life analysis possibly removed
+ some instructions. Note that we can't rerun crossjump at this
+ point, because it can turn a switch into a direct branch, which
+ can leave the tablejump address calculation in the code, which
+ can lead to referencing an undefined label. */
+ cleanup_cfg (CLEANUP_EXPENSIVE | CLEANUP_POST_REGSTACK);
if (flag_reorder_blocks)
{
reorder_basic_blocks ();
@@ -3543,7 +3481,7 @@ rest_of_compilation (decl)
shorten_branches (get_insns ());
timevar_pop (TV_SHORTEN_BRANCH);
- set_nothrow_function_flags ();
+ current_function_nothrow = nothrow_function_p ();
if (current_function_nothrow)
/* Now we know that this can't throw; set the flag for the benefit
of other functions later in this translation unit. */
@@ -3604,10 +3542,9 @@ rest_of_compilation (decl)
know for certain that we will be generating an out-of-line copy,
the first invocation of this routine (rest_of_compilation) will
skip over this code by doing a `goto exit_rest_of_compilation;'.
- Later on, wrapup_global_declarations will (indirectly) call
- rest_of_compilation again for those inline functions that need
- to have out-of-line copies generated. During that call, we
- *will* be routed past here. */
+ Later on, finish_compilation will call rest_of_compilation again
+ for those inline functions that need to have out-of-line copies
+ generated. During that call, we *will* be routed past here. */
timevar_push (TV_SYMOUT);
(*debug_hooks->function_decl) (decl);
@@ -3633,6 +3570,10 @@ rest_of_compilation (decl)
longer valid. */
init_insn_lengths ();
+ /* Clear out the real_constant_chain before some of the rtx's
+ it runs through become garbage. */
+ clear_const_double_mem ();
+
/* Show no temporary slots allocated. */
init_temp_slots ();
@@ -3682,17 +3623,12 @@ display_help ()
printf (_(" -finline-limit=<number> Limits the size of inlined functions to <number>\n"));
printf (_(" -fmessage-length=<number> Limits diagnostics messages lengths to <number> characters per line. 0 suppresses line-wrapping\n"));
printf (_(" -fdiagnostics-show-location=[once | every-line] Indicates how often source location information should be emitted, as prefix, at the beginning of diagnostics when line-wrapping\n"));
- printf (_(" -ftls-model=[global-dynamic | local-dynamic | initial-exec | local-exec] Indicates the default thread-local storage code generation model\n"));
- printf (_(" -fstack-limit-register=<register> Trap if the stack goes past <register>\n"));
- printf (_(" -fstack-limit-symbol=<name> Trap if the stack goes past symbol <name>\n"));
- printf (_(" -frandom-seed=<string> Make compile reproducible using <string>\n"));
-
for (i = ARRAY_SIZE (f_options); i--;)
{
const char *description = f_options[i].description;
- if (description != NULL && *description != 0)
+ if (description != NULL && * description != 0)
printf (" -f%-21s %s\n",
f_options[i].string, _(description));
}
@@ -3702,9 +3638,9 @@ display_help ()
for (i = LAST_PARAM; i--;)
{
const char *description = compiler_params[i].help;
- const int length = 21 - strlen (compiler_params[i].option);
+ const int length = 21-strlen(compiler_params[i].option);
- if (description != NULL && *description != 0)
+ if (description != NULL && * description != 0)
printf (" --param %s=<value>%.*s%s\n",
compiler_params[i].option,
length > 0 ? length : 1, " ",
@@ -3719,7 +3655,7 @@ display_help ()
{
const char *description = W_options[i].description;
- if (description != NULL && *description != 0)
+ if (description != NULL && * description != 0)
printf (" -W%-21s %s\n",
W_options[i].string, _(description));
}
@@ -3839,7 +3775,7 @@ display_target_options ()
if (extra_warnings)
printf (_(" -m%-23.23s [undocumented]\n"), option);
}
- else if (*description != 0)
+ else if (* description != 0)
doc += printf (" -m%-23.23s %s\n", option, _(description));
}
@@ -3858,7 +3794,7 @@ display_target_options ()
if (extra_warnings)
printf (_(" -m%-23.23s [undocumented]\n"), option);
}
- else if (*description != 0)
+ else if (* description != 0)
doc += printf (" -m%-23.23s %s\n", option, _(description));
}
#endif
@@ -3894,9 +3830,9 @@ decode_d_option (arg)
flag_print_asm_name = 1;
break;
case 'P':
- flag_dump_rtl_in_asm = 1;
- flag_print_asm_name = 1;
- break;
+ flag_dump_rtl_in_asm = 1;
+ flag_print_asm_name = 1;
+ break;
case 'v':
graph_dump_format = vcg;
break;
@@ -3904,7 +3840,7 @@ decode_d_option (arg)
rtl_dump_and_exit = 1;
break;
case 'y':
- set_yydebug = 1;
+ (*lang_hooks.set_yydebug) (1);
break;
case 'D': /* These are handled by the preprocessor. */
case 'I':
@@ -3954,9 +3890,9 @@ decode_f_option (arg)
}
if (!strcmp (arg, "fast-math"))
- set_fast_math_flags (1);
+ set_fast_math_flags ();
else if (!strcmp (arg, "no-fast-math"))
- set_fast_math_flags (0);
+ set_no_fast_math_flags ();
else if ((option_value = skip_leading_substring (arg, "inline-limit-"))
|| (option_value = skip_leading_substring (arg, "inline-limit=")))
{
@@ -3964,29 +3900,6 @@ decode_f_option (arg)
read_integral_parameter (option_value, arg - 2,
MAX_INLINE_INSNS);
set_param_value ("max-inline-insns", val);
- set_param_value ("max-inline-insns-single", val/2);
- set_param_value ("max-inline-insns-auto", val/2);
- set_param_value ("max-inline-insns-rtl", val);
- if (val/4 < MIN_INLINE_INSNS)
- {
- if (val/4 > 10)
- set_param_value ("min-inline-insns", val/4);
- else
- set_param_value ("min-inline-insns", 10);
- }
- }
- else if ((option_value = skip_leading_substring (arg, "tls-model=")))
- {
- if (strcmp (option_value, "global-dynamic") == 0)
- flag_tls_default = TLS_MODEL_GLOBAL_DYNAMIC;
- else if (strcmp (option_value, "local-dynamic") == 0)
- flag_tls_default = TLS_MODEL_LOCAL_DYNAMIC;
- else if (strcmp (option_value, "initial-exec") == 0)
- flag_tls_default = TLS_MODEL_INITIAL_EXEC;
- else if (strcmp (option_value, "local-exec") == 0)
- flag_tls_default = TLS_MODEL_LOCAL_EXEC;
- else
- warning ("`%s': unknown tls-model option", arg - 2);
}
#ifdef INSN_SCHEDULING
else if ((option_value = skip_leading_substring (arg, "sched-verbose=")))
@@ -4025,7 +3938,7 @@ decode_f_option (arg)
stack_limit_rtx = gen_rtx_SYMBOL_REF (Pmode, nm);
}
else if ((option_value
- = skip_leading_substring (arg, "message-length=")))
+ = skip_leading_substring (arg, "message-length=")))
output_set_maximum_length
(&global_dc->buffer, read_integral_parameter
(option_value, arg - 2, diagnostic_line_cutoff (global_dc)));
@@ -4033,21 +3946,17 @@ decode_f_option (arg)
= skip_leading_substring (arg, "diagnostics-show-location=")))
{
if (!strcmp (option_value, "once"))
- diagnostic_prefixing_rule (global_dc) = DIAGNOSTICS_SHOW_PREFIX_ONCE;
+ diagnostic_prefixing_rule (global_dc) = DIAGNOSTICS_SHOW_PREFIX_ONCE;
else if (!strcmp (option_value, "every-line"))
- diagnostic_prefixing_rule (global_dc)
- = DIAGNOSTICS_SHOW_PREFIX_EVERY_LINE;
+ diagnostic_prefixing_rule (global_dc)
+ = DIAGNOSTICS_SHOW_PREFIX_EVERY_LINE;
else
error ("unrecognized option `%s'", arg - 2);
}
else if (!strcmp (arg, "no-stack-limit"))
stack_limit_rtx = NULL_RTX;
- else if ((option_value = skip_leading_substring (arg, "random-seed=")))
- flag_random_seed = option_value;
- else if (!strcmp (arg, "no-random-seed"))
- flag_random_seed = NULL;
else if (!strcmp (arg, "preprocessed"))
- /* Recognize this switch but do nothing. This prevents warnings
+ /* Recognise this switch but do nothing. This prevents warnings
about an unrecognized switch if cpplib has not been linked in. */
;
else
@@ -4115,7 +4024,7 @@ static int
decode_g_option (arg)
const char *arg;
{
- static unsigned level = 0;
+ static unsigned level=0;
/* A lot of code assumes write_symbols == NO_DEBUG if the
debugging level is 0 (thus -gstabs1 -gstabs0 would lose track
of what debugging type has been selected). This records the
@@ -4259,21 +4168,18 @@ independent_decode_option (argc, argv)
{
display_help ();
exit_after_options = 1;
- return 1;
}
if (!strcmp (arg, "-target-help"))
{
display_target_options ();
exit_after_options = 1;
- return 1;
}
if (!strcmp (arg, "-version"))
{
print_version (stderr, "");
exit_after_options = 1;
- return 1;
}
/* Handle '--param <name>=<value>'. */
@@ -4338,9 +4244,7 @@ independent_decode_option (argc, argv)
if (argc == 1)
return 0;
- if (argv[1][0])
- dump_base_name = argv[1];
-
+ dump_base_name = argv[1];
return 2;
}
else
@@ -4413,30 +4317,6 @@ independent_decode_option (argc, argv)
else
return 0;
}
- else if (!strcmp (arg, "auxbase"))
- {
- if (argc == 1)
- return 0;
-
- if (argv[1][0])
- aux_base_name = argv[1];
-
- return 2;
- }
- else if (!strcmp (arg, "auxbase-strip"))
- {
- if (argc == 1)
- return 0;
-
- if (argv[1][0])
- {
- strip_off_ending (argv[1], strlen (argv[1]));
- if (argv[1][0])
- aux_base_name = argv[1];
- }
-
- return 2;
- }
else
return 0;
break;
@@ -4503,13 +4383,6 @@ set_target_switch (name)
target_flags &= ~-target_switches[j].value;
else
target_flags |= target_switches[j].value;
- if (name[0] != 0)
- {
- if (target_switches[j].value < 0)
- target_flags_explicit |= -target_switches[j].value;
- else
- target_flags_explicit |= target_switches[j].value;
- }
valid_target_option = 1;
}
@@ -4551,9 +4424,6 @@ print_version (file, indent)
, indent, *indent != 0 ? " " : "",
lang_hooks.name, version_string, TARGET_NAME,
indent, __VERSION__);
- fnotice (file, "%s%sGGC heuristics: --param ggc-min-expand=%d --param ggc-min-heapsize=%d\n",
- indent, *indent != 0 ? " " : "",
- PARAM_VALUE (GGC_MIN_EXPAND), PARAM_VALUE (GGC_MIN_HEAPSIZE));
}
/* Print an option value and return the adjusted position in the line.
@@ -4600,12 +4470,6 @@ print_switch_values (file, pos, max, indent, sep, term)
size_t j;
char **p;
- /* Fill in the -frandom-seed option, if the user didn't pass it, so
- that it can be printed below. This helps reproducibility. Of
- course, the string may never be used, but we can't tell that at
- this point in the compile. */
- default_flag_random_seed ();
-
/* Print the options as passed. */
pos = print_single_switch (file, pos, max, indent, *indent ? " " : "", term,
@@ -4684,25 +4548,25 @@ init_asm_output (name)
else
{
if (asm_file_name == 0)
- {
- int len = strlen (dump_base_name);
- char *dumpname = (char *) xmalloc (len + 6);
- memcpy (dumpname, dump_base_name, len + 1);
- strip_off_ending (dumpname, len);
- strcat (dumpname, ".s");
- asm_file_name = dumpname;
- }
+ {
+ int len = strlen (dump_base_name);
+ char *dumpname = (char *) xmalloc (len + 6);
+ memcpy (dumpname, dump_base_name, len + 1);
+ strip_off_ending (dumpname, len);
+ strcat (dumpname, ".s");
+ asm_file_name = dumpname;
+ }
if (!strcmp (asm_file_name, "-"))
- asm_out_file = stdout;
+ asm_out_file = stdout;
else
- asm_out_file = fopen (asm_file_name, "w");
+ asm_out_file = fopen (asm_file_name, "w");
if (asm_out_file == 0)
fatal_io_error ("can't open %s for writing", asm_file_name);
}
#ifdef IO_BUFFER_SIZE
setvbuf (asm_out_file, (char *) xmalloc (IO_BUFFER_SIZE),
- _IOFBF, IO_BUFFER_SIZE);
+ _IOFBF, IO_BUFFER_SIZE);
#endif
if (!flag_syntax_only)
@@ -4742,10 +4606,12 @@ general_init (argv0)
xmalloc_set_program_name (progname);
- hex_init ();
-
gcc_init_libintl ();
+ /* Install handler for SIGFPE, which may be received while we do
+ compile-time floating point arithmetic. */
+ signal (SIGFPE, float_signal);
+
/* Trap fatal signals, e.g. SIGSEGV, and convert them to ICE messages. */
#ifdef SIGSEGV
signal (SIGSEGV, crash_signal);
@@ -4762,27 +4628,16 @@ general_init (argv0)
#if defined SIGIOT && (!defined SIGABRT || SIGABRT != SIGIOT)
signal (SIGIOT, crash_signal);
#endif
-#ifdef SIGFPE
- signal (SIGFPE, crash_signal);
-#endif
/* Initialize the diagnostics reporting machinery, so option parsing
can give warnings and errors. */
diagnostic_initialize (global_dc);
-
- /* Initialize the garbage-collector, string pools and tree type hash
- table. */
- init_ggc ();
- init_stringpool ();
- init_ttree ();
}
/* Parse command line options and set default flag values, called
after language-independent option-independent initialization. Do
minimal options processing. Outputting diagnostics is OK, but GC
- and identifier hashtables etc. are not initialized yet.
-
- Return nonzero to suppress compiler back end initialization. */
+ and identifier hashtables etc. are not initialized yet. */
static void
parse_options_and_default_flags (argc, argv)
int argc;
@@ -4800,9 +4655,6 @@ parse_options_and_default_flags (argc, argv)
/* Register the language-independent parameters. */
add_params (lang_independent_params, LAST_PARAM);
- /* This must be done after add_params but before argument processing. */
- init_ggc_heuristics();
-
/* Perform language-specific options initialization. */
(*lang_hooks.init_options) ();
@@ -4833,6 +4685,27 @@ parse_options_and_default_flags (argc, argv)
if (optimize_val != -1)
{
optimize = optimize_val;
+
+#ifdef FORCE_OPTIMIZATION_DOWNGRADE
+#warning FORCE_OPTIMIZATION_DOWNGRADE
+ if (optimize > FORCE_OPTIMIZATION_DOWNGRADE)
+ {
+ optimize = FORCE_OPTIMIZATION_DOWNGRADE;
+ warning ("\n***\n***\t-O%d converted to \"-O%d\" due to optimizer bugs on this platform\n***",
+ optimize_val,
+ FORCE_OPTIMIZATION_DOWNGRADE);
+
+ }
+#endif /*FORCE_OPTIMIZATION_DOWNGRADE*/
+
+#if defined(TRY_WITHOUT_THIS__alpha__)
+ if (optimize > 1)
+ {
+ warning ("\n***\n***\tThe -O%d flag TRIGGERS KNOWN OPTIMIZER BUGS ON THIS PLATFORM\n***",
+ optimize_val);
+ }
+#endif /*__alpha__*/
+
optimize_size = 0;
}
}
@@ -4856,10 +4729,6 @@ parse_options_and_default_flags (argc, argv)
#endif
flag_guess_branch_prob = 1;
flag_cprop_registers = 1;
- flag_loop_optimize = 1;
- flag_crossjumping = 1;
- flag_if_conversion = 1;
- flag_if_conversion2 = 1;
}
if (optimize >= 2)
@@ -4883,7 +4752,6 @@ parse_options_and_default_flags (argc, argv)
flag_strict_aliasing = 1;
flag_delete_null_pointer_checks = 1;
flag_reorder_blocks = 1;
- flag_reorder_functions = 1;
}
if (optimize >= 3)
@@ -4892,21 +4760,12 @@ parse_options_and_default_flags (argc, argv)
flag_rename_registers = 1;
}
- if (optimize < 2 || optimize_size)
+ if (optimize_size)
{
align_loops = 1;
align_jumps = 1;
align_labels = 1;
align_functions = 1;
-
- /* Don't reorder blocks when optimizing for size because extra
- jump insns may be created; also barrier may create extra padding.
-
- More correctly we should have a block reordering mode that tried
- to minimize the combined size of all the jumps. This would more
- or less automatically remove extra jumps, but would also try to
- use more short jumps instead of long jumps. */
- flag_reorder_blocks = 0;
}
/* Initialize whether `char' is signed. */
@@ -5023,6 +4882,10 @@ parse_options_and_default_flags (argc, argv)
if (flag_really_no_inline == 2)
flag_really_no_inline = flag_no_inline;
+
+ /* All command line options have been parsed; allow the front end to
+ perform consistency checks, etc. */
+ (*lang_hooks.post_options) ();
}
/* Process the options that have been parsed. */
@@ -5080,6 +4943,16 @@ process_options ()
warning ("this target machine does not have delayed branches");
#endif
+ /* Some operating systems do not allow profiling without a frame
+ pointer. */
+ if (!TARGET_ALLOWS_PROFILING_WITHOUT_FRAME_POINTER
+ && profile_flag
+ && flag_omit_frame_pointer)
+ {
+ error ("profiling does not work without a frame pointer");
+ flag_omit_frame_pointer = 0;
+ }
+
user_label_prefix = USER_LABEL_PREFIX;
if (flag_leading_underscore != -1)
{
@@ -5104,7 +4977,7 @@ process_options ()
print_switch_values (stderr, 0, MAX_LINE, "", " ", "\n");
}
- if (! quiet_flag || flag_detailed_statistics)
+ if (! quiet_flag)
time_report = 1;
if (flag_syntax_only)
@@ -5196,19 +5069,30 @@ process_options ()
if (flag_function_sections && write_symbols != NO_DEBUG)
warning ("-ffunction-sections may affect debugging on some targets");
#endif
-
- /* The presence of IEEE signaling NaNs, implies all math can trap. */
- if (flag_signaling_nans)
- flag_trapping_math = 1;
}
-/* Initialize the compiler back end. */
+/* Language-independent initialization, before language-dependent
+ initialization. */
static void
-backend_init ()
+lang_independent_init ()
{
- /* init_emit_once uses reg_raw_mode and therefore must be called
- after init_regs which initialized reg_raw_mode. */
- init_regs ();
+ decl_printable_name = decl_name;
+ lang_expand_expr = (lang_expand_expr_t) do_abort;
+
+ /* Set the language-dependent identifier size. */
+ tree_code_length[(int) IDENTIFIER_NODE]
+ = ((lang_hooks.identifier_size - sizeof (struct tree_common)
+ + sizeof (tree) - 1) / sizeof (tree));
+
+ /* Initialize the garbage-collector, and string pools. */
+ init_ggc ();
+ ggc_add_rtx_root (&stack_limit_rtx, 1);
+ ggc_add_tree_root (&current_function_decl, 1);
+ ggc_add_tree_root (&current_function_func_begin_label, 1);
+
+ init_stringpool ();
+ init_obstacks ();
+
init_emit_once (debug_info_level == DINFO_LEVEL_NORMAL
|| debug_info_level == DINFO_LEVEL_VERBOSE
#ifdef VMS_DEBUGGING_INFO
@@ -5217,30 +5101,34 @@ backend_init ()
#endif
|| flag_test_coverage
|| warn_notreached);
- init_fake_stack_mems ();
+ init_regs ();
init_alias_once ();
+ init_stmt ();
init_loop ();
init_reload ();
init_function_once ();
+ init_stor_layout_once ();
init_varasm_once ();
+ init_EXPR_INSN_LIST_cache ();
/* The following initialization functions need to generate rtl, so
provide a dummy function context for them. */
init_dummy_function_start ();
init_expmed ();
+ init_expr_once ();
if (flag_caller_saves)
init_caller_save ();
expand_dummy_function_end ();
}
-/* Language-dependent initialization. Returns nonzero on success. */
+/* Language-dependent initialization. Returns non-zero on success. */
static int
lang_dependent_init (name)
const char *name;
{
if (dump_base_name == 0)
dump_base_name = name ? name : "gccdump";
-
+
/* Front-end initialization. This hook can assume that GC,
identifier hashes etc. are set up, but debug initialization is
not done yet. This routine must return the original filename
@@ -5259,12 +5147,6 @@ lang_dependent_init (name)
init_eh ();
init_optabs ();
- /* The following initialization functions need to generate rtl, so
- provide a dummy function context for them. */
- init_dummy_function_start ();
- init_expr_once ();
- expand_dummy_function_end ();
-
/* Put an entry on the input file stack for the main input file. */
push_srcloc (input_filename, 0);
@@ -5347,37 +5229,17 @@ finalize ()
static void
do_compile ()
{
- /* All command line options have been parsed; allow the front end to
- perform consistency checks, etc. */
- bool no_backend = (*lang_hooks.post_options) ();
-
/* The bulk of command line switch processing. */
process_options ();
- /* If an error has already occurred, give up. */
- if (errorcount)
- return;
-
- if (aux_base_name)
- /*NOP*/;
- else if (filename)
- {
- char *name = xstrdup (lbasename (filename));
-
- aux_base_name = name;
- strip_off_ending (name, strlen (name));
- }
- else
- aux_base_name = "gccaux";
-
/* We cannot start timing until after options are processed since that
says if we run timers or not. */
init_timevar ();
timevar_start (TV_TOTAL);
- /* Set up the back-end if requested. */
- if (!no_backend)
- backend_init ();
+ /* Language-independent initialization. Also sets up GC, identifier
+ hashes etc. */
+ lang_independent_init ();
/* Language-dependent initialization. Returns true on success. */
if (lang_dependent_init (filename))
@@ -5402,15 +5264,17 @@ toplev_main (argc, argv)
int argc;
char **argv;
{
+ hex_init ();
+
/* Initialization of GCC's environment, and diagnostics. */
- general_init (argv[0]);
+ general_init (argv [0]);
/* Parse the options and do minimal processing; basically just
enough to default flags appropriately. */
parse_options_and_default_flags (argc, argv);
/* Exit early if we can (e.g. -help). */
- if (!exit_after_options)
+ if (!errorcount && !exit_after_options)
do_compile ();
if (errorcount || sorrycount)
diff --git a/contrib/gcc/version.c b/contrib/gcc/version.c
index 0fd5556..6aef1c0 100644
--- a/contrib/gcc/version.c
+++ b/contrib/gcc/version.c
@@ -1,18 +1,6 @@
+/* $FreeBSD$ */
+
#include "ansidecl.h"
#include "version.h"
-/* This is the string reported as the version number by all components
- of the compiler. If you distribute a modified version of GCC,
- please modify this string to indicate that, e.g. by putting your
- organization's name in parentheses at the end of the string. */
-
-const char version_string[] = "3.3.1 20030711 (prerelease)";
-
-/* This is the location of the online document giving instructions for
- reporting bugs. If you distribute a modified version of GCC,
- please change this to refer to a document giving instructions for
- reporting bugs to you, not us. (You are of course welcome to
- forward us bugs reported to you, if you determine that they are
- not bugs in your modifications.) */
-
-const char bug_report_url[] = "<URL:http://gcc.gnu.org/bugs.html>";
+const char *const version_string = "3.2.2 [FreeBSD] 20030205 (release)";
OpenPOWER on IntegriCloud