diff -Nrc3pad gcc-3.2/.brik gcc-3.2.1/.brik *** gcc-3.2/.brik Wed Aug 14 10:35:21 2002 --- gcc-3.2.1/.brik Tue Nov 19 19:17:47 2002 *************** *** 14,20 **** 2411687152b ./boehm-gc/BCC_MAKEFILE 394605993b ./boehm-gc/blacklst.c 971406525b ./boehm-gc/callprocs ! 2564765476b ./boehm-gc/ChangeLog 2542310219b ./boehm-gc/checksums.c 1272640704b ./boehm-gc/config.guess 4182969326b ./boehm-gc/config.sub --- 14,20 ---- 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 *************** *** 115,126 **** 2932074179b ./boehm-gc/mach_dep.c 145946109b ./boehm-gc/MacOS.c 591574792b ./boehm-gc/MacProjects.sit.hqx ! 1399035599b ./boehm-gc/Makefile.am 3148936110b ./boehm-gc/Makefile.direct 3806813747b ./boehm-gc/Makefile.dist 87051491b ./boehm-gc/Makefile.dj 2647418481b ./boehm-gc/Makefile.DLLs ! 3352764249b ./boehm-gc/Makefile.in 4270565414b ./boehm-gc/malloc.c 3656007348b ./boehm-gc/mallocx.c 2488176063b ./boehm-gc/mark.c --- 115,126 ---- 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 *************** *** 161,172 **** 2467355438b ./boehm-gc/typd_mlc.c 332085760b ./boehm-gc/version.h 205379550b ./boehm-gc/WCC_MAKEFILE ! 3644911074b ./boehm-gc/win32_threads.c ! 3068867888b ./BUGS ! 483004181b ./bugs.html ! 57362442b ./ChangeLog 3004978457b ./config/acinclude.m4 ! 1959210195b ./config/ChangeLog 1242784498b ./config.guess 1864899138b ./config.if 3007349820b ./config/mh-a68bsd --- 161,172 ---- 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 *************** *** 211,217 **** 456622165b ./config/mh-vaxult2 3265825290b ./config/mh-x86pic 3139906847b ./config-ml.in ! 2776795818b ./config/mpw/ChangeLog 4005879853b ./config/mpw/forward-include 439409833b ./config/mpw/g-mpw-make.sed 198559626b ./config/mpw-mh-mpw --- 211,217 ---- 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 *************** *** 244,250 **** 2416042097b ./configure 3230279174b ./configure.in 1948950130b ./contrib/analyze_brprob ! 2162237348b ./contrib/ChangeLog 550196746b ./contrib/compare_tests 2828387446b ./contrib/convert_to_f2c 2929939770b ./contrib/convert_to_g2c --- 244,250 ---- 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 *************** *** 256,262 **** 4256039795b ./contrib/index-prop 3683285493b ./contrib/newcvsroot 1596938872b ./contrib/regression/btest-gcc.sh ! 2831060315b ./contrib/regression/ChangeLog 4208566980b ./contrib/regression/objs-gcc.sh 1757898889b ./contrib/regression/README 1865505596b ./contrib/regression/site.exp --- 256,262 ---- 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 *************** *** 267,277 **** 2171125041b ./COPYING 508743035b ./COPYING.LIB 3205162104b ./.cvsignore ! 4032751412b ./FAQ ! 2321091199b ./faq.html 3513702948b ./fastjar/aclocal.m4 1005262133b ./fastjar/AUTHORS ! 3003145020b ./fastjar/ChangeLog 1745615150b ./fastjar/CHANGES 3743222129b ./fastjar/compress.c 1169302702b ./fastjar/compress.h --- 267,277 ---- 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 *************** *** 279,286 **** 1796406241b ./fastjar/configure 1220094724b ./fastjar/configure.in 1396100520b ./fastjar/COPYING ! 390830084b ./fastjar/dostime.c ! 2574136940b ./fastjar/dostime.h 2770615802b ./fastjar/INSTALL 2331671736b ./fastjar/install-defs.sh.in 1178077958b ./fastjar/install-sh --- 279,286 ---- 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 *************** *** 738,744 **** 3825818772b ./gcc/ada/casing.adb 2190810584b ./gcc/ada/casing.ads 3750437973b ./gcc/ada/ceinfo.adb ! 3249250835b ./gcc/ada/ChangeLog 869185536b ./gcc/ada/checks.adb 440073759b ./gcc/ada/checks.ads 401488734b ./gcc/ada/cio.c --- 738,744 ---- 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 *************** *** 933,939 **** 2787179765b ./gcc/ada/gnat_rm.texi 1099903949b ./gcc/ada/gnat-style.texi 3866519797b ./gcc/ada/gnat_ug.texi ! 3439022171b ./gcc/ada/gnatvsn.ads 2692053620b ./gcc/ada/gnatxref.adb 1804647254b ./gcc/ada/g-os_lib.adb 3221085683b ./gcc/ada/g-os_lib.ads --- 933,939 ---- 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 *************** *** 1596,1602 **** 4200440603b ./gcc/ada/s-wwdenu.ads 1874741026b ./gcc/ada/s-wwdwch.adb 3321650370b ./gcc/ada/s-wwdwch.ads ! 1364437604b ./gcc/ada/sysdep.c 1119298405b ./gcc/ada/system.ads 3848197813b ./gcc/ada/table.adb 3687590744b ./gcc/ada/table.ads --- 1596,1602 ---- 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 *************** *** 1652,1658 **** 1408035530b ./gcc/ada/xsinfo.adb 1441973181b ./gcc/ada/xsnames.adb 579454790b ./gcc/ada/xtreeprs.adb ! 3742376932b ./gcc/alias.c 1031959714b ./gcc/attribs.c 2742514573b ./gcc/basic-block.h 534677057b ./gcc/bb-reorder.c --- 1652,1658 ---- 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 *************** *** 1663,1686 **** 2454689977b ./gcc/builtins.def 3361511841b ./gcc/builtin-types.def 4196427447b ./gcc/caller-save.c ! 2566522078b ./gcc/calls.c 420541423b ./gcc/c-aux-info.c ! 2734296831b ./gcc/c-common.c 2096270511b ./gcc/c-common.def ! 3951106812b ./gcc/c-common.h 1317742909b ./gcc/c-convert.c ! 723213634b ./gcc/c-decl.c 487899684b ./gcc/c-errors.c ! 181278358b ./gcc/cfganal.c 1964748151b ./gcc/cfgbuild.c 2908854975b ./gcc/cfg.c ! 4109178465b ./gcc/cfgcleanup.c 1219429812b ./gcc/cfglayout.c 1858346793b ./gcc/cfglayout.h 3236894730b ./gcc/cfgloop.c ! 2076106567b ./gcc/cfgrtl.c 2243757094b ./gcc/c-format.c ! 428187719b ./gcc/ChangeLog 1398127668b ./gcc/ChangeLog.0 2827765101b ./gcc/ChangeLog.1 1199055802b ./gcc/ChangeLog.2 --- 1663,1686 ---- 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 *************** *** 1692,1699 **** 1985388077b ./gcc/c-lang.c 382517507b ./gcc/c-lex.c 835686435b ./gcc/c-lex.h ! 2161943665b ./gcc/c-objc-common.c ! 2900417621b ./gcc/collect2.c 653998699b ./gcc/collect2.h 2586036597b ./gcc/combine.c 4122382037b ./gcc/conditions.h --- 1692,1699 ---- 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 *************** *** 1715,1721 **** 830149807b ./gcc/config/alpha/alpha.c 2486755494b ./gcc/config/alpha/alpha.h 1076515812b ./gcc/config/alpha/alpha-interix.h ! 2405259347b ./gcc/config/alpha/alpha.md 4085134134b ./gcc/config/alpha/alpha-protos.h 1407988137b ./gcc/config/alpha/crtfastmath.c 221364934b ./gcc/config/alpha/elf.h --- 1715,1721 ---- 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 *************** *** 1767,1775 **** 2135297695b ./gcc/config/arc/t-arc 2672724137b ./gcc/config/arm/aof.h 754089758b ./gcc/config/arm/aout.h ! 3275521552b ./gcc/config/arm/arm.c ! 2476043642b ./gcc/config/arm/arm.h ! 2992914365b ./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 --- 1767,1775 ---- 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 *************** *** 1816,1822 **** 2366951282b ./gcc/config/arm/xscale-elf.h 2474041656b ./gcc/config/avr/avr.c 3254145940b ./gcc/config/avr/avr.h ! 3802932744b ./gcc/config/avr/avr.md 567694740b ./gcc/config/avr/avr-protos.h 1853285406b ./gcc/config/avr/libgcc.S 3040444126b ./gcc/config/avr/t-avr --- 1816,1822 ---- 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 *************** *** 1903,1909 **** 22917470b ./gcc/config/freebsd.h 3532526787b ./gcc/config/freebsd-nthr.h 3508760161b ./gcc/config/freebsd-spec.h ! 3872776681b ./gcc/config.gcc 3236013445b ./gcc/config/gnu.h 269492728b ./gcc/config/gofast.h 1315260558b ./gcc/config.guess --- 1903,1909 ---- 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 *************** *** 1952,1971 **** 915598536b ./gcc/config/i386/gnu.h 166489147b ./gcc/config/i386/gstabs.h 1725036574b ./gcc/config/i386/i386-aout.h ! 1056818854b ./gcc/config/i386/i386.c 4168545992b ./gcc/config/i386/i386-coff.h 2017248418b ./gcc/config/i386/i386elf.h ! 817460708b ./gcc/config/i386/i386.h 721929446b ./gcc/config/i386/i386-interix3.h 1321445318b ./gcc/config/i386/i386-interix.h ! 332230525b ./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 ! 4048130721b ./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 --- 1952,1971 ---- 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 *************** *** 1973,1979 **** 83628421b ./gcc/config/i386/lynx-ng.h 4206477894b ./gcc/config/i386/mach.h 3763689293b ./gcc/config/i386/mingw32.h ! 3292708147b ./gcc/config/i386/mmintrin.h 3361545892b ./gcc/config/i386/moss.h 2015644945b ./gcc/config/i386/netbsd64.h 527360119b ./gcc/config/i386/netbsd-elf.h --- 1973,1979 ---- 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 *************** *** 2018,2024 **** 2902972689b ./gcc/config/i386/t-djgpp 537671296b ./gcc/config/i386/t-i386elf 1614388594b ./gcc/config/i386/t-interix ! 795980282b ./gcc/config/i386/t-linux64 4056914306b ./gcc/config/i386/t-mingw32 92801654b ./gcc/config/i386/t-netware 1960948471b ./gcc/config/i386/t-next --- 2018,2024 ---- 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 *************** *** 2040,2052 **** 1621915956b ./gcc/config/i386/vsta.h 57307462b ./gcc/config/i386/vxi386.h 3423798645b ./gcc/config/i386/win32.h ! 3552187277b ./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 ! 298059282b ./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 --- 2040,2052 ---- 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 *************** *** 2119,2125 **** 1272963761b ./gcc/config/m68hc11/m68hc11.c 3563849705b ./gcc/config/m68hc11/m68hc11-crt0.S 1280294916b ./gcc/config/m68hc11/m68hc11.h ! 4149782803b ./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 --- 2119,2125 ---- 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 *************** *** 2205,2211 **** 120628064b ./gcc/config/m68k/sun3n.h 2298299278b ./gcc/config/m68k/sun3o3.h 3527955370b ./gcc/config/m68k/t-aux ! 1499818164b ./gcc/config/m68k/t-crtstuff 1845413337b ./gcc/config/m68k/t-hp320 1601671577b ./gcc/config/m68k/t-linux 1601671577b ./gcc/config/m68k/t-linux-aout --- 2205,2211 ---- 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 *************** *** 2297,2303 **** 3112223626b ./gcc/config/mips/mips-5.h 4175300921b ./gcc/config/mips/mips.c 1450296441b ./gcc/config/mips/mips.h ! 27312380b ./gcc/config/mips/mips.md 4191298187b ./gcc/config/mips/mips-protos.h 3451330990b ./gcc/config/mips/netbsd.h 1685635385b ./gcc/config/mips/news4.h --- 2297,2303 ---- 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 *************** *** 2322,2328 **** 3379398326b ./gcc/config/mips/t-ecoff 3744526568b ./gcc/config/mips/t-elf 2896429436b ./gcc/config/mips/t-iris ! 926858795b ./gcc/config/mips/t-iris6 2995723142b ./gcc/config/mips/t-isa3264 3174612276b ./gcc/config/mips/t-linux 3174612276b ./gcc/config/mips/t-netbsd --- 2322,2328 ---- 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 *************** *** 2459,2465 **** 1258445797b ./gcc/config/rs6000/eabisim.h 3017082484b ./gcc/config/rs6000/freebsd.h 4293496085b ./gcc/config/rs6000/gnu.h ! 1853325160b ./gcc/config/rs6000/linux64.h 1351560312b ./gcc/config/rs6000/linuxaltivec.h 3642990693b ./gcc/config/rs6000/linux.h 1286374006b ./gcc/config/rs6000/lynx.h --- 2459,2465 ---- 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 *************** *** 2467,2481 **** 1820610909b ./gcc/config/rs6000/milli.exp 926081320b ./gcc/config/rs6000/netbsd.h 4127185084b ./gcc/config/rs6000/ppc-asm.h ! 2556177832b ./gcc/config/rs6000/rs6000.c 1882734550b ./gcc/config/rs6000/rs6000.h ! 2550315868b ./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 ! 2895846126b ./gcc/config/rs6000/sysv4.h 3795959522b ./gcc/config/rs6000/sysv4le.h 781650112b ./gcc/config/rs6000/t-aix43 2042460673b ./gcc/config/rs6000/t-beos --- 2467,2481 ---- 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 *************** *** 2495,2501 **** 661638700b ./gcc/config/s390/linux.h 3979416840b ./gcc/config/s390/s390.c 2354192299b ./gcc/config/s390/s390.h ! 2043805243b ./gcc/config/s390/s390.md 1407420306b ./gcc/config/s390/s390-protos.h 3998835120b ./gcc/config/s390/s390x.h 1051100452b ./gcc/config/s390/t-linux --- 2495,2501 ---- 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 *************** *** 2525,2537 **** 1386942151b ./gcc/config/sparc/bsd.h 1479022830b ./gcc/config/sparc/crtfastmath.c 54964474b ./gcc/config/sparc/elf.h ! 2261391724b ./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 ! 1211069020b ./gcc/config/sparc/linux64.h 2544415545b ./gcc/config/sparc/linux-aout.h 1914379195b ./gcc/config/sparc/linux.h 2163445162b ./gcc/config/sparc/litecoff.h --- 2525,2537 ---- 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 *************** *** 2549,2555 **** 4106236389b ./gcc/config/sparc/rtems.h 1579903847b ./gcc/config/sparc/sol2-64.h 2488307215b ./gcc/config/sparc/sol27-sld.h ! 3856389871b ./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 --- 2549,2555 ---- 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 *************** *** 2562,2570 **** 2870886299b ./gcc/config/sparc/sp64-elf.h 3128199560b ./gcc/config/sparc/sp86x-aout.h 1221714757b ./gcc/config/sparc/sp86x-elf.h ! 2208851995b ./gcc/config/sparc/sparc.c 3432806460b ./gcc/config/sparc/sparc.h ! 3779592443b ./gcc/config/sparc/sparc.md 4023359087b ./gcc/config/sparc/sparc-protos.h 842964351b ./gcc/config/sparc/splet.h 952337645b ./gcc/config/sparc/sun4gas.h --- 2562,2570 ---- 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 *************** *** 2575,2585 **** 2056024669b ./gcc/config/sparc/t-crtfm 3744055768b ./gcc/config/sparc/t-elf 1582758741b ./gcc/config/sparc/t-halos ! 1439446046b ./gcc/config/sparc/t-linux64 ! 695285893b ./gcc/config/sparc/t-netbsd64 1190032917b ./gcc/config/sparc/t-openbsd 851768603b ./gcc/config/sparc/t-sol2 ! 1145811925b ./gcc/config/sparc/t-sol2-64 4194854877b ./gcc/config/sparc/t-sp86x 2727045329b ./gcc/config/sparc/t-sparcbare 1324996929b ./gcc/config/sparc/t-sparclite --- 2575,2585 ---- 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 *************** *** 2620,2628 **** 321200235b ./gcc/config/t-svr4 937080303b ./gcc/config/udivmod.c 2590328114b ./gcc/config/udivmodsi4.c ! 1016693269b ./gcc/configure 2239237249b ./gcc/configure.frag ! 3096119353b ./gcc/configure.in 1401546799b ./gcc/config/usegas.h 1330961877b ./gcc/config/v850/lib1funcs.asm 3345272584b ./gcc/config/v850/rtems.h --- 2620,2628 ---- 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 *************** *** 2648,2687 **** 3169968881b ./gcc/config/we32k/we32k.md 2514844092b ./gcc/config/we32k/we32k-protos.h 2711497169b ./gcc/config/x-interix ! 2141220080b ./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 ! 4293691443b ./gcc/config/xtensa/xtensa.c 2796950173b ./gcc/config/xtensa/xtensa-config.h ! 1720519523b ./gcc/config/xtensa/xtensa.h 1183159023b ./gcc/config/xtensa/xtensa.md ! 2854754468b ./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 ! 2221971030b ./gcc/c-parse.c ! 404744322b ./gcc/c-parse.in ! 4212422843b ./gcc/c-parse.y ! 1606645276b ./gcc/cp/call.c 4115552602b ./gcc/cp/cfns.gperf 1705070232b ./gcc/cp/cfns.h ! 246530727b ./gcc/cp/ChangeLog 2221404065b ./gcc/cp/ChangeLog.1 2127340768b ./gcc/cp/ChangeLog.2 2546444747b ./gcc/cp/ChangeLog.egcs ! 3382716843b ./gcc/cp/class.c 1309293181b ./gcc/cp/config-lang.in ! 2814007338b ./gcc/cp/cp-lang.c 2928114977b ./gcc/cp/cp-tree.def ! 520848138b ./gcc/cp/cp-tree.h 1230086821b ./gcc/cp/.cvsignore ! 1810620203b ./gcc/cp/cvt.c ! 3724208706b ./gcc/cp/decl2.c ! 2328300155b ./gcc/cp/decl.c 3040950596b ./gcc/cp/decl.h 1503739344b ./gcc/cp/dump.c 1402846352b ./gcc/cp/error.c --- 2648,2687 ---- 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 *************** *** 2690,2747 **** 728682437b ./gcc/cp/friend.c 1574667259b ./gcc/cp/g++.1 3180385434b ./gcc/cp/g++spec.c ! 6213340b ./gcc/cp/init.c 3812650249b ./gcc/cp/lang-options.h 2714092533b ./gcc/cp/lang-specs.h ! 1021773846b ./gcc/cp/lex.c 2280147967b ./gcc/cp/lex.h 2683095257b ./gcc/cp/Make-lang.in ! 2268565299b ./gcc/cp/mangle.c ! 3566373635b ./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 ! 2913547076b ./gcc/cp/parse.c ! 170370885b ./gcc/cp/parse.h ! 3869126793b ./gcc/cp/parse.y 1602205564b ./gcc/cppdefault.c 733799898b ./gcc/cppdefault.h 3582099799b ./gcc/cpperror.c 4072103215b ./gcc/cppexp.c ! 1744773234b ./gcc/cppfiles.c 2283152717b ./gcc/cpphash.c 3545195852b ./gcc/cpphash.h ! 3019939107b ./gcc/cppinit.c 201524367b ./gcc/cpplex.c ! 696100766b ./gcc/cpplib.c ! 2677210260b ./gcc/cpplib.h ! 2425864251b ./gcc/cppmacro.c 2363485754b ./gcc/cppmain.c 3972345626b ./gcc/cppspec.c ! 877619125b ./gcc/cp/pt.c 1408553642b ./gcc/cp/ptree.c 73956308b ./gcc/c-pragma.c 1212765089b ./gcc/c-pragma.h 3993964584b ./gcc/cp/repo.c ! 1225143498b ./gcc/cp/rtti.c ! 4073173263b ./gcc/cp/search.c ! 1391383527b ./gcc/cp/semantics.c ! 435715887b ./gcc/cp/spew.c ! 1157806438b ./gcc/cp/tree.c ! 319815603b ./gcc/cp/typeck2.c ! 3802862631b ./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 ! 2979514529b ./gcc/c-tree.h ! 2525875527b ./gcc/c-typeck.c 4208197548b ./gcc/.cvsignore ! 1600176938b ./gcc/dbxout.c 2583180678b ./gcc/dbxout.h 1104788844b ./gcc/dbxstclass.h 2470087149b ./gcc/debug.c --- 2690,2747 ---- 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 *************** *** 2755,2807 **** 4192732570b ./gcc/diagnostic.h 23600501b ./gcc/doc/bugreport.texi 2815010075b ./gcc/doc/collect2.texi 2785243168b ./gcc/doc/configfiles.texi 3399730921b ./gcc/doc/configterms.texi ! 423742597b ./gcc/doc/contrib.texi 2272556046b ./gcc/doc/contribute.texi ! 3338732053b ./gcc/doc/cpp.1 ! 728474004b ./gcc/doc/cppenv.texi ! 614113989b ./gcc/doc/cpp.info ! 3684701703b ./gcc/doc/cpp.info-1 ! 2051881480b ./gcc/doc/cpp.info-2 ! 4277996359b ./gcc/doc/cpp.info-3 ! 1723172915b ./gcc/doc/cpp.info-4 4128300115b ./gcc/doc/cppinternals.info 1958814700b ./gcc/doc/cppinternals.texi ! 1576301312b ./gcc/doc/cppopts.texi ! 3942827135b ./gcc/doc/cpp.texi ! 3074388753b ./gcc/doc/c-tree.texi 1471878644b ./gcc/doc/.cvsignore ! 3767903981b ./gcc/doc/extend.texi 2634996326b ./gcc/doc/fragments.texi 600815516b ./gcc/doc/frontends.texi ! 47476850b ./gcc/doc/fsf-funding.7 ! 4122483838b ./gcc/doc/gcc.1 ! 1322329267b ./gcc/doc/gcc.info ! 1125594091b ./gcc/doc/gcc.info-1 ! 2210088709b ./gcc/doc/gcc.info-10 ! 3588585377b ./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 ! 983912118b ./gcc/doc/gcc.info-17 ! 4229810973b ./gcc/doc/gcc.info-18 ! 2774448157b ./gcc/doc/gcc.info-19 ! 4041736365b ./gcc/doc/gcc.info-2 ! 273873526b ./gcc/doc/gcc.info-20 ! 913770364b ./gcc/doc/gcc.info-21 ! 1105239440b ./gcc/doc/gcc.info-22 ! 3748204607b ./gcc/doc/gcc.info-23 177802939b ./gcc/doc/gcc.info-3 ! 3514858133b ./gcc/doc/gcc.info-4 ! 4164754347b ./gcc/doc/gcc.info-5 523405852b ./gcc/doc/gcc.info-6 4075929926b ./gcc/doc/gcc.info-7 ! 399228416b ./gcc/doc/gcc.info-8 701416922b ./gcc/doc/gcc.info-9 ! 3451282471b ./gcc/doc/gccint.info 3600548089b ./gcc/doc/gccint.info-1 1504619998b ./gcc/doc/gccint.info-10 3473339140b ./gcc/doc/gccint.info-11 --- 2755,2809 ---- 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 *************** *** 2812,2823 **** 1782892412b ./gcc/doc/gccint.info-16 2959978575b ./gcc/doc/gccint.info-17 4176515869b ./gcc/doc/gccint.info-18 ! 140211443b ./gcc/doc/gccint.info-19 ! 807234232b ./gcc/doc/gccint.info-2 202943203b ./gcc/doc/gccint.info-20 3389515766b ./gcc/doc/gccint.info-21 ! 934370110b ./gcc/doc/gccint.info-22 ! 2398443189b ./gcc/doc/gccint.info-23 1907881660b ./gcc/doc/gccint.info-3 1456140435b ./gcc/doc/gccint.info-4 645003639b ./gcc/doc/gccint.info-5 --- 2814,2825 ---- 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 *************** *** 2826,2837 **** 422138694b ./gcc/doc/gccint.info-8 3245006523b ./gcc/doc/gccint.info-9 926520134b ./gcc/doc/gccint.texi ! 1397603823b ./gcc/doc/gcc.texi ! 1484573546b ./gcc/doc/gcov.1 3165676809b ./gcc/doc/gcov.texi ! 1948430484b ./gcc/doc/gfdl.7 4217859569b ./gcc/doc/gnu.texi ! 2944376632b ./gcc/doc/gpl.7 2632697239b ./gcc/doc/headerdirs.texi 1425599017b ./gcc/doc/hostconfig.texi 1232987106b ./gcc/doc/include/fdl.texi --- 2828,2839 ---- 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 *************** *** 2840,2863 **** 1416455933b ./gcc/doc/include/gpl.texi 3627483023b ./gcc/doc/include/texinfo.tex 4219640220b ./gcc/doc/install-old.texi ! 3289828701b ./gcc/doc/install.texi 1451529977b ./gcc/doc/install.texi2html 1103982611b ./gcc/doc/interface.texi ! 3201795382b ./gcc/doc/invoke.texi 1327866291b ./gcc/doc/languages.texi ! 1442569774b ./gcc/doc/makefile.texi 647485435b ./gcc/doc/md.texi 2014418726b ./gcc/doc/objc.texi 285120363b ./gcc/doc/passes.texi 2247614285b ./gcc/doc/portability.texi ! 1491224498b ./gcc/doc/rtl.texi 3603168219b ./gcc/doc/service.texi ! 1541018360b ./gcc/doc/sourcebuild.texi ! 4060536618b ./gcc/doc/standards.texi ! 2682716543b ./gcc/doc/tm.texi ! 3680484655b ./gcc/doc/trouble.texi 3478556786b ./gcc/doc/vms.texi ! 1216009797b ./gcc/doloop.c 1033704706b ./gcc/dominance.c 2791449994b ./gcc/doschk.c 31829346b ./gcc/dwarf2asm.c --- 2842,2865 ---- 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 *************** *** 2867,2882 **** 1010158138b ./gcc/dwarf2out.h 109276966b ./gcc/dwarf.h 3359840971b ./gcc/dwarfout.c ! 751950639b ./gcc/emit-rtl.c 626897841b ./gcc/enquire.c 2953931641b ./gcc/errors.c 3972701730b ./gcc/errors.h 1431652736b ./gcc/except.c 2826708782b ./gcc/except.h ! 3043936594b ./gcc/explow.c ! 2506147319b ./gcc/expmed.c ! 2453007041b ./gcc/expr.c ! 2884660603b ./gcc/expr.h 1934744031b ./gcc/f/ansify.c 1543506773b ./gcc/f/bad.c 3978113547b ./gcc/f/bad.def --- 2869,2884 ---- 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 *************** *** 2886,2897 **** 948632599b ./gcc/f/bld.c 3286267604b ./gcc/f/bld.h 2128697889b ./gcc/f/bld-op.def ! 1491665580b ./gcc/f/BUGS 235013049b ./gcc/f/bugs0.texi ! 2193415872b ./gcc/f/bugs.texi ! 2882007047b ./gcc/f/ChangeLog 4225493150b ./gcc/f/ChangeLog.0 ! 3761650327b ./gcc/f/com.c 87369815b ./gcc/f/com.h 2664732170b ./gcc/f/com-rt.def 535595698b ./gcc/f/config-lang.in --- 2888,2899 ---- 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 *************** *** 2904,2911 **** 417834755b ./gcc/f/expr.h 2351117682b ./gcc/f/ffe.texi 782070966b ./gcc/f/fini.c ! 2713856129b ./gcc/f/g77.1 ! 1283152374b ./gcc/f/g77.info 1405242906b ./gcc/f/g77.info-1 4020360826b ./gcc/f/g77.info-10 2010631566b ./gcc/f/g77.info-11 --- 2906,2913 ---- 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 *************** *** 2913,2919 **** 3461821628b ./gcc/f/g77.info-13 1208071216b ./gcc/f/g77.info-14 1936205287b ./gcc/f/g77.info-15 ! 4292352815b ./gcc/f/g77.info-16 259584195b ./gcc/f/g77.info-17 4125227617b ./gcc/f/g77.info-18 254417931b ./gcc/f/g77.info-19 --- 2915,2921 ---- 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 *************** *** 2921,2928 **** 26285497b ./gcc/f/g77.info-20 3543736255b ./gcc/f/g77.info-21 116586643b ./gcc/f/g77.info-3 ! 873971042b ./gcc/f/g77.info-4 ! 328927715b ./gcc/f/g77.info-5 145000084b ./gcc/f/g77.info-6 2563451928b ./gcc/f/g77.info-7 3172593296b ./gcc/f/g77.info-8 --- 2923,2930 ---- 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 *************** *** 3041,3062 **** 2236212838b ./gcc/fixproto 1861938661b ./gcc/f/lab.c 3674332618b ./gcc/f/lab.h ! 2269802260b ./gcc/flags.h 136843109b ./gcc/f/lang-options.h ! 1804470939b ./gcc/f/lang-specs.h 4037310288b ./gcc/f/lex.c 722310274b ./gcc/f/lex.h 1465737068b ./gcc/floatlib.c ! 4159478385b ./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 ! 3098033943b ./gcc/f/NEWS 3453379674b ./gcc/f/news0.texi ! 2256277091b ./gcc/f/news.texi ! 1024706751b ./gcc/fold-const.c 2696377463b ./gcc/f/parse.c 1067232252b ./gcc/f/proj.h 3820449811b ./gcc/fp-test.c --- 3043,3064 ---- 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 *************** *** 3106,3127 **** 659922490b ./gcc/f/symbol.c 1323122026b ./gcc/f/symbol.def 690030434b ./gcc/f/symbol.h ! 1638259975b ./gcc/f/target.c ! 45862499b ./gcc/f/target.h 2698043928b ./gcc/f/top.c 2232338664b ./gcc/f/top.h 3443401298b ./gcc/f/type.c 2499934202b ./gcc/f/type.h ! 3501935943b ./gcc/function.c 316231375b ./gcc/function.h 3058774034b ./gcc/future.options ! 1968002837b ./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 ! 1471132352b ./gcc/gcc.c 960741132b ./gcc/gcc.h 3093644366b ./gcc/gcc.hlp 3633749318b ./gcc/gccspec.c --- 3108,3129 ---- 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 *************** *** 3139,3145 **** 2648961261b ./gcc/genextract.c 2023228290b ./gcc/genflags.c 2713590814b ./gcc/gengenrtl.c ! 2807447281b ./gcc/genmultilib 1384421270b ./gcc/genopinit.c 4030468350b ./gcc/genoutput.c 2221468101b ./gcc/genpeep.c --- 3141,3147 ---- 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 *************** *** 3176,3182 **** 3966292684b ./gcc/gthr-solaris.h 4243675148b ./gcc/gthr-vxworks.h 3942109358b ./gcc/gthr-win32.h ! 3024578055b ./gcc/haifa-sched.c 544018069b ./gcc/halfpic.c 2731657470b ./gcc/halfpic.h 3590969103b ./gcc/hard-reg-set.h --- 3178,3184 ---- 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 *************** *** 3184,3191 **** 2987787285b ./gcc/hash.h 466224151b ./gcc/hashtable.c 126902747b ./gcc/hashtable.h ! 3612003626b ./gcc/hooks.c ! 1290543146b ./gcc/hooks.h 519586985b ./gcc/hwint.h 3563549730b ./gcc/ifcvt.c 3686080794b ./gcc/input.h --- 3186,3193 ---- 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 *************** *** 3194,3200 **** 1320722832b ./gcc/integrate.h 3847321727b ./gcc/intl/bindtextdom.c 3277280645b ./gcc/intl.c ! 2698710874b ./gcc/intl/ChangeLog 3698301396b ./gcc/intl/config.charset 3683549278b ./gcc/intl/dcgettext.c 1537282354b ./gcc/intl/dcigettext.c --- 3196,3202 ---- 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 *************** *** 3229,3235 **** 3814965188b ./gcc/java/buffer.c 1535113190b ./gcc/java/buffer.h 637702143b ./gcc/java/builtins.c ! 768598382b ./gcc/java/ChangeLog 2409493226b ./gcc/java/chartables.h 1544711683b ./gcc/java/check-init.c 3161785437b ./gcc/java/class.c --- 3231,3237 ---- 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 *************** *** 3240,3253 **** 698834578b ./gcc/java/decl.c 1301173842b ./gcc/java/except.c 1888306202b ./gcc/java/expr.c ! 2034854247b ./gcc/java/gcj.1 ! 89329382b ./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 ! 1258102490b ./gcc/java/gij.1 2862690686b ./gcc/java/gjavah.c 1545050516b ./gcc/java/java-except.h 1953641142b ./gcc/java/java-opcodes.h --- 3242,3255 ---- 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 *************** *** 3256,3262 **** 2113802419b ./gcc/java/java-tree.def 3036080891b ./gcc/java/java-tree.h 1618392854b ./gcc/java/jcf-depend.c ! 1928020938b ./gcc/java/jcf-dump.1 1347786459b ./gcc/java/jcf-dump.c 921328820b ./gcc/java/jcf.h 370700983b ./gcc/java/jcf-io.c --- 3258,3264 ---- 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 *************** *** 3264,3277 **** 189754917b ./gcc/java/jcf-path.c 3070824570b ./gcc/java/jcf-reader.c 3086938723b ./gcc/java/jcf-write.c ! 731971925b ./gcc/java/jv-convert.1 3805988298b ./gcc/java/jvgenmain.c ! 843035612b ./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 ! 3656655116b ./gcc/java/lang.c 366330104b ./gcc/java/lang-options.h 3731853870b ./gcc/java/lang-specs.h 930602719b ./gcc/java/lex.c --- 3266,3279 ---- 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 *************** *** 3279,3305 **** 497222224b ./gcc/java/Make-lang.in 1290236487b ./gcc/java/mangle.c 624686086b ./gcc/java/mangle_name.c ! 2885864991b ./gcc/java/parse.c 924019294b ./gcc/java/parse.h ! 69387480b ./gcc/java/parse-scan.c 578153036b ./gcc/java/parse-scan.y ! 2520755256b ./gcc/java/parse.y ! 3234576989b ./gcc/java/rmic.1 ! 284942511b ./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 ! 2231553098b ./gcc/jump.c ! 1661628068b ./gcc/langhooks.c ! 159385744b ./gcc/langhooks-def.h ! 4012039513b ./gcc/langhooks.h 4134111346b ./gcc/LANGUAGES 2367190261b ./gcc/lcm.c 2318627229b ./gcc/libfuncs.h ! 3947654856b ./gcc/libgcc2.c 3671718625b ./gcc/libgcc2.h 1452643639b ./gcc/libgcc-std.ver 2497915666b ./gcc/limitx.h --- 3281,3307 ---- 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 *************** *** 3309,3320 **** 2698117766b ./gcc/lists.c 1174355773b ./gcc/local-alloc.c 830917499b ./gcc/longlong.h ! 2909380196b ./gcc/loop.c ! 1864476849b ./gcc/loop.h 2150704349b ./gcc/machmode.def 3928982379b ./gcc/machmode.h 189930733b ./gcc/main.c ! 1388062738b ./gcc/Makefile.in 501600506b ./gcc/mbchar.c 1508701785b ./gcc/mbchar.h 886384654b ./gcc/mips-tdump.c --- 3311,3322 ---- 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 *************** *** 3323,3333 **** 217659056b ./gcc/mkdeps.c 3976112005b ./gcc/mkdeps.h 827441351b ./gcc/mkinstalldirs ! 461862408b ./gcc/mklibgcc.in 4201050746b ./gcc/mkmap-flat.awk 2827346461b ./gcc/mkmap-symver.awk 1597314052b ./gcc/move-if-change ! 3174803827b ./gcc/NEWS 4010954163b ./gcc/objc/config-lang.in 1966957144b ./gcc/objc/.cvsignore 588115418b ./gcc/objc/lang-options.h --- 3325,3335 ---- 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 *************** *** 3336,3353 **** 3712044081b ./gcc/objc/objc-act.c 2554922770b ./gcc/objc/objc-act.h 2534517289b ./gcc/objc/objc-lang.c ! 1948940216b ./gcc/objc/objc-parse.c ! 2631161308b ./gcc/objc/objc-parse.y 688475759b ./gcc/objc/objc-tree.def 3823063152b ./gcc/objc/README 538471119b ./gcc/ONEWS ! 2124113523b ./gcc/optabs.c 3971816206b ./gcc/optabs.h 151133448b ./gcc/output.h 1911824904b ./gcc/params.c 2474575794b ./gcc/params.def 840880994b ./gcc/params.h ! 138843419b ./gcc/po/ChangeLog 275286308b ./gcc/po/da.gmo 276047898b ./gcc/po/da.po 4175362661b ./gcc/po/el.gmo --- 3338,3355 ---- 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 *************** *** 3388,3395 **** 113125100b ./gcc/regrename.c 3100477763b ./gcc/regs.h 3611458427b ./gcc/reg-stack.c ! 4045449062b ./gcc/reload1.c ! 1469188466b ./gcc/reload.c 834085082b ./gcc/reload.h 4167441145b ./gcc/reorg.c 2715704724b ./gcc/resource.c --- 3390,3397 ---- 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 *************** *** 3398,3419 **** 2800367218b ./gcc/rtl.c 3964111654b ./gcc/rtl.def 3490774286b ./gcc/rtl-error.c ! 79528154b ./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 ! 1385416186b ./gcc/sched-deps.c 3568403641b ./gcc/sched-ebb.c ! 3539655811b ./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 ! 3262529120b ./gcc/sibcall.c 63942362b ./gcc/simplify-rtx.c 3345261950b ./gcc/sort-protos 3157302619b ./gcc/ssa.c --- 3400,3421 ---- 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 *************** *** 3422,3428 **** 332547863b ./gcc/ssa.h 2395322097b ./gcc/stab.def 471587796b ./gcc/stack.h ! 3088505215b ./gcc/stmt.c 2592810543b ./gcc/stor-layout.c 3515875777b ./gcc/stringpool.c 567176141b ./gcc/sys-protos.h --- 3424,3430 ---- 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 *************** *** 3430,3436 **** 482558466b ./gcc/sys-types.h 293723253b ./gcc/target-def.h 4078089769b ./gcc/target.h ! 4242319562b ./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 --- 3432,3438 ---- 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 *************** *** 5413,5418 **** --- 5415,5425 ---- 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 *************** *** 5705,5710 **** --- 5712,5718 ---- 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 *************** *** 5885,5890 **** --- 5893,5902 ---- 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 *************** *** 6242,6247 **** --- 6254,6260 ---- 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 *************** *** 6265,6270 **** --- 6278,6284 ---- 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 *************** *** 6274,6279 **** --- 6288,6295 ---- 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 *************** *** 6313,6318 **** --- 6329,6335 ---- 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 *************** *** 6749,6754 **** --- 6766,6772 ---- 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 *************** *** 6922,6927 **** --- 6940,6946 ---- 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 *************** *** 7055,7060 **** --- 7074,7081 ---- 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 *************** *** 7096,7101 **** --- 7117,7124 ---- 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 *************** *** 7220,7226 **** 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 ! 3021076947b ./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 --- 7243,7249 ---- 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 *************** *** 7289,7294 **** --- 7312,7320 ---- 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 *************** *** 7308,7315 **** 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 2427295047b ./gcc/testsuite/gcc.dg/vla-init-1.c ! 3993664995b ./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 --- 7334,7342 ---- 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 *************** *** 7319,7325 **** 1022686552b ./gcc/testsuite/gcc.dg/weak-6.c 789089149b ./gcc/testsuite/gcc.dg/weak-7.c 2849791540b ./gcc/testsuite/gcc.dg/weak-9.c ! 4149249905b ./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 --- 7346,7352 ---- 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 *************** *** 7398,7407 **** --- 7425,7438 ---- 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 *************** *** 7412,7417 **** --- 7443,7449 ---- 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 *************** *** 7442,7447 **** --- 7474,7480 ---- 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 *************** *** 7456,7481 **** 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 3028501104b ./gcc/testsuite/g++.dg/ext/typeof1.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 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 486682064b ./gcc/testsuite/g++.dg/init/copy1.C 1741245578b ./gcc/testsuite/g++.dg/init/dtor1.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 ! 1015198831b ./gcc/testsuite/g++.dg/init/pm1.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 --- 7489,7523 ---- 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 *************** *** 7487,7498 **** --- 7529,7542 ---- 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 *************** *** 7500,7505 **** --- 7544,7550 ---- 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 *************** *** 7516,7521 **** --- 7561,7567 ---- 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 *************** *** 7538,7553 **** --- 7584,7605 ---- 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 *************** *** 7558,7563 **** --- 7610,7617 ---- 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 *************** *** 7573,7578 **** --- 7627,7633 ---- 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 *************** *** 7599,7604 **** --- 7654,7660 ---- 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 *************** *** 7610,7618 **** --- 7666,7677 ---- 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 *************** *** 9434,9440 **** 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 ! 2220380075b ./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 --- 9493,9499 ---- 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 *************** *** 10406,10412 **** 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 ! 2177723713b ./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 --- 10465,10471 ---- 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 *************** *** 10913,10919 **** 766192419b ./gcc/testsuite/lib/profopt.exp 1029251629b ./gcc/testsuite/lib/prune.exp 2428636490b ./gcc/testsuite/lib/scanasm.exp ! 743118127b ./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 --- 10972,10978 ---- 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 *************** *** 11028,11049 **** 2559007517b ./gcc/timevar.def 2115869626b ./gcc/timevar.h 2335446483b ./gcc/tlink.c ! 4150917512b ./gcc/toplev.c 1100253771b ./gcc/toplev.h 2851581967b ./gcc/tradcif.c 840149782b ./gcc/tradcif.y ! 2891356052b ./gcc/tradcpp.c 133942480b ./gcc/tradcpp.h ! 816276340b ./gcc/tree.c 1914541060b ./gcc/tree.def 1565760610b ./gcc/tree-dump.c 177026127b ./gcc/tree-dump.h ! 3303657849b ./gcc/tree.h ! 209817651b ./gcc/tree-inline.c 2000795530b ./gcc/tree-inline.h 2106315745b ./gcc/tsystem.h 4139263293b ./gcc/typeclass.h ! 539416829b ./gcc/unroll.c 3994883910b ./gcc/unwind-dw2.c 939184029b ./gcc/unwind-dw2-fde.c 2451297709b ./gcc/unwind-dw2-fde-glibc.c --- 11087,11108 ---- 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 *************** *** 11052,11077 **** 1788741054b ./gcc/unwind.inc 1733200042b ./gcc/unwind-pe.h 3015631845b ./gcc/unwind-sjlj.c ! 3691961273b ./gcc/varasm.c 1377429075b ./gcc/varray.c 251576980b ./gcc/varray.h ! 1532516550b ./gcc/version.c 835289284b ./gcc/version.h 1602668013b ./gcc/vmsdbg.h 4159431942b ./gcc/vmsdbgout.c 3414725237b ./gcc/xcoffout.c 241048359b ./gcc/xcoffout.h ! 156832288b ./GNATS ! 2219513221b ./gnats.html 218913669b ./include/ansidecl.h ! 2510440260b ./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 ! 2129795953b ./include/getopt.h 3613614297b ./include/hashtab.h 1889274764b ./include/libiberty.h 2315750201b ./include/md5.h --- 11111,11136 ---- 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 *************** *** 11085,11104 **** 1386762946b ./include/ternary.h 1261882580b ./include/xregex2.h 1151436348b ./include/xregex.h ! 819645392b ./INSTALL/binaries.html ! 755060523b ./INSTALL/build.html ! 3316367722b ./INSTALL/configure.html ! 1715600552b ./INSTALL/download.html ! 1421457932b ./INSTALL/finalinstall.html ! 2173681035b ./INSTALL/gfdl.html ! 830158416b ./INSTALL/index.html ! 353693005b ./INSTALL/old.html 2229468985b ./INSTALL/README 656627656b ./install-sh ! 3928060040b ./INSTALL/specific.html ! 1066097400b ./INSTALL/test.html 1714952917b ./libf2c/aclocal.m4 ! 3773218698b ./libf2c/ChangeLog 1973941211b ./libf2c/changes.netlib 3975721411b ./libf2c/configure 1477197116b ./libf2c/configure.in --- 11144,11163 ---- 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 *************** *** 11231,11237 **** 2593705873b ./libf2c/libF77/s_rnge.c 3862265148b ./libf2c/libF77/s_stop.c 113341864b ./libf2c/libF77/system_.c ! 1072308734b ./libf2c/libF77/Version.c 1937893648b ./libf2c/libF77/z_abs.c 2431309812b ./libf2c/libF77/z_cos.c 4069203393b ./libf2c/libF77/z_div.c --- 11290,11296 ---- 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 *************** *** 11278,11284 **** 4028809578b ./libf2c/libI77/typesize.c 2487538082b ./libf2c/libI77/uio.c 1670879675b ./libf2c/libI77/util.c ! 3102519253b ./libf2c/libI77/Version.c 3746777128b ./libf2c/libI77/wref.c 1966568786b ./libf2c/libI77/wrtfmt.c 3540661106b ./libf2c/libI77/wsfe.c --- 11337,11343 ---- 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 *************** *** 11346,11355 **** 791266987b ./libf2c/libU77/u77-test.f 387772730b ./libf2c/libU77/umask_.c 1230596654b ./libf2c/libU77/unlink_.c ! 2241614521b ./libf2c/libU77/Version.c 2702299573b ./libf2c/libU77/vxtidate_.c 3987376609b ./libf2c/libU77/vxttime_.c ! 2003108059b ./libf2c/Makefile.in 1384146782b ./libf2c/permission.netlib 3111321221b ./libf2c/README 3513813969b ./libf2c/readme.netlib --- 11405,11414 ---- 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 *************** *** 11357,11363 **** 1812706554b ./libffi/acconfig.h 2067133813b ./libffi/acinclude.m4 724319761b ./libffi/aclocal.m4 ! 205515924b ./libffi/ChangeLog 2412263940b ./libffi/ChangeLog.libgcj 1481682558b ./libffi/ChangeLog.v1 3495452477b ./libffi/configure --- 11416,11422 ---- 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 *************** *** 11369,11376 **** 1175058075b ./libffi/include/Makefile.am 3624063070b ./libffi/include/Makefile.in 2593181117b ./libffi/LICENSE ! 3803183793b ./libffi/Makefile.am ! 4109869593b ./libffi/Makefile.in 3508322383b ./libffi/README 3852747706b ./libffi/src/alpha/ffi.c 2032396460b ./libffi/src/alpha/osf.S --- 11428,11435 ---- 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 *************** *** 11417,11423 **** 1033916047b ./libiberty/bsearch.c 2389959529b ./libiberty/bzero.c 1591293922b ./libiberty/calloc.c ! 3224199355b ./libiberty/ChangeLog 2264262326b ./libiberty/choose-temp.c 2557767520b ./libiberty/clock.c 3170582338b ./libiberty/concat.c --- 11476,11482 ---- 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 *************** *** 11459,11465 **** 1676968368b ./libiberty/lbasename.c 1958824006b ./libiberty/libiberty.texi 3183084918b ./libiberty/maint-tool ! 16748852b ./libiberty/Makefile.in 3226217883b ./libiberty/makefile.vms 2495473509b ./libiberty/make-temp-file.c 3176875729b ./libiberty/md5.c --- 11518,11524 ---- 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 *************** *** 11525,11531 **** 3506621156b ./libjava/aclocal.m4 3784840223b ./libjava/addr2name.awk 2317653915b ./libjava/boehm.cc ! 3130214240b ./libjava/ChangeLog 3473562392b ./libjava/ChangeLog-1999 2385951174b ./libjava/ChangeLog-2001 2118024035b ./libjava/configure --- 11584,11590 ---- 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 *************** *** 12851,12857 **** 464053222b ./libjava/libltdl/acconfig.h 1486261890b ./libjava/libltdl/acinclude.m4 2748542911b ./libjava/libltdl/aclocal.m4 ! 1384970769b ./libjava/libltdl/ChangeLog 3229611250b ./libjava/libltdl/config.h.in 3663840013b ./libjava/libltdl/configure 586017012b ./libjava/libltdl/configure.in --- 12910,12916 ---- 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 *************** *** 12864,12871 **** 1322928877b ./libjava/libltdl/README 216805921b ./libjava/libltdl/stamp-h.in 4225681790b ./libjava/libtool-version ! 83234188b ./libjava/Makefile.am ! 2966653638b ./libjava/Makefile.in 1775785992b ./libjava/mauve-libgcj 3598737829b ./libjava/name-finder.cc 4049677327b ./libjava/NEWS --- 12923,12930 ---- 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 *************** *** 12948,12954 **** 2487590179b ./libjava/sysdep/ia64/locks.h 3446737173b ./libjava/sysdep/powerpc/locks.h 2903495760b ./libjava/sysdep/sparc/locks.h ! 4193227237b ./libjava/testsuite/ChangeLog 1230501773b ./libjava/testsuite/config/default.exp 3718926011b ./libjava/testsuite/libjava.compile/abstr.java 2888415448b ./libjava/testsuite/libjava.compile/abstr.xfail --- 13007,13013 ---- 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 *************** *** 13296,13303 **** 4294967295b ./libjava/testsuite/libjava.lang/PR56.out 832973302b ./libjava/testsuite/libjava.lang/pr83.java 987139956b ./libjava/testsuite/libjava.lang/pr83.out - 3224248635b ./libjava/testsuite/libjava.lang/Primes.java - 3056643169b ./libjava/testsuite/libjava.lang/Primes.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 --- 13355,13360 ---- *************** *** 13363,13369 **** 4013205125b ./libjava/testsuite/libjava.mauve/DejaGNUTestHarness.java 1740456441b ./libjava/testsuite/libjava.mauve/mauve.exp 2293687712b ./libjava/testsuite/libjava.mauve/xfails ! 4234714160b ./libjava/testsuite/lib/libjava.exp 3806425466b ./libjava/testsuite/Makefile.am 1096421437b ./libjava/testsuite/Makefile.in 3410290178b ./libjava/THANKS --- 13420,13426 ---- 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 *************** *** 13372,13378 **** 3459150705b ./libjava/win32-threads.cc 202134358b ./libobjc/aclocal.m4 605856870b ./libobjc/archive.c ! 171497277b ./libobjc/ChangeLog 3477231866b ./libobjc/class.c 1748737547b ./libobjc/config.h.in 3049756062b ./libobjc/configure --- 13429,13435 ---- 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 *************** *** 13385,13391 **** 4072125181b ./libobjc/libobjc_entry.c 4260228535b ./libobjc/linking.m 2398517524b ./libobjc/makefile.dos ! 1555626783b ./libobjc/Makefile.in 687879051b ./libobjc/misc.c 1752870170b ./libobjc/nil_method.c 638422313b ./libobjc/NXConstStr.m --- 13442,13448 ---- 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 *************** *** 13425,13436 **** 60531382b ./libobjc/thr-solaris.c 2005277748b ./libobjc/thr-vxworks.c 2963027857b ./libobjc/thr-win32.c ! 1220048278b ./libstdc++-v3/acconfig.h ! 3510479713b ./libstdc++-v3/acinclude.m4 ! 1802923025b ./libstdc++-v3/aclocal.m4 ! 3206079062b ./libstdc++-v3/ChangeLog 1996982572b ./libstdc++-v3/ChangeLog-2000 3665233589b ./libstdc++-v3/ChangeLog-2001 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 --- 13482,13497 ---- 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 *************** *** 13452,13462 **** 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 ! 3637219689b ./libstdc++-v3/config/cpu/sparc/sparc32/bits/atomicity.h ! 1609193065b ./libstdc++-v3/config/cpu/sparc/sparc64/bits/atomicity.h 785222978b ./libstdc++-v3/config/cpu/x86-64/bits/atomicity.h 4180289496b ./libstdc++-v3/config/cpu/x86-64/bits/cpu_limits.h ! 3694036271b ./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 --- 13513,13522 ---- 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 *************** *** 13465,13494 **** 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 ! 2918282062b ./libstdc++-v3/config/linker-map.gnu ! 773330578b ./libstdc++-v3/config/locale/generic/c_locale.cc ! 785097262b ./libstdc++-v3/config/locale/generic/c_locale.h 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 ! 3466940416b ./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 ! 1199479240b ./libstdc++-v3/config/locale/generic/time_members.cc ! 781005318b ./libstdc++-v3/config/locale/gnu/c_locale.cc ! 2998667708b ./libstdc++-v3/config/locale/gnu/c_locale.h ! 3774435712b ./libstdc++-v3/config/locale/gnu/collate_members.cc ! 3212021663b ./libstdc++-v3/config/locale/gnu/ctype_members.cc ! 2575517154b ./libstdc++-v3/config/locale/gnu/messages_members.cc ! 3686696267b ./libstdc++-v3/config/locale/gnu/messages_members.h ! 1229527183b ./libstdc++-v3/config/locale/gnu/monetary_members.cc ! 4180020740b ./libstdc++-v3/config/locale/gnu/numeric_members.cc ! 1982441854b ./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 ! 3490831019b ./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 --- 13525,13558 ---- 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 *************** *** 13511,13519 **** 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 ! 1728709835b ./libstdc++-v3/config/os/gnu-linux/bits/ctype_base.h 577770049b ./libstdc++-v3/config/os/gnu-linux/bits/ctype_inline.h ! 2657263605b ./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 --- 13575,13583 ---- 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 *************** *** 13535,13542 **** 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 ! 3131508399b ./libstdc++-v3/config/os/newlib/bits/ctype_inline.h ! 780060341b ./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 --- 13599,13606 ---- 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 *************** *** 13555,13568 **** 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 ! 3654425883b ./libstdc++-v3/configure 3116040814b ./libstdc++-v3/configure.host ! 2344837706b ./libstdc++-v3/configure.in ! 3392026093b ./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 ! 2699837250b ./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 --- 13619,13632 ---- 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 *************** *** 13572,13627 **** 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 ! 3326490253b ./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 ! 2419103289b ./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 ! 2624515000b ./libstdc++-v3/docs/html/17_intro/howto.html 3565645043b ./libstdc++-v3/docs/html/17_intro/libstdc++-assign.txt ! 2208482093b ./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 ! 2042979184b ./libstdc++-v3/docs/html/17_intro/RELEASE-NOTES ! 1553498574b ./libstdc++-v3/docs/html/17_intro/TODO ! 2234420344b ./libstdc++-v3/docs/html/18_support/howto.html ! 1891872084b ./libstdc++-v3/docs/html/19_diagnostics/howto.html ! 797227370b ./libstdc++-v3/docs/html/20_util/howto.html 2326263830b ./libstdc++-v3/docs/html/21_strings/gotw29a.txt ! 933711313b ./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 ! 2957885157b ./libstdc++-v3/docs/html/22_locale/codecvt.html ! 2826225921b ./libstdc++-v3/docs/html/22_locale/ctype.html ! 2008651243b ./libstdc++-v3/docs/html/22_locale/howto.html ! 60951948b ./libstdc++-v3/docs/html/22_locale/locale.html ! 2041856691b ./libstdc++-v3/docs/html/22_locale/messages.html ! 461815841b ./libstdc++-v3/docs/html/23_containers/howto.html 3458392326b ./libstdc++-v3/docs/html/23_containers/wrappers_h.txt ! 403270116b ./libstdc++-v3/docs/html/24_iterators/howto.html ! 2968708740b ./libstdc++-v3/docs/html/25_algorithms/howto.html ! 2926171563b ./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 ! 20954860b ./libstdc++-v3/docs/html/27_io/howto.html ! 3668951243b ./libstdc++-v3/docs/html/configopts.html ! 1719318488b ./libstdc++-v3/docs/html/documentation.html ! 3529196048b ./libstdc++-v3/docs/html/explanations.html ! 3104075238b ./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 ! 1724723596b ./libstdc++-v3/docs/html/ext/sgiexts.html ! 3616482744b ./libstdc++-v3/docs/html/faq/index.html ! 1633498853b ./libstdc++-v3/docs/html/faq/index.txt ! 1237174426b ./libstdc++-v3/docs/html/install.html 2049389478b ./libstdc++-v3/docs/html/lib3styles.css ! 3712956921b ./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 --- 13636,13693 ---- 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 *************** *** 13660,13698 **** 1420771511b ./libstdc++-v3/include/backward/tree.h 3803139445b ./libstdc++-v3/include/backward/vector.h 4104762506b ./libstdc++-v3/include/bits/basic_ios.h ! 2319127434b ./libstdc++-v3/include/bits/basic_ios.tcc 1196444434b ./libstdc++-v3/include/bits/basic_string.h ! 2433152311b ./libstdc++-v3/include/bits/basic_string.tcc 179433314b ./libstdc++-v3/include/bits/boost_concept_check.h ! 4221694041b ./libstdc++-v3/include/bits/c++config 3498736544b ./libstdc++-v3/include/bits/char_traits.h ! 229999844b ./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 ! 381872118b ./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 ! 1556465309b ./libstdc++-v3/include/bits/ios_base.h ! 4043927392b ./libstdc++-v3/include/bits/istream.tcc ! 1700678698b ./libstdc++-v3/include/bits/locale_facets.h ! 2625853133b ./libstdc++-v3/include/bits/locale_facets.tcc ! 2301356812b ./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 ! 1855208508b ./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 ! 2540378118b ./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 --- 13726,13764 ---- 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 *************** *** 13716,13724 **** 1954571679b ./libstdc++-v3/include/bits/stl_uninitialized.h 1635426571b ./libstdc++-v3/include/bits/stl_vector.h 466836896b ./libstdc++-v3/include/bits/streambuf_iterator.h ! 788216751b ./libstdc++-v3/include/bits/streambuf.tcc 99981565b ./libstdc++-v3/include/bits/stream_iterator.h ! 1646222939b ./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 --- 13782,13790 ---- 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 *************** *** 13843,13867 **** 177834210b ./libstdc++-v3/include/ext/rope 836293130b ./libstdc++-v3/include/ext/ropeimpl.h 4160164241b ./libstdc++-v3/include/ext/slist ! 2985626209b ./libstdc++-v3/include/ext/stdio_filebuf.h 2805137138b ./libstdc++-v3/include/ext/stl_hash_fun.h 1833363198b ./libstdc++-v3/include/ext/stl_hashtable.h ! 3615598422b ./libstdc++-v3/include/ext/stl_rope.h 3797873942b ./libstdc++-v3/include/Makefile.am ! 3100033549b ./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 ! 735018069b ./libstdc++-v3/include/std/std_iomanip.h ! 3189740242b ./libstdc++-v3/include/std/std_iosfwd.h 2056599714b ./libstdc++-v3/include/std/std_ios.h ! 3699343429b ./libstdc++-v3/include/std/std_iostream.h 270752150b ./libstdc++-v3/include/std/std_istream.h 3826418885b ./libstdc++-v3/include/std/std_iterator.h ! 3811165801b ./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 --- 13909,13933 ---- 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 *************** *** 13870,13876 **** 3467401292b ./libstdc++-v3/include/std/std_ostream.h 1570707417b ./libstdc++-v3/include/std/std_queue.h 2180214858b ./libstdc++-v3/include/std/std_set.h ! 4147065580b ./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 --- 13936,13942 ---- 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 *************** *** 13878,13884 **** 4158492065b ./libstdc++-v3/include/std/std_utility.h 362016596b ./libstdc++-v3/include/std/std_valarray.h 125145631b ./libstdc++-v3/include/std/std_vector.h ! 123037152b ./libstdc++-v3/libio/ChangeLog 2122576197b ./libstdc++-v3/libio/filedoalloc.c 3590060213b ./libstdc++-v3/libio/fileops.c 314955067b ./libstdc++-v3/libio/_G_config.h --- 13944,13950 ---- 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 *************** *** 13890,13904 **** 4269898080b ./libstdc++-v3/libio/libio.h 276542374b ./libstdc++-v3/libio/libioP.h 226381804b ./libstdc++-v3/libio/Makefile.am ! 3829396828b ./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 ! 1192225650b ./libstdc++-v3/libmath/Makefile.am ! 108374429b ./libstdc++-v3/libmath/Makefile.in 346371220b ./libstdc++-v3/libmath/mathconf.h 1759197966b ./libstdc++-v3/libmath/nan.c 1774241233b ./libstdc++-v3/libmath/signbit.c --- 13956,13970 ---- 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 *************** *** 13922,13928 **** 1338501219b ./libstdc++-v3/libsupc++/exception 3453419455b ./libstdc++-v3/libsupc++/exception_defines.h 2343038402b ./libstdc++-v3/libsupc++/Makefile.am ! 800459218b ./libstdc++-v3/libsupc++/Makefile.in 4225132204b ./libstdc++-v3/libsupc++/new 2545598190b ./libstdc++-v3/libsupc++/new_handler.cc 2558289852b ./libstdc++-v3/libsupc++/new_op.cc --- 13988,13994 ---- 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 *************** *** 13936,13943 **** 2283435214b ./libstdc++-v3/libsupc++/typeinfo 875479559b ./libstdc++-v3/libsupc++/unwind-cxx.h 712738859b ./libstdc++-v3/libsupc++/vec.cc ! 514484816b ./libstdc++-v3/Makefile.am ! 2853760935b ./libstdc++-v3/Makefile.in 2396933860b ./libstdc++-v3/mkcheck.in 3790569303b ./libstdc++-v3/mkcshadow 805804711b ./libstdc++-v3/mkinclosure --- 14002,14009 ---- 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 *************** *** 13945,13982 **** 4161545945b ./libstdc++-v3/po/fr.po 571561184b ./libstdc++-v3/po/libstdc++.pot 2710223631b ./libstdc++-v3/po/Makefile.am ! 2742214156b ./libstdc++-v3/po/Makefile.in 2014452913b ./libstdc++-v3/po/POTFILES.in 1352447199b ./libstdc++-v3/po/string_literals.cc 201474883b ./libstdc++-v3/README ! 33119601b ./libstdc++-v3/src/bitset.cc ! 3432581077b ./libstdc++-v3/src/codecvt.cc 252828227b ./libstdc++-v3/src/complex_io.cc ! 3518329104b ./libstdc++-v3/src/concept-inst.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 ! 650049293b ./libstdc++-v3/src/globals.cc 62109486b ./libstdc++-v3/src/io-inst.cc ! 4223583336b ./libstdc++-v3/src/ios.cc 3318878382b ./libstdc++-v3/src/istream-inst.cc 2798828124b ./libstdc++-v3/src/limits.cc ! 730498888b ./libstdc++-v3/src/locale.cc ! 2844654332b ./libstdc++-v3/src/locale-inst.cc ! 3672007895b ./libstdc++-v3/src/localename.cc ! 1177370419b ./libstdc++-v3/src/Makefile.am ! 391507861b ./libstdc++-v3/src/Makefile.in ! 796578536b ./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 ! 693942221b ./libstdc++-v3/src/string-inst.cc ! 3219376587b ./libstdc++-v3/src/strstream.cc 3557593608b ./libstdc++-v3/src/valarray-inst.cc ! 2281175186b ./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 --- 14011,14049 ---- 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 *************** *** 14019,14025 **** 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 ! 1038697695b ./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 --- 14086,14092 ---- 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 *************** *** 14039,14045 **** 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 ! 2466264209b ./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 --- 14106,14112 ---- 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 *************** *** 14053,14059 **** 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 ! 3268934912b ./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 --- 14120,14126 ---- 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 *************** *** 14077,14086 **** 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 ! 296571445b ./libstdc++-v3/testsuite/22_locale/num_put_members_char.cc ! 263265882b ./libstdc++-v3/testsuite/22_locale/num_put_members_wchar_t.cc 2592583186b ./libstdc++-v3/testsuite/22_locale/operators.cc ! 2943563602b ./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 --- 14144,14153 ---- 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 *************** *** 14158,14163 **** --- 14225,14231 ---- 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 *************** *** 14178,14191 **** 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 ! 1771504798b ./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 ! 2016922492b ./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 ! 2588015379b ./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 --- 14246,14259 ---- 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 *************** *** 14196,14202 **** 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 ! 4111323148b ./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 --- 14264,14270 ---- 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 *************** *** 14210,14217 **** 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 ! 4146600781b ./libstdc++-v3/testsuite/27_io/stringstream_members.cc 365205754b ./libstdc++-v3/testsuite/27_io/wide_stream_objects.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 --- 14278,14286 ---- 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 *************** *** 14232,14242 **** 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 ! 2294107082b ./libstdc++-v3/testsuite/Makefile.am ! 328430332b ./libstdc++-v3/testsuite/Makefile.in 1352817621b ./libstdc++-v3/testsuite/printnow.c 443433597b ./libstdc++-v3/testsuite/README ! 1201816317b ./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 --- 14301,14311 ---- 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 *************** *** 14249,14256 **** 3594421631b ./ltcf-gcj.sh 30175378b ./ltconfig 2369122487b ./ltmain.sh ! 1311810028b ./MAINTAINERS ! 411059343b ./maintainer-scripts/ChangeLog 1905552954b ./maintainer-scripts/crontab 4171969357b ./maintainer-scripts/doc_exclude 3945756456b ./maintainer-scripts/gcc_release --- 14318,14325 ---- 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 *************** *** 14261,14267 **** 612565256b ./maintainer-scripts/update_web_docs 2568232642b ./maintainer-scripts/update_web_docs_libstdcxx 1719002991b ./maintainer-scripts/update_web_docs_old ! 136033403b ./Makefile.in 990942143b ./missing 2656466409b ./mkdep 4236112450b ./mkinstalldirs --- 14330,14336 ---- 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 *************** *** 14275,14281 **** 2360440520b ./zlib/algorithm.txt 1537725969b ./zlib/amiga/Makefile.pup 3919607569b ./zlib/amiga/Makefile.sas ! 1610764448b ./zlib/ChangeLog 3062272324b ./zlib/ChangeLog.gcj 720988996b ./zlib/compress.c 1404772722b ./zlib/configure --- 14344,14350 ---- 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 *************** *** 14345,14352 **** 2634414216b ./zlib/inftrees.h 788977750b ./zlib/infutil.c 2297950969b ./zlib/infutil.h ! 3601491819b ./zlib/Makefile.am ! 1642730173b ./zlib/Makefile.in 3707467235b ./zlib/Makefile.riscos 196153738b ./zlib/maketree.c 3901505907b ./zlib/Make_vms.com --- 14414,14421 ---- 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 diff -Nrc3pad gcc-3.2/BUGS gcc-3.2.1/BUGS *** gcc-3.2/BUGS Wed Aug 14 09:31:15 2002 --- gcc-3.2.1/BUGS Tue Nov 19 18:11:49 2002 *************** References *** 585,591 **** 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_bugs.html 29. http://www.gnu.org/software/glibc/ 30. http://gcc.gnu.org/bugs.html#report 31. http://www.ncits.org/cplusplus.htm --- 585,591 ---- 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 diff -Nrc3pad gcc-3.2/ChangeLog gcc-3.2.1/ChangeLog *** gcc-3.2/ChangeLog Wed Aug 14 08:58:56 2002 --- gcc-3.2.1/ChangeLog Tue Nov 19 17:47:49 2002 *************** *** 1,3 **** --- 1,53 ---- + 2002-11-19 Release Manager + + * GCC 3.2.1 Released. + + 2002-11-19 Release Manager + + * GCC 3.2.1 Released. + + 2002-11-18 Release Manager + + * GCC 3.2.1 Released. + + 2002-11-18 Gerald Pfeifer + + * MAINTAINERS: Complete James Dennett's entry. + + 2002-11-18  Eric Botcazou   + + * MAINTAINERS (Write After Approval): Add myself. + + 2002-11-14 Gabriel Dos Reis + + * MAINTAINERS: Remove from write-after-approval-list, uniformize + email. + + 2002-11-08 Neil Booth + + * MAINTAINERS: Fix email address. + + 2002-11-05 Nick Clifton + + * MAINTAINERS: Fix typo in my email address. + + 2002-11-05 Paolo Carlini + + * MAINTAINERS (Write After Approval): Remove myself. + (Various Maintainers: c++ runtime libs): Add myself. + + 2002-10-07 Kaveh R. Ghazi + + * Makefile.in (CFLAGS_FOR_TARGET): Add -O2. + + 2002-09-14 Kazu Hirata + + * MAINTAINERS: Update my email address. + + 2002-09-14 Stephane Carrez + + * MAINTAINERS: Update my email address. + 2002-08-14 Release Manager * GCC 3.2 Released. diff -Nrc3pad gcc-3.2/FAQ gcc-3.2.1/FAQ *** gcc-3.2/FAQ Wed Aug 14 09:31:15 2002 --- gcc-3.2.1/FAQ Tue Nov 19 18:11:50 2002 *************** Does GCC work on my platform? *** 172,179 **** information about known problems with installing or using GCC on particular platforms. These are included in the sources for a release in INSTALL/specific.html, and the [43]latest version is always ! available at the GCC web site. Reports of successful builds for GCC ! versions [44]3.0 and [45]2.95 are also available at the web site. _________________________________________________________________ Installation --- 172,179 ---- information about known problems with installing or using GCC on particular platforms. These are included in the sources for a release in INSTALL/specific.html, and the [43]latest version is always ! available at the GCC web site. Reports of [44]successful builds for ! several versions of GCC are also available at the web site. _________________________________________________________________ Installation *************** How to install multiple versions of GCC *** 219,225 **** wish to be sure about which version you are invoking. If you use --prefix, GCC may have difficulty locating a GNU assembler ! or linker on your system, [46]GCC can not find GNU as/GNU ld explains how to deal with this. Another option that may be easier is to use the --program-prefix= or --- 219,225 ---- wish to be sure about which version you are invoking. If you use --prefix, GCC may have difficulty locating a GNU assembler ! or linker on your system, [45]GCC can not find GNU as/GNU ld explains how to deal with this. Another option that may be easier is to use the --program-prefix= or *************** GCC can not find GNU as/GNU ld *** 285,291 **** versions of those programs. To ensure that GCC finds the GNU assembler (the GNU loader), which are ! required by [47]some configurations, you should configure these with the same --prefix option as you used for GCC. Then build & install GNU as (GNU ld) and proceed with building GCC. --- 285,291 ---- versions of those programs. To ensure that GCC finds the GNU assembler (the GNU loader), which are ! required by [46]some configurations, you should configure these with the same --prefix option as you used for GCC. Then build & install GNU as (GNU ld) and proceed with building GCC. *************** Unable to run the testsuite *** 339,345 **** If you get a message about unable to find "standard.exp" when trying to run the GCC testsuites, then your dejagnu is too old to run the GCC tests. You will need to get a newer version of dejagnu from ! [48]http://www.gnu.org/software/dejagnu/dejagnu.html. _________________________________________________________________ How do I pass flags like -fnew-abi to the testsuite? --- 339,345 ---- If you get a message about unable to find "standard.exp" when trying to run the GCC testsuites, then your dejagnu is too old to run the GCC tests. You will need to get a newer version of dejagnu from ! [47]http://www.gnu.org/software/dejagnu/dejagnu.html. _________________________________________________________________ How do I pass flags like -fnew-abi to the testsuite? *************** How can I run the test suite with multip *** 374,380 **** Is there a stringstream / sstream for GCC 2.95.2? Yes, it's at: ! [49]http://gcc.gnu.org/ml/libstdc++/2000-q2/msg00700/sstream. _________________________________________________________________ Miscellaneous --- 374,380 ---- Is there a stringstream / sstream for GCC 2.95.2? Yes, it's at: ! [48]http://gcc.gnu.org/ml/libstdc++/2000-q2/msg00700/sstream. _________________________________________________________________ Miscellaneous *************** dynamic_cast, throw, typeid don't work w *** 486,492 **** [basic.def.odr]. For more details about the way that GCC implements these and other C++ ! features, please read the [50]ABI specification. Note the std::typeinfo_t objects which must be resolved all begin with "_ZTS". Refer to ld's documentation for a description of the "-E" & "-Bsymbolic" flags. --- 486,492 ---- [basic.def.odr]. For more details about the way that GCC implements these and other C++ ! features, please read the [49]ABI specification. Note the std::typeinfo_t objects which must be resolved all begin with "_ZTS". Refer to ld's documentation for a description of the "-E" & "-Bsymbolic" flags. *************** Why do I need autoconf, bison, xgettext, *** 517,526 **** rebuild GCC. In general, the current versions of these tools from ! [51]ftp://ftp.gnu.org/gnu/ will work. At present, Autoconf 2.50 is not supported, and you will need to use Autoconf 2.13; work is in progress to fix this problem. Also look at ! [52]ftp://gcc.gnu.org/pub/gcc/infrastructure/ for any special versions of packages. _________________________________________________________________ --- 517,526 ---- rebuild GCC. In general, the current versions of these tools from ! [50]ftp://ftp.gnu.org/gnu/ will work. At present, Autoconf 2.50 is not supported, and you will need to use Autoconf 2.13; work is in progress to fix this problem. Also look at ! [51]ftp://gcc.gnu.org/pub/gcc/infrastructure/ for any special versions of packages. _________________________________________________________________ *************** References *** 643,654 **** 41. http://gcc.gnu.org/bugs.html 42. http://gcc.gnu.org/bugs.html 43. http://gcc.gnu.org/install/specific.html ! 44. http://gcc.gnu.org/gcc-3.0/buildstat.html ! 45. http://gcc.gnu.org/gcc-2.95/buildstat.html ! 46. http://gcc.gnu.org/faq.html#gas ! 47. http://gcc.gnu.org/install/specific.html ! 48. http://www.gnu.org/software/dejagnu/dejagnu.html ! 49. http://gcc.gnu.org/ml/libstdc++/2000-q2/msg00700/sstream ! 50. http://www.codesourcery.com/cxx-abi/ ! 51. ftp://ftp.gnu.org/gnu/ ! 52. ftp://gcc.gnu.org/pub/gcc/infrastructure/ --- 643,653 ---- 41. http://gcc.gnu.org/bugs.html 42. http://gcc.gnu.org/bugs.html 43. http://gcc.gnu.org/install/specific.html ! 44. http://gcc.gnu.org/buildstat.html ! 45. http://gcc.gnu.org/faq.html#gas ! 46. http://gcc.gnu.org/install/specific.html ! 47. http://www.gnu.org/software/dejagnu/dejagnu.html ! 48. http://gcc.gnu.org/ml/libstdc++/2000-q2/msg00700/sstream ! 49. http://www.codesourcery.com/cxx-abi/ ! 50. ftp://ftp.gnu.org/gnu/ ! 51. ftp://gcc.gnu.org/pub/gcc/infrastructure/ diff -Nrc3pad gcc-3.2/GNATS gcc-3.2.1/GNATS *** gcc-3.2/GNATS Wed Aug 14 09:31:15 2002 --- gcc-3.2.1/GNATS Tue Nov 19 18:11:50 2002 *************** *** 1,21 **** ! gccbug and gnatsweb ! GNATS is the GNU bug tracking system, and it is now used to track GCC ! bug reports, as well. Before submitting a bug report, please read the ! [1]general instructions. ! The preferred way of submitting a bug report is by means of the gccbug ! program that is automatically installed with current versions of GCC ! and submits the bug report by e-mail. ! If this is not possible, please use the [2]gnatsweb interface. Make ! sure you include an e-mail address, so we can inform you when the ! status of your report changes. ! Both techniques use the same bug database. ! Filling out a report The bug report form provides a number of fields; you'll need to fill-out most of those (as indicated below) to provide a complete --- 1,23 ---- ! Submitting Bug Reports using GNATS ! gnatsweb and gccbug ! GNATS, the GNU bug tracking system, is used to track GCC bug reports. ! Before submitting a bug report, please read the [1]general ! instructions. ! The preferred way to submit a bug report is by means of the ! [2]gnatsweb interface. Make sure you include an e-mail address, so we ! can inform you when the status of your report changes. ! Another way is to use the gccbug program that is automatically ! installed with current versions of GCC, which submits the bug report ! by e-mail. ! Both techniques use the same GNATS bug database. ! ! Filling out a report The bug report form provides a number of fields; you'll need to fill-out most of those (as indicated below) to provide a complete diff -Nrc3pad gcc-3.2/INSTALL/binaries.html gcc-3.2.1/INSTALL/binaries.html *** gcc-3.2/INSTALL/binaries.html Wed Aug 14 09:31:15 2002 --- gcc-3.2.1/INSTALL/binaries.html Tue Nov 19 18:11:50 2002 *************** contact their makers. *** 20,26 ****
  • AIX: --- 20,26 ----
    • AIX: *************** not contain the latest version of GCC, b *** 64,70 **** bootstrapping the compiler. An updated version of that disk is in the works. !

      Return to the GCC Installation page --- 64,70 ---- bootstrapping the compiler. An updated version of that disk is in the works. !


      Return to the GCC Installation page diff -Nrc3pad gcc-3.2/INSTALL/build.html gcc-3.2.1/INSTALL/build.html *** gcc-3.2/INSTALL/build.html Wed Aug 14 09:31:15 2002 --- gcc-3.2.1/INSTALL/build.html Tue Nov 19 18:11:50 2002 *************** soon as they are no longer needed. *** 88,98 ****

      If you want to save additional space during the bootstrap and in the final installation as well, you can build the compiler binaries ! without debugging information with make CFLAGS='-O' LIBCFLAGS='-g ! -O2' LIBCXXFLAGS='-g -O2 -fno-implicit-templates' bootstrap. This will save roughly 40% of disk space both for the bootstrap and the final installation. (Libraries will still contain debugging information.)

      If you wish to use non-default GCC flags when compiling the stage2 and stage3 compilers, set BOOT_CFLAGS on the command line when doing make bootstrap. Non-default optimization flags are less well --- 88,101 ----

      If you want to save additional space during the bootstrap and in the final installation as well, you can build the compiler binaries ! without debugging information as in the following example. This will save roughly 40% of disk space both for the bootstrap and the final installation. (Libraries will still contain debugging information.) +

           make CFLAGS='-O' LIBCFLAGS='-g -O2' \
      +        LIBCXXFLAGS='-g -O2 -fno-implicit-templates' bootstrap
      + 
      +

      If you wish to use non-default GCC flags when compiling the stage2 and stage3 compilers, set BOOT_CFLAGS on the command line when doing make bootstrap. Non-default optimization flags are less well *************** used to disable building the Ada front e *** 184,192 ****

      Additional build tools (such as gnatmake) or a working GNAT run-time library installation are usually not required. However, ! if you want to boostrap the compiler using a minimal version of GNAT, you have to issue the following commands before invoking make ! boostrap (this assumes that you start with an unmodified and consistent source distribution):

          cd srcdir/gcc/ada
      --- 187,195 ----
        
        

      Additional build tools (such as gnatmake) or a working GNAT run-time library installation are usually not required. However, ! if you want to bootstrap the compiler using a minimal version of GNAT, you have to issue the following commands before invoking make ! bootstrap (this assumes that you start with an unmodified and consistent source distribution):

          cd srcdir/gcc/ada
      *************** following commands (assuming make<
      *** 215,221 ****
        

      Currently, when compiling the Ada front end, you cannot use the parallel build feature described in the previous section. !


      Return to the GCC Installation page --- 218,224 ----

      Currently, when compiling the Ada front end, you cannot use the parallel build feature described in the previous section. !


      Return to the GCC Installation page diff -Nrc3pad gcc-3.2/INSTALL/configure.html gcc-3.2.1/INSTALL/configure.html *** gcc-3.2/INSTALL/configure.html Wed Aug 14 09:31:15 2002 --- gcc-3.2.1/INSTALL/configure.html Tue Nov 19 18:11:50 2002 *************** subdirectory of objdir or vic *** 88,95 ****

      These additional options control where certain parts of the distribution are installed. Normally you should not need to use these options.

      ! !
      --exec-prefix=dirname
      Specify the toplevel installation directory for architecture-dependent files. The default is prefix. --- 88,94 ----

      These additional options control where certain parts of the distribution are installed. Normally you should not need to use these options.

      !
      --exec-prefix=dirname
      Specify the toplevel installation directory for architecture-dependent files. The default is prefix. *************** complex conversion patterns. As a basic *** 155,163 **** suffix) are prepended (appended) before further transformations can happen with a special transformation script pattern. !

      As currently implemented, this options only take effect for native builds; cross compiler binaries' names are not transformed even when a ! transformation is explicitly asked for by one of this options.

      For native builds, some of the installed programs are also installed with the target alias in front of their name, as in --- 154,162 ---- suffix) are prepended (appended) before further transformations can happen with a special transformation script pattern. !

      As currently implemented, these options only take effect for native builds; cross compiler binaries' names are not transformed even when a ! transformation is explicitly asked for by one of these options.

      For native builds, some of the installed programs are also installed with the target alias in front of their name, as in *************** any in that directory--are not part of G *** 193,198 **** --- 192,234 ---- programs--perhaps many others. (GCC installs its own header files in another directory which is based on the --prefix value.) +

      Both the local-prefix include directory and the GCC-prefix include + directory are part of GCC's "system include" directories. Although these + two directories are not fixed, they need to be searched in the proper + order for the correct processing of the include_next directive. The + local-prefix include directory is searched before the GCC-prefix + include directory. Another characteristic of system include directories + is that pedantic warnings are turned off for headers in these directories. + +

      Some autoconf macros add -I directory options to the + compiler command line, to ensure that directories containing installed + packages' headers are searched. When directory is one of GCC's + system include directories, GCC will ignore the option so that system + directories continue to be processed in the correct order. This + may result in a search order different from what was specified but the + directory will still be searched. + +

      GCC automatically searches for ordinary libraries using + GCC_EXEC_PREFIX. Thus, when the same installation prefix is + used for both GCC and packages, GCC will automatically search for + both headers and libraries. This provides a configuration that is + easy to use. GCC behaves in a manner similar to that when it is + installed as a system compiler in /usr. + +

      Sites that need to install multiple versions of GCC may not want to + use the above simple configuration. It is possible to use the + --program-prefix, --program-suffix and + --program-transform-name options to install multiple versions + into a single directory, but it may be simpler to use different prefixes + and the --with-local-prefix option to specify the location of the + site-specific files for each version. It will then be necessary for + users to specify explicitly the location of local site libraries + (e.g., with LIBRARY_PATH). + +

      The same value can be used for both --with-local-prefix and + --prefix provided it is not /usr. This can be used + to avoid the default search of /usr/local/include. +

      Do not specify /usr as the --with-local-prefix! The directory you use for --with-local-prefix must not contain any of the system's standard header files. If it did contain *************** configured with --with-gnu-as--with-as=pathname. !

      The systems where it makes a difference whether you use the GNU assembler are ! hppa1.0-any-any, hppa1.1-any-any, ! i386-any-sysv, i386-any-isc, ! i860-any-bsd, m68k-bull-sysv, ! m68k-hp-hpux, m68k-sony-bsd, ! m68k-altos-sysv, m68000-hp-hpux, ! m68000-att-sysv, any-lynx-lynxos, ! and mips-any. ! On any other system, --with-gnu-as has no effect.

      On the systems listed above (except for the HP-PA, for ISC on the 386, and for mips-sgi-irix5.*), if you use the GNU assembler, --- 272,296 ---- assembler installed on your system, you may want to use this option in connection with --with-as=pathname. !

      The following systems are the only ones where it makes a difference ! whether you use the GNU assembler. On any other system, ! --with-gnu-as has no effect. ! !

        !
      • hppa1.0-any-any !
      • hppa1.1-any-any !
      • i386-any-sysv !
      • i386-any-isc !
      • i860-any-bsd !
      • m68k-bull-sysv !
      • m68k-hp-hpux !
      • m68k-sony-bsd !
      • m68k-altos-sysv !
      • m68000-hp-hpux !
      • m68000-att-sysv !
      • any-lynx-lynxos !
      • mips-any !

      On the systems listed above (except for the HP-PA, for ISC on the 386, and for mips-sgi-irix5.*), if you use the GNU assembler, *************** predefined set of them. *** 318,325 ****

      Some targets provide finer-grained control over which multilibs are built (e.g., --disable-softfloat):

      ! !
      arc-*-elf*
      biendian.
      arm-*-* --- 364,370 ----

      Some targets provide finer-grained control over which multilibs are built (e.g., --disable-softfloat):

      !
      arc-*-elf*
      biendian.
      arm-*-* *************** forward to maintain the port. *** 544,553 ****
      --with-headers=dir
      Specifies a directory which has target include files. ! This options is required when building a cross compiler, if prefix/target/sys-include doesn't pre-exist. These include files will be copied into the gcc install directory. ! Fixincludes will be run on these files to make them compatible with GCC.
      --with-libs=``dir1 dir2 ... dirN''
      Specifies a list of directories which contain the target runtime --- 589,598 ----
      --with-headers=dir
      Specifies a directory which has target include files. ! This option is required when building a cross compiler, if prefix/target/sys-include doesn't pre-exist. These include files will be copied into the gcc install directory. ! fixincludes will be run on these files to make them compatible with GCC.
      --with-libs=``dir1 dir2 ... dirN''
      Specifies a list of directories which contain the target runtime *************** omitted from libgcc.a on th *** 564,570 **** --disable option and that each --with option has a corresponding --without option. !

      Return to the GCC Installation page --- 609,615 ---- --disable option and that each --with option has a corresponding --without option. !


      Return to the GCC Installation page diff -Nrc3pad gcc-3.2/INSTALL/download.html gcc-3.2.1/INSTALL/download.html *** gcc-3.2/INSTALL/download.html Wed Aug 14 09:31:15 2002 --- gcc-3.2.1/INSTALL/download.html Tue Nov 19 18:11:50 2002 *************** components of the binutils you intend to *** 39,45 **** (bfd, binutils, gas, gprof, ld, opcodes, ...) to the directory containing the GCC sources. !


      Return to the GCC Installation page --- 39,45 ---- (bfd, binutils, gas, gprof, ld, opcodes, ...) to the directory containing the GCC sources. !


      Return to the GCC Installation page diff -Nrc3pad gcc-3.2/INSTALL/finalinstall.html gcc-3.2.1/INSTALL/finalinstall.html *** gcc-3.2/INSTALL/finalinstall.html Wed Aug 14 09:31:15 2002 --- gcc-3.2.1/INSTALL/finalinstall.html Tue Nov 19 18:11:50 2002 *************** parts of the compiler in libd *** 27,36 **** info format in infodir (normally prefix/info).

      If you built a released version of GCC using make bootstrap then please ! quickly review the build status page for ! 3.1, ! 3.0, or ! 2.95. If your system is not listed for the version of GCC that you built, send a note to gcc@gcc.gnu.org indicating --- 27,34 ---- info format in infodir (normally prefix/info).

      If you built a released version of GCC using make bootstrap then please ! quickly review the build status page for your release, available from ! http://gcc.gnu.org/buildstat.html. If your system is not listed for the version of GCC that you built, send a note to gcc@gcc.gnu.org indicating *************** printing with programs such as dvi *** 88,94 **** buy printed manuals from the Free Software Foundation, though such manuals may not be for the most recent version of GCC. !


      Return to the GCC Installation page --- 86,92 ---- buy printed manuals from the Free Software Foundation, though such manuals may not be for the most recent version of GCC. !


      Return to the GCC Installation page diff -Nrc3pad gcc-3.2/INSTALL/gfdl.html gcc-3.2.1/INSTALL/gfdl.html *** gcc-3.2/INSTALL/gfdl.html Wed Aug 14 09:31:15 2002 --- gcc-3.2.1/INSTALL/gfdl.html Tue Nov 19 18:11:50 2002 *************** recommend releasing these examples in pa *** 373,380 **** free software license, such as the GNU General Public License, to permit their use in free software. !

      !

      Return to the GCC Installation page --- 373,379 ---- free software license, such as the GNU General Public License, to permit their use in free software. !


      Return to the GCC Installation page diff -Nrc3pad gcc-3.2/INSTALL/index.html gcc-3.2.1/INSTALL/index.html *** gcc-3.2/INSTALL/index.html Wed Aug 14 09:31:15 2002 --- gcc-3.2.1/INSTALL/index.html Tue Nov 19 18:11:50 2002 *************** more binaries exist that use them. *** 48,54 **** which are mostly obsolete but still contain some information which has not yet been merged into the main part of this manual. !


      Return to the GCC Installation page --- 48,54 ---- which are mostly obsolete but still contain some information which has not yet been merged into the main part of this manual. !


      Return to the GCC Installation page diff -Nrc3pad gcc-3.2/INSTALL/old.html gcc-3.2.1/INSTALL/old.html *** gcc-3.2/INSTALL/old.html Wed Aug 14 09:31:15 2002 --- gcc-3.2.1/INSTALL/old.html Tue Nov 19 18:11:50 2002 *************** by vmsconfig.com) to define *** 602,609 ****

      QSORT_WORKAROUND is always defined when GNU CC is compiled with VAX C, to avoid a problem in case gcclib.olb is not yet available. !

      !

      Return to the GCC Installation page --- 602,608 ----

      QSORT_WORKAROUND is always defined when GNU CC is compiled with VAX C, to avoid a problem in case gcclib.olb is not yet available. !


      Return to the GCC Installation page diff -Nrc3pad gcc-3.2/INSTALL/specific.html gcc-3.2.1/INSTALL/specific.html *** gcc-3.2/INSTALL/specific.html Wed Aug 14 09:31:15 2002 --- gcc-3.2.1/INSTALL/specific.html Tue Nov 19 18:11:50 2002 *************** GNU Compiler Collection on your machine. *** 119,125 ****

    !

    1750a-*-*

    --- 119,125 ----
!

1750a-*-*

*************** means that type char is rep *** 160,167 **** The 1750A's "Load/Store Upper/Lower Byte" instructions are not used by GCC. !

!

a29k

--- 160,166 ---- The 1750A's "Load/Store Upper/Lower Byte" instructions are not used by GCC. !

a29k

*************** in GCC 3.1. *** 175,189 ****

You may need to make a variant of the file a29k.h for your particular configuration. !

!

a29k-*-bsd

AMD Am29050 used in a system running a variant of BSD Unix. !

!

alpha*-*-*

--- 174,186 ----

You may need to make a variant of the file a29k.h for your particular configuration. !


a29k-*-bsd

AMD Am29050 used in a system running a variant of BSD Unix. !


alpha*-*-*

*************** Previous binutils releases had a number *** 197,204 **** debugging information, not the least of which is incorrect linking of shared libraries. !

!

alpha*-dec-osf*

--- 194,200 ---- debugging information, not the least of which is incorrect linking of shared libraries. !

alpha*-dec-osf*

*************** Tru64 UNIX) operating system, for exampl *** 209,214 **** --- 205,217 ----

Support for versions before alpha*-dec-osf4 is obsoleted in GCC 3.1. (These are the versions which identify themselves as DEC OSF/1.) +

In Digital Unix V4.0, virtual memory exhausted bootstrap failures + may be fixed by configuring with --with-gc=simple, + reconfiguring Kernel Virtual Memory and Swap parameters + per the /usr/sbin/sys_check Tuning Suggestions, + or applying the patch in + http://gcc.gnu.org/ml/gcc/2002-08/msg00822.html. +

In Tru64 UNIX V5.1, Compaq introduced a new assembler that does not currently (2001-06-13) work with mips-tfile. As a workaround, we need to use the old assembler, invoked via the barely documented *************** different depending on whether or not !


alphaev5-cray-unicosmk*

--- 275,281 ---- DBX. DEC is now aware of this problem with the assembler and hopes to provide a fix shortly. !

alphaev5-cray-unicosmk*

*************** need to tell GCC where to find the assem *** 290,313 **** simplest way to do so is by providing --with-as and --with-ld to configure, e.g. !

configure --with-as=/opt/ctl/bin/cam --with-ld=/opt/ctl/bin/cld ! --enable-languages=c

The comparison test during make bootstrap fails on Unicos/Mk because the assembler inserts timestamps into object files. You should be able to work around this by doing make all after getting this failure. !

!

arc-*-elf

Argonaut ARC processor. This configuration is intended for embedded systems. !

!

arm-*-aout

--- 292,314 ---- simplest way to do so is by providing --with-as and --with-ld to configure, e.g. !
    configure --with-as=/opt/ctl/bin/cam --with-ld=/opt/ctl/bin/cld \
!       --enable-languages=c
! 

The comparison test during make bootstrap fails on Unicos/Mk because the assembler inserts timestamps into object files. You should be able to work around this by doing make all after getting this failure. !


arc-*-elf

Argonaut ARC processor. This configuration is intended for embedded systems. !


arm-*-aout

*************** produce a.out format object *** 319,340 ****

You may need to make a variant of the file arm.h for your particular configuration. !

!

arm-*-elf

This configuration is intended for embedded systems. !

!

arm*-*-linux-gnu

We require GNU binutils 2.10 or newer. !

!

arm-*-riscix

--- 320,338 ----

You may need to make a variant of the file arm.h for your particular configuration. !


arm-*-elf

This configuration is intended for embedded systems. !


arm*-*-linux-gnu

We require GNU binutils 2.10 or newer. !


arm-*-riscix

*************** debugging, pass --with-gnu-asYou will need to install GNU sed before you can run configure. !

!

avr

--- 349,355 ----

You will need to install GNU sed before you can run configure. !


avr

*************** can also be obtained from: *** 379,386 ****

indicates that you should upgrade to a newer version of the binutils. !

!

c4x

--- 376,382 ----

indicates that you should upgrade to a newer version of the binutils. !


c4x

*************** can also be obtained from: *** 401,408 ****
  • http://www.elec.canterbury.ac.nz/c4x/ !

    !

    CRIS

    --- 397,403 ----
  • http://www.elec.canterbury.ac.nz/c4x/ !

    CRIS

    *************** or newer. For cris-axis-linux-gnu *** 433,440 **** information about this platform is available at http://developer.axis.com/. !

    !

    DOS

    --- 428,434 ---- information about this platform is available at http://developer.axis.com/. !

    DOS

    *************** any MSDOS compiler except itself. You n *** 445,459 **** compilation package DJGPP, which includes binaries as well as sources, and includes all the necessary compilation tools and libraries. !

    !

    dsp16xx

    A port to the AT&T DSP1610 family of processors. !

    !

    *-*-freebsd*

    --- 439,451 ---- compilation package DJGPP, which includes binaries as well as sources, and includes all the necessary compilation tools and libraries. !

    dsp16xx

    A port to the AT&T DSP1610 family of processors. !


    *-*-freebsd*

    *************** results on FreeBSD 3.0, 3.4, 4.0, 4.2, 4 *** 483,505 ****

    In principle, --enable-threads is now compatible with --enable-libgcj on FreeBSD. However, it has only been built ! and tested on i386-*-freebsd4.5 and alpha-*-freebsd5.0. The static library may be incorrectly built (symbols are missing at link time). There is a rare timing-based startup hang (probably involves an assupmtion about the thread library). Multi-threaded boehm-gc (required for libjava) exposes severe threaded signal-handling bugs on FreeBSD before 4.5-RELEASE. The alpha port may not fully bootstrap without some manual ! intervention: gcjh will crash with a floating-point exception while generating java/lang/Double.h (just copy the version built on ! i386-*-freebsd* and rerun the top-level gmake with no arguments and it should properly complete the bootstrap). Other CPU architectures supported by FreeBSD will require additional configuration tuning in, at the very least, both boehm-gc and libffi.

    Shared libgcc_s.so is now built and installed by default. !

    !

    elxsi-elxsi-bsd

    --- 475,498 ----

    In principle, --enable-threads is now compatible with --enable-libgcj on FreeBSD. However, it has only been built ! and tested on i386-*-freebsd4.5 and alpha-*-freebsd5.0. ! The static library may be incorrectly built (symbols are missing at link time). There is a rare timing-based startup hang (probably involves an assupmtion about the thread library). Multi-threaded boehm-gc (required for libjava) exposes severe threaded signal-handling bugs on FreeBSD before 4.5-RELEASE. The alpha port may not fully bootstrap without some manual ! intervention: gcjh will crash with a floating-point exception while generating java/lang/Double.h (just copy the version built on ! i386-*-freebsd* and rerun the top-level gmake with no ! arguments and it should properly complete the bootstrap). Other CPU architectures supported by FreeBSD will require additional configuration tuning in, at the very least, both boehm-gc and libffi.

    Shared libgcc_s.so is now built and installed by default. !


    elxsi-elxsi-bsd

    *************** compiling GCC. Please contact h8300-hms --- 501,507 ----

    Support for this processor is obsoleted in GCC 3.1. !


    h8300-hms

    *************** All code must be recompiled. The callin *** 522,535 **** first three arguments in function calls in registers. Structures are no longer a multiple of 2 bytes. !

    !

    hppa*-hp-hpux*

    We highly recommend using gas/binutils 2.8 or newer on all hppa platforms; you may encounter a variety of problems when using the HP ! assembler.

    Specifically, -g does not work on HP-UX (since that system uses a peculiar debugging format which GCC does not know about), unless you --- 514,527 ---- first three arguments in function calls in registers. Structures are no longer a multiple of 2 bytes. !


    hppa*-hp-hpux*

    We highly recommend using gas/binutils 2.8 or newer on all hppa platforms; you may encounter a variety of problems when using the HP ! assembler. The HP assembler does not work with the hppa64-hp-hpux11* ! port.

    Specifically, -g does not work on HP-UX (since that system uses a peculiar debugging format which GCC does not know about), unless you *************** use GAS and GDB and configure GCC with t *** 537,550 **** --with-gnu-as and --with-as=... options. !

    If you wish to use pa-risc 2.0 architecture support, you must use either ! the HP assembler, gas/binutils 2.11 or a recent snapshot of gas.

    More specific information to hppa*-hp-hpux* targets follows. !

    !

    hppa*-hp-hpux9

    --- 529,542 ---- --with-gnu-as and --with-as=... options. !

    If you wish to use the pa-risc 2.0 architecture support with a 32-bit ! runtime, you must use either the HP assembler, gas/binutils 2.11 or newer, ! or a recent snapshot of gas.

    More specific information to hppa*-hp-hpux* targets follows. !


    hppa*-hp-hpux9

    *************** shared libraries from working. Use the *** 557,564 **** shell. To avoid this problem set CONFIG_SHELL to /bin/ksh and SHELL to /bin/ksh in your environment. !

    !

    hppa*-hp-hpux10

    --- 549,555 ---- shell. To avoid this problem set CONFIG_SHELL to /bin/ksh and SHELL to /bin/ksh in your environment. !

    hppa*-hp-hpux10

    *************** during a make bootstrap. Y *** 579,608 **** saying make all after getting the failure from make bootstrap. !

    !

    hppa*-hp-hpux11

    !

    GCC 3.0 and up support HP-UX 11. You must use GNU binutils 2.11 or above on ! this platform. Thread support is not currently implemented for this ! platform, so --enable-threads does not work. ! See http://gcc.gnu.org/ml/gcc-prs/2002-01/msg00551.html ! and http://gcc.gnu.org/ml/gcc-bugs/2002-01/msg00663.html. ! GCC 2.95.x is not supported under HP-UX 11 and cannot be used to compile GCC 3.0 and up. Refer to binaries for information about obtaining precompiled GCC binaries for HP-UX. !

    !

    i370-*-*

    This port is very preliminary and has many known bugs. We hope to have a higher-quality port for this machine soon. !

    !

    *-*-linux-gnu

    --- 570,621 ---- saying make all after getting the failure from make bootstrap. !

    hppa*-hp-hpux11

    !

    GCC 3.0 and up support HP-UX 11. On 64-bit capable systems, there ! are two distinct ports. The hppa2.0w-hp-hpux11* port generates ! code for the 32-bit pa-risc runtime architecture. It uses the HP ! linker and is currently the default selected by config.guess. The ! optional hppa64-hp-hpux11* port generates 64-bit code for the ! pa-risc 2.0 architecture. It must be explicitly selected using the ! --host=hppa64-hp-hpux11* configure option. Different prefixes ! must be used if both ports are to be installed on the same system. ! !

    You must use GNU binutils 2.11 or above with the 32-bit port. Thread ! support is not currently implemented, so --enable-threads does ! not work. See: ! !

    ! !

    GCC 2.95.x is not supported under HP-UX 11 and cannot be used to compile GCC 3.0 and up. Refer to binaries for information about obtaining precompiled GCC binaries for HP-UX. !

    GNU binutils 2.13 or later is recommended with the 64-bit port. ! The HP assembler is not supported. It is highly recommended ! that the GNU linker be used as well. Either binutils must be built ! prior to gcc, or a binary distribution of gcc or binutils must be ! obtained for the initial builds. When starting with a HP compiler, ! it is preferable to use the ANSI compiler as the bundled compiler ! only supports traditional C. Bootstrapping with the bundled compiler ! is tested infrequently and problems often arise because of the subtle ! differences in semantics between traditional and ISO C. There also ! have been problems reported with various binary distributions. This ! port still is undergoing significant development. ! !


    i370-*-*

    This port is very preliminary and has many known bugs. We hope to have a higher-quality port for this machine soon. !


    *-*-linux-gnu

    *************** out-of-the-box. You'll get compile erro *** 611,618 **** The patch glibc-2.2.patch, that is to be applied in the GCC source tree, fixes the compatibility problems. -

    -

    Currently Glibc 2.2.3 (and older releases) and GCC 3.0 are out of sync --- 624,629 ---- *************** strongly advise to wait for glibc 2.2.4 *** 624,631 **** glibc 2.2.4 whether patches for GCC 3.0 are needed. You can use glibc 2.2.3 with GCC 3.0, just do not try to recompile it. !

    !

    i?86-*-linux*oldld

    --- 635,641 ---- glibc 2.2.4 whether patches for GCC 3.0 are needed. You can use glibc 2.2.3 with GCC 3.0, just do not try to recompile it. !

    i?86-*-linux*oldld

    *************** installed. *** 635,642 ****

    This configuration is obsoleted in GCC 3.1. !

    !

    i?86-*-linux*aout

    --- 645,651 ----

    This configuration is obsoleted in GCC 3.1. !


    i?86-*-linux*aout

    *************** installed. *** 644,651 **** GNU systems. This configuration is being superseded. You must use gas/binutils version 2.5.2 or later. !

    !

    i?86-*-linux*

    --- 653,659 ---- GNU systems. This configuration is being superseded. You must use gas/binutils version 2.5.2 or later. !

    i?86-*-linux*

    *************** gas/binutils version 2.5.2 or later. *** 655,677 **** possible you have a hardware problem. Further information on this can be found on www.bitwizard.nl. !

    !

    i?86-*-sco

    Compilation with RCC is recommended. Also, it may be a good idea to link with GNU malloc instead of the malloc that comes with the system. !

    !

    i?86-*-sco3.2v4

    Use this configuration for SCO release 3.2 version 4. !

    !

    i?86-*-sco3.2v5*

    --- 663,682 ---- possible you have a hardware problem. Further information on this can be found on www.bitwizard.nl. !

    i?86-*-sco

    Compilation with RCC is recommended. Also, it may be a good idea to link with GNU malloc instead of the malloc that comes with the system. !


    i?86-*-sco3.2v4

    Use this configuration for SCO release 3.2 version 4. !


    i?86-*-sco3.2v5*

    *************** backtrace with a fault occurring in /usr/lib/ld.so.1
    . This problem has been reported to SCO engineering and will hopefully be addressed in later releases. !

    !

    i?86-*-udk

    --- 749,755 ---- running as /usr/lib/ld.so.1. This problem has been reported to SCO engineering and will hopefully be addressed in later releases. !

    i?86-*-udk

    *************** from the right place) while making the t *** 764,771 **** building a cross compiler. The easiest way to do this is with a configure command like this: !

    CC=/udk/usr/ccs/bin/cc /your/path/to/gcc/configure ! --host=i686-pc-udk --target=i686-pc-udk --program-prefix=udk-

    You should substitute i686 in the above command with the appropriate processor for your host. --- 768,776 ---- building a cross compiler. The easiest way to do this is with a configure command like this: !

        CC=/udk/usr/ccs/bin/cc /your/path/to/gcc/configure \
    !       --host=i686-pc-udk --target=i686-pc-udk --program-prefix=udk-
    ! 

    You should substitute i686 in the above command with the appropriate processor for your host. *************** example, to invoke the C compiler, you w *** 777,784 **** They will coexist peacefully with any native-target GCC tools you may have installed. !

    !

    i?86-*-isc

    --- 782,788 ---- They will coexist peacefully with any native-target GCC tools you may have installed. !

    i?86-*-isc

    *************** comes with the system. *** 790,797 ****

    In ISC version 4.1, sed core dumps when building deduced.h. Use the version of sed from version 4.0. !

    !

    i?86-ibm-aix

    --- 794,800 ----

    In ISC version 4.1, sed core dumps when building deduced.h. Use the version of sed from version 4.0. !


    i?86-ibm-aix

    *************** comes with the system. *** 800,807 ****

    You need to use GAS version 2.1 or later, and LD from GNU binutils version 2.2 or later. !

    !

    i?86-sequent-bsd

    --- 803,809 ----

    You need to use GAS version 2.1 or later, and LD from GNU binutils version 2.2 or later. !


    i?86-sequent-bsd

    *************** GNU binutils version 2.2 or later. *** 809,816 ****

    Go to the Berkeley universe before compiling. !

    !

    i?86-sequent-ptx1*, i?86-sequent-ptx2*, i?86-sequent-sysv3*

    --- 811,817 ----

    Go to the Berkeley universe before compiling. !


    i?86-sequent-ptx1*, i?86-sequent-ptx2*, i?86-sequent-sysv3*

    *************** GNU binutils version 2.2 or later. *** 822,829 **** If you encounter this problem, upgrade your operating system or use bash (the GNU shell) to run fixproto. !

    !

    i860-intel-osf*

    --- 823,829 ---- If you encounter this problem, upgrade your operating system or use bash (the GNU shell) to run fixproto. !

    i860-intel-osf*

    *************** extern int vsprintf(char *, const char *** 860,867 ****

    These problems don't exist in operating system version 1.1. !

    !

    ia64-*-linux

    --- 860,866 ----

    These problems don't exist in operating system version 1.1. !


    ia64-*-linux

    *************** GCC 3.0.2 is recommended for compiling l *** 885,892 **** GCC 3.0.2 is believed to be fully ABI compliant, and hence no more major ABI changes are expected. !

    !

    *-lynx-lynxos

    --- 884,890 ---- GCC 3.0.2 is believed to be fully ABI compliant, and hence no more major ABI changes are expected. !

    *-lynx-lynxos

    *************** You can tell GCC to use the GNU assemble *** 897,904 **** COFF format object files and executables; otherwise GCC will use the installed tools, which produce a.out format executables. !

    !

    *-ibm-aix*

    --- 895,901 ---- COFF format object files and executables; otherwise GCC will use the installed tools, which produce a.out format executables. !

    *-ibm-aix*

    *************** interoperate with GCC. *** 926,931 **** --- 923,954 ----

    Building libstdc++.a requires a fix for a AIX Assembler bug APAR IY26685 (AIX 4.3) or APAR IY25528 (AIX 5.1). +

    libstdc++ in GCC 3.2 increments the major version number of the + shared object and GCC installation places the libstdc++.a + shared library in a common location which will overwrite the GCC 3.1 + version of the shared library. Applications either need to be + re-linked against the new shared library or the GCC 3.1 version of the + libstdc++ shared object needs to be available to the AIX + runtime loader. The GCC 3.1 libstdc++.so.4 shared object can + be installed for runtime dynamic loading using the following steps to + set the F_LOADONLY flag in the shared object for each + multilib libstdc++.a installed: + +

    Extract the shared object from each the GCC 3.1 libstdc++.a + archive: +

       % ar -x libstdc++.a libstdc++.so.4
    + 
    + +

    Enable the F_LOADONLY flag so that the shared object will be + available for runtime dynamic loading, but not linking: +

       % strip -e libstdc++.so.4
    + 
    + +

    Archive the runtime-only shared object in the GCC 3.2 + libstdc++.a archive: +

       % ar -q libstdc++.a libstdc++.so.4
    + 
    +

    Linking executables and shared libraries may produce warnings of duplicate symbols. The assembly files generated by GCC for AIX always have included multiple symbol definitions for certain global variable *************** both Power or PowerPC processors. *** 977,992 ****

    A default can be specified with the -mcpu=cpu_type switch and using the configure option --with-cpu-cpu_type. !

    !

    m32r-*-elf

    Mitsubishi M32R processor. This configuration is intended for embedded systems. !

    !

    m68000-hp-bsd

    --- 1000,1013 ----

    A default can be specified with the -mcpu=cpu_type switch and using the configure option --with-cpu-cpu_type. !


    m32r-*-elf

    Mitsubishi M32R processor. This configuration is intended for embedded systems. !


    m68000-hp-bsd

    *************** This configuration is intended for embed *** 994,1017 **** with this system cannot compile GCC; contact law@cygnus.com to get binaries of GCC for bootstrapping. !

    !

    m6811-elf

    Motorola 68HC11 family micro controllers. These are used in embedded applications. There are no standard Unix configurations. !

    !

    m6812-elf

    Motorola 68HC12 family micro controllers. These are used in embedded applications. There are no standard Unix configurations. !

    !

    m68k-altos

    --- 1015,1035 ---- with this system cannot compile GCC; contact law@cygnus.com to get binaries of GCC for bootstrapping. !

    m6811-elf

    Motorola 68HC11 family micro controllers. These are used in embedded applications. There are no standard Unix configurations. !


    m6812-elf

    Motorola 68HC12 family micro controllers. These are used in embedded applications. There are no standard Unix configurations. !


    m68k-altos

    *************** applications. There are no standard Uni *** 1020,1027 ****

    You must use the GNU assembler, linker and debugger. Also, you must fix a kernel bug. !

    !

    m68k-apple-aux

    --- 1038,1044 ----

    You must use the GNU assembler, linker and debugger. Also, you must fix a kernel bug. !


    m68k-apple-aux

    *************** for bootstrapping on jagubox.gsfc. *** 1040,1047 **** You will also a patched version of /bin/ld there that raises some of the arbitrary limits found in the original. !

    !

    m68k-att-sysv

    --- 1057,1063 ---- You will also a patched version of /bin/ld there that raises some of the arbitrary limits found in the original. !

    m68k-att-sysv

    *************** You will need to get a previous version *** 1051,1058 **** bootstrap. Binaries are available from the OSU-CIS archive, at ftp://archive.cis.ohio-state.edu/pub/att7300/. !

    !

    m68k-bull-sysv

    --- 1067,1073 ---- bootstrap. Binaries are available from the OSU-CIS archive, at ftp://archive.cis.ohio-state.edu/pub/att7300/. !

    m68k-bull-sysv

    *************** by providing --with-gnu-as --stabs *** 1067,1074 **** assembler or for availability of the DPX/2 port of GAS, contact F.Pierresteguy@frcl.bull.fr. !

    !

    m68k-crds-unos

    --- 1082,1088 ---- assembler or for availability of the DPX/2 port of GAS, contact F.Pierresteguy@frcl.bull.fr. !

    m68k-crds-unos

    *************** a lot of memory. 5 Mb is barely enough *** 1105,1112 **** If linking cc1 fails, try putting the object files into a library and linking from that library. !

    !

    m68k-hp-hpux

    --- 1119,1125 ---- If linking cc1 fails, try putting the object files into a library and linking from that library. !

    m68k-hp-hpux

    *************** to look like: *** 1160,1167 ****
    #!/bin/ksh
      
    !

    !

    m68k-*-nextstep*

    --- 1173,1179 ----
    #!/bin/ksh
      
    !

    m68k-*-nextstep*

    *************** for this sequence to work. *** 1208,1215 **** make bootstrap3 !

    !

    m68k-ncr-*

    --- 1220,1226 ---- make bootstrap3 !

    m68k-ncr-*

    *************** to the configuration file: *** 1223,1230 ****
    MAXUMEM = 4096
      
    !

    !

    m68k-sun

    --- 1234,1240 ----
    MAXUMEM = 4096
      
    !

    m68k-sun

    *************** to the configuration file: *** 1232,1246 **** default, because programs that establish signal handlers for floating point traps inherently cannot work with the FPA. !

    !

    m68k-sun-sunos4.1.1

    It is reported that you may need the GNU assembler on this platform. !

    !

    m88k-*-svr3

    --- 1242,1254 ---- default, because programs that establish signal handlers for floating point traps inherently cannot work with the FPA. !

    m68k-sun-sunos4.1.1

    It is reported that you may need the GNU assembler on this platform. !


    m88k-*-svr3

    *************** stage 3 and 4 compilers may be usable. *** 1258,1265 ****

    It is best, however, to use an older version of GCC for bootstrapping if you have one. !

    !

    m88k-*-dgux

    --- 1266,1272 ----

    It is best, however, to use an older version of GCC for bootstrapping if you have one. !


    m88k-*-dgux

    *************** You set the software development environ *** 1278,1285 ****

    If you do not specify a configuration name, configure guesses the configuration based on the current software development environment. !

    !

    m88k-tektronix-sysv3

    --- 1285,1291 ----

    If you do not specify a configuration name, configure guesses the configuration based on the current software development environment. !


    m88k-tektronix-sysv3

    *************** directory, start from a fresh reboot, or *** 1294,1301 **** Otherwise you may have trouble getting clean comparisons between stages. !

    !

    mips-*-*

    --- 1300,1306 ---- Otherwise you may have trouble getting clean comparisons between stages. !

    mips-*-*

    *************** Both of these options are automatically *** 1349,1356 **** If you override the CC make variable and use the MIPS compilers, you may need to add -Wf,-XNg1500 -Olimit 3000. !

    !

    mips-dec-*

    --- 1354,1360 ---- If you override the CC make variable and use the MIPS compilers, you may need to add -Wf,-XNg1500 -Olimit 3000. !

    mips-dec-*

    *************** Both of these options are automatically *** 1383,1390 **** If you override the CC make variable and use the MIPS compilers, you may need to add -Wf,-XNg1500 -Olimit 3000. !

    !

    mips-mips-riscos*

    --- 1387,1393 ---- If you override the CC make variable and use the MIPS compilers, you may need to add -Wf,-XNg1500 -Olimit 3000. !

    mips-mips-riscos*

    *************** for these platforms use the following co *** 1414,1421 ****
    mips-mips-riscosrevsysv4
    System V.4 configuration for RISC-OS, revision rev. !

    !

    mips-mips-riscosrevsysv
    System V.3 configuration for RISC-OS, revision rev. --- 1417,1423 ----
    mips-mips-riscosrevsysv4
    System V.4 configuration for RISC-OS, revision rev. !

    mips-mips-riscosrevsysv
    System V.3 configuration for RISC-OS, revision rev. *************** RISC-OS to use. You must reconfigure GC *** 1425,1432 **** RISC-OS revision 4 to RISC-OS revision 5. This has the effect of avoiding a linker bug. !

    !

    mips-sgi-irix4

    --- 1427,1433 ---- RISC-OS revision 4 to RISC-OS revision 5. This has the effect of avoiding a linker bug. !

    mips-sgi-irix4

    *************** ignored. *** 1457,1464 ****
      warning: foo.o does not have gp tables for all its sections.
      
    !

    !

    mips-sgi-irix5

    --- 1458,1464 ----
      warning: foo.o does not have gp tables for all its sections.
      
    !

    mips-sgi-irix5

    *************** other platforms. It has been reported t *** 1502,1509 **** however, you may have success with smake on IRIX 5.2 if you do not have GNU make available. !

    !

    mips-sgi-irix6

    --- 1502,1508 ---- however, you may have success with smake on IRIX 5.2 if you do not have GNU make available. !

    mips-sgi-irix6

    *************** bug is fixed, GCC contains workarounds f *** 1596,1603 ****

    See http://freeware.sgi.com/ for more information about using GCC on IRIX platforms. !

    !

    mips-sony-sysv

    --- 1595,1601 ----

    See http://freeware.sgi.com/ for more information about using GCC on IRIX platforms. !


    mips-sony-sysv

    *************** information about using GCC on IRIX plat *** 1607,1614 **** COFF). In particular, the linker does not like the code generated by GCC when shared libraries are linked in. !

    !

    ns32k-encore

    --- 1605,1611 ---- COFF). In particular, the linker does not like the code generated by GCC when shared libraries are linked in. !

    ns32k-encore

    *************** GCC when shared libraries are linked in. *** 1616,1623 ****

    Encore ns32000 system. Encore systems are supported only under BSD. !

    !

    ns32k-*-genix

    --- 1613,1619 ----

    Encore ns32000 system. Encore systems are supported only under BSD. !


    ns32k-*-genix

    *************** in GCC 3.1. *** 1627,1634 ****

    Genix has bugs in alloca and malloc; you must get the compiled versions of these from GNU Emacs. !

    !

    ns32k-sequent

    --- 1623,1629 ----

    Genix has bugs in alloca and malloc; you must get the compiled versions of these from GNU Emacs. !


    ns32k-sequent

    *************** compiled versions of these from GNU Emac *** 1636,1643 ****

    Go to the Berkeley universe before compiling. !

    !

    ns32k-utek

    --- 1631,1637 ----

    Go to the Berkeley universe before compiling. !


    ns32k-utek

    *************** GCC 3.1. *** 1647,1662 ****

    The C compiler that comes with this system cannot compile GCC; contact tektronix!reed!mason to get binaries of GCC for bootstrapping. !

    !

    powerpc-*-*

    You can specify a default version for the -mcpu=cpu_type switch by using the configure option --with-cpu-cpu_type. !

    !

    powerpc-*-darwin*

    --- 1641,1654 ----

    The C compiler that comes with this system cannot compile GCC; contact tektronix!reed!mason to get binaries of GCC for bootstrapping. !


    powerpc-*-*

    You can specify a default version for the -mcpu=cpu_type switch by using the configure option --with-cpu-cpu_type. !


    powerpc-*-darwin*

    *************** binaries are available at *** 1671,1677 **** registration required).

    Versions of the assembler prior to "cctools-364" cannot handle the ! 4-argument form of rlwinm and related mask-using instructions. Darwin 1.3 (Mac OS X 10.0) uses cctools-353 for instance. To get cctools-364, check out cctools with tag Apple-364, build it, and install the assembler as usr/bin/as. See --- 1663,1669 ---- registration required).

    Versions of the assembler prior to "cctools-364" cannot handle the ! 4-argument form of rlwinm and related mask-using instructions. Darwin 1.3 (Mac OS X 10.0) uses cctools-353 for instance. To get cctools-364, check out cctools with tag Apple-364, build it, and install the assembler as usr/bin/as. See *************** bootstrap, but to do it from the *** 1689,1712 **** number of extensions not available in a standard GCC release. These extensions are generally specific to Mac programming. !

    !

    powerpc-*-elf, powerpc-*-sysv4

    PowerPC system in big endian mode, running System V.4. !

    !

    powerpc-*-linux-gnu*

    You will need ! binutils 2.12.90.0.7 or newer for a working GCC. !

    !

    powerpc-*-netbsd*

    --- 1681,1701 ---- number of extensions not available in a standard GCC release. These extensions are generally specific to Mac programming. !

    powerpc-*-elf, powerpc-*-sysv4

    PowerPC system in big endian mode, running System V.4. !


    powerpc-*-linux-gnu*

    You will need ! binutils 2.13.90.0.10 or newer for a working GCC. !


    powerpc-*-netbsd*

    *************** or newer for a working GCC. *** 1714,1773 **** documentation you will need Texinfo version 4.1 (NetBSD 1.5.1 included Texinfo version 3.12). !

    !

    powerpc-*-eabiaix

    Embedded PowerPC system in big endian mode with -mcall-aix selected as the default. !

    !

    powerpc-*-eabisim

    Embedded PowerPC system in big endian mode for use in running under the PSIM simulator. !

    !

    powerpc-*-eabi

    Embedded PowerPC system in big endian mode. !

    !

    powerpcle-*-elf, powerpcle-*-sysv4

    PowerPC system in little endian mode, running System V.4. !

    !

    powerpcle-*-eabisim

    Embedded PowerPC system in little endian mode for use in running under the PSIM simulator. !

    !

    powerpcle-*-eabi

    Embedded PowerPC system in little endian mode. !

    !

    powerpcle-*-winnt, powerpcle-*-pe

    PowerPC system in little endian mode running Windows NT. !

    !

    romp-*-aos, romp-*-mach

    --- 1703,1754 ---- documentation you will need Texinfo version 4.1 (NetBSD 1.5.1 included Texinfo version 3.12). !

    powerpc-*-eabiaix

    Embedded PowerPC system in big endian mode with -mcall-aix selected as the default. !


    powerpc-*-eabisim

    Embedded PowerPC system in big endian mode for use in running under the PSIM simulator. !


    powerpc-*-eabi

    Embedded PowerPC system in big endian mode. !


    powerpcle-*-elf, powerpcle-*-sysv4

    PowerPC system in little endian mode, running System V.4. !


    powerpcle-*-eabisim

    Embedded PowerPC system in little endian mode for use in running under the PSIM simulator. !


    powerpcle-*-eabi

    Embedded PowerPC system in little endian mode. !


    powerpcle-*-winnt, powerpcle-*-pe

    PowerPC system in little endian mode running Windows NT. !


    romp-*-aos, romp-*-mach

    *************** various files. These errors are minor d *** 1780,1801 **** floating-point constants and can be safely ignored; the stage 3 compiler is correct. !

    !

    s390-*-linux*

    S/390 system running Linux for S/390. !

    !

    s390x-*-linux*

    zSeries system (64-bit) running Linux for zSeries. !

    !

    *-*-solaris2*

    --- 1761,1779 ---- floating-point constants and can be safely ignored; the stage 3 compiler is correct. !

    s390-*-linux*

    S/390 system running Linux for S/390. !


    s390x-*-linux*

    zSeries system (64-bit) running Linux for zSeries. !


    *-*-solaris2*

    *************** will assume that any missing type is !

    sparc-sun-solaris2*

    --- 1821,1827 ---- 108377-20 for Intel), and Solaris 8 (108652-24 or newer for SPARC, 108653-22 for Intel) that fix this bug. !

    sparc-sun-solaris2*

    *************** information. *** 1856,1863 ****

    Sun as 4.x is broken in that it cannot cope with long symbol names. A typical error message might look similar to the following: !

    /usr/ccs/bin/as: "/var/tmp/ccMsw135.s", line 11041: ! error: can't compute value of an expression involving an external symbol.

    This is Sun bug 4237974. This is fixed with patch 108908-02 for Solaris 2.6 and has been fixed in later (5.x) versions of the assembler, --- 1833,1841 ----

    Sun as 4.x is broken in that it cannot cope with long symbol names. A typical error message might look similar to the following: !

    /usr/ccs/bin/as: "/var/tmp/ccMsw135.s", line 11041: error:
    !   can't compute value of an expression involving an external symbol.
    ! 

    This is Sun bug 4237974. This is fixed with patch 108908-02 for Solaris 2.6 and has been fixed in later (5.x) versions of the assembler, *************** that supports only 32-bit binaries, one *** 1876,1883 **** --disable-multilib, since we will not be able to build the 64-bit target libraries. !

    !

    sparc-sun-solaris2.7

    --- 1854,1860 ---- --disable-multilib, since we will not be able to build the 64-bit target libraries. !

    sparc-sun-solaris2.7

    *************** the Solaris 7 Recommended Patch Cluster. *** 1914,1920 ****

    !


    sparc-sun-sunos4*

    --- 1891,1897 ----

    !


    sparc-sun-sunos4*

    *************** be due to a bug in sh. You *** 1932,1939 **** genflags or genoutput manually and then retrying the make. !

    !

    sparc-unknown-linux-gnulibc1

    --- 1909,1915 ---- genflags or genoutput manually and then retrying the make. !

    sparc-unknown-linux-gnulibc1

    *************** be due to a bug in sh. You *** 1941,1948 **** binutils 2.8.1.0.23 for this platform, too. !

    !

    sparc-*-linux*

    --- 1917,1923 ---- binutils 2.8.1.0.23 for this platform, too. !

    sparc-*-linux*

    *************** for this platform, too. *** 1950,1957 **** or newer on this platform. All earlier binutils and glibc releases mishandled unaligned relocations on sparc-*-* targets. !

    !

    sparc64-*-*

    --- 1925,1931 ---- or newer on this platform. All earlier binutils and glibc releases mishandled unaligned relocations on sparc-*-* targets. !

    sparc64-*-*

    *************** can use the sparc32 program *** 1961,1968 **** invocation with an environment that causes configure to recognize (via uname -a) the system as sparc-*-* instead. !

    !

    sparcv9-*-solaris2*

    --- 1935,1941 ---- invocation with an environment that causes configure to recognize (via uname -a) the system as sparc-*-* instead. !

    sparcv9-*-solaris2*

    *************** step in order to bootstrap this target w *** 1975,1982 ****

    -xildoff turns off the incremental linker, and -xarch=v9 specifies the v9 architecture to the Sun linker and assembler. !

    !

    *-*-sysv*

    --- 1948,1954 ----

    -xildoff turns off the incremental linker, and -xarch=v9 specifies the v9 architecture to the Sun linker and assembler. !


    *-*-sysv*

    *************** is said to work. Smaller values may als *** 2007,2022 **** /usr/ucb in PATH. The cc command in /usr/ucb uses libraries which have bugs. !

    !

    vax-dec-ultrix

    Don't try compiling with VAX C (vcc). It produces incorrect code in some cases (for example, when alloca is used). !

    !

    we32k-*-*

    --- 1979,1992 ---- /usr/ucb in PATH. The cc command in /usr/ucb uses libraries which have bugs. !

    vax-dec-ultrix

    Don't try compiling with VAX C (vcc). It produces incorrect code in some cases (for example, when alloca is used). !


    we32k-*-*

    *************** make CC=stage2/xgcc CFLAGS="-Bstage2/ -g *** 2052,2059 ****

    You may need to raise the ULIMIT setting to build a C++ compiler, as the file cc1plus is larger than one megabyte. !

    !

    xtensa-*-elf

    --- 2022,2028 ----

    You may need to raise the ULIMIT setting to build a C++ compiler, as the file cc1plus is larger than one megabyte. !


    xtensa-*-elf

    *************** own Xtensa configuration with the Xtensa *** 2070,2077 **** downloaded files include a customized copy of this header file, which you can use to replace the default header file. !

    !

    xtensa-*-linux*

    --- 2039,2045 ---- downloaded files include a customized copy of this header file, which you can use to replace the default header file. !

    xtensa-*-linux*

    *************** position-independent code (PIC) regardle *** 2082,2089 **** respects, this target is the same as the xtensa-*-elf target. !

    !

    Microsoft Windows (32-bit)

    --- 2050,2056 ---- respects, this target is the same as the xtensa-*-elf target. !

    Microsoft Windows (32-bit)

    *************** respects, this target is the same as the *** 2093,2100 ****

    Current (as of early 2001) snapshots of GCC will build under Cygwin without modification. !

    !

    OS/2

    --- 2060,2066 ----

    Current (as of early 2001) snapshots of GCC will build under Cygwin without modification. !


    OS/2

    *************** at ftp://ftp.leo.org/pub/comp/os/os2/leo/devtools/emx+gcc/. !

    !

    Older systems

    --- 2071,2077 ----

    An older copy of GCC 2.8.1 is included with the EMX tools available at ftp://ftp.leo.org/pub/comp/os/os2/leo/devtools/emx+gcc/. !


    Older systems

    *************** such older systems, but much of the info *** 2155,2162 **** about GCC on such systems (which may no longer be applicable to current GCC) is to be found in the GCC texinfo manual. !

    !

    all ELF targets (SVR4, Solaris 2, etc.)

    --- 2120,2126 ---- about GCC on such systems (which may no longer be applicable to current GCC) is to be found in the GCC texinfo manual. !

    all ELF targets (SVR4, Solaris 2, etc.)

    *************** current GCC) is to be found in the GCC t *** 2165,2172 **** inlines, vtables and template instantiations will be discarded automatically. !

    !

    Return to the GCC Installation page --- 2129,2135 ---- inlines, vtables and template instantiations will be discarded automatically. !


    Return to the GCC Installation page diff -Nrc3pad gcc-3.2/INSTALL/test.html gcc-3.2.1/INSTALL/test.html *** gcc-3.2/INSTALL/test.html Wed Aug 14 09:31:15 2002 --- gcc-3.2.1/INSTALL/test.html Tue Nov 19 18:11:50 2002 *************** To get a list of the possible *.ex *** 86,92 **** output of make check into a file and look at the Running ... .exp lines. !

    How to interpret test results

    After the testsuite has run you'll find various *.sum and *.log files in the testsuite subdirectories. The *.log files contain a --- 86,103 ---- output of make check into a file and look at the Running ... .exp lines. !

    To run only the tests for a library, run make check from the ! the library's testsuite in a subdirectory of the object directory: ! libstdc++-v3/testsuite or libcgj/testsuite. ! !

    Additional testing for Java Class Libraries

    ! !

    The Mauve Project provides ! a suite of tests for the Java Class Libraries. This suite can be run ! as part of libgcj testing by specifying the location of the Mauve tree ! when invoking make, as in make MAUVEDIR=~/mauve check. ! !

    How to interpret test results

    After the testsuite has run you'll find various *.sum and *.log files in the testsuite subdirectories. The *.log files contain a *************** current time our testing harness does no *** 109,115 **** over whether or not a test is expected to fail. We expect to fix this problem in future releases. !

    Submitting test results

    If you want to report the results to the GCC project, use the contrib/test_summary shell script. Start it in the objdir with --- 120,126 ---- over whether or not a test is expected to fail. We expect to fix this problem in future releases. !

    Submitting test results

    If you want to report the results to the GCC project, use the contrib/test_summary shell script. Start it in the objdir with *************** behave on different platforms and compar *** 130,136 **** few failing testcases are possible even on released versions and you should look here first if you think your results are unreasonable. !


    Return to the GCC Installation page --- 141,147 ---- few failing testcases are possible even on released versions and you should look here first if you think your results are unreasonable. !


    Return to the GCC Installation page diff -Nrc3pad gcc-3.2/MAINTAINERS gcc-3.2.1/MAINTAINERS *** gcc-3.2/MAINTAINERS Mon Apr 29 20:44:37 2002 --- gcc-3.2.1/MAINTAINERS Mon Nov 18 15:11:14 2002 *************** Maintainers *** 23,29 **** John Carr jfc@mit.edu Richard Earnshaw rearnsha@arm.com Richard Henderson rth@redhat.com ! Geoffrey Keating geoffk@redhat.com Richard Kenner kenner@nyu.edu Jeff Law law@redhat.com Jason Merrill jason@redhat.com --- 23,29 ---- John Carr jfc@mit.edu Richard Earnshaw rearnsha@arm.com Richard Henderson rth@redhat.com ! Geoffrey Keating geoffk@geoffk.org Richard Kenner kenner@nyu.edu Jeff Law law@redhat.com Jason Merrill jason@redhat.com *************** avr port Denis Chertykov denisc@overta *** 44,52 **** avr port Marek Michalkiewicz marekm@linux.org.pl c4x port Michael Hayes m.hayes@elec.canterbury.ac.nz cris port Hans-Peter Nilsson hp@axis.com ! fr30 port Nick Clifton niclc@redhat.com h8 port Jeff Law law@redhat.com ! h8 port Kazu Hirata kazu@hxi.com hppa port Jeff Law law@redhat.com hppa port Dave Anglin dave.anglin@nrc.ca i386 port Richard Henderson rth@redhat.com --- 44,52 ---- avr port Marek Michalkiewicz marekm@linux.org.pl c4x port Michael Hayes m.hayes@elec.canterbury.ac.nz cris port Hans-Peter Nilsson hp@axis.com ! fr30 port Nick Clifton nickc@redhat.com h8 port Jeff Law law@redhat.com ! h8 port Kazu Hirata kazu@cs.umass.edu hppa port Jeff Law law@redhat.com hppa port Dave Anglin dave.anglin@nrc.ca i386 port Richard Henderson rth@redhat.com *************** i960 port Jim Wilson wilson@redhat.com *** 55,61 **** ia64 port Jim Wilson wilson@redhat.com m32r port Nick Clifton nickc@redhat.com m32r port Michael Meissner meissner@redhat.com ! m68hc11 port Stephane Carrez Stephane.Carrez@worldnet.fr m68k port (?) Jeff Law law@redhat.com m68k-motorola-sysv port Philippe De Muyter phdm@macqel.be mcore port Nick Clifton nickc@redhat.com --- 55,61 ---- ia64 port Jim Wilson wilson@redhat.com m32r port Nick Clifton nickc@redhat.com m32r port Michael Meissner meissner@redhat.com ! m68hc11 port Stephane Carrez stcarrez@nerim.fr m68k port (?) Jeff Law law@redhat.com m68k-motorola-sysv port Philippe De Muyter phdm@macqel.be mcore port Nick Clifton nickc@redhat.com *************** mmix port Hans-Peter Nilsson hp@bitrang *** 64,70 **** mn10200 port Jeff Law law@redhat.com mn10300 port Jeff Law law@redhat.com mn10300 port Alexandre Oliva aoliva@redhat.com ! rs6000 port Geoff Keating geoffk@redhat.com rs6000 port David Edelsohn dje@watson.ibm.com s390 port Hartmut Penner hpenner@de.ibm.com s390 port Ulrich Weigand uweigand@de.ibm.com --- 64,70 ---- mn10200 port Jeff Law law@redhat.com mn10300 port Jeff Law law@redhat.com mn10300 port Alexandre Oliva aoliva@redhat.com ! rs6000 port Geoff Keating geoffk@geoffk.org rs6000 port David Edelsohn dje@watson.ibm.com s390 port Hartmut Penner hpenner@de.ibm.com s390 port Ulrich Weigand uweigand@de.ibm.com *************** v850 port Nick Clifton nickc@redhat.co *** 77,83 **** v850 port Michael Meissner meissner@redhat.com vax port Dave Anglin dave.anglin@nrc.ca x86-64 port Jan Hubicka jh@suse.cz ! xstormy16 port Geoffrey Keating geoffk@redhat.com xtensa port Bob Wilson bob.wilson@acm.org OS Port Maintainers (OS alphabetical order) --- 77,83 ---- v850 port Michael Meissner meissner@redhat.com vax port Dave Anglin dave.anglin@nrc.ca x86-64 port Jan Hubicka jh@suse.cz ! xstormy16 port Geoffrey Keating geoffk@geoffk.org xtensa port Bob Wilson bob.wilson@acm.org OS Port Maintainers (OS alphabetical order) *************** c++ Mark Mitchell m *** 99,105 **** cpplib Dave Brolley brolley@redhat.com cpplib Per Bothner per@bothner.com cpplib Zack Weinberg zack@codesourcery.com ! cpplib Neil Booth neil@daikokuya.demon.co.uk java Per Bothner per@bothner.com java Alexandre Petit-Bianco apbianco@redhat.com mercury Fergus Henderson fjh@cs.mu.oz.au --- 99,105 ---- cpplib Dave Brolley brolley@redhat.com cpplib Per Bothner per@bothner.com cpplib Zack Weinberg zack@codesourcery.com ! cpplib Neil Booth neil@daikokuya.co.uk java Per Bothner per@bothner.com java Alexandre Petit-Bianco apbianco@redhat.com mercury Fergus Henderson fjh@cs.mu.oz.au *************** reorg Jeff Law law@redhat.com *** 115,121 **** caller-save.c Jeff Law law@redhat.com debugging code Jim Wilson wilson@redhat.com dwarf debugging code Jason Merrill jason@redhat.com ! c++ runtime libs Gabriel Dos Reis dosreis@cmla.ens-cachan.fr c++ runtime libs Ulrich Drepper drepper@redhat.com c++ runtime libs Phil Edwards pme@gcc.gnu.org c++ runtime libs Benjamin Kosnik bkoz@redhat.com --- 115,122 ---- caller-save.c Jeff Law law@redhat.com debugging code Jim Wilson wilson@redhat.com dwarf debugging code Jason Merrill jason@redhat.com ! c++ runtime libs Paolo Carlini pcarlini@unitus.it ! c++ runtime libs Gabriel Dos Reis gdr@integrable-solutions.net c++ runtime libs Ulrich Drepper drepper@redhat.com c++ runtime libs Phil Edwards pme@gcc.gnu.org c++ runtime libs Benjamin Kosnik bkoz@redhat.com *************** web pages Gerald Pfeifer pfeifer@dbai. *** 129,135 **** config.sub/config.guess Ben Elliston config-patches@gnu.org basic block reordering Jason Eckhardt jle@redhat.com i18n Philipp Thomas pthomas@suse.de ! diagnostic messages Gabriel Dos Reis gdr@codesourcery.com windows, cygwin, mingw Christopher Faylor cgf@redhat.com windows, cygwin, mingw DJ Delorie dj@redhat.com DJGPP DJ Delorie dj@delorie.com --- 130,136 ---- config.sub/config.guess Ben Elliston config-patches@gnu.org basic block reordering Jason Eckhardt jle@redhat.com i18n Philipp Thomas pthomas@suse.de ! diagnostic messages Gabriel Dos Reis gdr@integrable-solutions.net windows, cygwin, mingw Christopher Faylor cgf@redhat.com windows, cygwin, mingw DJ Delorie dj@redhat.com DJGPP DJ Delorie dj@delorie.com *************** docs co-maintainer Joseph Myers jsm28@c *** 141,153 **** Pico-Java port Steve Chamberlain sac@transmeta.com RTEMS Ports Joel Sherrill predict.def Jan Hubicka jh@suse.cz ! contrib/regression Geoff Keating geoffk@redhat.com Note individuals who maintain parts of the compiler need approval to check in changes outside of the parts of the compiler they maintain. Write After Approval (last name alphabetical order) Scott Bambrough scottb@netwinder.org Daniel Berlin dan@dberlin.org David Billinghurst David.Billinghurst@riotinto.com --- 142,156 ---- Pico-Java port Steve Chamberlain sac@transmeta.com RTEMS Ports Joel Sherrill predict.def Jan Hubicka jh@suse.cz ! contrib/regression Geoff Keating geoffk@geoffk.org Note individuals who maintain parts of the compiler need approval to check in changes outside of the parts of the compiler they maintain. Write After Approval (last name alphabetical order) + + Matt Austern austern@apple.com Scott Bambrough scottb@netwinder.org Daniel Berlin dan@dberlin.org David Billinghurst David.Billinghurst@riotinto.com *************** Laurynas Biveinis lauras@softhome.net *** 155,162 **** Jim Blandy jimb@redhat.com Phil Blundell pb@futuretv.com Hans Boehm hboehm@gcc.gnu.org Andrew Cagney cagney@redhat.com - Paolo Carlini pcarlini@unitus.it Chandra Chavva cchavva@redhat.com William Cohen wcohen@redhat.com Chris Demetriou cgd@broadcom.com --- 158,165 ---- Jim Blandy jimb@redhat.com Phil Blundell pb@futuretv.com Hans Boehm hboehm@gcc.gnu.org + Eric Botcazou ebotcazou@libertysurf.fr Andrew Cagney cagney@redhat.com Chandra Chavva cchavva@redhat.com William Cohen wcohen@redhat.com Chris Demetriou cgd@broadcom.com *************** Anthony Green green@redhat.com *** 170,175 **** --- 173,179 ---- Stu Grossman grossman@redhat.com Laurent Guerby guerby@acm.org Andrew Haley aph@redhat.com + Stuart Hastings stuart@apple.com Aldy Hernandez aldyh@redhat.com Matthew Hiller hiller@redhat.com Manfred Hollstein mhollstein@redhat.com *************** Adam Megacz adam@xwt.org *** 201,217 **** Alan Modra amodra@bigpond.net.au Toon Moene toon@moene.indiv.nluug.nl Catherine Moore clm@redhat.com Diego Novillo dnovillo@redhat.com David O'Brien obrien@FreeBSD.org Turly O'Connor turly@apple.com Jeffrey D. Oldham oldham@codesourcery.com Rainer Orth ro@TechFak.Uni-Bielefeld.DE Nicola Pero n.pero@mi.flashnet.it Alexandre Petit-Bianco apbianco@redhat.com Clinton Popetz cpopetz@cpopetz.com Ken Raeburn raeburn@redhat.com Rolf Rasmussen rolfwr@gcc.gnu.org - Gabriel Dos Reis dosreis@cmla.ens-cachan.fr Loren J. Rittle ljrittle@acm.org Tom Rix trix@redhat.com Craig Rodrigues rodrigc@gcc.gnu.org --- 205,222 ---- Alan Modra amodra@bigpond.net.au Toon Moene toon@moene.indiv.nluug.nl Catherine Moore clm@redhat.com + Adam Nemet anemet@lnxw.com Diego Novillo dnovillo@redhat.com David O'Brien obrien@FreeBSD.org Turly O'Connor turly@apple.com Jeffrey D. Oldham oldham@codesourcery.com Rainer Orth ro@TechFak.Uni-Bielefeld.DE + Devang Patel dpatel@apple.com Nicola Pero n.pero@mi.flashnet.it Alexandre Petit-Bianco apbianco@redhat.com Clinton Popetz cpopetz@cpopetz.com Ken Raeburn raeburn@redhat.com Rolf Rasmussen rolfwr@gcc.gnu.org Loren J. Rittle ljrittle@acm.org Tom Rix trix@redhat.com Craig Rodrigues rodrigc@gcc.gnu.org *************** Danny Smith dannysmith@users.sourcef *** 229,235 **** Michael Sokolov msokolov@ivan.Harhan.ORG Richard Stallman rms@gnu.org Graham Stott grahams@redhat.com ! Mike Stump mrs@windriver.com Ian Taylor ian@zembu.com Michael Tiemann tiemann@redhat.com Philipp Thomas pthomas@suse.de --- 234,240 ---- Michael Sokolov msokolov@ivan.Harhan.ORG Richard Stallman rms@gnu.org Graham Stott grahams@redhat.com ! Mike Stump mrs@apple.com Ian Taylor ian@zembu.com Michael Tiemann tiemann@redhat.com Philipp Thomas pthomas@suse.de *************** Florian Weimer fw@deneb.enyo.de *** 240,247 **** Mark Wielaard mark@gcc.gnu.org GNATS only accounts Peter Bienstman(?) Benjamin Chelf(?) - James Dennett(?) Mark Galassi(?) Jeff Strum(?) --- 245,254 ---- Mark Wielaard mark@gcc.gnu.org GNATS only accounts + + James Dennett jdennett jdennett@acm.org + Peter Bienstman(?) Benjamin Chelf(?) Mark Galassi(?) Jeff Strum(?) diff -Nrc3pad gcc-3.2/Makefile.in gcc-3.2.1/Makefile.in *** gcc-3.2/Makefile.in Mon Apr 15 18:59:13 2002 --- gcc-3.2.1/Makefile.in Mon Oct 7 20:47:05 2002 *************** CXXFLAGS = -g -O2 *** 94,100 **** LDFLAGS = LIBCFLAGS = $(CFLAGS) CFLAGS_FOR_BUILD = $(CFLAGS) ! CFLAGS_FOR_TARGET = $(CFLAGS) LDFLAGS_FOR_TARGET = LIBCFLAGS_FOR_TARGET = $(CFLAGS_FOR_TARGET) PICFLAG = --- 94,104 ---- LDFLAGS = LIBCFLAGS = $(CFLAGS) CFLAGS_FOR_BUILD = $(CFLAGS) ! # During gcc bootstrap, if we use some random cc for stage1 then ! # CFLAGS will be just -g. We want to ensure that TARGET libraries ! # (which we know are built with gcc) are built with optimizations so ! # prepend -O2 when setting CFLAGS_FOR_TARGET. ! CFLAGS_FOR_TARGET = -O2 $(CFLAGS) LDFLAGS_FOR_TARGET = LIBCFLAGS_FOR_TARGET = $(CFLAGS_FOR_TARGET) PICFLAG = diff -Nrc3pad gcc-3.2/bugs.html gcc-3.2.1/bugs.html *** gcc-3.2/bugs.html Wed Aug 14 09:31:12 2002 --- gcc-3.2.1/bugs.html Tue Nov 19 18:11:47 2002 *************** the bug is a regression.

  • *** 283,289 ****

    Fortran bugs are documented in the G77 manual rather than explicitly listed here. Please see ! Known Causes of Trouble with GNU Fortran in the G77 manual.


    --- 283,289 ----

    Fortran bugs are documented in the G77 manual rather than explicitly listed here. Please see ! Known Causes of Trouble with GNU Fortran in the G77 manual.


    diff -Nrc3pad gcc-3.2/config/ChangeLog gcc-3.2.1/config/ChangeLog *** gcc-3.2/config/ChangeLog Wed Aug 14 08:59:02 2002 --- gcc-3.2.1/config/ChangeLog Tue Nov 19 17:47:59 2002 *************** *** 1,3 **** --- 1,15 ---- + 2002-11-19 Release Manager + + * GCC 3.2.1 Released. + + 2002-11-19 Release Manager + + * GCC 3.2.1 Released. + + 2002-11-18 Release Manager + + * GCC 3.2.1 Released. + 2002-08-14 Release Manager * GCC 3.2 Released. diff -Nrc3pad gcc-3.2/config/mpw/ChangeLog gcc-3.2.1/config/mpw/ChangeLog *** gcc-3.2/config/mpw/ChangeLog Wed Aug 14 08:59:01 2002 --- gcc-3.2.1/config/mpw/ChangeLog Tue Nov 19 17:47:56 2002 *************** *** 1,3 **** --- 1,15 ---- + 2002-11-19 Release Manager + + * GCC 3.2.1 Released. + + 2002-11-19 Release Manager + + * GCC 3.2.1 Released. + + 2002-11-18 Release Manager + + * GCC 3.2.1 Released. + 2002-08-14 Release Manager * GCC 3.2 Released. diff -Nrc3pad gcc-3.2/contrib/ChangeLog gcc-3.2.1/contrib/ChangeLog *** gcc-3.2/contrib/ChangeLog Wed Aug 14 08:59:04 2002 --- gcc-3.2.1/contrib/ChangeLog Tue Nov 19 17:48:01 2002 *************** *** 1,3 **** --- 1,15 ---- + 2002-11-19 Release Manager + + * GCC 3.2.1 Released. + + 2002-11-19 Release Manager + + * GCC 3.2.1 Released. + + 2002-11-18 Release Manager + + * GCC 3.2.1 Released. + 2002-08-14 Release Manager * GCC 3.2 Released. diff -Nrc3pad gcc-3.2/contrib/regression/ChangeLog gcc-3.2.1/contrib/regression/ChangeLog *** gcc-3.2/contrib/regression/ChangeLog Wed Aug 14 08:59:05 2002 --- gcc-3.2.1/contrib/regression/ChangeLog Tue Nov 19 17:48:04 2002 *************** *** 1,3 **** --- 1,15 ---- + 2002-11-19 Release Manager + + * GCC 3.2.1 Released. + + 2002-11-19 Release Manager + + * GCC 3.2.1 Released. + + 2002-11-18 Release Manager + + * GCC 3.2.1 Released. + 2002-08-14 Release Manager * GCC 3.2 Released. diff -Nrc3pad gcc-3.2/faq.html gcc-3.2.1/faq.html *** gcc-3.2/faq.html Wed Aug 14 09:31:14 2002 --- gcc-3.2.1/faq.html Tue Nov 19 18:11:49 2002 *************** about known problems with installing or *** 217,226 **** These are included in the sources for a release in INSTALL/specific.html, and the latest version is always available at the GCC web site. ! Reports of successful builds for GCC versions ! 3.0 and ! 2.95 ! are also available at the web site.


    --- 217,224 ---- These are included in the sources for a release in INSTALL/specific.html, and the latest version is always available at the GCC web site. ! Reports of successful builds ! for several versions of GCC are also available at the web site.


    diff -Nrc3pad gcc-3.2/gcc/ChangeLog gcc-3.2.1/gcc/ChangeLog *** gcc-3.2/gcc/ChangeLog Wed Aug 14 08:59:50 2002 --- gcc-3.2.1/gcc/ChangeLog Tue Nov 19 17:48:23 2002 *************** *** 1,3 **** --- 1,1001 ---- + 2002-11-19 Release Manager + + * GCC 3.2.1 Released. + + 2002-11-19 Release Manager + + * GCC 3.2.1 Released. + + 2002-11-18 Release Manager + + * GCC 3.2.1 Released. + + Sat Nov 16 02:54:29 CET 2002 Jan Hubicka + + * jump.c (tablejump_p): New. + * cfgcleanup.c (try_optimize_cfg): Do not merge blocks across tablejump. + * rtl.h (tablejump_p): Declare. + + 2002-11-16 Graham Stott + + * flow.c (life_analysis): Update LABEL_NUSES before purging + dead jumptables. + + 2002-11-13 Janis Johnson + + * doc/install.texi (Testing): Document extra Java testing. + * doc/sourcebuild.texi (Test Suites): Document libgcj testing. + + 2002-11-12 Franz Sirl + + * doc/install.texi (powerpc-*-linux-gnu*): Update binutils requirement. + + 2002-11-12 Gerald Pfeifer + + * doc/contrib.texi (Contributors): Use GCJ instead of gcj to refer + to that entire project. + + 2002-11-12 Rainer Orth + + * config/mips/t-iris6 (MULTILIB_OSDIRNAMES): Restore old + directories. + + 2002-11-11 Janis Johnson + + * doc/contrib.texi: Merge in the list from the libstdc++ web pages. + + 2002-11-11 Franz Sirl + + PR c/8467 + * stmt.c (tail_recursion_args): Handle DECL_MODE differing from the + mode of DECL_RTL case. + + 2002-11-11 Neil Booth + + PR preprocessor/4890 + * tradcpp.c (output_line_command): When leaving a file, + system_include_depth has not yet been decremented. + + 2002-11-10 Joel Sherrill + + * config/m68k/t-crtstuff (crti.o): Use this... + ($(T)crti.o): ... instead. + (crtn.o): Use this... + ($(T)crtn.o): ... instead. + + 2002-11-10 Ralf Corsepius + + * config/mips/mips.md (movdi_usd): Use %z1 in place of %1. + + 2002-11-11 Graham Stott + Jan Hubicka + + PR 8502 + * cfgrtl.c (try_redirect_by_replacing_jump): Do not kill computed + jumps post reload. + + 2002-11-08 H.J. Lu + + Fix c/5351 and optimization/7591. + + * calls.c (store_one_arg): Remove ATTRIBUTE_UNUSED on + variable_size. Mark any slots used for the argument as in-use + only if we can't pass all arguments to a library call in + registers. + + 2002-11-07 H.J. Lu + + Fix bootstrap/8146 and + gcc.c-torture/execute/20020307-2.c with -march=i686. + + * calls.c (PUSH_ARGS_REVERSED): Define only if not defined. + * expr.c (PUSH_ARGS_REVERSED): Likewise. + + * config/i386/i386.h (PUSH_ARGS_REVERSED): Set to 1. + + 2002-11-04 Aldy Hernandez + + Fix c/8252. + + * config/rs6000/rs6000.c (rs6000_legitimate_address): Disallow + vectors from PRE_INC/DEC. + + 2002-11-06 Richard Henderson + + PR optimization/7520 + * cfganal.c (flow_active_insn_p): New. + (forwarder_block_p): Use it. + + 2002-11-06 Janis Johnson + + * doc/contrib.texi: Merge in the list from the Java web pages. + + 2002-11-06 David O'Brien + + * config/sparc/freebsd.h: Fix typo. + + 2002-11-05 Bob Wilson + + * config/xtensa/elf.h (LIB_SPEC): Add "-lhal". + + 2002-11-04 Aldy Hernandez + + Backport patch to fix PR c/8451. + + 2002-04-25 Richard Henderson + + * expmed.c (extract_bit_field): Fall through to generic code rather + than aborting on subreg special case. + + 2002-11-01 Mark Mitchell + + PR c++/8391 + * toplev.c (rest_of_compilation): Do not refuse to output code for + an inline function in a local class. + + 2002-11-01 David O'Brien + + * config/sparc/freebsd.h (CPP_CPU64_DEFAULT_SPEC): Define __arch64__. + Add comment. + + 2002-11-01 David O'Brien + + * config/sparc/freebsd.h (TRANSFER_FROM_TRAMPOLINE): Define + __enable_execute_stack function. + + 2002-11-01 Richard Earnshaw (rearnsha@arm.com) + + PR target/7856 + * arm.c (use_return_insn): Don't use a return insn if there are + saved integer regs, but LR is not one of them. + + Thu Oct 31 18:31:22 CET 2002 Jan Hubicka + + * i386.c (override_options): Set defaults for flag_omit_frame_pointer, + flag_asynchronous_unwind_tables, flag_pcc_struct_return. + * i386.c (optimization_options): Set flag_omit_frame_pointer, + flag_asynchronous_unwind_tables, flag_pcc_struct_return to 2. + Do not clear -momit-leaf-frame-pointer when profiling. + (ix86_frame_pointer_required): Frame pointer is allways required when + profiling. + + 2002-10-30 Mark Mitchell + + * varasm.c (asm_output_aligned_bss): Do not call + ASM_GLOBALIZE_LABEL. + + 2002-10-29 Janis Johnson + + * doc/invoke.texi (-profile-arcs): Remove references to -a and -ax. + + 2002-10-29 Eric Botcazou + + * expr.c (expand_expr) [PLUS]: Don't use simplify_binary_operation; + check for zero operands explicitly. + + 2002-10-21 Dale Johannesen + + PR target/7133 + * config/rs6000/rs6000.c (rs6000_reverse_condition): Handle + unsafe math reversals correctly for RTL generation. + (output_cbranch): Replace rs6000_reverse_condition call + by its former definition. + + Sun Oct 27 10:12:27 CET 2002 Jan Hubicka + + * linux64.h (DEFAULT_PCC_STRUCT_RETURN): Define. + + PR target/6890 + * xmmintrin.h (_MM_TRANSPOSE4_PS): New. + + 2002-10-25 Zack Weinberg + + PR middle-end/6994 + * c-objc-common.c (inline_forbidden_p): Can not inline + functions containing structures or unions containing VLAs. + * tree-inline.c (walk_tree): For all class 't' nodes, walk + TYPE_SIZE and TYPE_SIZE_UNIT. #undef WALK_SUBTREE_TAIL at end. + (copy_tree_r): Copy types if they are variably modified. + + * hooks.c (hook_tree_bool_false): New. + * hooks.h: Prototype it. + * langhooks.h (struct lang_hooks_for_tree_inlining): Add + var_mod_type_p. + * langhooks-def.h: Default for tree_inlining.var_mod_type_p is + hook_tree_bool_false. + + * tree.c (variably_modified_type_p): Moved here from + cp/tree.c. Use lang_hooks.tree_inlining.var_mod_type_p for + language-specific cases. Due to this, must weaken some 'if + and only if' checks to merely 'if'. + * tree.h: Prototype variably_modified_type_p. + + 2002-10-22 Jim Wilson + + * config/i386/i386.md (subdi3_1): Add call to ix86_binary_operator_ok. + + 2002-10-15 Jim Wilson + + PR target/6981 + * config/i386/i386.md (adddi3_1): Add call to ix86_binary_operator_ok. + + 2002-10-24 Richard Henderson + + PR opt/7944 + * reload.c (find_reloads_toplev): Use simplify_gen_subreg; mode + of X is not important when simplifying subregs of constants. + + 2002-10-23 Robert Lipe + + * config.gcc (i[34567]86-*-sco3.2v5*): Fix tm_file. + + 2002-10-23 Roger Sayle + + PR c/761 + * doc/invoke.texi: Fix some overfull hboxes in "make dvi". + Document --version, -fno-sched-interblock, -fno-sched-spec, + -fsched-spec-load, -fsched-spec-load-dangerous, + -fsched-verbose=n, -fno-branch-count-reg and -fbounds-check. + + 2002-10-23 Ulrich Weigand + + * config/s390/s390.md ("*movdi_64"): Fix op_type attribute. + ("*movdf_64"): Likewise. + ("*lshrdi3_64"): Likewise. + + 2002-10-21 Matthias Klose + + * Backport, without whitespace change: + 2002-06-19 Akim Demaille + * c-parse.in (initelt: identifier ':' initval): Add an empty + action to fix a type clash. + (aliasdecl, classdef): Add the missing closing `;'. + + Sat Oct 19 15:49:14 CEST 2002 Jan Hubicka + + * mmintrin.h (__m64): typedef it to v2si. + (_mm_cvtsi32_si64, _mm_cvtsi32_si64_mm_sll_pi16, + _mm_sll_pi32, _mm_sll_pi64, _mm_slli_pi64, _mm_sra_pi16, + _mm_sra_pi32, _mm_srl_pi16, _mm_srl_pi32, _mm_srl_pi64, + _mm_srli_pi64, _mm_and_si64, _mm_andnot_si64, + _mm_or_si64, _mm_xor_si64): Add neccesary casts. + * xmmintrin.h (_mm_setzero_si64): Likewise. + + PR target/7693 + Patch by Shawn Wagner + * mmintrin.h: Replace pi64 by si64. + + 2002-10-18 Zack Weinberg + + * decl.c (start_decl): Point users of the old initialized- + typedef extension at __typeof__. + + Thu Oct 17 17:14:07 CEST 2002 Jan Hubicka + + PR opt/7630 + * reload.c (reload_inner_reg_of_subreg): New argument output; + (push_reload): Update call. + + PR c++/6419 + * expr.c (expand_expr): Use DECL_RTL_SET_P. + + Wed Apr 24 23:45:37 2002 J"orn Rennecke + + * calls.c (expand_call): Take current_function_pretend_args_size + into account when setting argblock for sibcalls. + + Wed Oct 16 19:43:38 CEST 2002 Jan Hubicka + + PR target/7396 + * i386.c (builtin_description):Drop cmpg[te]s[sd]. + * xmmintrin.h (__mm_cmpg[te]_s[sd]): Rewrite using + swapped alternative. + + 2002-10-16 Jakub Jelinek + + * fold-const.c (fold): Fix a typo. + + 2002-10-15 Ulrich Weigand + + PR target/7370 + * config/s390/s390.md ("*addsi3_inv"): New pattern. + + PR target/8232 + * config/s390/s390.md ("cmpstrsi"): Convert length operand + from SImode to Pmode. + + 2002-10-15 Janis Johnson + + * doc/install.texi: Formatting changes for conformance to HTML 4.01. + + 2002-10-15 Ulrich Weigand + + PR opt/7409 + * loop.c (loop_regs_scan): Mark registers used for function + argument passing as MAY_NOT_OPTIMIZE. + + 2002-10-14 Neil Booth + + PR preprocessor/7862 + PR preprocessor/8190 + * gcc.c (cpp_unique_options): Don't delete .d files. + Remove stray whitespace. + + 2002-10-14 Jakub Jelinek + + * config/i386/i386.h (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): + Handle TARGET_64BIT. + + 2002-10-14 Mark Mitchell + + PR optimization/6631 + * Makefile.in (function.o): Depend on langhooks.h. + * alias.c (objects_must_conflict_p): Check honor_readonly when + examining TYPE_READONLY. + * function.c (assign_stack_temp_for_type): Likewise. + + 2002-10-12 John David Anglin + + * tree.c (tree_size): Revise expressions using TREE_CODE_LENGTH and + TREE_VEC_LENGTH to ensure values are promoted before doing subtraction. + + 2002-10-11 Janis Johnson + + * doc/compat.texi: Add info about C++ libraries. + + Thu Oct 10 19:47:41 CEST 2002 Jan Hubicka + + PR target/5610 + * invoke.texi (-msse-math): Kill + (-msse): Add note to mfpmath=sse. + + Thu Oct 10 17:38:29 CEST 2002 Jan Hubicka + + PR ice/7951 + * reload1.c (emit_input_reload_insns): Use constrain_operands + instead of constraint_accepts_reg_p to verify optimization. + (constraint_accepts_reg_p): Kill + + Thu Oct 10 17:05:22 CEST 2002 Jan Hubicka + + PR target/7723 + * i386.c (ix86_expand_vector_move): Do not generate const0->mem moves. + + 2002-10-09 Zack Weinberg + + PR c/7353 + * c-decl.c (start_decl): Unconditionally issue error for + 'typedef foo = bar'. + (finish_decl): Remove special case for TYPE_DECL with initializer. + + * doc/extend.texi: Delete "Naming Types" section. Change all + cross-references to that section to refer to "Typeof" instead. + Add the useful safe-max()-macro example from "Naming Types" to + "Typeof", rewritten using that extension. Add some compatibility + notes to "Typeof." + + 2002-10-02 Richard Henderson + + PR opt/7124 + * config/i386/i386.c (ix86_register_move_cost): Increase cost + for secondary_memory_needed pairs. + + Wed Oct 9 19:09:13 CEST 2002 Jan Hubicka + + PR opt/7912 + PR opt/7390 + * i386.c (athlon_cost): Fix the move costs. + + 2002-10-09 Alan Modra + + * libgcc2.c (__floatdisf): Properly cure double rounding. + + 2002-10-09 Gabriel Dos Reis + + PR doc/7484 + * doc/invoke.texi (Option Summary): List + -Wmissing-declarations as a C only option. + + 2002-10-08 Jakub Jelinek + + * config/sparc/t-linux64 (MULTILIB_OPTIONS): Remove + mno-app-regs|mcmodel=medany. + (MULTILIB_DIRNAMES, MULTILIB_OSDIRNAMES): Remove alt. + (MULTILIB_EXCEPTIONS, MULTILIB_EXCLUSIONS, MULTILIB_MATCHES): Remove. + (CRTSTUFF_T_CFLAGS): Define. + + 2002-09-25 Eric Botcazou + Volker Reichelt + + PR c/7411 + * expr.c (expand_expr) [PLUS]: Simplify after the operands + have been expanded in EXPAND_NORMAL mode. + + 2002-10-06 Richard Henderson + + * config/rs6000/rs6000.md (load_toc_v4_PIC_2): Fix base constraint. + + 2002-10-06 Roger Sayle + + PR optimization/6627 + * toplev.c (force_align_functions_log): New global variable. + * flags.h (force_align_functions_log): Add extern prototype. + * varasm.c (assemble_start_function): Use it to force minimum + function alignment. + * config/i386/i386.h (FUNCTION_BOUNDARY): Set the correct + minimum function alignment to one byte. + (TARGET_PTRMEMFUNC_VBIT_LOCATION): Store the virtual bit in + the least significant bit of vtable member function pointers. + * tree.h (enum ptrmemfunc_vbit_where_t): Move definition to + here from cp/cp-tree.h. + + 2002-10-06 Neil Booth + + Debian BTS Bug #157416 + * cpplib.c (destringize_and_run): Kludge around getting + tokens from in-progress macros. + (_cpp_do__Pragma): Simplify. + + 2002-10-06 Frank Ch. Eigler + + * cppinit.c (init_standard_includes, parse_option): Use strncmp. + + 2002-10-05 Jakub Jelinek + + * gcc.c (set_multilib_dir): Don't access *end. + Use memcpy instead of strncpy. Don't write beyond malloced buffer. + (print_multilib_info): Don't show paths starting with ".:". + * genmultilib: Add new option, "yes" if multilibs are enabled. + Update comments. If multilibs not enabled, print .:${osdirout} + for each directory. If multilibs are enabled, always print + ${dirout}:${osdirout}, even if the two are the same. + * Makefile.in (s-mlib): Pass @enable_multilib@ to genmultilib. + Pass all MULTILIB_* variables to genmultilib even if + --disable-multilib but MULTILIB_OSDIRNAMES is not empty. + + * gcc.c (print_multi_os_directory): New variable. + (option_map): Support --print-multi-os-directory. + (struct prefix_list): Add os_multilib field. + (multilib_os_dir): New variable. + (static_specs): Add multilib_options. + (find_a_file): Add multilib argument. Search in GCC or OS multilib + subdirs if non-zero. + (read_specs, execute): Update callers. + (find_file): Likewise. Don't prefix name with multilib_dir, instead + pass 1 as multilib option. + (display_help): Include --print-multi-os-directory. + (add_prefix): Add os_multilib argument. Initialize pl->os_multilib. + (process_command): Update callers. Handle --print-multi-os-directory. + (do_spec_1) ['D']: Use multilib_os_directory if pl->os_multilib is + set. + (main): Update find_a_file and add_prefix callers. + Handle print_multi_os_directory. + (struct mdswitchstr): New. + (mdswitches, n_mdswitches): New variables. + (used_arg): Add MULTILIB_DEFAULT switches too if they are not + present on the command line nor their mutually incompatible + switches. + (default_arg): Optimize. + (set_multilib_dir): Compute multilib_os_dir. Initialize mdswitches + array. + (print_multilib_info): Only print GCC multilib dir name, not OS + multilib dirname. + * genmultilib: Add osdirnames parameter. Output multilib_options + variable. If osdirnames is specified, output dirnames as + dirname:osdirname. + * mklibgcc.in: Use MULTILIB_OSDIRNAMES, --print-multi-directory + and --print-multi-os-directory instead of SHLIB_SLIBDIR_SUFFIXES + to compute libgcc_s soname and install path. + * Makefile.in (libgcc.mk): Pass MULTILIB_OSDIRNAMES instead of + SHLIB_SLIBDIR_SUFFIXES to mklibgcc. + (s_mlib): Pass MULTILIB_OSDIRNAMES or nothing as last genmultilib + argument. + + * config/sparc/t-linux64 (MULTILIB_OSDIRNAMES): Set. + (SHLIB_SLIBDIR_SUFFIXES): Remove. + * config/sparc/linux64.h (STARTFILE_SPEC32, STARTFILE_SPEC64, + ENDFILE_SPEC32, ENDFILE_SPEC64, ENDFILE_COMMON): Remove. + (STARTFILE_SPEC, ENDFILE_SPEC): Don't distinguish between -m32 + and -m64. + * config/sparc/t-sol2-64 (MULTILIB_OSDIRNAMES): Set. + (SHLIB_SLIBDIR_SUFFIXES): Remove. + * config/sparc/sol2-bi.h (STARTFILE_SPEC32, STARTFILE_SPEC64): Remove. + (STARTFILE_ARCH_SPEC): Remove. + (STARTFILE_SPEC): Add values-X*.o here. + * config/i386/t-linux64 (MULTILIB_OSDIRNAMES): Set. + (SHLIB_SLIBDIR_SUFFIXES): Remove. + * config/i386/linux64.h (STARTFILE_PREFIX_SPEC): Remove. + (STARTFILE_SPEC, ENDFILE_SPEC): Don't distinguish between m32 and + !m32. + * config/mips/t-iris6 (MULTILIB_OSDIRNAMES): Set. + (SHLIB_SLIBDIR_SUFFIXES): Remove. + + 2002-10-05 Neil Booth + + PR preprocessor/8120 + * doc/cpp.texi: Update documentation of bad use of ##. + + Thu Oct 3 23:15:15 CEST 2002 Jan Hubicka + + * i386.h (CPP_SPECS): fix defines for -msse, -msse2, -mpentium2,3. + + Thu Oct 3 21:35:36 CEST 2002 Jan Hubicka + + * toplev.c (rest_of_compilation): Dump loops before clobbering + the structure. + + * expr.c (force_operand): Use expand_simple_* to handle more + cases. + + * i386.c (q_regs_operand): Use ANY_QI_REG_P. + + * i386.c (override_options): Fix stack alignment. + (classify_argument): Handle variable sized types. + (ix86_expand_int_movcc): Avoid RTL sharing problem. + + * i386.md (prefetch_sse_rex, prefetch_3dnow_rex): New. + (prefetch): Properly handle 64bit case. + + * i386.c (classify_argument): Properly compute word size of the analyzed object. + + * jump.c (reg_or_subregno): New function. + * rtl.h (reg_or_subregno): Declare + * unroll.c (find_splittable_givs): Handle subregs. + + Richard Sandiford : + + * expr.c (force_operand): Fix reversed move. + + Andreas Jaeger : + + * config/i386/linux64.h (STARTFILE_PREFIX_SPEC): New. + + Janis Johnson : + + * loop.c (emit_prefetch_instructions): Several small fixes. + + Thu Sep 5 00:34:33 2002 J"orn Rennecke + + * loop.c (scan_loop): Don't mark separate insns out of a libcall + for moving. + (move_movables): Abort if we see the first insn of a libcall. + + 2002-10-01 David S. Miller + + PR middle-end/7151 + * config/sparc/sparc.md (movdi_insn_sp32_v9): Accept 'e' regs. + (movdi reg/reg split): Match only on sparc32, and v9 when int regs. + + 2002-10-01 David S. Miller + Jan Hubicka + + * reload1.c (gen_reload:SECONDARY_MEMORY_NEEDED): Handle SUBREG. + * reload.c (push_reload:SECONDARY_MEMORY_NEEDED): Likewise. + + 2002-09-30 Bob Wilson + + * config/xtensa/xtensa.h (REG_CLASS_NAMES, REG_CLASS_CONTENTS): + Add new RL_REGS register class. + (PREFERRED_RELOAD_CLASS, PREFERRED_OUTPUT_RELOAD_CLASS): + Call xtensa_preferred_reload_class for both input and output reloads. + * config/xtensa/xtensa.c (xtensa_regno_to_class): Use new RL_REGS class. + (xtensa_preferred_reload_class): Handle output reloads; use RL_REGS + instead of either AR_REGS or GR_REGS classes. + (xtensa_secondary_reload_class): Use new RL_REGS class. + * config/xtensa/xtensa-protos.h (xtensa_preferred_reload_class): Update. + + 2002-08-21 John David Anglin + + * cppinit.c (remove_dup_nonsys_dirs): Fix warning and return value. + + 2002-08-20 John David Anglin + + * cppinit.c (remove_dup_dir): Add head_ptr argument to handle removal + at head. + (remove_dup_nonsys_dirs): New function. + (remove_dup_dirs): Change argument head to head_ptr. Remove warnings. + (merge_include_chains): Remove non-system include directories from + quote and bracket include chains when they duplicate equivalent system + directories. + * doc/cpp.texi (-I): Update. + * doc/cppopts.texi (-I): Update. + * doc/install.texi (--with-local-prefix): Further document usage of + this option. + * doc/invoke.texi (-I): Update. + + 2002-09-30 Richard Earnshaw + + * arm.h (BASE_REG_CLASS): Always return LO_REGS for Thumb. + (MODE_BASE_REG_CLASS, case Thumb): Only return BASE_REGS if we know + that we have a SImode access, and only then if reload hasn't completed; + for all other cases, use LO_REGS. + + 2002-09-29 David S. Miller + + * config/sparc/linux64.h (STARTFILE_SPEC32, ENDFILE_SPEC32): Kill + hardcoded paths. + + 2002-09-27 Alexander N. Kabaev + + PR preprocessor/8055 + * cppmacro.c (stringify_arg): Do not overflow the buffer + with the terminating NUL when the argument to be stringified + has no tokens. + + 2002-09-26 David S. Miller + + PR optimization/7335 + * calls.c (emit_library_call_value_1): Passing args by reference + converts a CONST function into a PURE one. + + 2002-09-26 Richard Henderson + + PR c/7160 + * sched-deps.c (sched_analyze_insn): Make clobber insns depend + on call insns. + + 2002-09-27 Alan Modra + + * doloop.c (doloop_modify_runtime ): Adjust + by absolute loop increment, not loop increment. + + 2002-09-25 David S. Miller + + PR target/7842 + * config/sparc/sparc.c (set_extends): SImode ASHIFT does not + extend. + + 2002-09-20 Jeroen Dobbelaere + + * config/arm/arm.md (sign_extract_onebit, not_signextract_onebit): + Add clobber of the condition code register. + + 2002-09-18 Richard Earnshaw (rearnsha@arm.com) + + PR optimization/7967 + * arm.md (ne_zeroextractsi): Add clobber of the condition code + register. + + 2002-09-17 Richard Henderson + + * sibcall.c (optimize_sibling_and_tail_recursive_call): Also remove + RTX_UNCHANGING_P markers for successful tail-recursive replacement. + + 2002-09-16 Richard Henderson + + PR opt/7515 + * c-objc-common.c (c_cannot_inline_tree_fn): Don't auto-inline + functions that don't bind locally. + + 2002-09-17 Alan Modra + + Merge from mainline. + 2002-07-20 Alan Modra + PR optimization/7130 + * loop.h (struct loop_info): Add "preconditioned". + * unroll.c (unroll_loop): Set it. + * doloop.c (doloop_modify_runtime): Correct count for unrolled loops. + + 2002-06-24 Alan Modra + PR optimization/6984 + * doloop.c (doloop_valid_p): Correct comment. + (doloop_modify_runtime ): Simplify. + (doloop_modify_runtime ): Don't emit code when NE. + + 2002-09-16 Jeff Law + + * libgcc2.c: Do not include machmode.h. + + 2002-09-16 Jason Merrill + Danny Smith + + * config/i386/winnt.c (ix86_handle_dll_attribute): Set + DECL_EXTERN and TREE_PUBLIC for dllimported variables here... + (i386_pe_mark_dllimport): Not here. + + 2002-09-14 Stephane Carrez + + * config/m68hc11/m68hc11.md ("movdi_internal"): Allow any offsetable + memory operand when source is 0 (K constraint). + ("movsi_internal"): Likewise. + ("movdf_internal"): Likewise. + ("movsf_internal"): Likewise. + + 2002-09-14 Alan Modra + + Merge from mainline. + 2002-09-14 Alan Modra + * doc/tm.texi (DBX_OUTPUT_NFUN): Describe. + * dbxout.c (dbxout_function_end): Use DBX_OUTPUT_NFUN. + * config/rs6000/linux64.h (DBX_OUTPUT_NFUN): Define. + + 2002-08-27 David Edelsohn + * config/rs6000/linux64.h (ADJUST_FIELD_ALIGN): Undef before define. + + 2002-08-02 Alan Modra + * config/rs6000/linux64.h (DBX_OUTPUT_BRAC): Define. + (DBX_OUTPUT_LBRAC, DBX_OUTPUT_RBRAC): Define. + * config/rs6000/rs6000.c (output_toc): Don't use lshift_double when + HOST_BITS_PER_WIDE_INT == 64. + + 2002-07-27 Alan Modra + * config/rs6000/rs6000.c (output_profile_hook): Don't generate profile + label reference when NO_PROFILE_COUNTERS. + + 2002-07-11 Alan Modra + * config/rs6000/linux64.h (ASM_SPEC): Define. + + 2002-09-13 Alan Modra + + Merge from mainline. + 2002-07-24 Alan Modra + PR c/7150, target/7380 + * config/rs6000/rs6000.md: Remove scratch reg on insns using + addze and similar (plus (comparison r1 r2) r3) insns. Add + missing scratch reg in one case. Formatting fixes. + + 2002-07-18 Alan Modra + PR other/7114, target/5967 + * config/rs6000/rs6000.c (first_reg_to_save): Remove bogus + adjustments to first_reg for profiling case. + (output_function_profiler): Correct lr save slot for ABI_AIX_NODESC. + Disable profiling for 64 bit code on both ABI_V4 and ABI_AIX_NODESC. + Save static chain reg to sp + 12 on ABI_AIX_NODESC. + * config/rs6000/sysv4.h (ASM_OUTPUT_REG_PUSH): Define. + (ASM_OUTPUT_REG_POP): Define. + * config/rs6000/linux64.h (ASM_OUTPUT_REG_PUSH): Undef. + (ASM_OUTPUT_REG_POP): Undef. + + 2002-06-30 Alan Modra + PR optimization/7120 + * unroll.c (loop_iterations): Handle EQ loops. + + 2002-09-13 Alan Modra + + * config/rs6000/rs6000.c (rs6000_emit_load_toc_table): Remove "if" + nesting. Correct test for non-PowerPC64 ELF ABI_AIX. + * config/rs6000/rs6000.md (load_toc_v4_PIC*): Disable when ABI_AIX. + + 2002-09-12 Janis Johnson + + * doc/compat.texi: New file with new chapter, Binary Compatibility. + + 2002-09-12 Jason Merrill + + * calls.c (store_one_arg): Use size_in_bytes to determine the + amount of space to push. + + 2002-09-12 Jakub Jelinek + + * config/sparc/linux64.h (STARTFILE_SPEC32): Fix a typo. + + 2002-09-12 Alan Modra + + * emit-rtl.c (set_mem_size): New function. + * expr.h (set_mem_size): Declare. + * config/rs6000/rs6000.c (expand_block_move_mem): Exterminate. + (expand_block_move): Instead, use adjust_address and + replace_equiv_address to generate proper aliasing info. + Move common code out of conditionals. Localize vars. + + 2002-09-11 Alexander Kabaev + + Wed Apr 24 13:48:25 CEST 2002 Jan Hubicka + * loop.c (canonicalize_condition): Use gen_int_mode. + + 2002-09-11 Janis Johnson + + * Makefile.in (TEXI_GCC_FILES): Add compat.texi. + * doc/gcc.texi (Top): Add new chapter, Binary Compatibility, and + include its file, compat.texi. + * doc/trouble.texi (Interoperation): Update information about C++ ABI + issues. + * doc/invoke.texi (-fshort-wchar): Move to Code Generation Options. + (-fpcc-struct-return, -freg-struct-return, -fshort-enums, + -fshort-double, -fshort-wchar, -fpack-struct, -fleading-underscore): + Warn that these options can break ABI compatibility. + (Many places): Fix overfull hboxes. + + * doc/extend.texi: Fix a broken link; fix overfull hboxes. + * doc/install.texi: Fix a typo, some formatting directives, and + overfull hboxes. + * doc/c-tree.texi: Fix overfull hboxes. + * doc/cppopts.texi: Ditto. + * doc/makefile.texi: Ditto. + * doc/rtl.texi: Ditto. + * doc/standards.texi: Ditto. + * doc/tm.texi: Ditto. + + 2002-09-08 Alan Modra + + * reload.c (find_reloads

    ): Pass operand_mode to + find_reloads_address. + + 2002-09-07 Scott Snyder + + PR target/7374 + * config/alpha/alpha.md (abstf2): Fix typo: 'neg' for 'abs'. + + 2002-09-07 Glen Nakamura + + PR opt/7814 + * sched-deps.c (sched_analyze_insn): Make sure to add insn + to reg_last->sets after flushing the dependency lists to guarantee + that subsequent clobbers will be dependent on it. + + 2002-09-07 Alan Modra + + * config/rs6000/linux64.h (ASM_PREFERRED_EH_DATA_FORMAT): Define. + + 2002-09-06 Jakub Jelinek + + * configure.in (HAVE_AS_OFFSETABLE_LO10): Use -xarch=v9 + unconditionally when gcc_cv_as_flags64 checks are gone. + * configure: Rebuilt. + + 2002-09-04 Eric Botcazou + + PR c/7102 + * optabs.c (expand_binop): Convert CONST_INTs in all cases. + + 2002-09-04 Jason Thorpe + + * config/sparc/t-netbsd64: Disable multilib for now. + + 2002-09-01 Alexandre Oliva + + * c-tree.h (skip_evaluation): Move declaration... + * c-common.h: ... here. + * c-typeck.c (build_external_ref): Don't assemble_external nor + mark a tree as used if skip_evaluation is set. + * c-parse.in (typeof): New non-terminal to set skip_evaluation + around TYPEOF. + (typespec_nonreserved_nonattr): Use it. + + 2002-09-01 Marek Michalkiewicz + + 2002-08-13 Denis Chertykov + * config/avr/avr.md: Call CC_STATUS_INIT in all peepnoles + which can change CC0. + + 2002-08-29 Rodney Brown + + * doc/install.texi (Specific, alpha*-dec-osf*): Add "virtual + memory exhausted" workarounds. + + 2002-08-29 John David Anglin + + * install.texi (hppa64-hp-hpux11*): Document installation procedure. + + 2002-08-28 Jason Merrill + + * c-common.c (c_expand_expr) [STMT_EXPR]: If the last expression is + a VAR_DECL with RTL that matches the target, just return that RTL. + + 2002-08-28 Daniel Berlin + + * tree-inline.c (expand_call_inline): Make the statement + expression we generate have a COMPOUND_STMT. + + 2002-08-27 Mark Mitchell + + * doc/invoke.texi: Document -Wabi. + + 2002-08-23 David Edelsohn + + * config/rs6000/rs6000.c (rs6000_select_section): Treat + DEFAULT_ABI == ABI_AIX like PIC. Test PIC & reloc for readonly + default. + (rs6000_unique_section): Likewise. + + 2002-08-22 Jason Merrill + + * langhooks-def.h (LANG_HOOKS_EXPR_SIZE): New macro. + * langhooks.c (lhd_expr_size): Define default. + * langhooks.h (struct lang_hooks): Add expr_size. + * explow.c (expr_size): Call it. + (int_expr_size): New fn. + * expr.h: Declare it. + * expr.c (expand_expr) [CONSTRUCTOR]: Use it to calculate how + much to store. + + 2002-08-23 Alan Modra + + * config/rs6000/rs6000.c (output_mi_thunk): Don't determine insns + for loading delta with num_insns_constant_wide. Calculate + delta_low, delta_high without using a conditional. + + 2002-08-20 Andreas Jaeger + + Merge from trunk: + Wed Jul 17 00:20:48 CEST 2002 Jan Hubicka + + * i386.md (prefetch): Fix for 64bit mode. + (prefetch_sse_rex, prefetch_3dnow_rex): New patterns. + + 2002-08-11 Andreas Jaeger + PR target/7531: + * doc/invoke.texi (i386 and x86-64 Options): Document -mcmodel. + + 2002-06-24 Jeff Law + + * flow.c (propagate_one_insn): When removing an insn + with a REG_LIBCALL note but not the entire libcall sequence, + delete the associated REG_RETVAL note. + + 2002-06-04 Jeff Law + Michael Matz + + * sched-int.h (struct deps): New field libcall_block_tail_insn. + * sched_deps.c (init_deps): Initialize libcall_block_tail_insn. + * sched_deps.c (sched_analyze_insn): If libcall_block_tail_insn + is set, then mark the current insn as being part of a libcall + scheduling group. + (sched_analyze): Set and clear libcall_block_tail_insn appropriately. + + * haifa-sched.c (schedule_block): Do not count USE or CLOBBER + insns against the issue rate. + + 2002-05-30 Jeff Law + + * flow.c (propagate_one_insn): Revise yesterday's patch. Delete + a dead insn with a REG_RETVAL note when the entire libcall is not + dead and remove the associated REG_LIBCALL note at the same time. + + 2002-05-29 Jeff Law + + * flow.c (propagate_one_insn): Do not remove a dead insn if it + contains a REG_RETVAL note. + + * haifa-sched (sched_analyze): Remove another useless clearing + of SCHED_GROUP_P I missed yesterday. + + 2002-05-28 David Edelsohn + Jeff Law + + * optabs.c (expand_binop): Fix nwords sign warnings. + generate pseudo for add_optab. + + * sched-deps.c (sched_analyze): Do not clear SCHED_GROUP_P. + * haifa-sched.c (move_insn): Clear SCHED_GROUP_P after it is used. + + 2002-08-18 Neil Booth + + PR preprocessor/7602 + * cppinit.c (path_include): Treat the system environment + variables as being cxx_aware. + + 2002-08-16 David Edelsohn + + * collect2.c (is_ctor_dtor): Add other possible JOINER values. + + * config/rs6000/rs6000.c (output_mi_thunk): Return to function + section on TARGET_ELF. + + * doc/install.texi (*-ibm-aix*): Explain AIX shared object versioning. + (Binaries): Update Bull Freeware URL. + + 2002-08-15 Neil Booth + + PR preprocessor/7358 + PR preprocessor/7357 + PR preprocessor/7526 + * cppfiles.c (stack_include_file): Ignore main file if + appropriate. Correct test of whether a dependency should + be output. + * cppinit.c (init_dependency_output): Ignore main file + for SUNPRO_DEPENDENCIES. + (struct lang_flags): Rename trigraphs std. + (set_lang): Update. + * cpplib.c (run_directive): Kludge so _Pragma dependency works. + * cpplib.h (struct cpp_options): New members. + * cppmacro.c (collect_args): Flag whether to swallow a possible + future comma pasted with varargs. + (replace_args): Use this flag. + * doc/cpp.texi: Update varargs extension documentation. + * doc/cppenv.texi: Update. + 2002-08-14 Release Manager * GCC 3.2 Released. *************** *** 105,111 **** instead of gen_rtx_SUBREG. (arm_reload_out_hi): Use gen_lowpart instead of gen_rtx_SUBREG to access QImode components. ! * config/arm/arm.md: Disable zero_extend split for QImode subregs in BIG_ENDIAN mode. (storehi_bigend): Match use of least significant byte. (storeinthi): Remove extraneous SUBREG. --- 1103,1109 ---- instead of gen_rtx_SUBREG. (arm_reload_out_hi): Use gen_lowpart instead of gen_rtx_SUBREG to access QImode components. ! * config/arm/arm.md: Disable zero_extend split for QImode subregs in BIG_ENDIAN mode. (storehi_bigend): Match use of least significant byte. (storeinthi): Remove extraneous SUBREG. *************** *** 191,197 **** * config/m68hc11/m68hc11.md ("*movqi_68hc12"): Avoid allocating QI mode registers in soft registers. ! ("zero_extendqihi2"): Do not take into account soft registers for register allocation (use '*' constraint). 2002-07-05 Stephane Carrez --- 1189,1195 ---- * config/m68hc11/m68hc11.md ("*movqi_68hc12"): Avoid allocating QI mode registers in soft registers. ! ("zero_extendqihi2"): Do not take into account soft registers for register allocation (use '*' constraint). 2002-07-05 Stephane Carrez *************** *** 212,218 **** * dwarfout.c (output_reg_number): Fix warning message. (output_bound_representation): Check SAVE_EXPR_RTL is not NULL before using it. ! 2002-07-03 Richard Henderson * config/i386/i386.md (prologue_get_pc): Issue pop here ... --- 1210,1216 ---- * dwarfout.c (output_reg_number): Fix warning message. (output_bound_representation): Check SAVE_EXPR_RTL is not NULL before using it. ! 2002-07-03 Richard Henderson * config/i386/i386.md (prologue_get_pc): Issue pop here ... *************** *** 255,261 **** * config/m68hc11/m68hc11.md ("*addsi3"): Use 'o' constraint to avoid the auto increment addressing modes. ("*subsi3"): Likewise. ! (split for add/sub on address): For 68HC12 push the value on the stack and do the operation with a pop. 2002-06-28 Stephane Carrez --- 1253,1259 ---- * config/m68hc11/m68hc11.md ("*addsi3"): Use 'o' constraint to avoid the auto increment addressing modes. ("*subsi3"): Likewise. ! (split for add/sub on address): For 68HC12 push the value on the stack and do the operation with a pop. 2002-06-28 Stephane Carrez *************** *** 302,308 **** * config/xtensa/xtensa.h (ASM_OUTPUT_POOL_PROLOGUE): Pass flag_function_sections as new 3rd arg to resolve_unique_section. ! 2002-06-27 Neil Booth PR preprocessor/7070 --- 1300,1306 ---- * config/xtensa/xtensa.h (ASM_OUTPUT_POOL_PROLOGUE): Pass flag_function_sections as new 3rd arg to resolve_unique_section. ! 2002-06-27 Neil Booth PR preprocessor/7070 *************** *** 318,324 **** * doc/install.texi: Change ` bit' to `-bit'. * doc/md.texi: Change `-bits' to `-bit'. * doc/tm.texi: Change `-bits' to ` bits'. ! 2002-06-24 David S. Miller * config/sparc/sparc.h (INIT_TARGET_OPTABS): If ARCH64, set the --- 1316,1322 ---- * doc/install.texi: Change ` bit' to `-bit'. * doc/md.texi: Change `-bits' to `-bit'. * doc/tm.texi: Change `-bits' to ` bits'. ! 2002-06-24 David S. Miller * config/sparc/sparc.h (INIT_TARGET_OPTABS): If ARCH64, set the diff -Nrc3pad gcc-3.2/gcc/Makefile.in gcc-3.2.1/gcc/Makefile.in *** gcc-3.2/gcc/Makefile.in Thu May 23 17:57:21 2002 --- gcc-3.2.1/gcc/Makefile.in Mon Oct 14 21:04:16 2002 *************** libgcc.mk: config.status Makefile mklibg *** 1003,1009 **** SHLIB_MKMAP_OPTS='$(SHLIB_MKMAP_OPTS)' \ SHLIB_MAPFILES='$(SHLIB_MAPFILES)' \ SHLIB_NM_FLAGS='$(SHLIB_NM_FLAGS)' \ ! SHLIB_SLIBDIR_SUFFIXES='$(SHLIB_SLIBDIR_SUFFIXES)' \ mkinstalldirs='$(SHELL) $(srcdir)/mkinstalldirs' \ $(SHELL) mklibgcc > tmp-libgcc.mk mv tmp-libgcc.mk libgcc.mk --- 1003,1009 ---- SHLIB_MKMAP_OPTS='$(SHLIB_MKMAP_OPTS)' \ SHLIB_MAPFILES='$(SHLIB_MAPFILES)' \ SHLIB_NM_FLAGS='$(SHLIB_NM_FLAGS)' \ ! MULTILIB_OSDIRNAMES='$(MULTILIB_OSDIRNAMES)' \ mkinstalldirs='$(SHELL) $(srcdir)/mkinstalldirs' \ $(SHELL) mklibgcc > tmp-libgcc.mk mv tmp-libgcc.mk libgcc.mk *************** libgcc.a: $(LIBGCC_DEPS) *** 1037,1043 **** # switches. multilib.h: s-mlib; @true s-mlib: $(srcdir)/genmultilib Makefile ! if test @enable_multilib@ = yes; then \ $(SHELL) $(srcdir)/genmultilib \ "$(MULTILIB_OPTIONS)" \ "$(MULTILIB_DIRNAMES)" \ --- 1037,1044 ---- # switches. multilib.h: s-mlib; @true s-mlib: $(srcdir)/genmultilib Makefile ! if test @enable_multilib@ = yes \ ! || test -n "$(MULTILIB_OSDIRNAMES)"; then \ $(SHELL) $(srcdir)/genmultilib \ "$(MULTILIB_OPTIONS)" \ "$(MULTILIB_DIRNAMES)" \ *************** s-mlib: $(srcdir)/genmultilib Makefile *** 1045,1053 **** "$(MULTILIB_EXCEPTIONS)" \ "$(MULTILIB_EXTRA_OPTS)" \ "$(MULTILIB_EXCLUSIONS)" \ > tmp-mlib.h; \ else \ ! $(SHELL) $(srcdir)/genmultilib '' '' '' '' '' '' > tmp-mlib.h; \ fi $(SHELL) $(srcdir)/move-if-change tmp-mlib.h multilib.h $(STAMP) s-mlib --- 1046,1057 ---- "$(MULTILIB_EXCEPTIONS)" \ "$(MULTILIB_EXTRA_OPTS)" \ "$(MULTILIB_EXCLUSIONS)" \ + "$(MULTILIB_OSDIRNAMES)" \ + "@enable_multilib@" \ > tmp-mlib.h; \ else \ ! $(SHELL) $(srcdir)/genmultilib '' '' '' '' '' '' '' no \ ! > tmp-mlib.h; \ fi $(SHELL) $(srcdir)/move-if-change tmp-mlib.h multilib.h $(STAMP) s-mlib *************** varasm.o : varasm.c $(CONFIG_H) $(SYSTEM *** 1379,1385 **** $(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 hash.h $(GGC_H) $(TM_P_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) --- 1383,1390 ---- $(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 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) *************** $(docdir)/gcc.info: $(docdir)/gcc.texi $ *** 2273,2279 **** $(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 --- 2278,2284 ---- $(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)/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 diff -Nrc3pad gcc-3.2/gcc/NEWS gcc-3.2.1/gcc/NEWS *** gcc-3.2/gcc/NEWS Wed Aug 14 09:31:23 2002 --- gcc-3.2.1/gcc/NEWS Tue Nov 19 18:12:06 2002 *************** http://gcc.gnu.org/gcc-3.2/index.html *** 9,47 **** GCC 3.2 ! August 14, 2002 The [1]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 [2]successful builds is updated as new information becomes available. The GCC developers would like to thank the numerous people that have ! contributed [3]new features, improvements, bug fixes, and other ! changes as well as test results to GCC. This [4]amazing group of volunteers is what makes GCC successful. ! For additional information about GCC please refer to the [5]GCC ! project web site or contact the [6]GCC development mailing list. ! To obtain GCC please use [7]our mirror sites, one of the [8]GNU mirror ! sites, or [9]our CVS server. _________________________________________________________________ _________________________________________________________________ ! Please send FSF & GNU inquiries & questions to [10]gnu@gnu.org. There ! are also [11]other ways to contact the FSF. ! These pages are maintained by [12]The GCC team. ! Please send comments on these web pages and GCC to [13]gcc@gnu.org ! or [14]gcc@gcc.gnu.org, send other questions to [15]gnu@gnu.org. Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. --- 9,55 ---- 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. *************** http://gcc.gnu.org/gcc-3.2/index.html *** 49,87 **** Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2002-08-14 [16]Valid XHTML 1.0 References 1. http://www.gnu.org/ ! 2. http://gcc.gnu.org/gcc-3.2/buildstat.html ! 3. http://gcc.gnu.org/gcc-3.2/changes.html ! 4. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html ! 5. http://gcc.gnu.org/index.html ! 6. mailto:gcc@gcc.gnu.org ! 7. http://gcc.gnu.org/mirrors.html ! 8. http://www.gnu.org/order/ftp.html ! 9. http://gcc.gnu.org/cvs.html ! 10. mailto:gnu@gnu.org ! 11. http://www.gnu.org/home.html#ContactInfo ! 12. http://gcc.gnu.org/about.html ! 13. mailto:gcc@gnu.org ! 14. mailto:gcc@gcc.gnu.org ! 15. mailto:gnu@gnu.org ! 16. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-3.2/changes.html ! GCC 3.2 Changes, New Features, and Fixes ! Relase Notes ! See [1]this message for a list of bugs fixed in this released. Caveats * This GCC release is based on the GCC 3.1 sourcebase, and thus has ! all the [2]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. --- 57,144 ---- 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 impr *** 99,123 **** 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 [3]common C++ ABI page. ! ! New Targets and Target Specific Improvements ! ! x86-64 ! ! * A bug whereby the complier could generated bad code for bzero has ! been fixed. ! * _________________________________________________________________ ! 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 [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. --- 156,173 ---- 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. *************** New Targets and Target Specific Improvem *** 125,144 **** Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2002-08-14 [10]Valid XHTML 1.0 References ! 1. http://gcc.gnu.org/ml/gcc/2002-08/msg00405.html ! 2. http://gcc.gnu.org/gcc-3.1/changes.html ! 3. http://gcc.gnu.org/gcc-3.2/c++-abi.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-3.1/index.html --- 175,195 ---- 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 *************** http://gcc.gnu.org/gcc-3.1/index.html *** 182,189 **** These pages are maintained by [13]The GCC team. ! Please send comments on these web pages and GCC to [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. --- 233,241 ---- 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. *************** http://gcc.gnu.org/gcc-3.1/index.html *** 191,197 **** Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2002-07-28 [17]Valid XHTML 1.0 References --- 243,249 ---- 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 *************** Documentation improvements *** 544,551 **** These pages are maintained by [21]The GCC team. ! Please send comments on these web pages and GCC to [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. --- 596,604 ---- 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. *************** Documentation improvements *** 553,559 **** Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2002-07-26 [25]Valid XHTML 1.0 References --- 606,612 ---- 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 *************** References *** 565,571 **** 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/ --- 618,624 ---- 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/ *************** Previous 3.0.x Releases *** 632,639 **** These pages are maintained by [13]The GCC team. ! Please send comments on these web pages and GCC to [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. --- 685,693 ---- 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. *************** Previous 3.0.x Releases *** 641,647 **** Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2002-07-17 [17]Valid XHTML 1.0 References --- 695,701 ---- 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 *************** Other significant improvements *** 832,839 **** These pages are maintained by [16]The GCC team. ! Please send comments on these web pages and GCC to [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. --- 886,894 ---- 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. *************** Other significant improvements *** 841,847 **** Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2002-07-17 [20]Valid XHTML 1.0 References --- 896,902 ---- 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 *************** References *** 855,861 **** 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 --- 910,916 ---- 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 *************** http://gcc.gnu.org/gcc-3.0/caveats.html *** 910,917 **** These pages are maintained by [6]The GCC team. ! Please send comments on these web pages and GCC to [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. --- 965,973 ---- 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. *************** http://gcc.gnu.org/gcc-3.0/caveats.html *** 919,925 **** Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2002-08-14 [10]Valid XHTML 1.0 References --- 975,981 ---- 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 *************** http://gcc.gnu.org/gcc-2.95/index.html *** 988,995 **** These pages are maintained by [15]The GCC team. ! Please send comments on these web pages and GCC to [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. --- 1044,1052 ---- 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. *************** http://gcc.gnu.org/gcc-2.95/index.html *** 997,1003 **** Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2002-07-17 [19]Valid XHTML 1.0 References --- 1054,1060 ---- 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 *************** Additional Changes in GCC 2.95.3 *** 1261,1268 **** These pages are maintained by [20]The GCC team. ! Please send comments on these web pages and GCC to [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. --- 1318,1326 ---- 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. *************** Additional Changes in GCC 2.95.3 *** 1270,1276 **** Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2002-07-17 [24]Valid XHTML 1.0 References --- 1328,1334 ---- 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 *************** References *** 1283,1289 **** 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 --- 1341,1347 ---- 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 *************** http://gcc.gnu.org/gcc-2.95/caveats.html *** 1350,1357 **** These pages are maintained by [6]The GCC team. ! Please send comments on these web pages and GCC to [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. --- 1408,1416 ---- 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. *************** http://gcc.gnu.org/gcc-2.95/caveats.html *** 1359,1365 **** Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2002-07-17 [10]Valid XHTML 1.0 References --- 1418,1424 ---- 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 *************** http://gcc.gnu.org/egcs-1.1/index.html *** 1578,1585 **** These pages are maintained by [13]The GCC team. ! Please send comments on these web pages and GCC to [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. --- 1637,1645 ---- 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. *************** http://gcc.gnu.org/egcs-1.1/index.html *** 1587,1593 **** Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2002-07-17 [17]Valid XHTML 1.0 References --- 1647,1653 ---- 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 *************** http://gcc.gnu.org/egcs-1.1/features.htm *** 1684,1691 **** These pages are maintained by [8]The GCC team. ! Please send comments on these web pages and GCC to [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. --- 1744,1752 ---- 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. *************** http://gcc.gnu.org/egcs-1.1/features.htm *** 1693,1703 **** Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2002-07-17 [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 --- 1754,1764 ---- 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 *************** http://gcc.gnu.org/egcs-1.1/caveats.html *** 1744,1751 **** These pages are maintained by [4]The GCC team. ! Please send comments on these web pages and GCC to [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. --- 1805,1813 ---- 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. *************** http://gcc.gnu.org/egcs-1.1/caveats.html *** 1753,1759 **** Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2002-07-17 [8]Valid XHTML 1.0 References --- 1815,1821 ---- 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 *************** http://gcc.gnu.org/egcs-1.0/egcs-1.0.3.h *** 1848,1855 **** These pages are maintained by [8]The GCC team. ! Please send comments on these web pages and GCC to [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. --- 1910,1918 ---- 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. *************** http://gcc.gnu.org/egcs-1.0/egcs-1.0.3.h *** 1857,1863 **** Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2002-07-17 [12]Valid XHTML 1.0 References --- 1920,1926 ---- 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 *************** http://gcc.gnu.org/egcs-1.0/egcs-1.0.2.h *** 1987,1994 **** These pages are maintained by [8]The GCC team. ! Please send comments on these web pages and GCC to [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. --- 2050,2058 ---- 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. *************** http://gcc.gnu.org/egcs-1.0/egcs-1.0.2.h *** 1996,2002 **** Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2002-07-17 [12]Valid XHTML 1.0 References --- 2060,2066 ---- 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 *************** http://gcc.gnu.org/egcs-1.0/egcs-1.0.1.h *** 2126,2133 **** These pages are maintained by [8]The GCC team. ! Please send comments on these web pages and GCC to [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. --- 2190,2198 ---- 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. *************** http://gcc.gnu.org/egcs-1.0/egcs-1.0.1.h *** 2135,2141 **** Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2002-07-17 [12]Valid XHTML 1.0 References --- 2200,2206 ---- 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 *************** http://gcc.gnu.org/egcs-1.0/egcs-1.0.htm *** 2222,2229 **** These pages are maintained by [8]The GCC team. ! Please send comments on these web pages and GCC to [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. --- 2287,2295 ---- 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. *************** http://gcc.gnu.org/egcs-1.0/egcs-1.0.htm *** 2231,2237 **** Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2002-07-17 [12]Valid XHTML 1.0 References --- 2297,2303 ---- 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 *************** http://gcc.gnu.org/egcs-1.0/features.htm *** 2295,2302 **** These pages are maintained by [5]The GCC team. ! Please send comments on these web pages and GCC to [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. --- 2361,2369 ---- 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. *************** http://gcc.gnu.org/egcs-1.0/features.htm *** 2304,2310 **** Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2002-07-17 [9]Valid XHTML 1.0 References --- 2371,2377 ---- 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 *************** http://gcc.gnu.org/egcs-1.0/caveats.html *** 2354,2361 **** These pages are maintained by [4]The GCC team. ! Please send comments on these web pages and GCC to [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. --- 2421,2429 ---- 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. *************** http://gcc.gnu.org/egcs-1.0/caveats.html *** 2363,2369 **** Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2002-07-17 [8]Valid XHTML 1.0 References --- 2431,2437 ---- 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 diff -Nrc3pad gcc-3.2/gcc/alias.c gcc-3.2.1/gcc/alias.c *** gcc-3.2/gcc/alias.c Thu Jun 20 07:35:41 2002 --- gcc-3.2.1/gcc/alias.c Mon Oct 14 21:04:16 2002 *************** *** 1,5 **** /* Alias analysis for GNU C ! Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. Contributed by John Carr (jfc@mit.edu). This file is part of GCC. --- 1,5 ---- /* Alias analysis for GNU C ! Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. Contributed by John Carr (jfc@mit.edu). This file is part of GCC. *************** objects_must_conflict_p (t1, t2) *** 321,328 **** then they may not conflict. */ if ((t1 != 0 && readonly_fields_p (t1)) || (t2 != 0 && readonly_fields_p (t2)) ! || (t1 != 0 && TYPE_READONLY (t1)) ! || (t2 != 0 && TYPE_READONLY (t2))) return 0; /* If they are the same type, they must conflict. */ --- 321,328 ---- then they may not conflict. */ if ((t1 != 0 && readonly_fields_p (t1)) || (t2 != 0 && readonly_fields_p (t2)) ! || (t1 != 0 && lang_hooks.honor_readonly && TYPE_READONLY (t1)) ! || (t2 != 0 && lang_hooks.honor_readonly && TYPE_READONLY (t2))) return 0; /* If they are the same type, they must conflict. */ diff -Nrc3pad gcc-3.2/gcc/c-common.c gcc-3.2.1/gcc/c-common.c *** gcc-3.2/gcc/c-common.c Thu Jun 20 07:35:43 2002 --- gcc-3.2.1/gcc/c-common.c Wed Aug 28 21:17:12 2002 *************** c_expand_expr (exp, target, tmode, modif *** 3564,3569 **** --- 3564,3570 ---- tree rtl_expr; rtx result; bool preserve_result = false; + bool return_target = false; /* Since expand_expr_stmt calls free_temp_slots after every expression statement, we must call push_temp_slots here. *************** c_expand_expr (exp, target, tmode, modif *** 3591,3598 **** if (TREE_CODE (last) == SCOPE_STMT && TREE_CODE (expr) == EXPR_STMT) { ! TREE_ADDRESSABLE (expr) = 1; ! preserve_result = true; } } --- 3592,3611 ---- if (TREE_CODE (last) == SCOPE_STMT && TREE_CODE (expr) == EXPR_STMT) { ! if (target && TREE_CODE (EXPR_STMT_EXPR (expr)) == VAR_DECL ! && DECL_RTL_IF_SET (EXPR_STMT_EXPR (expr)) == target) ! /* If the last expression is a variable whose RTL is the ! same as our target, just return the target; if it ! isn't valid expanding the decl would produce different ! RTL, and store_expr would try to do a copy. */ ! return_target = true; ! else ! { ! /* Otherwise, note that we want the value from the last ! expression. */ ! TREE_ADDRESSABLE (expr) = 1; ! preserve_result = true; ! } } } *************** c_expand_expr (exp, target, tmode, modif *** 3600,3606 **** expand_end_stmt_expr (rtl_expr); result = expand_expr (rtl_expr, target, tmode, modifier); ! if (preserve_result && GET_CODE (result) == MEM) { if (GET_MODE (result) != BLKmode) result = copy_to_reg (result); --- 3613,3621 ---- expand_end_stmt_expr (rtl_expr); result = expand_expr (rtl_expr, target, tmode, modifier); ! if (return_target) ! result = target; ! else if (preserve_result && GET_CODE (result) == MEM) { if (GET_MODE (result) != BLKmode) result = copy_to_reg (result); diff -Nrc3pad gcc-3.2/gcc/c-common.h gcc-3.2.1/gcc/c-common.h *** gcc-3.2/gcc/c-common.h Wed Apr 17 01:43:56 2002 --- gcc-3.2.1/gcc/c-common.h Sun Sep 1 20:11:06 2002 *************** extern int warn_conversion; *** 464,469 **** --- 464,474 ---- extern int warn_long_long; + /* Nonzero means the expression being parsed will never be evaluated. + This is a count, since unevaluated expressions can nest. */ + + extern int skip_evaluation; + /* C types are partitioned into three subsets: object, function, and incomplete types. */ #define C_TYPE_OBJECT_P(type) \ diff -Nrc3pad gcc-3.2/gcc/c-decl.c gcc-3.2.1/gcc/c-decl.c *** gcc-3.2/gcc/c-decl.c Fri Jul 26 23:23:03 2002 --- gcc-3.2.1/gcc/c-decl.c Sat Oct 19 03:17:39 2002 *************** start_decl (declarator, declspecs, initi *** 3485,3499 **** switch (TREE_CODE (decl)) { case TYPE_DECL: ! /* typedef foo = bar means give foo the same type as bar. ! We haven't parsed bar yet, so `finish_decl' will fix that up. ! Any other case of an initialization in a TYPE_DECL is an error. */ ! if (pedantic || list_length (declspecs) > 1) ! { ! error ("typedef `%s' is initialized", ! IDENTIFIER_POINTER (DECL_NAME (decl))); ! initialized = 0; ! } break; case FUNCTION_DECL: --- 3485,3493 ---- switch (TREE_CODE (decl)) { case TYPE_DECL: ! error ("typedef `%s' is initialized (use __typeof__ instead)", ! IDENTIFIER_POINTER (DECL_NAME (decl))); ! initialized = 0; break; case FUNCTION_DECL: *************** finish_decl (decl, init, asmspec_tree) *** 3642,3657 **** init = 0; if (init) ! { ! if (TREE_CODE (decl) != TYPE_DECL) ! store_init_value (decl, init); ! else ! { ! /* typedef foo = bar; store the type of bar as the type of foo. */ ! TREE_TYPE (decl) = TREE_TYPE (init); ! DECL_INITIAL (decl) = init = 0; ! } ! } /* Deduce size of array from initialization, if not already known */ if (TREE_CODE (type) == ARRAY_TYPE --- 3636,3642 ---- init = 0; if (init) ! store_init_value (decl, init); /* Deduce size of array from initialization, if not already known */ if (TREE_CODE (type) == ARRAY_TYPE diff -Nrc3pad gcc-3.2/gcc/c-objc-common.c gcc-3.2.1/gcc/c-objc-common.c *** gcc-3.2/gcc/c-objc-common.c Thu Mar 28 18:49:58 2002 --- gcc-3.2.1/gcc/c-objc-common.c Fri Oct 25 22:11:08 2002 *************** inline_forbidden_p (nodep, walk_subtrees *** 131,136 **** --- 131,152 ---- break; + case RECORD_TYPE: + case UNION_TYPE: + /* We cannot inline a function of the form + + void F (int i) { struct S { int ar[i]; } s; } + + Attempting to do so produces a catch-22 in tree-inline.c. + If walk_tree examines the TYPE_FIELDS chain of RECORD_TYPE/ + UNION_TYPE nodes, then it goes into infinite recursion on a + structure containing a pointer to its own type. If it doesn't, + then the type node for S doesn't get adjusted properly when + F is inlined, and we abort in find_function_data. */ + for (t = TYPE_FIELDS (node); t; t = TREE_CHAIN (t)) + if (variably_modified_type_p (TREE_TYPE (t))) + return node; + default: break; } *************** c_cannot_inline_tree_fn (fnp) *** 149,154 **** --- 165,178 ---- && lookup_attribute ("always_inline", DECL_ATTRIBUTES (fn)) == NULL) return 1; + /* Don't auto-inline anything that might not be bound within + this unit of translation. */ + if (!DECL_DECLARED_INLINE_P (fn) && flag_pic && TREE_PUBLIC (fn)) + { + DECL_UNINLINABLE (fn) = 1; + return 1; + } + if (! function_attribute_inlinable_p (fn)) { DECL_UNINLINABLE (fn) = 1; diff -Nrc3pad gcc-3.2/gcc/c-parse.c gcc-3.2.1/gcc/c-parse.c *** gcc-3.2/gcc/c-parse.c Wed Aug 14 09:32:35 2002 --- gcc-3.2.1/gcc/c-parse.c Tue Nov 19 18:13:17 2002 *************** c_parse_init () *** 199,209 **** ! #define YYFINAL 900 #define YYFLAG -32768 #define YYNTBASE 91 ! #define YYTRANSLATE(x) ((unsigned)(x) <= 322 ? yytranslate[x] : 289) static const char yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, --- 199,209 ---- ! #define YYFINAL 901 #define YYFLAG -32768 #define YYNTBASE 91 ! #define YYTRANSLATE(x) ((unsigned)(x) <= 322 ? yytranslate[x] : 290) static const char yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, *************** static const short yyprhs[] = { 0, *** 248,480 **** 62, 67, 68, 69, 79, 84, 85, 86, 95, 99, 101, 103, 105, 107, 109, 111, 113, 115, 117, 119, 120, 122, 124, 128, 130, 133, 136, 139, 142, 145, ! 150, 153, 158, 161, 164, 166, 168, 170, 175, 177, ! 181, 185, 189, 193, 197, 201, 205, 209, 213, 217, ! 221, 225, 226, 231, 232, 237, 238, 239, 247, 248, ! 254, 258, 262, 264, 266, 268, 270, 271, 279, 283, ! 287, 291, 295, 300, 307, 316, 323, 328, 332, 336, ! 339, 342, 344, 347, 348, 350, 353, 357, 359, 361, ! 364, 367, 372, 377, 380, 383, 387, 388, 390, 395, ! 400, 404, 408, 411, 414, 416, 419, 422, 425, 428, ! 431, 433, 436, 438, 441, 444, 447, 450, 453, 456, ! 458, 461, 464, 467, 470, 473, 476, 479, 482, 485, ! 488, 491, 494, 497, 500, 503, 506, 508, 511, 514, ! 517, 520, 523, 526, 529, 532, 535, 538, 541, 544, ! 547, 550, 553, 556, 559, 562, 565, 568, 571, 574, ! 577, 580, 583, 586, 589, 592, 595, 598, 601, 604, ! 607, 610, 613, 616, 619, 622, 625, 628, 631, 634, ! 637, 640, 642, 644, 646, 648, 650, 652, 654, 656, 658, 660, 662, 664, 666, 668, 670, 672, 674, 676, 678, 680, 682, 684, 686, 688, 690, 692, 694, 696, 698, 700, 702, 704, 706, 708, 710, 712, 714, 716, 718, 720, 722, 724, 726, 728, 730, 732, 734, 736, ! 738, 740, 742, 744, 746, 748, 750, 752, 753, 755, ! 757, 759, 761, 763, 765, 767, 769, 774, 779, 781, ! 786, 788, 793, 794, 799, 800, 807, 811, 812, 819, ! 823, 824, 826, 828, 831, 838, 840, 844, 845, 847, ! 852, 859, 864, 866, 868, 870, 872, 874, 875, 880, ! 882, 883, 886, 888, 892, 896, 899, 900, 905, 907, ! 908, 913, 915, 917, 919, 922, 925, 931, 935, 936, ! 937, 945, 946, 947, 955, 957, 959, 964, 968, 971, ! 975, 977, 979, 981, 985, 988, 990, 994, 997, 1001, ! 1005, 1010, 1014, 1019, 1023, 1026, 1028, 1030, 1033, 1035, ! 1038, 1040, 1043, 1044, 1052, 1058, 1059, 1067, 1073, 1074, ! 1083, 1084, 1092, 1095, 1098, 1101, 1102, 1104, 1105, 1107, ! 1109, 1112, 1113, 1117, 1120, 1124, 1129, 1133, 1135, 1137, ! 1140, 1142, 1147, 1149, 1154, 1159, 1166, 1172, 1177, 1184, ! 1190, 1192, 1196, 1198, 1200, 1204, 1205, 1209, 1210, 1212, ! 1213, 1215, 1218, 1220, 1222, 1224, 1228, 1231, 1235, 1240, ! 1244, 1247, 1250, 1252, 1256, 1261, 1264, 1268, 1272, 1277, ! 1282, 1288, 1294, 1296, 1298, 1300, 1302, 1304, 1307, 1310, ! 1313, 1316, 1318, 1321, 1324, 1327, 1329, 1332, 1335, 1338, ! 1341, 1343, 1346, 1348, 1350, 1352, 1354, 1357, 1358, 1359, ! 1360, 1361, 1362, 1364, 1366, 1369, 1373, 1375, 1378, 1380, ! 1382, 1388, 1390, 1392, 1395, 1398, 1401, 1404, 1405, 1411, ! 1412, 1417, 1418, 1419, 1421, 1424, 1428, 1432, 1436, 1437, ! 1442, 1444, 1448, 1449, 1450, 1458, 1464, 1467, 1468, 1469, ! 1470, 1471, 1484, 1485, 1492, 1495, 1497, 1499, 1502, 1506, ! 1509, 1512, 1515, 1519, 1526, 1535, 1546, 1559, 1563, 1568, ! 1570, 1574, 1580, 1583, 1589, 1590, 1592, 1593, 1595, 1596, ! 1598, 1600, 1604, 1609, 1617, 1619, 1623, 1624, 1628, 1631, ! 1632, 1633, 1640, 1643, 1644, 1646, 1648, 1652, 1654, 1658, ! 1663, 1668, 1672, 1677, 1681, 1686, 1691, 1695, 1700, 1704, ! 1706, 1707, 1711, 1713, 1716, 1718, 1722, 1724, 1728 }; static const short yyrhs[] = { -1, 92, 0, 0, 93, 95, 0, 0, 92, 94, 95, 0, 97, 0, 96, 0, 27, 67, 106, 83, 84, ! 0, 288, 95, 0, 127, 161, 84, 0, 147, 127, ! 161, 84, 0, 146, 127, 160, 84, 0, 153, 84, 0, 1, 84, 0, 1, 85, 0, 84, 0, 0, ! 0, 146, 127, 189, 98, 122, 99, 249, 250, 238, ! 0, 146, 127, 189, 1, 0, 0, 0, 147, 127, ! 194, 100, 122, 101, 249, 250, 238, 0, 147, 127, ! 194, 1, 0, 0, 0, 127, 194, 102, 122, 103, ! 249, 250, 238, 0, 127, 194, 1, 0, 3, 0, 4, 0, 51, 0, 57, 0, 56, 0, 62, 0, 63, 0, 86, 0, 87, 0, 108, 0, 0, 108, ! 0, 113, 0, 108, 88, 113, 0, 119, 0, 58, ! 112, 0, 288, 112, 0, 105, 112, 0, 48, 104, ! 0, 110, 109, 0, 110, 67, 215, 83, 0, 111, ! 109, 0, 111, 67, 215, 83, 0, 33, 112, 0, ! 34, 112, 0, 11, 0, 29, 0, 109, 0, 67, ! 215, 83, 112, 0, 112, 0, 113, 56, 113, 0, ! 113, 57, 113, 0, 113, 58, 113, 0, 113, 59, ! 113, 0, 113, 60, 113, 0, 113, 54, 113, 0, ! 113, 55, 113, 0, 113, 53, 113, 0, 113, 52, ! 113, 0, 113, 51, 113, 0, 113, 49, 113, 0, ! 113, 50, 113, 0, 0, 113, 48, 114, 113, 0, ! 0, 113, 47, 115, 113, 0, 0, 0, 113, 45, ! 116, 106, 46, 117, 113, 0, 0, 113, 45, 118, ! 46, 113, 0, 113, 44, 113, 0, 113, 43, 113, ! 0, 3, 0, 8, 0, 121, 0, 42, 0, 0, ! 67, 215, 83, 89, 120, 175, 85, 0, 67, 106, ! 83, 0, 67, 1, 83, 0, 242, 240, 83, 0, ! 242, 1, 83, 0, 119, 67, 107, 83, 0, 35, ! 67, 113, 88, 215, 83, 0, 36, 67, 113, 88, ! 113, 88, 113, 83, 0, 37, 67, 215, 88, 215, ! 83, 0, 119, 68, 106, 90, 0, 119, 66, 104, ! 0, 119, 65, 104, 0, 119, 62, 0, 119, 63, ! 0, 9, 0, 121, 9, 0, 0, 124, 0, 124, ! 10, 0, 249, 250, 125, 0, 123, 0, 230, 0, ! 124, 123, 0, 123, 230, 0, 148, 127, 160, 84, ! 0, 149, 127, 161, 84, 0, 148, 84, 0, 149, ! 84, 0, 249, 250, 129, 0, 0, 167, 0, 146, ! 127, 160, 84, 0, 147, 127, 161, 84, 0, 146, ! 127, 183, 0, 147, 127, 186, 0, 153, 84, 0, ! 288, 129, 0, 7, 0, 130, 7, 0, 131, 7, ! 0, 130, 168, 0, 132, 7, 0, 133, 7, 0, ! 168, 0, 132, 168, 0, 155, 0, 134, 7, 0, ! 135, 7, 0, 134, 157, 0, 135, 157, 0, 130, ! 155, 0, 131, 155, 0, 156, 0, 134, 168, 0, ! 134, 158, 0, 135, 158, 0, 130, 156, 0, 131, ! 156, 0, 136, 7, 0, 137, 7, 0, 136, 157, ! 0, 137, 157, 0, 132, 155, 0, 133, 155, 0, ! 136, 168, 0, 136, 158, 0, 137, 158, 0, 132, ! 156, 0, 133, 156, 0, 5, 0, 138, 7, 0, ! 139, 7, 0, 130, 5, 0, 131, 5, 0, 138, ! 5, 0, 139, 5, 0, 138, 168, 0, 140, 7, ! 0, 141, 7, 0, 132, 5, 0, 133, 5, 0, ! 140, 5, 0, 141, 5, 0, 140, 168, 0, 142, ! 7, 0, 143, 7, 0, 142, 157, 0, 143, 157, ! 0, 138, 155, 0, 139, 155, 0, 134, 5, 0, ! 135, 5, 0, 142, 5, 0, 143, 5, 0, 142, ! 168, 0, 142, 158, 0, 143, 158, 0, 138, 156, ! 0, 139, 156, 0, 144, 7, 0, 145, 7, 0, ! 144, 157, 0, 145, 157, 0, 140, 155, 0, 141, ! 155, 0, 136, 5, 0, 137, 5, 0, 144, 5, ! 0, 145, 5, 0, 144, 168, 0, 144, 158, 0, ! 145, 158, 0, 140, 156, 0, 141, 156, 0, 134, ! 0, 135, 0, 136, 0, 137, 0, 142, 0, 143, ! 0, 144, 0, 145, 0, 130, 0, 131, 0, 132, ! 0, 133, 0, 138, 0, 139, 0, 140, 0, 141, ! 0, 134, 0, 135, 0, 142, 0, 143, 0, 130, ! 0, 131, 0, 138, 0, 139, 0, 134, 0, 135, ! 0, 136, 0, 137, 0, 130, 0, 131, 0, 132, 0, 133, 0, 134, 0, 135, 0, 136, 0, 137, ! 0, 130, 0, 131, 0, 132, 0, 133, 0, 130, 0, 131, 0, 132, 0, 133, 0, 134, 0, 135, 0, 136, 0, 137, 0, 138, 0, 139, 0, 140, 0, 141, 0, 142, 0, 143, 0, 144, 0, 145, ! 0, 0, 151, 0, 157, 0, 159, 0, 158, 0, ! 6, 0, 203, 0, 198, 0, 4, 0, 28, 67, ! 106, 83, 0, 28, 67, 215, 83, 0, 163, 0, ! 160, 88, 128, 163, 0, 165, 0, 161, 88, 128, ! 165, 0, 0, 27, 67, 121, 83, 0, 0, 189, ! 162, 167, 44, 164, 173, 0, 189, 162, 167, 0, ! 0, 194, 162, 167, 44, 166, 173, 0, 194, 162, ! 167, 0, 0, 168, 0, 169, 0, 168, 169, 0, ! 30, 67, 67, 170, 83, 83, 0, 171, 0, 170, ! 88, 171, 0, 0, 172, 0, 172, 67, 3, 83, ! 0, 172, 67, 3, 88, 108, 83, 0, 172, 67, ! 107, 83, 0, 104, 0, 5, 0, 6, 0, 7, ! 0, 113, 0, 0, 89, 174, 175, 85, 0, 1, ! 0, 0, 176, 204, 0, 177, 0, 176, 88, 177, ! 0, 181, 44, 179, 0, 182, 179, 0, 0, 104, ! 46, 178, 179, 0, 179, 0, 0, 89, 180, 175, ! 85, 0, 113, 0, 1, 0, 182, 0, 181, 182, ! 0, 66, 104, 0, 68, 113, 10, 113, 90, 0, ! 68, 113, 90, 0, 0, 0, 189, 184, 122, 185, ! 249, 250, 243, 0, 0, 0, 194, 187, 122, 188, ! 249, 250, 243, 0, 190, 0, 194, 0, 67, 167, ! 190, 83, 0, 190, 67, 283, 0, 190, 223, 0, ! 58, 154, 190, 0, 4, 0, 192, 0, 193, 0, ! 192, 67, 283, 0, 192, 223, 0, 4, 0, 193, ! 67, 283, 0, 193, 223, 0, 58, 154, 192, 0, ! 58, 154, 193, 0, 67, 167, 193, 83, 0, 194, ! 67, 283, 0, 67, 167, 194, 83, 0, 58, 154, ! 194, 0, 194, 223, 0, 3, 0, 13, 0, 13, ! 168, 0, 14, 0, 14, 168, 0, 12, 0, 12, ! 168, 0, 0, 195, 104, 89, 199, 206, 85, 167, ! 0, 195, 89, 206, 85, 167, 0, 0, 196, 104, ! 89, 200, 206, 85, 167, 0, 196, 89, 206, 85, ! 167, 0, 0, 197, 104, 89, 201, 213, 205, 85, ! 167, 0, 0, 197, 89, 202, 213, 205, 85, 167, ! 0, 195, 104, 0, 196, 104, 0, 197, 104, 0, ! 0, 88, 0, 0, 88, 0, 207, 0, 207, 208, ! 0, 0, 207, 208, 84, 0, 207, 84, 0, 150, ! 127, 209, 0, 150, 127, 249, 250, 0, 151, 127, ! 210, 0, 151, 0, 1, 0, 288, 208, 0, 211, ! 0, 209, 88, 128, 211, 0, 212, 0, 210, 88, ! 128, 212, 0, 249, 250, 189, 167, 0, 249, 250, ! 189, 46, 113, 167, 0, 249, 250, 46, 113, 167, ! 0, 249, 250, 194, 167, 0, 249, 250, 194, 46, ! 113, 167, 0, 249, 250, 46, 113, 167, 0, 214, ! 0, 213, 88, 214, 0, 1, 0, 104, 0, 104, ! 44, 113, 0, 0, 152, 216, 217, 0, 0, 219, ! 0, 0, 219, 0, 220, 168, 0, 221, 0, 220, ! 0, 222, 0, 58, 154, 220, 0, 58, 154, 0, ! 58, 154, 221, 0, 67, 167, 219, 83, 0, 222, ! 67, 273, 0, 222, 223, 0, 67, 273, 0, 223, ! 0, 68, 106, 90, 0, 68, 152, 106, 90, 0, ! 68, 90, 0, 68, 152, 90, 0, 68, 58, 90, ! 0, 68, 152, 58, 90, 0, 68, 5, 106, 90, ! 0, 68, 5, 152, 106, 90, 0, 68, 152, 5, ! 106, 90, 0, 225, 0, 226, 0, 227, 0, 228, ! 0, 253, 0, 225, 253, 0, 226, 253, 0, 227, ! 253, 0, 228, 253, 0, 126, 0, 225, 126, 0, ! 226, 126, 0, 228, 126, 0, 254, 0, 225, 254, ! 0, 226, 254, 0, 227, 254, 0, 228, 254, 0, ! 230, 0, 229, 230, 0, 225, 0, 226, 0, 227, ! 0, 228, 0, 1, 84, 0, 0, 0, 0, 0, ! 0, 236, 0, 237, 0, 236, 237, 0, 32, 287, ! 84, 0, 243, 0, 1, 243, 0, 89, 0, 85, ! 0, 231, 235, 241, 85, 232, 0, 224, 0, 1, ! 0, 67, 89, 0, 239, 240, 0, 245, 252, 0, ! 245, 1, 0, 0, 15, 246, 67, 106, 83, 0, ! 0, 18, 248, 252, 17, 0, 0, 0, 253, 0, ! 254, 251, 0, 233, 251, 234, 0, 249, 250, 265, ! 0, 249, 250, 266, 0, 0, 244, 16, 256, 252, ! 0, 244, 0, 244, 16, 1, 0, 0, 0, 17, ! 257, 67, 106, 83, 258, 252, 0, 247, 67, 106, ! 83, 84, 0, 247, 1, 0, 0, 0, 0, 0, ! 19, 259, 67, 264, 260, 268, 84, 261, 268, 83, ! 262, 252, 0, 0, 20, 67, 106, 83, 263, 252, ! 0, 268, 84, 0, 129, 0, 243, 0, 106, 84, ! 0, 233, 255, 234, 0, 23, 84, 0, 24, 84, ! 0, 25, 84, 0, 25, 106, 84, 0, 27, 267, ! 67, 106, 83, 84, 0, 27, 267, 67, 106, 46, ! 269, 83, 84, 0, 27, 267, 67, 106, 46, 269, ! 46, 269, 83, 84, 0, 27, 267, 67, 106, 46, ! 269, 46, 269, 46, 272, 83, 84, 0, 26, 104, ! 84, 0, 26, 58, 106, 84, 0, 84, 0, 21, ! 113, 46, 0, 21, 113, 10, 113, 46, 0, 22, ! 46, 0, 104, 249, 250, 46, 167, 0, 0, 7, ! 0, 0, 106, 0, 0, 270, 0, 271, 0, 270, ! 88, 271, 0, 9, 67, 106, 83, 0, 68, 104, ! 90, 9, 67, 106, 83, 0, 121, 0, 272, 88, ! 121, 0, 0, 167, 274, 275, 0, 278, 83, 0, ! 0, 0, 279, 84, 276, 167, 277, 275, 0, 1, ! 83, 0, 0, 10, 0, 279, 0, 279, 88, 10, ! 0, 281, 0, 279, 88, 280, 0, 146, 127, 191, ! 167, 0, 146, 127, 194, 167, 0, 146, 127, 218, ! 0, 147, 127, 194, 167, 0, 147, 127, 218, 0, ! 148, 282, 191, 167, 0, 148, 282, 194, 167, 0, ! 148, 282, 218, 0, 149, 282, 194, 167, 0, 149, ! 282, 218, 0, 127, 0, 0, 167, 284, 285, 0, ! 275, 0, 286, 83, 0, 3, 0, 286, 88, 3, ! 0, 104, 0, 287, 88, 104, 0, 31, 0 }; #endif --- 248,481 ---- 62, 67, 68, 69, 79, 84, 85, 86, 95, 99, 101, 103, 105, 107, 109, 111, 113, 115, 117, 119, 120, 122, 124, 128, 130, 133, 136, 139, 142, 145, ! 150, 153, 158, 161, 164, 166, 168, 170, 172, 177, ! 179, 183, 187, 191, 195, 199, 203, 207, 211, 215, ! 219, 223, 227, 228, 233, 234, 239, 240, 241, 249, ! 250, 256, 260, 264, 266, 268, 270, 272, 273, 281, ! 285, 289, 293, 297, 302, 309, 318, 325, 330, 334, ! 338, 341, 344, 346, 349, 350, 352, 355, 359, 361, ! 363, 366, 369, 374, 379, 382, 385, 389, 390, 392, ! 397, 402, 406, 410, 413, 416, 418, 421, 424, 427, ! 430, 433, 435, 438, 440, 443, 446, 449, 452, 455, ! 458, 460, 463, 466, 469, 472, 475, 478, 481, 484, ! 487, 490, 493, 496, 499, 502, 505, 508, 510, 513, ! 516, 519, 522, 525, 528, 531, 534, 537, 540, 543, ! 546, 549, 552, 555, 558, 561, 564, 567, 570, 573, ! 576, 579, 582, 585, 588, 591, 594, 597, 600, 603, ! 606, 609, 612, 615, 618, 621, 624, 627, 630, 633, ! 636, 639, 642, 644, 646, 648, 650, 652, 654, 656, 658, 660, 662, 664, 666, 668, 670, 672, 674, 676, 678, 680, 682, 684, 686, 688, 690, 692, 694, 696, 698, 700, 702, 704, 706, 708, 710, 712, 714, 716, 718, 720, 722, 724, 726, 728, 730, 732, 734, 736, ! 738, 740, 742, 744, 746, 748, 750, 752, 754, 755, ! 757, 759, 761, 763, 765, 767, 769, 771, 776, 781, ! 783, 788, 790, 795, 796, 801, 802, 809, 813, 814, ! 821, 825, 826, 828, 830, 833, 840, 842, 846, 847, ! 849, 854, 861, 866, 868, 870, 872, 874, 876, 877, ! 882, 884, 885, 888, 890, 894, 898, 901, 902, 907, ! 909, 910, 915, 917, 919, 921, 924, 927, 933, 937, ! 938, 939, 947, 948, 949, 957, 959, 961, 966, 970, ! 973, 977, 979, 981, 983, 987, 990, 992, 996, 999, ! 1003, 1007, 1012, 1016, 1021, 1025, 1028, 1030, 1032, 1035, ! 1037, 1040, 1042, 1045, 1046, 1054, 1060, 1061, 1069, 1075, ! 1076, 1085, 1086, 1094, 1097, 1100, 1103, 1104, 1106, 1107, ! 1109, 1111, 1114, 1115, 1119, 1122, 1126, 1131, 1135, 1137, ! 1139, 1142, 1144, 1149, 1151, 1156, 1161, 1168, 1174, 1179, ! 1186, 1192, 1194, 1198, 1200, 1202, 1206, 1207, 1211, 1212, ! 1214, 1215, 1217, 1220, 1222, 1224, 1226, 1230, 1233, 1237, ! 1242, 1246, 1249, 1252, 1254, 1258, 1263, 1266, 1270, 1274, ! 1279, 1284, 1290, 1296, 1298, 1300, 1302, 1304, 1306, 1309, ! 1312, 1315, 1318, 1320, 1323, 1326, 1329, 1331, 1334, 1337, ! 1340, 1343, 1345, 1348, 1350, 1352, 1354, 1356, 1359, 1360, ! 1361, 1362, 1363, 1364, 1366, 1368, 1371, 1375, 1377, 1380, ! 1382, 1384, 1390, 1392, 1394, 1397, 1400, 1403, 1406, 1407, ! 1413, 1414, 1419, 1420, 1421, 1423, 1426, 1430, 1434, 1438, ! 1439, 1444, 1446, 1450, 1451, 1452, 1460, 1466, 1469, 1470, ! 1471, 1472, 1473, 1486, 1487, 1494, 1497, 1499, 1501, 1504, ! 1508, 1511, 1514, 1517, 1521, 1528, 1537, 1548, 1561, 1565, ! 1570, 1572, 1576, 1582, 1585, 1591, 1592, 1594, 1595, 1597, ! 1598, 1600, 1602, 1606, 1611, 1619, 1621, 1625, 1626, 1630, ! 1633, 1634, 1635, 1642, 1645, 1646, 1648, 1650, 1654, 1656, ! 1660, 1665, 1670, 1674, 1679, 1683, 1688, 1693, 1697, 1702, ! 1706, 1708, 1709, 1713, 1715, 1718, 1720, 1724, 1726, 1730 }; static const short yyrhs[] = { -1, 92, 0, 0, 93, 95, 0, 0, 92, 94, 95, 0, 97, 0, 96, 0, 27, 67, 106, 83, 84, ! 0, 289, 95, 0, 128, 162, 84, 0, 148, 128, ! 162, 84, 0, 147, 128, 161, 84, 0, 154, 84, 0, 1, 84, 0, 1, 85, 0, 84, 0, 0, ! 0, 147, 128, 190, 98, 123, 99, 250, 251, 239, ! 0, 147, 128, 190, 1, 0, 0, 0, 148, 128, ! 195, 100, 123, 101, 250, 251, 239, 0, 148, 128, ! 195, 1, 0, 0, 0, 128, 195, 102, 123, 103, ! 250, 251, 239, 0, 128, 195, 1, 0, 3, 0, 4, 0, 51, 0, 57, 0, 56, 0, 62, 0, 63, 0, 86, 0, 87, 0, 108, 0, 0, 108, ! 0, 114, 0, 108, 88, 114, 0, 120, 0, 58, ! 113, 0, 289, 113, 0, 105, 113, 0, 48, 104, ! 0, 110, 109, 0, 110, 67, 216, 83, 0, 111, ! 109, 0, 111, 67, 216, 83, 0, 33, 113, 0, ! 34, 113, 0, 11, 0, 29, 0, 28, 0, 109, ! 0, 67, 216, 83, 113, 0, 113, 0, 114, 56, ! 114, 0, 114, 57, 114, 0, 114, 58, 114, 0, ! 114, 59, 114, 0, 114, 60, 114, 0, 114, 54, ! 114, 0, 114, 55, 114, 0, 114, 53, 114, 0, ! 114, 52, 114, 0, 114, 51, 114, 0, 114, 49, ! 114, 0, 114, 50, 114, 0, 0, 114, 48, 115, ! 114, 0, 0, 114, 47, 116, 114, 0, 0, 0, ! 114, 45, 117, 106, 46, 118, 114, 0, 0, 114, ! 45, 119, 46, 114, 0, 114, 44, 114, 0, 114, ! 43, 114, 0, 3, 0, 8, 0, 122, 0, 42, ! 0, 0, 67, 216, 83, 89, 121, 176, 85, 0, ! 67, 106, 83, 0, 67, 1, 83, 0, 243, 241, ! 83, 0, 243, 1, 83, 0, 120, 67, 107, 83, ! 0, 35, 67, 114, 88, 216, 83, 0, 36, 67, ! 114, 88, 114, 88, 114, 83, 0, 37, 67, 216, ! 88, 216, 83, 0, 120, 68, 106, 90, 0, 120, ! 66, 104, 0, 120, 65, 104, 0, 120, 62, 0, ! 120, 63, 0, 9, 0, 122, 9, 0, 0, 125, ! 0, 125, 10, 0, 250, 251, 126, 0, 124, 0, ! 231, 0, 125, 124, 0, 124, 231, 0, 149, 128, ! 161, 84, 0, 150, 128, 162, 84, 0, 149, 84, ! 0, 150, 84, 0, 250, 251, 130, 0, 0, 168, ! 0, 147, 128, 161, 84, 0, 148, 128, 162, 84, ! 0, 147, 128, 184, 0, 148, 128, 187, 0, 154, ! 84, 0, 289, 130, 0, 7, 0, 131, 7, 0, ! 132, 7, 0, 131, 169, 0, 133, 7, 0, 134, ! 7, 0, 169, 0, 133, 169, 0, 156, 0, 135, ! 7, 0, 136, 7, 0, 135, 158, 0, 136, 158, ! 0, 131, 156, 0, 132, 156, 0, 157, 0, 135, ! 169, 0, 135, 159, 0, 136, 159, 0, 131, 157, ! 0, 132, 157, 0, 137, 7, 0, 138, 7, 0, ! 137, 158, 0, 138, 158, 0, 133, 156, 0, 134, ! 156, 0, 137, 169, 0, 137, 159, 0, 138, 159, ! 0, 133, 157, 0, 134, 157, 0, 5, 0, 139, ! 7, 0, 140, 7, 0, 131, 5, 0, 132, 5, ! 0, 139, 5, 0, 140, 5, 0, 139, 169, 0, ! 141, 7, 0, 142, 7, 0, 133, 5, 0, 134, ! 5, 0, 141, 5, 0, 142, 5, 0, 141, 169, ! 0, 143, 7, 0, 144, 7, 0, 143, 158, 0, ! 144, 158, 0, 139, 156, 0, 140, 156, 0, 135, ! 5, 0, 136, 5, 0, 143, 5, 0, 144, 5, ! 0, 143, 169, 0, 143, 159, 0, 144, 159, 0, ! 139, 157, 0, 140, 157, 0, 145, 7, 0, 146, ! 7, 0, 145, 158, 0, 146, 158, 0, 141, 156, ! 0, 142, 156, 0, 137, 5, 0, 138, 5, 0, ! 145, 5, 0, 146, 5, 0, 145, 169, 0, 145, ! 159, 0, 146, 159, 0, 141, 157, 0, 142, 157, ! 0, 135, 0, 136, 0, 137, 0, 138, 0, 143, ! 0, 144, 0, 145, 0, 146, 0, 131, 0, 132, ! 0, 133, 0, 134, 0, 139, 0, 140, 0, 141, ! 0, 142, 0, 135, 0, 136, 0, 143, 0, 144, ! 0, 131, 0, 132, 0, 139, 0, 140, 0, 135, ! 0, 136, 0, 137, 0, 138, 0, 131, 0, 132, 0, 133, 0, 134, 0, 135, 0, 136, 0, 137, ! 0, 138, 0, 131, 0, 132, 0, 133, 0, 134, 0, 131, 0, 132, 0, 133, 0, 134, 0, 135, 0, 136, 0, 137, 0, 138, 0, 139, 0, 140, 0, 141, 0, 142, 0, 143, 0, 144, 0, 145, ! 0, 146, 0, 0, 152, 0, 158, 0, 160, 0, ! 159, 0, 6, 0, 204, 0, 199, 0, 4, 0, ! 112, 67, 106, 83, 0, 112, 67, 216, 83, 0, ! 164, 0, 161, 88, 129, 164, 0, 166, 0, 162, ! 88, 129, 166, 0, 0, 27, 67, 122, 83, 0, ! 0, 190, 163, 168, 44, 165, 174, 0, 190, 163, ! 168, 0, 0, 195, 163, 168, 44, 167, 174, 0, ! 195, 163, 168, 0, 0, 169, 0, 170, 0, 169, ! 170, 0, 30, 67, 67, 171, 83, 83, 0, 172, ! 0, 171, 88, 172, 0, 0, 173, 0, 173, 67, ! 3, 83, 0, 173, 67, 3, 88, 108, 83, 0, ! 173, 67, 107, 83, 0, 104, 0, 5, 0, 6, ! 0, 7, 0, 114, 0, 0, 89, 175, 176, 85, ! 0, 1, 0, 0, 177, 205, 0, 178, 0, 177, ! 88, 178, 0, 182, 44, 180, 0, 183, 180, 0, ! 0, 104, 46, 179, 180, 0, 180, 0, 0, 89, ! 181, 176, 85, 0, 114, 0, 1, 0, 183, 0, ! 182, 183, 0, 66, 104, 0, 68, 114, 10, 114, ! 90, 0, 68, 114, 90, 0, 0, 0, 190, 185, ! 123, 186, 250, 251, 244, 0, 0, 0, 195, 188, ! 123, 189, 250, 251, 244, 0, 191, 0, 195, 0, ! 67, 168, 191, 83, 0, 191, 67, 284, 0, 191, ! 224, 0, 58, 155, 191, 0, 4, 0, 193, 0, ! 194, 0, 193, 67, 284, 0, 193, 224, 0, 4, ! 0, 194, 67, 284, 0, 194, 224, 0, 58, 155, ! 193, 0, 58, 155, 194, 0, 67, 168, 194, 83, ! 0, 195, 67, 284, 0, 67, 168, 195, 83, 0, ! 58, 155, 195, 0, 195, 224, 0, 3, 0, 13, ! 0, 13, 169, 0, 14, 0, 14, 169, 0, 12, ! 0, 12, 169, 0, 0, 196, 104, 89, 200, 207, ! 85, 168, 0, 196, 89, 207, 85, 168, 0, 0, ! 197, 104, 89, 201, 207, 85, 168, 0, 197, 89, ! 207, 85, 168, 0, 0, 198, 104, 89, 202, 214, ! 206, 85, 168, 0, 0, 198, 89, 203, 214, 206, ! 85, 168, 0, 196, 104, 0, 197, 104, 0, 198, ! 104, 0, 0, 88, 0, 0, 88, 0, 208, 0, ! 208, 209, 0, 0, 208, 209, 84, 0, 208, 84, ! 0, 151, 128, 210, 0, 151, 128, 250, 251, 0, ! 152, 128, 211, 0, 152, 0, 1, 0, 289, 209, ! 0, 212, 0, 210, 88, 129, 212, 0, 213, 0, ! 211, 88, 129, 213, 0, 250, 251, 190, 168, 0, ! 250, 251, 190, 46, 114, 168, 0, 250, 251, 46, ! 114, 168, 0, 250, 251, 195, 168, 0, 250, 251, ! 195, 46, 114, 168, 0, 250, 251, 46, 114, 168, ! 0, 215, 0, 214, 88, 215, 0, 1, 0, 104, ! 0, 104, 44, 114, 0, 0, 153, 217, 218, 0, ! 0, 220, 0, 0, 220, 0, 221, 169, 0, 222, ! 0, 221, 0, 223, 0, 58, 155, 221, 0, 58, ! 155, 0, 58, 155, 222, 0, 67, 168, 220, 83, ! 0, 223, 67, 274, 0, 223, 224, 0, 67, 274, ! 0, 224, 0, 68, 106, 90, 0, 68, 153, 106, ! 90, 0, 68, 90, 0, 68, 153, 90, 0, 68, ! 58, 90, 0, 68, 153, 58, 90, 0, 68, 5, ! 106, 90, 0, 68, 5, 153, 106, 90, 0, 68, ! 153, 5, 106, 90, 0, 226, 0, 227, 0, 228, ! 0, 229, 0, 254, 0, 226, 254, 0, 227, 254, ! 0, 228, 254, 0, 229, 254, 0, 127, 0, 226, ! 127, 0, 227, 127, 0, 229, 127, 0, 255, 0, ! 226, 255, 0, 227, 255, 0, 228, 255, 0, 229, ! 255, 0, 231, 0, 230, 231, 0, 226, 0, 227, ! 0, 228, 0, 229, 0, 1, 84, 0, 0, 0, ! 0, 0, 0, 237, 0, 238, 0, 237, 238, 0, ! 32, 288, 84, 0, 244, 0, 1, 244, 0, 89, ! 0, 85, 0, 232, 236, 242, 85, 233, 0, 225, ! 0, 1, 0, 67, 89, 0, 240, 241, 0, 246, ! 253, 0, 246, 1, 0, 0, 15, 247, 67, 106, ! 83, 0, 0, 18, 249, 253, 17, 0, 0, 0, ! 254, 0, 255, 252, 0, 234, 252, 235, 0, 250, ! 251, 266, 0, 250, 251, 267, 0, 0, 245, 16, ! 257, 253, 0, 245, 0, 245, 16, 1, 0, 0, ! 0, 17, 258, 67, 106, 83, 259, 253, 0, 248, ! 67, 106, 83, 84, 0, 248, 1, 0, 0, 0, ! 0, 0, 19, 260, 67, 265, 261, 269, 84, 262, ! 269, 83, 263, 253, 0, 0, 20, 67, 106, 83, ! 264, 253, 0, 269, 84, 0, 130, 0, 244, 0, ! 106, 84, 0, 234, 256, 235, 0, 23, 84, 0, ! 24, 84, 0, 25, 84, 0, 25, 106, 84, 0, ! 27, 268, 67, 106, 83, 84, 0, 27, 268, 67, ! 106, 46, 270, 83, 84, 0, 27, 268, 67, 106, ! 46, 270, 46, 270, 83, 84, 0, 27, 268, 67, ! 106, 46, 270, 46, 270, 46, 273, 83, 84, 0, ! 26, 104, 84, 0, 26, 58, 106, 84, 0, 84, ! 0, 21, 114, 46, 0, 21, 114, 10, 114, 46, ! 0, 22, 46, 0, 104, 250, 251, 46, 168, 0, ! 0, 7, 0, 0, 106, 0, 0, 271, 0, 272, ! 0, 271, 88, 272, 0, 9, 67, 106, 83, 0, ! 68, 104, 90, 9, 67, 106, 83, 0, 122, 0, ! 273, 88, 122, 0, 0, 168, 275, 276, 0, 279, ! 83, 0, 0, 0, 280, 84, 277, 168, 278, 276, ! 0, 1, 83, 0, 0, 10, 0, 280, 0, 280, ! 88, 10, 0, 282, 0, 280, 88, 281, 0, 147, ! 128, 192, 168, 0, 147, 128, 195, 168, 0, 147, ! 128, 219, 0, 148, 128, 195, 168, 0, 148, 128, ! 219, 0, 149, 283, 192, 168, 0, 149, 283, 195, ! 168, 0, 149, 283, 219, 0, 150, 283, 195, 168, ! 0, 150, 283, 219, 0, 128, 0, 0, 168, 285, ! 286, 0, 276, 0, 287, 83, 0, 3, 0, 287, ! 88, 3, 0, 104, 0, 288, 88, 104, 0, 31, ! 0 }; #endif *************** static const short yyrline[] = { 0, *** 486,542 **** 360, 362, 368, 369, 374, 376, 382, 383, 388, 392, 394, 397, 399, 401, 406, 408, 410, 412, 416, 420, 423, 426, 429, 433, 435, 438, 441, 445, 462, 468, ! 471, 474, 477, 479, 483, 487, 491, 493, 497, 499, ! 501, 503, 505, 507, 509, 511, 513, 515, 517, 519, ! 521, 523, 527, 529, 533, 535, 538, 542, 544, 551, ! 554, 561, 571, 578, 579, 581, 583, 587, 596, 601, ! 603, 619, 626, 628, 631, 641, 651, 653, 657, 663, ! 665, 670, 672, 689, 691, 692, 702, 707, 709, 710, ! 711, 718, 721, 723, 726, 734, 743, 753, 758, 761, ! 763, 765, 767, 769, 825, 829, 832, 837, 843, 847, ! 852, 856, 861, 865, 868, 871, 874, 877, 880, 885, ! 889, 892, 895, 898, 901, 906, 910, 913, 916, 919, ! 922, 927, 931, 934, 937, 940, 945, 949, 952, 955, ! 961, 967, 973, 981, 987, 991, 994, 1000, 1006, 1012, ! 1020, 1026, 1030, 1033, 1036, 1039, 1042, 1045, 1051, 1057, ! 1063, 1071, 1075, 1078, 1081, 1084, 1089, 1093, 1096, 1099, ! 1102, 1105, 1108, 1114, 1120, 1126, 1134, 1138, 1141, 1144, ! 1147, 1153, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1164, ! 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1175, 1177, 1178, ! 1179, 1182, 1184, 1185, 1186, 1189, 1191, 1192, 1193, 1196, ! 1198, 1199, 1200, 1203, 1205, 1206, 1207, 1208, 1209, 1210, ! 1211, 1214, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, ! 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1234, 1237, 1262, ! 1264, 1267, 1271, 1274, 1277, 1281, 1286, 1288, 1294, 1296, ! 1299, 1301, 1304, 1307, 1313, 1320, 1322, 1329, 1336, 1338, ! 1345, 1348, 1352, 1355, 1359, 1364, 1367, 1371, 1374, 1376, ! 1378, 1380, 1387, 1389, 1390, 1391, 1396, 1398, 1400, 1402, ! 1407, 1411, 1414, 1416, 1421, 1425, 1428, 1433, 1433, 1436, ! 1439, 1441, 1443, 1446, 1448, 1451, 1457, 1461, 1465, 1479, ! 1486, 1495, 1509, 1516, 1528, 1530, 1535, 1538, 1543, 1545, ! 1547, 1554, 1556, 1559, 1565, 1567, 1570, 1576, 1578, 1580, ! 1582, 1589, 1595, 1597, 1599, 1601, 1604, 1607, 1611, 1614, ! 1618, 1621, 1631, 1636, 1638, 1642, 1644, 1646, 1650, 1652, ! 1655, 1657, 1662, 1665, 1667, 1675, 1677, 1680, 1682, 1687, ! 1690, 1695, 1697, 1699, 1704, 1708, 1718, 1721, 1726, 1728, ! 1733, 1735, 1739, 1741, 1745, 1749, 1753, 1758, 1762, 1766, ! 1776, 1778, 1783, 1788, 1791, 1795, 1800, 1803, 1806, 1809, ! 1814, 1818, 1824, 1826, 1829, 1831, 1835, 1838, 1842, 1845, ! 1847, 1849, 1851, 1857, 1860, 1862, 1864, 1866, 1868, 1870, ! 1874, 1878, 1890, 1892, 1893, 1897, 1900, 1902, 1903, 1904, ! 1905, 1908, 1910, 1913, 1914, 1917, 1919, 1920, 1921, 1922, ! 1925, 1927, 1930, 1932, 1933, 1934, 1937, 1940, 1947, 1952, ! 1968, 1983, 1985, 1990, 1992, 1995, 2009, 2012, 2015, 2019, ! 2021, 2028, 2030, 2033, 2051, 2058, 2064, 2067, 2078, 2089, ! 2101, 2109, 2115, 2121, 2123, 2127, 2133, 2147, 2156, 2161, ! 2165, 2177, 2187, 2190, 2196, 2197, 2200, 2202, 2206, 2209, ! 2212, 2215, 2216, 2220, 2223, 2226, 2231, 2234, 2237, 2241, ! 2244, 2247, 2250, 2253, 2257, 2261, 2266, 2270, 2282, 2288, ! 2296, 2299, 2302, 2305, 2320, 2324, 2328, 2331, 2336, 2338, ! 2341, 2343, 2347, 2350, 2354, 2357, 2366, 2372, 2377, 2379, ! 2388, 2391, 2392, 2398, 2400, 2410, 2412, 2416, 2419, 2425, ! 2431, 2436, 2439, 2445, 2452, 2458, 2463, 2466, 2472, 2477, ! 2486, 2492, 2497, 2499, 2516, 2519, 2524, 2527, 2531 }; #endif --- 487,543 ---- 360, 362, 368, 369, 374, 376, 382, 383, 388, 392, 394, 397, 399, 401, 406, 408, 410, 412, 416, 420, 423, 426, 429, 433, 435, 438, 441, 445, 462, 468, ! 471, 474, 477, 479, 483, 487, 491, 495, 497, 501, ! 503, 505, 507, 509, 511, 513, 515, 517, 519, 521, ! 523, 525, 527, 531, 533, 537, 539, 542, 546, 548, ! 555, 558, 565, 575, 582, 583, 585, 587, 591, 600, ! 605, 607, 623, 630, 632, 635, 645, 655, 657, 661, ! 667, 669, 674, 676, 693, 695, 696, 706, 711, 713, ! 714, 715, 722, 725, 727, 730, 738, 747, 757, 762, ! 765, 767, 769, 771, 773, 829, 833, 836, 841, 847, ! 851, 856, 860, 865, 869, 872, 875, 878, 881, 884, ! 889, 893, 896, 899, 902, 905, 910, 914, 917, 920, ! 923, 926, 931, 935, 938, 941, 944, 949, 953, 956, ! 959, 965, 971, 977, 985, 991, 995, 998, 1004, 1010, ! 1016, 1024, 1030, 1034, 1037, 1040, 1043, 1046, 1049, 1055, ! 1061, 1067, 1075, 1079, 1082, 1085, 1088, 1093, 1097, 1100, ! 1103, 1106, 1109, 1112, 1118, 1124, 1130, 1138, 1142, 1145, ! 1148, 1151, 1157, 1159, 1160, 1161, 1162, 1163, 1164, 1165, ! 1168, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1179, 1181, ! 1182, 1183, 1186, 1188, 1189, 1190, 1193, 1195, 1196, 1197, ! 1200, 1202, 1203, 1204, 1207, 1209, 1210, 1211, 1212, 1213, ! 1214, 1215, 1218, 1220, 1221, 1222, 1223, 1224, 1225, 1226, ! 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1238, 1241, ! 1266, 1268, 1271, 1275, 1278, 1281, 1285, 1290, 1292, 1298, ! 1300, 1303, 1305, 1308, 1311, 1317, 1324, 1326, 1333, 1340, ! 1342, 1349, 1352, 1356, 1359, 1363, 1368, 1371, 1375, 1378, ! 1380, 1382, 1384, 1391, 1393, 1394, 1395, 1400, 1402, 1404, ! 1406, 1411, 1415, 1418, 1420, 1425, 1429, 1432, 1437, 1438, ! 1441, 1444, 1446, 1448, 1451, 1453, 1456, 1462, 1466, 1470, ! 1484, 1491, 1500, 1514, 1521, 1533, 1535, 1540, 1543, 1548, ! 1550, 1552, 1559, 1561, 1564, 1570, 1572, 1575, 1581, 1583, ! 1585, 1587, 1594, 1600, 1602, 1604, 1606, 1609, 1612, 1616, ! 1619, 1623, 1626, 1636, 1641, 1643, 1647, 1649, 1651, 1655, ! 1657, 1660, 1662, 1667, 1670, 1672, 1680, 1682, 1685, 1687, ! 1692, 1695, 1700, 1702, 1704, 1709, 1713, 1723, 1726, 1731, ! 1733, 1738, 1740, 1744, 1746, 1750, 1754, 1758, 1763, 1767, ! 1771, 1781, 1783, 1788, 1793, 1796, 1800, 1805, 1808, 1811, ! 1814, 1819, 1823, 1829, 1831, 1834, 1836, 1840, 1843, 1847, ! 1850, 1852, 1854, 1856, 1862, 1865, 1867, 1869, 1871, 1873, ! 1875, 1879, 1883, 1895, 1897, 1898, 1902, 1905, 1907, 1908, ! 1909, 1910, 1913, 1915, 1918, 1919, 1922, 1924, 1925, 1926, ! 1927, 1930, 1932, 1935, 1937, 1938, 1939, 1942, 1945, 1952, ! 1957, 1973, 1988, 1990, 1995, 1997, 2000, 2014, 2017, 2020, ! 2024, 2026, 2033, 2035, 2038, 2056, 2063, 2069, 2072, 2083, ! 2094, 2106, 2114, 2120, 2126, 2128, 2132, 2138, 2152, 2161, ! 2166, 2170, 2182, 2192, 2195, 2201, 2202, 2205, 2207, 2211, ! 2214, 2217, 2220, 2221, 2225, 2228, 2231, 2236, 2239, 2242, ! 2246, 2249, 2252, 2255, 2258, 2262, 2266, 2271, 2275, 2287, ! 2293, 2301, 2304, 2307, 2310, 2325, 2329, 2333, 2336, 2341, ! 2343, 2346, 2348, 2352, 2355, 2359, 2362, 2371, 2377, 2382, ! 2384, 2393, 2396, 2397, 2403, 2405, 2415, 2417, 2421, 2424, ! 2430, 2436, 2441, 2444, 2450, 2457, 2463, 2468, 2471, 2477, ! 2482, 2491, 2497, 2502, 2504, 2521, 2524, 2529, 2532, 2536 }; #endif *************** static const char * const yytname[] = { *** 556,563 **** "OBJECTNAME","CLASS","ALIAS","')'","';'","'}'","'~'","'!'","','","'{'","']'", "program","extdefs","@1","@2","extdef","datadef","fndef","@3","@4","@5","@6", "@7","@8","identifier","unop","expr","exprlist","nonnull_exprlist","unary_expr", ! "sizeof","alignof","cast_expr","expr_no_commas","@9","@10","@11","@12","@13", ! "primary","@14","string","old_style_parm_decls","lineno_datadecl","datadecls", "datadecl","lineno_decl","setspecs","maybe_resetattrs","decl","declspecs_nosc_nots_nosa_noea", "declspecs_nosc_nots_nosa_ea","declspecs_nosc_nots_sa_noea","declspecs_nosc_nots_sa_ea", "declspecs_nosc_ts_nosa_noea","declspecs_nosc_ts_nosa_ea","declspecs_nosc_ts_sa_noea", --- 557,564 ---- "OBJECTNAME","CLASS","ALIAS","')'","';'","'}'","'~'","'!'","','","'{'","']'", "program","extdefs","@1","@2","extdef","datadef","fndef","@3","@4","@5","@6", "@7","@8","identifier","unop","expr","exprlist","nonnull_exprlist","unary_expr", ! "sizeof","alignof","typeof","cast_expr","expr_no_commas","@9","@10","@11","@12", ! "@13","primary","@14","string","old_style_parm_decls","lineno_datadecl","datadecls", "datadecl","lineno_decl","setspecs","maybe_resetattrs","decl","declspecs_nosc_nots_nosa_noea", "declspecs_nosc_nots_nosa_ea","declspecs_nosc_nots_sa_noea","declspecs_nosc_nots_sa_ea", "declspecs_nosc_ts_nosa_noea","declspecs_nosc_ts_nosa_ea","declspecs_nosc_ts_sa_noea", *************** static const short yyr1[] = { 0, *** 600,656 **** 97, 100, 101, 97, 97, 102, 103, 97, 97, 104, 104, 105, 105, 105, 105, 105, 105, 105, 106, 107, 107, 108, 108, 109, 109, 109, 109, 109, 109, 109, ! 109, 109, 109, 109, 110, 111, 112, 112, 113, 113, ! 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, ! 113, 114, 113, 115, 113, 116, 117, 113, 118, 113, ! 113, 113, 119, 119, 119, 119, 120, 119, 119, 119, ! 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, ! 119, 121, 121, 122, 122, 122, 123, 124, 124, 124, ! 124, 125, 125, 125, 125, 126, 127, 128, 129, 129, ! 129, 129, 129, 129, 130, 130, 130, 131, 132, 132, ! 133, 133, 134, 134, 134, 134, 134, 134, 134, 135, ! 135, 135, 135, 135, 135, 136, 136, 136, 136, 136, ! 136, 137, 137, 137, 137, 137, 138, 138, 138, 138, ! 138, 138, 138, 139, 140, 140, 140, 140, 140, 140, ! 141, 142, 142, 142, 142, 142, 142, 142, 142, 142, ! 142, 143, 143, 143, 143, 143, 144, 144, 144, 144, ! 144, 144, 144, 144, 144, 144, 145, 145, 145, 145, ! 145, 146, 146, 146, 146, 146, 146, 146, 146, 147, ! 147, 147, 147, 147, 147, 147, 147, 148, 148, 148, ! 148, 149, 149, 149, 149, 150, 150, 150, 150, 151, ! 151, 151, 151, 152, 152, 152, 152, 152, 152, 152, ! 152, 153, 153, 153, 153, 153, 153, 153, 153, 153, ! 153, 153, 153, 153, 153, 153, 153, 154, 154, 155, ! 155, 156, 157, 157, 158, 159, 159, 159, 160, 160, ! 161, 161, 162, 162, 164, 163, 163, 166, 165, 165, ! 167, 167, 168, 168, 169, 170, 170, 171, 171, 171, ! 171, 171, 172, 172, 172, 172, 173, 174, 173, 173, ! 175, 175, 176, 176, 177, 177, 178, 177, 177, 180, ! 179, 179, 179, 181, 181, 182, 182, 182, 184, 185, ! 183, 187, 188, 186, 189, 189, 190, 190, 190, 190, ! 190, 191, 191, 192, 192, 192, 193, 193, 193, 193, ! 193, 194, 194, 194, 194, 194, 195, 195, 196, 196, ! 197, 197, 199, 198, 198, 200, 198, 198, 201, 198, ! 202, 198, 203, 203, 203, 204, 204, 205, 205, 206, ! 206, 207, 207, 207, 208, 208, 208, 208, 208, 208, ! 209, 209, 210, 210, 211, 211, 211, 212, 212, 212, ! 213, 213, 213, 214, 214, 216, 215, 217, 217, 218, ! 218, 218, 219, 219, 220, 220, 221, 221, 222, 222, ! 222, 222, 222, 223, 223, 223, 223, 223, 223, 223, ! 223, 223, 224, 224, 224, 224, 225, 225, 225, 225, ! 225, 226, 226, 226, 226, 227, 227, 227, 227, 227, ! 228, 228, 229, 229, 229, 229, 230, 231, 232, 233, ! 234, 235, 235, 236, 236, 237, 238, 238, 239, 240, ! 240, 241, 241, 242, 243, 244, 244, 246, 245, 248, ! 247, 249, 250, 251, 251, 252, 253, 254, 256, 255, ! 255, 255, 257, 258, 255, 255, 255, 259, 260, 261, ! 262, 255, 263, 255, 264, 264, 265, 265, 265, 265, ! 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, ! 266, 266, 266, 266, 267, 267, 268, 268, 269, 269, ! 270, 270, 271, 271, 272, 272, 274, 273, 275, 276, ! 277, 275, 275, 278, 278, 278, 278, 279, 279, 280, ! 280, 280, 280, 280, 281, 281, 281, 281, 281, 282, ! 284, 283, 285, 285, 286, 286, 287, 287, 288 }; static const short yyr2[] = { 0, --- 601,657 ---- 97, 100, 101, 97, 97, 102, 103, 97, 97, 104, 104, 105, 105, 105, 105, 105, 105, 105, 106, 107, 107, 108, 108, 109, 109, 109, 109, 109, 109, 109, ! 109, 109, 109, 109, 110, 111, 112, 113, 113, 114, ! 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, ! 114, 114, 115, 114, 116, 114, 117, 118, 114, 119, ! 114, 114, 114, 120, 120, 120, 120, 121, 120, 120, ! 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, ! 120, 120, 122, 122, 123, 123, 123, 124, 125, 125, ! 125, 125, 126, 126, 126, 126, 127, 128, 129, 130, ! 130, 130, 130, 130, 130, 131, 131, 131, 132, 133, ! 133, 134, 134, 135, 135, 135, 135, 135, 135, 135, ! 136, 136, 136, 136, 136, 136, 137, 137, 137, 137, ! 137, 137, 138, 138, 138, 138, 138, 139, 139, 139, ! 139, 139, 139, 139, 140, 141, 141, 141, 141, 141, ! 141, 142, 143, 143, 143, 143, 143, 143, 143, 143, ! 143, 143, 144, 144, 144, 144, 144, 145, 145, 145, ! 145, 145, 145, 145, 145, 145, 145, 146, 146, 146, ! 146, 146, 147, 147, 147, 147, 147, 147, 147, 147, ! 148, 148, 148, 148, 148, 148, 148, 148, 149, 149, ! 149, 149, 150, 150, 150, 150, 151, 151, 151, 151, ! 152, 152, 152, 152, 153, 153, 153, 153, 153, 153, ! 153, 153, 154, 154, 154, 154, 154, 154, 154, 154, ! 154, 154, 154, 154, 154, 154, 154, 154, 155, 155, ! 156, 156, 157, 158, 158, 159, 160, 160, 160, 161, ! 161, 162, 162, 163, 163, 165, 164, 164, 167, 166, ! 166, 168, 168, 169, 169, 170, 171, 171, 172, 172, ! 172, 172, 172, 173, 173, 173, 173, 174, 175, 174, ! 174, 176, 176, 177, 177, 178, 178, 179, 178, 178, ! 181, 180, 180, 180, 182, 182, 183, 183, 183, 185, ! 186, 184, 188, 189, 187, 190, 190, 191, 191, 191, ! 191, 191, 192, 192, 193, 193, 193, 194, 194, 194, ! 194, 194, 195, 195, 195, 195, 195, 196, 196, 197, ! 197, 198, 198, 200, 199, 199, 201, 199, 199, 202, ! 199, 203, 199, 204, 204, 204, 205, 205, 206, 206, ! 207, 207, 208, 208, 208, 209, 209, 209, 209, 209, ! 209, 210, 210, 211, 211, 212, 212, 212, 213, 213, ! 213, 214, 214, 214, 215, 215, 217, 216, 218, 218, ! 219, 219, 219, 220, 220, 221, 221, 222, 222, 223, ! 223, 223, 223, 223, 224, 224, 224, 224, 224, 224, ! 224, 224, 224, 225, 225, 225, 225, 226, 226, 226, ! 226, 226, 227, 227, 227, 227, 228, 228, 228, 228, ! 228, 229, 229, 230, 230, 230, 230, 231, 232, 233, ! 234, 235, 236, 236, 237, 237, 238, 239, 239, 240, ! 241, 241, 242, 242, 243, 244, 245, 245, 247, 246, ! 249, 248, 250, 251, 252, 252, 253, 254, 255, 257, ! 256, 256, 256, 258, 259, 256, 256, 256, 260, 261, ! 262, 263, 256, 264, 256, 265, 265, 266, 266, 266, ! 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, ! 266, 267, 267, 267, 267, 268, 268, 269, 269, 270, ! 270, 271, 271, 272, 272, 273, 273, 275, 274, 276, ! 277, 278, 276, 276, 279, 279, 279, 279, 280, 280, ! 281, 281, 281, 281, 281, 282, 282, 282, 282, 282, ! 283, 285, 284, 286, 286, 287, 287, 288, 288, 289 }; static const short yyr2[] = { 0, *************** static const short yyr2[] = { 0, *** 659,1552 **** 4, 0, 0, 9, 4, 0, 0, 8, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 3, 1, 2, 2, 2, 2, 2, 4, ! 2, 4, 2, 2, 1, 1, 1, 4, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, ! 3, 0, 4, 0, 4, 0, 0, 7, 0, 5, ! 3, 3, 1, 1, 1, 1, 0, 7, 3, 3, ! 3, 3, 4, 6, 8, 6, 4, 3, 3, 2, ! 2, 1, 2, 0, 1, 2, 3, 1, 1, 2, ! 2, 4, 4, 2, 2, 3, 0, 1, 4, 4, ! 3, 3, 2, 2, 1, 2, 2, 2, 2, 2, ! 1, 2, 1, 2, 2, 2, 2, 2, 2, 1, ! 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ! 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ! 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ! 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, ! 1, 1, 1, 1, 1, 1, 4, 4, 1, 4, ! 1, 4, 0, 4, 0, 6, 3, 0, 6, 3, ! 0, 1, 1, 2, 6, 1, 3, 0, 1, 4, ! 6, 4, 1, 1, 1, 1, 1, 0, 4, 1, ! 0, 2, 1, 3, 3, 2, 0, 4, 1, 0, ! 4, 1, 1, 1, 2, 2, 5, 3, 0, 0, ! 7, 0, 0, 7, 1, 1, 4, 3, 2, 3, ! 1, 1, 1, 3, 2, 1, 3, 2, 3, 3, ! 4, 3, 4, 3, 2, 1, 1, 2, 1, 2, ! 1, 2, 0, 7, 5, 0, 7, 5, 0, 8, ! 0, 7, 2, 2, 2, 0, 1, 0, 1, 1, ! 2, 0, 3, 2, 3, 4, 3, 1, 1, 2, ! 1, 4, 1, 4, 4, 6, 5, 4, 6, 5, ! 1, 3, 1, 1, 3, 0, 3, 0, 1, 0, ! 1, 2, 1, 1, 1, 3, 2, 3, 4, 3, ! 2, 2, 1, 3, 4, 2, 3, 3, 4, 4, ! 5, 5, 1, 1, 1, 1, 1, 2, 2, 2, ! 2, 1, 2, 2, 2, 1, 2, 2, 2, 2, ! 1, 2, 1, 1, 1, 1, 2, 0, 0, 0, ! 0, 0, 1, 1, 2, 3, 1, 2, 1, 1, ! 5, 1, 1, 2, 2, 2, 2, 0, 5, 0, ! 4, 0, 0, 1, 2, 3, 3, 3, 0, 4, ! 1, 3, 0, 0, 7, 5, 2, 0, 0, 0, ! 0, 12, 0, 6, 2, 1, 1, 2, 3, 2, ! 2, 2, 3, 6, 8, 10, 12, 3, 4, 1, ! 3, 5, 2, 5, 0, 1, 0, 1, 0, 1, ! 1, 3, 4, 7, 1, 3, 0, 3, 2, 0, ! 0, 6, 2, 0, 1, 1, 3, 1, 3, 4, ! 4, 3, 4, 3, 4, 4, 3, 4, 3, 1, ! 0, 3, 1, 2, 1, 3, 1, 3, 1 }; static const short yydefact[] = { 3, ! 5, 0, 0, 0, 266, 157, 263, 125, 351, 347, ! 349, 0, 0, 0, 559, 17, 4, 8, 7, 0, ! 210, 211, 212, 213, 202, 203, 204, 205, 214, 215, ! 216, 217, 206, 207, 208, 209, 117, 117, 0, 133, ! 140, 260, 262, 261, 131, 283, 0, 0, 0, 265, ! 264, 0, 6, 15, 16, 352, 348, 350, 0, 0, ! 0, 346, 258, 281, 0, 271, 0, 160, 126, 138, ! 144, 128, 161, 127, 139, 145, 167, 129, 150, 155, ! 132, 168, 130, 151, 156, 178, 134, 136, 142, 141, ! 179, 135, 137, 143, 193, 146, 148, 153, 152, 194, ! 147, 149, 154, 162, 158, 176, 185, 164, 163, 159, ! 177, 186, 169, 165, 191, 200, 171, 170, 166, 192, ! 201, 180, 172, 174, 183, 182, 181, 173, 175, 184, ! 195, 187, 189, 198, 197, 196, 188, 190, 199, 0, ! 0, 14, 284, 30, 31, 372, 363, 372, 364, 361, ! 365, 10, 83, 84, 102, 55, 56, 0, 0, 0, ! 0, 0, 86, 0, 32, 34, 33, 0, 35, 36, ! 0, 37, 38, 0, 0, 39, 57, 0, 0, 59, ! 42, 44, 85, 0, 0, 0, 238, 239, 240, 241, ! 234, 235, 236, 237, 396, 0, 288, 230, 231, 232, ! 233, 259, 0, 0, 282, 11, 281, 29, 0, 281, ! 0, 0, 281, 345, 331, 258, 281, 0, 269, 0, ! 325, 326, 0, 0, 0, 0, 353, 0, 356, 0, ! 359, 53, 54, 0, 0, 0, 48, 45, 0, 464, ! 0, 0, 47, 0, 0, 0, 49, 0, 51, 0, ! 0, 76, 74, 72, 0, 0, 0, 0, 0, 0, ! 0, 0, 0, 0, 0, 0, 100, 101, 0, 0, ! 40, 0, 103, 0, 460, 452, 0, 46, 267, 398, ! 268, 294, 295, 296, 293, 0, 286, 289, 344, 0, ! 0, 118, 0, 551, 342, 0, 0, 416, 0, 0, ! 0, 27, 0, 472, 109, 473, 280, 0, 0, 13, ! 281, 21, 0, 281, 281, 329, 12, 25, 0, 281, ! 379, 374, 230, 231, 232, 233, 226, 227, 228, 229, ! 117, 117, 371, 0, 372, 281, 372, 393, 394, 368, ! 391, 0, 0, 0, 0, 90, 89, 0, 9, 43, ! 0, 0, 82, 81, 0, 0, 0, 0, 70, 71, ! 69, 68, 67, 65, 66, 60, 61, 62, 63, 64, ! 99, 98, 0, 41, 0, 92, 0, 0, 453, 454, ! 91, 258, 281, 397, 399, 404, 403, 405, 413, 0, ! 288, 40, 343, 272, 273, 0, 0, 0, 0, 418, ! 414, 0, 0, 417, 0, 447, 472, 111, 106, 110, ! 0, 278, 330, 0, 0, 19, 277, 328, 23, 355, ! 472, 472, 373, 380, 0, 358, 0, 0, 369, 0, ! 368, 0, 0, 0, 87, 58, 50, 52, 0, 0, ! 75, 73, 93, 97, 557, 0, 463, 432, 462, 472, ! 472, 472, 472, 0, 441, 0, 473, 427, 436, 455, ! 407, 527, 412, 281, 411, 285, 287, 83, 0, 274, ! 0, 555, 535, 222, 223, 218, 219, 224, 225, 220, ! 221, 117, 117, 553, 0, 536, 538, 552, 0, 420, ! 0, 0, 419, 415, 473, 107, 117, 117, 0, 327, ! 270, 273, 472, 275, 472, 375, 381, 473, 377, 383, ! 473, 281, 281, 395, 392, 281, 0, 0, 0, 0, ! 0, 77, 80, 456, 0, 433, 428, 437, 434, 429, ! 438, 473, 430, 439, 435, 431, 440, 442, 449, 450, ! 406, 408, 0, 0, 527, 410, 290, 0, 292, 533, ! 550, 400, 400, 529, 530, 0, 554, 0, 421, 422, ! 0, 114, 0, 115, 0, 300, 298, 297, 279, 473, ! 0, 473, 281, 376, 281, 0, 354, 357, 362, 281, ! 94, 0, 96, 313, 83, 0, 0, 310, 0, 312, ! 0, 366, 303, 309, 0, 0, 0, 558, 450, 461, ! 266, 0, 0, 0, 0, 0, 0, 515, 510, 459, ! 472, 0, 116, 117, 117, 0, 0, 448, 497, 477, ! 478, 0, 409, 528, 0, 336, 258, 281, 281, 332, ! 333, 281, 547, 401, 404, 258, 281, 281, 549, 281, ! 537, 210, 211, 212, 213, 202, 203, 204, 205, 214, ! 215, 216, 217, 206, 207, 208, 209, 117, 117, 539, ! 556, 0, 28, 457, 0, 0, 0, 0, 276, 0, ! 472, 0, 281, 472, 0, 281, 360, 0, 316, 0, ! 0, 307, 88, 0, 302, 0, 315, 306, 78, 0, ! 513, 500, 501, 502, 0, 0, 0, 516, 0, 473, ! 498, 0, 0, 123, 468, 483, 470, 488, 0, 481, ! 0, 0, 451, 465, 124, 291, 407, 527, 545, 281, ! 335, 281, 338, 546, 402, 407, 527, 548, 531, 400, ! 400, 458, 112, 113, 0, 20, 24, 382, 473, 281, ! 0, 385, 384, 281, 0, 388, 95, 0, 318, 0, ! 0, 304, 305, 0, 511, 503, 0, 508, 0, 0, ! 0, 121, 319, 0, 122, 322, 0, 0, 450, 0, ! 0, 0, 467, 472, 466, 487, 0, 499, 339, 340, ! 0, 334, 337, 0, 281, 281, 542, 281, 544, 299, ! 0, 387, 281, 390, 281, 0, 311, 308, 0, 509, ! 0, 281, 119, 0, 120, 0, 0, 0, 0, 517, ! 0, 482, 450, 451, 474, 472, 0, 341, 532, 540, ! 541, 543, 386, 389, 317, 512, 519, 0, 514, 320, ! 323, 0, 0, 471, 518, 496, 489, 0, 493, 480, ! 476, 475, 0, 0, 0, 0, 520, 521, 504, 472, ! 472, 469, 484, 517, 495, 450, 486, 0, 0, 519, ! 0, 0, 473, 473, 450, 0, 494, 0, 0, 0, ! 505, 522, 0, 0, 485, 490, 523, 0, 0, 0, ! 321, 324, 517, 0, 525, 0, 506, 0, 0, 0, ! 0, 491, 524, 507, 526, 450, 492, 0, 0, 0 }; ! static const short yydefgoto[] = { 898, ! 1, 2, 3, 17, 18, 19, 313, 503, 319, 505, ! 212, 407, 589, 174, 241, 373, 176, 177, 178, 179, ! 180, 181, 358, 357, 355, 597, 356, 182, 521, 183, ! 302, 303, 304, 496, 448, 20, 291, 613, 187, 188, ! 189, 190, 191, 192, 193, 194, 29, 30, 31, 32, ! 33, 34, 35, 36, 37, 38, 482, 483, 331, 202, ! 195, 39, 203, 40, 41, 42, 43, 44, 218, 65, ! 213, 219, 571, 66, 499, 292, 205, 46, 286, 287, ! 288, 569, 667, 591, 592, 593, 751, 594, 681, 595, ! 596, 762, 804, 850, 765, 806, 851, 502, 221, 629, ! 630, 631, 222, 47, 48, 49, 50, 335, 337, 342, ! 230, 51, 685, 430, 225, 226, 333, 506, 509, 507, ! 510, 340, 341, 196, 280, 384, 633, 634, 386, 387, ! 388, 214, 449, 450, 451, 452, 453, 454, 305, 276, ! 600, 774, 778, 378, 379, 380, 663, 618, 277, 456, ! 184, 664, 710, 711, 767, 712, 769, 306, 411, 814, ! 775, 815, 816, 713, 813, 768, 865, 770, 854, 883, ! 896, 856, 837, 620, 621, 699, 838, 846, 847, 848, ! 886, 463, 544, 484, 640, 784, 485, 486, 660, 487, ! 552, 295, 397, 488, 489, 446, 185 }; ! static const short yypact[] = { 131, ! 137, 2099, 2099, 229,-32768,-32768,-32768,-32768, 129, 129, ! 129, 101, 123, 147,-32768,-32768,-32768,-32768,-32768, 263, ! 1218, 731, 1314, 941, 390, 303, 525, 827, 1631, 1037, ! 2396, 1360, 696, 917, 716, 1008,-32768,-32768, 138,-32768, ! -32768,-32768,-32768,-32768, 129,-32768, 83, 85, 107,-32768, ! -32768, 2099,-32768,-32768,-32768, 129, 129, 129, 2695, 2613, ! 165,-32768, 112, 129, 170,-32768, 914,-32768,-32768,-32768, ! -32768, 129,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, ! 129,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 129, ! -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 129,-32768, ! -32768,-32768,-32768,-32768,-32768,-32768,-32768, 129,-32768,-32768, ! -32768,-32768,-32768,-32768,-32768,-32768, 129,-32768,-32768,-32768, ! -32768,-32768,-32768,-32768,-32768, 129,-32768,-32768,-32768,-32768, ! -32768,-32768,-32768,-32768, 129,-32768,-32768,-32768,-32768, 290, ! 263,-32768,-32768,-32768,-32768,-32768, 146,-32768, 149,-32768, ! 159,-32768,-32768,-32768,-32768,-32768,-32768, 2695, 2695, 205, ! 212, 214,-32768, 377,-32768,-32768,-32768, 2695,-32768,-32768, ! 1719,-32768,-32768, 2695, 204, 235,-32768, 2736, 2777,-32768, ! 3116, 1771, 317, 1480, 2695, 224, 1413, 859, 3041, 1050, ! 1230, 784, 1694, 1227,-32768, 249, 684, 136, 328, 219, ! 358,-32768, 263, 263, 129,-32768, 129,-32768, 307, 129, ! 2142, 357, 129,-32768,-32768, 112, 129, 257,-32768, 2080, ! 401, 454, 284, 2052, 293, 855,-32768, 306,-32768, 298, ! -32768,-32768,-32768, 2695, 2695, 3066,-32768,-32768, 305,-32768, ! 323, 346,-32768, 316, 2695, 1719,-32768, 1719,-32768, 2695, ! 2695, 393,-32768,-32768, 2695, 2695, 2695, 2695, 2695, 2695, ! 2695, 2695, 2695, 2695, 2695, 2695,-32768,-32768, 377, 377, ! 2695, 2695,-32768, 366,-32768, 409, 372,-32768,-32768, 425, ! -32768,-32768,-32768,-32768,-32768, 197,-32768, 399, 454, 215, ! 263,-32768, 470,-32768,-32768, 2613, 2245,-32768, 398, 2183, ! 445,-32768, 759, 65,-32768,-32768, 497, 290, 290,-32768, ! 129,-32768, 357, 129, 129,-32768,-32768,-32768, 357, 129, ! -32768,-32768, 1413, 859, 3041, 1050, 1230, 784, 1694, 1227, ! -32768, 330, 459, 1417,-32768, 129,-32768,-32768, 529, 488, ! -32768, 298, 2883, 2901, 490,-32768,-32768, 2486,-32768, 3116, ! 501, 503, 3116, 3116, 2695, 534, 2695, 2695, 2448, 3077, ! 2576, 2961, 1820, 818, 818, 452, 452,-32768,-32768,-32768, ! -32768,-32768, 515, 235, 513,-32768, 377, 1567, 409,-32768, ! -32768, 112, 129,-32768,-32768,-32768,-32768, 456,-32768, 522, ! 684, 2818,-32768,-32768, 209, 87, 1090, 516, 2695,-32768, ! -32768, 2695, 2286,-32768, 517,-32768,-32768,-32768,-32768,-32768, ! 2465,-32768, 401, 251, 290,-32768, 564,-32768,-32768,-32768, ! -32768,-32768,-32768,-32768, 527,-32768, 528, 2695, 377, 530, ! 488, 3066, 2695, 3066,-32768,-32768, 532, 532, 576, 2695, ! 3145, 2208,-32768,-32768,-32768, 324, 445,-32768,-32768, 78, ! 116, 121, 134, 624,-32768, 542,-32768,-32768,-32768,-32768, ! 425, 425,-32768, 129,-32768,-32768,-32768, 339, 545,-32768, ! 549,-32768,-32768, 1797, 3070, 1146, 1600, 1998, 3095, 1185, ! 1614,-32768,-32768,-32768, 553, 347,-32768,-32768, 374,-32768, ! 552, 555,-32768,-32768,-32768,-32768, 563, 565, 1348,-32768, ! -32768, 626,-32768,-32768,-32768, 567,-32768,-32768, 569,-32768, ! -32768, 129, 129, 3116,-32768, 129, 566, 579, 2925, 581, ! 1784,-32768, 3132,-32768, 377,-32768,-32768,-32768,-32768,-32768, ! -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 2356, ! -32768,-32768, 586, 1207,-32768,-32768,-32768, 2695,-32768,-32768, ! -32768, 175, 325,-32768,-32768, 1520,-32768, 673,-32768,-32768, ! 76,-32768, 290,-32768, 263,-32768,-32768, 3116,-32768,-32768, ! 1348,-32768, 129, 343, 129, 431,-32768,-32768,-32768, 129, ! -32768, 2695,-32768,-32768, 632, 377, 2695,-32768, 633, 3116, ! 595, 593,-32768,-32768, 185, 1920, 2695,-32768, 2425,-32768, ! 646, 2695, 649, 612, 614, 2654, 158, 699,-32768,-32768, ! -32768, 623,-32768,-32768,-32768, 627, 482, 628,-32768,-32768, ! -32768, 2551,-32768,-32768, 407,-32768, 112, 129, 129, 468, ! 483, 238,-32768,-32768, 129, 112, 129, 238,-32768, 129, ! -32768, 1797, 3070, 2564, 3099, 1146, 1600, 1547, 1752, 1998, ! 3095, 3037, 3112, 1185, 1614, 1634, 1766,-32768,-32768,-32768, ! -32768, 625,-32768,-32768, 478, 479, 1784, 76,-32768, 76, ! -32768, 2695, 109,-32768, 2695, 418,-32768, 2943,-32768, 1406, ! 1784,-32768,-32768, 1852,-32768, 1988,-32768,-32768, 3132, 2863, ! -32768,-32768,-32768,-32768, 640, 2695, 641,-32768, 650,-32768, ! -32768, 290, 263,-32768,-32768,-32768,-32768,-32768, 660, 700, ! 1250, 97,-32768,-32768,-32768,-32768, 175, 349,-32768, 129, ! -32768, 129,-32768,-32768, 129, 325, 325,-32768,-32768, 175, ! 325,-32768,-32768,-32768, 662,-32768,-32768,-32768,-32768, 2980, ! 2695,-32768,-32768, 2980, 2695,-32768,-32768, 2695,-32768, 665, ! 1988,-32768,-32768, 2695,-32768,-32768, 674,-32768, 2695, 711, ! 484,-32768, 403, 487,-32768, 1087, 701, 703,-32768, 707, ! 2695, 1654,-32768,-32768,-32768,-32768, 2695,-32768, 468, 483, ! 466,-32768,-32768, 1207, 129, 238,-32768, 238,-32768,-32768, ! 343,-32768, 2980,-32768, 2980, 2839,-32768,-32768, 3098,-32768, ! 62, 129,-32768, 357,-32768, 357, 2695, 2695, 750, 2551, ! 694,-32768,-32768,-32768,-32768,-32768, 695,-32768,-32768,-32768, ! -32768,-32768,-32768,-32768,-32768,-32768, 31, 697,-32768,-32768, ! -32768, 718, 719,-32768,-32768,-32768,-32768, 698,-32768,-32768, ! -32768,-32768, 710, 712, 377, 127, 715,-32768,-32768,-32768, ! -32768,-32768,-32768, 2695,-32768,-32768,-32768, 2695, 693, 31, ! 720, 31,-32768,-32768,-32768, 722,-32768, 730, 802, 163, ! -32768,-32768, 625, 625,-32768,-32768,-32768, 749, 470, 733, ! -32768,-32768, 2695, 2695, 317, 421,-32768, 740, 743, 744, ! 470,-32768,-32768,-32768, 317,-32768,-32768, 829, 830,-32768 }; static const short yypgoto[] = {-32768, ! -32768,-32768,-32768, 98,-32768,-32768,-32768,-32768,-32768,-32768, ! -32768,-32768, 34,-32768, -59, 443, -259, 378,-32768,-32768, ! -53, 728,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -277, ! -310, 538,-32768,-32768, -97, 222, -283, -565, 2, 8, ! 39, 41, 21, 43, 45, 48, -375, -339, 288, 289, ! -317, -281, 291, 294, -488, -466, 427, 435,-32768, -177, ! -119, -519, -199, 429, 496, 480, 706,-32768, -510, -121, ! -218, 437,-32768, 591,-32768, 379, 4, 68,-32768, 463, ! -32768, 286,-32768, -411,-32768, 176,-32768, -526,-32768,-32768, ! 299,-32768,-32768,-32768,-32768,-32768,-32768, -132, 282, 154, ! 171, -124, 58,-32768,-32768,-32768,-32768,-32768,-32768,-32768, ! -32768,-32768,-32768, 462, -114,-32768, 562,-32768,-32768, 230, ! 228, 568, 477, -95,-32768,-32768, -523, -262, -406, -429, ! -32768, 476,-32768,-32768,-32768,-32768,-32768,-32768, -242,-32768, ! -32768, -481, 91,-32768,-32768, 533, -541,-32768, 295,-32768, ! -32768, -514,-32768,-32768,-32768,-32768,-32768, 617, -388, 93, ! -685, -264, 20,-32768,-32768,-32768,-32768,-32768,-32768,-32768, ! -32768,-32768,-32768,-32768,-32768,-32768, -745, 54,-32768, 55, ! -32768, 461,-32768, -506,-32768,-32768,-32768,-32768,-32768,-32768, ! 433, -296,-32768,-32768,-32768,-32768, 60 }; ! #define YYLAST 3205 ! static const short yytable[] = { 175, ! 186, 314, 416, 21, 21, 45, 45, 220, 419, 22, ! 22, 374, 56, 57, 58, 396, 308, 385, 418, 223, ! 616, 478, 25, 25, 72, 619, 81, 415, 90, 639, ! 99, 542, 108, 228, 117, 478, 126, 624, 135, 844, ! 23, 23, 24, 24, 26, 26, 27, 27, 332, 28, ! 28, 614, 665, 21, 541, 45, 715, 479, 617, 22, ! 408, 52, 52, 45, 198, -105, 45, 658, 540, 688, ! 199, 479, 25, 615, 409, 242, 662, 67, -443, 480, ! 147, 149, 151, 809, 619, 144, 145, 144, 145, 659, ! 23, 300, 24, 480, 26, 273, 27, 776, 845, 28, ! 53, 200, 616, 201, 232, 233, 561, 827, 866, 144, ! 145, 52, 143, 458, 238, 481, -444, 617, 8, 574, ! 243, -445, 576, 143, 143, 143, 736, 840, 737, 481, ! -1, 278, 374, 614, -446, 455, -2, 888, 14, 143, ! 345, 14, 69, 599, 828, 635, 635, 732, 143, 152, ! 351, 299, 352, -105, 741, 615, 332, 143, 14, 753, ! 144, 145, -423, 777, 610, 14, 143, 59, 478, 470, ! 867, 146, 860, 148, 45, 143, 399, 62, 626, 875, ! 650, 668, 461, 670, 143, 527, 530, 533, 536, 60, ! 72, 761, 81, 143, 90, 150, 99, 237, 224, 543, ! -424, 72, 143, 81, 479, -425, 787, 789, 879, 861, ! 897, 538, 375, 61, 45, 696, 651, 198, -426, 45, ! 425, 142, 427, 199, 798, 78, 480, 323, 686, 45, ! 285, 197, 627, 324, 227, 209, 398, 229, 654, 45, ! 405, 628, 211, 238, 836, 880, 327, 231, 14, 45, ! 586, 45, 587, 206, 200, 735, 201, 207, 140, 141, ! 289, 290, 481, 339, 325, 62, 326, 14, 328, 750, ! 329, 234, 143, 330, 655, 210, 211, 819, 235, 390, ! 236, 210, 211, 314, 391, 334, 244, 542, 625, 671, ! 616, 674, 62, 215, 436, 439, 542, 393, 338, 45, ! 144, 145, 371, 372, 210, 211, 279, 91, 7, 92, ! 541, 760, 54, 55, 9, 10, 11, 315, 211, 541, ! 63, 614, 245, 635, 635, 273, 72, 62, 81, 64, ! 90, 281, 99, 500, 74, 323, 518, 45, 520, 491, ! 310, 324, 492, 615, 311, 62, 215, 216, 395, 238, ! 791, 62, 526, 529, 327, 535, 217, 301, 881, 882, ! -472, -472, -472, -472, 83, 289, 290, 317, -472, -472, ! -472, 207, 325, 293, 326, 339, 328, 320, 329, 144, ! 145, 330, 636, 198, -472, 45, -247, 346, 672, 199, ! 336, 637, 211, 334, 86, 7, 87, 459, 474, 349, ! 216, 9, 10, 11, 475, 347, 627, 524, 478, 217, ! 445, 525, 474, -378, -378, 628, 211, 476, 475, 14, ! 200, 547, 201, 782, 285, 783, 548, 717, 348, 209, ! 555, 476, -273, 62, 556, 45, 726, 45, -79, 477, ! 377, 673, 204, 666, 479, -104, -273, 14, 376, 70, ! 75, 79, 84, 477, 381, 543, 557, 106, 111, 115, ! 120, 558, 339, 745, 543, 392, 480, 315, 211, 528, ! 531, 534, 537, -246, 873, 874, 675, 72, 155, 90, ! 612, 108, 382, 126, 210, 211, -273, 401, 63, 716, ! -273, 383, 211, 830, 245, 831, 705, 64, 706, 707, ! 708, 709, 481, 890, 88, 93, 97, 102, 891, 264, ! 265, 266, 124, 129, 133, 138, 71, 76, 80, 85, ! 210, 211, 464, 211, 107, 112, 116, 121, 406, 95, ! 7, 96, 722, 211, 720, 211, 9, 10, 11, 612, ! 412, 21, 423, 45, 314, 474, 695, 22, 818, 722, ! 211, 475, 421, 422, 14, 247, 249, 642, 598, 45, ! 25, 733, 734, 643, 476, 311, 207, 803, 278, 763, ! 805, 311, 428, 611, 207, 429, 646, 434, 23, 440, ! 24, 764, 26, 437, 27, 438, 477, 28, 294, 413, ! 414, 307, 780, 781, 644, 309, 645, 443, 647, 622, ! 648, 885, 444, 649, 466, 490, 494, 504, -248, 632, ! 638, 512, 513, 895, 516, 70, 75, 79, 84, 679, ! 435, 522, 395, 21, 301, 45, 539, 549, 198, 22, ! 45, 550, 611, 676, 199, 554, 757, 198, 725, 45, ! 697, 559, 25, 199, 560, 72, 562, 81, 564, 90, ! 580, 99, 209, 108, 573, 117, 575, 126, 673, 135, ! 23, 581, 24, 583, 26, 200, 27, 201, 623, 28, ! 88, 93, 97, 102, 200, 661, 201, -30, 682, 683, ! 684, 622, 71, 76, 80, 85, 144, 145, 282, 283, ! 284, -31, 417, 294, 691, 692, 316, 693, 420, 801, ! 122, 7, 123, 551, 551, 698, 701, 9, 10, 11, ! 704, 811, 275, 610, 426, 772, 759, 817, 563, 565, ! 131, 7, 132, 756, 758, 14, 771, 9, 10, 11, ! 89, 94, 98, 103, 5, 73, 7, 74, 125, 130, ! 134, 139, 9, 10, 11, 14, 790, 832, 833, 797, ! 835, 70, 75, 79, 84, 389, 802, 800, 13, 301, ! 766, 462, -108, -108, -108, -108, 834, 807, -108, 808, ! -108, -108, -108, 810, 289, 290, 839, 843, 858, -254, ! 849, 855, 869, 289, 290, 474, -108, 786, 788, 7, ! 92, 475, 143, 857, 835, 9, 10, 11, 868, -256, ! 852, 853, 862, 871, 476, 876, 88, 93, 97, 102, ! 878, 21, 877, 45, -243, 884, 887, 22, 71, 76, ! 80, 85, 892, 835, 889, 893, 477, 894, 899, 900, ! 25, 100, 7, 101, 469, 702, 703, 497, 9, 10, ! 11, 410, 545, 652, 653, 498, 656, -108, 23, 657, ! 24, 501, 26, 467, 27, 321, 669, 28, 5, 752, ! 7, 8, 5, 465, 7, 74, 9, 10, 11, 622, ! 9, 10, 11, 262, 263, 264, 265, 266, 859, 730, ! 731, 394, 13, 785, 14, 15, 13, 779, 316, 316, ! 577, 578, 517, 687, 579, 424, 89, 94, 98, 103, ! 738, 743, 70, 75, 841, 515, 106, 111, 842, 431, ! -249, 460, 714, 870, 208, 553, 872, -26, -26, -26, ! -26, 127, 7, 128, 546, -26, -26, -26, 9, 10, ! 11, 0, 0, 0, 0, 0, 389, 389, 322, -370, ! 209, -26, 0, -273, 5, 82, 7, 83, 0, 0, ! 0, 0, 9, 10, 11, 88, 93, -273, 677, 124, ! 129, 343, 344, 0, 0, 0, 0, 0, 13, 71, ! 76, 0, 350, 107, 112, 0, 0, 353, 354, 0, ! 210, 211, 359, 360, 361, 362, 363, 364, 365, 366, ! 367, 368, 369, 370, 457, 0, 0, -273, 0, 0, ! -255, -273, -26, 0, 0, 0, 718, 719, 0, 0, ! 724, 0, 136, 7, 137, 727, 728, 0, 729, 9, ! 10, 11, 0, 495, -245, 0, 0, 389, 389, 0, ! 0, 0, 89, 94, 98, 103, 0, 508, 511, 0, ! 5, 109, 7, 110, 0, 0, 0, 0, 9, 10, ! 11, 742, 0, 5, 746, 7, 83, 0, 0, 0, ! 0, 9, 10, 11, 13, 0, 457, 457, 532, 457, ! 70, 75, 79, 84, 0, 0, 0, 13, 106, 111, ! 115, 120, 0, 0, 441, 442, 0, 0, 0, 0, ! 471, -257, 472, 5, 6, 7, 8, 0, 294, 473, ! 294, 9, 10, 11, 0, 721, 723, 0, 0, 0, ! 0, 0, 0, 209, 0, 0, -273, 13, 792, 570, ! -251, 572, 794, 0, 0, 88, 93, 97, 102, 0, ! -273, 0, 0, 124, 129, 133, 138, 71, 76, 80, ! 85, 0, 0, 0, 0, 107, 112, 116, 121, 0, ! 86, 7, 87, 210, 211, 514, 0, 9, 10, 11, ! 519, 0, 0, 820, 821, 0, 822, 523, 0, 0, ! -273, 823, -534, 824, -273, 14, 0, 0, 0, 0, ! 829, 89, 94, 0, 0, 125, 130, 0, 0, 122, ! 7, 123, 389, 389, 0, 0, 9, 10, 11, 0, ! 0, 389, 389, 0, 0, 389, 389, 471, 0, 0, ! 5, 6, 7, 8, 14, 0, 473, 0, 9, 10, ! 11, 5, 68, 7, 69, 0, 568, 700, 0, 9, ! 10, 11, 7, 101, 13, 7, 87, 0, 9, 10, ! 11, 9, 10, 11, 0, 13, 0, 14, 590, 0, ! 773, 0, -450, -450, 721, 723, 723, -450, -450, 14, ! -450, 0, 0, 0, -450, 0, -450, -450, -450, -450, ! -450, -450, -450, -450, -450, -450, -450, 0, -450, 0, ! -450, 0, -450, -450, -450, -450, -450, 739, 0, -534, ! 511, -450, 0, 0, 0, 0, 0, -450, 568, 0, ! -450, -242, 0, 0, 0, -450, -450, -450, 0, 678, ! 0, -450, -450, 0, 680, 0, -450, 5, 77, 7, ! 78, 0, 0, 590, 689, 9, 10, 11, 0, 690, ! 0, 0, 0, -450, 0, -450, -450, 0, -450, 0, ! 0, 13, 0, 14, 0, 0, 0, 0, 566, 0, ! 153, 89, 94, 98, 103, 154, 155, 0, 156, 125, ! 130, 134, 139, 5, 118, 7, 119, 0, 0, 0, ! 0, 9, 10, 11, 0, 0, 157, 0, 15, 0, ! 158, 159, 160, 161, 162, 0, 0, 13, 0, 163, ! 532, 0, 0, 0, 590, 164, 0, -244, 165, 740, ! 0, 0, 744, 166, 167, 168, 0, 0, 590, 169, ! 170, 590, 0, 590, 171, 748, 5, 321, 7, 69, ! 5, 0, 7, 8, 9, 10, 11, 0, 9, 10, ! 11, 0, 532, 172, 173, 0, 567, 0, 0, 0, ! 13, 0, 14, -253, 13, 0, 14, 15, 250, 251, ! 252, 0, 253, 254, 255, 256, 257, 258, 259, 260, ! 261, 262, 263, 264, 265, 266, 863, 864, 793, 0, ! 0, 0, 795, 0, 0, 796, 0, 0, 590, 0, ! 274, 799, -448, -448, -448, -448, -448, -448, -448, 0, ! -448, -448, -448, -448, -448, 749, -448, -448, -448, -448, ! -448, -448, -448, -448, -448, -448, -448, -448, -448, -448, ! -448, -448, -448, -448, -448, -448, -448, 0, 0, 0, ! 0, -448, 0, 5, 6, 7, 8, -448, 0, 641, ! -448, 9, 10, 11, 0, -448, -448, -448, 0, 0, ! 0, -448, -448, 0, 0, 0, -448, 13, 0, 14, ! 0, 95, 7, 96, 0, 0, 0, 0, 9, 10, ! 11, 0, 0, -448, 275, -448, -448, 447, -448, -472, ! -472, -472, -472, -472, -472, -472, 14, -472, -472, -472, ! -472, -472, 0, -472, -472, -472, -472, -472, -472, -472, ! -472, -472, -472, -472, -472, -472, -472, -472, 0, -472, ! -472, -472, -472, -472, 91, 7, 92, 0, -472, 0, ! 0, 9, 10, 11, -472, 0, 0, -472, 127, 7, ! 128, 0, -472, -472, -472, 9, 10, 11, -472, -472, ! 0, 0, 0, -472, 5, 104, 7, 105, 131, 7, ! 132, 0, 9, 10, 11, 9, 10, 11, 0, 0, ! -472, 0, -472, -472, 812, -472, -479, -479, 13, 0, ! 14, -479, -479, 14, -479, 0, 0, 0, -479, 0, ! -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, ! -479, 0, -479, 0, -479, 0, -479, -479, -479, -479, ! -479, 0, 0, 0, 0, -479, 0, 0, 0, 7, ! 96, -479, 0, 0, -479, 9, 10, 11, 0, -479, ! -479, -479, 0, 0, -250, -479, -479, 0, 0, 239, ! -479, 153, 5, 14, 7, 8, 154, 155, 0, 156, ! 9, 10, 11, 0, 0, 0, 0, -479, 0, -479, ! -479, 0, -479, 0, 0, 0, 13, 157, 14, 15, ! 0, 158, 159, 160, 161, 162, 100, 7, 101, 0, ! 163, 0, 0, 9, 10, 11, 164, 0, 0, 165, ! 136, 7, 137, 0, 166, 167, 168, 9, 10, 11, ! 169, 170, 0, 0, 584, 171, 585, 145, 0, 0, ! 0, 154, 155, 0, 156, 0, 0, 0, 0, 0, ! 5, 68, 7, 69, 172, 173, 0, 240, 9, 10, ! 11, 0, 157, 0, 15, 0, 158, 159, 160, 161, ! 162, 0, 0, 0, 13, 163, 14, 0, 0, 0, ! 0, 164, 267, 268, 165, 269, 270, 271, 272, 166, ! 167, 168, 0, 0, 0, 169, 170, 0, 0, 586, ! 171, 587, 584, 0, 585, 145, 0, 0, 0, 154, ! 155, 0, 156, 0, 0, 0, 0, 0, -301, 172, ! 173, 0, 588, 260, 261, 262, 263, 264, 265, 266, ! 157, 0, 15, 0, 158, 159, 160, 161, 162, 0, ! 0, 0, 0, 163, 0, 0, 0, 0, 0, 164, ! 0, 0, 165, 0, 0, 0, 0, 166, 167, 168, ! 0, 0, 0, 169, 170, 0, 0, 586, 171, 587, ! 584, 0, 153, 0, 0, 0, 0, 154, 155, 0, ! 156, 0, 0, 0, 0, 0, -367, 172, 173, 0, ! 588, 0, 0, 0, 0, 0, 0, 0, 157, 0, ! 15, 0, 158, 159, 160, 161, 162, 0, 0, 0, ! 0, 163, 0, -314, 0, 0, 0, 164, 0, 0, ! 165, 0, 0, 0, 0, 166, 167, 168, 0, 0, ! 0, 169, 170, 0, 0, -314, 171, -314, 584, 0, ! 153, 0, 0, 0, 0, 154, 155, 0, 156, 0, ! 0, 5, 104, 7, 105, 172, 173, 0, 588, 9, ! 10, 11, 0, 0, 0, 0, 157, 0, 15, 0, ! 158, 159, 160, 161, 162, 13, 0, 14, 0, 163, ! 0, 0, 0, 0, 0, 164, 0, 0, 165, 0, ! 0, 0, 0, 166, 167, 168, 0, 0, 0, 169, ! 170, 0, 318, 0, 171, -22, -22, -22, -22, 0, ! 0, 0, 0, -22, -22, -22, 0, 0, 0, 0, ! 0, 0, 0, 172, 173, 0, 588, 0, 209, -22, ! 312, -273, 0, -18, -18, -18, -18, 0, 0, 0, ! 0, -18, -18, -18, 0, -273, 0, 0, 0, 4, ! 0, -117, 5, 6, 7, 8, 209, -18, 0, -273, ! 9, 10, 11, 0, 0, 0, 0, 0, 210, 211, ! 0, 0, 0, -273, 0, 12, 13, 0, 14, 15, ! 0, 0, 0, 0, 0, -273, 0, 0, 0, -273, ! -22, 0, 0, 0, 153, 5, 296, 7, 8, 154, ! 155, 0, 156, 9, 10, 11, -117, 0, 0, 0, ! 0, 0, 0, -273, 0, -117, 0, -273, -18, 13, ! 157, 14, 15, 0, 158, 159, 160, 161, 162, 0, ! 0, 0, 16, 163, 0, 153, 0, 402, 0, 164, ! 154, 155, 165, 156, 0, 0, 0, 166, 167, 297, ! 0, 0, 0, 169, 170, 0, 0, 0, 171, 0, ! 0, 157, 0, 15, 0, 158, 159, 160, 161, 162, ! 0, 0, 0, 0, 163, 0, 0, 172, 173, 0, ! 164, 298, 0, 165, 0, 0, 0, 0, 166, 167, ! 403, 0, 0, 0, 169, 170, 0, 153, 0, 171, ! 0, 0, 154, 155, 0, 156, 255, 256, 257, 258, ! 259, 260, 261, 262, 263, 264, 265, 266, 172, 173, ! 0, 0, 404, 157, 0, 15, 0, 158, 159, 160, ! 161, 162, 0, 0, 0, 0, 163, 0, 153, 0, ! 0, 0, 164, 154, 155, 165, 156, 0, 0, 0, ! 166, 167, 168, 0, 0, 0, 169, 170, 0, 0, ! 0, 171, 0, 0, 157, 0, 15, 0, 158, 159, ! 160, 161, 162, 0, 0, 0, 0, 163, 0, 0, ! 172, 173, 0, 164, 400, 0, 165, 0, 0, 0, ! 0, 166, 167, 168, 0, 0, 0, 169, 170, 0, ! 0, 0, 171, 0, 0, 0, 0, 0, 585, 601, ! 6, 7, 8, 154, 155, 0, 156, 9, 10, 11, ! 0, 172, 173, 0, 0, 493, 602, 603, 604, 605, ! 606, 607, 608, 13, 157, 14, 15, 0, 158, 159, ! 160, 161, 162, 0, 0, 0, 0, 163, 0, 5, ! 113, 7, 114, 164, 0, 0, 165, 9, 10, 11, ! 0, 166, 167, 168, 0, 0, 0, 169, 170, 0, ! 0, 0, 171, 13, 0, 14, 0, 585, 145, 0, ! 0, 0, 154, 155, 0, 156, 0, 0, 0, 609, ! 0, 172, 173, 0, 610, 602, 603, 604, 605, 606, ! 607, 608, 0, 157, 0, 15, 0, 158, 159, 160, ! 161, 162, 0, 0, 0, 0, 163, 0, 5, 6, ! 7, 8, 164, 0, 0, 165, 9, 10, 11, -252, ! 166, 167, 168, 0, 0, 0, 169, 170, 153, 0, ! 0, 171, 13, 154, 155, 0, 156, 256, 257, 258, ! 259, 260, 261, 262, 263, 264, 265, 266, 609, 0, ! 172, 173, 0, 610, 157, 0, 15, 0, 158, 159, ! 160, 161, 162, 0, 0, 0, 0, 163, 0, 0, ! 0, 0, 0, 164, 0, 0, 165, 0, 0, 0, ! 0, 166, 167, 168, 0, 0, 0, 169, 170, 0, ! 0, 0, 171, 153, 5, 6, 7, 8, 154, 155, ! 0, 156, 9, 10, 11, 0, 0, 5, 77, 7, ! 78, 172, 173, 0, 435, 9, 10, 11, 13, 157, ! 14, 15, 0, 158, 159, 160, 161, 162, 0, 0, ! 0, 13, 163, 14, 0, 0, 0, 0, 164, 0, ! 0, 165, 0, 0, 0, 0, 166, 167, 168, 0, ! 0, 0, 169, 170, 0, 153, 5, 171, 7, 8, ! 154, 155, 0, 156, 9, 10, 11, 258, 259, 260, ! 261, 262, 263, 264, 265, 266, 172, 173, 0, 0, ! 13, 157, 14, 15, 0, 158, 159, 160, 161, 162, ! 0, 0, 0, 0, 163, 0, 153, 0, 0, 0, ! 164, 154, 155, 165, 156, 0, 0, 0, 166, 167, ! 168, 0, 0, 0, 169, 170, 0, 0, 0, 171, ! 0, 0, 157, 0, 15, 0, 158, 159, 160, 161, ! 162, 0, 0, 0, 0, 163, 0, 153, 172, 173, ! 0, 164, 154, 155, 165, 156, 0, 0, 0, 166, ! 167, 168, 0, 0, 0, 169, 170, 0, 0, 0, ! 171, 0, 0, 157, 0, 15, 0, 158, 159, 160, ! 161, 162, 0, 0, 0, 0, 163, 694, 153, 172, ! 173, 0, 164, 154, 155, 165, 156, 0, 0, 0, ! 166, 167, 168, 0, 0, 0, 169, 170, 0, 0, ! 0, 171, 0, 0, 157, 0, 15, 0, 158, 159, ! 160, 161, 162, 0, 0, 0, 0, 163, 0, 153, ! 172, 173, 0, 164, 154, 155, 165, 156, 0, 0, ! 0, 166, 167, 168, 0, 0, 0, 169, 170, 0, ! 0, 0, 246, 0, 0, 157, 0, 15, 0, 158, ! 159, 160, 161, 162, 0, 0, 0, 0, 163, 0, ! 468, 172, 173, 0, 164, 154, 155, 165, 156, 0, ! 0, 0, 166, 167, 168, 0, 0, 0, 169, 170, ! 0, 0, 0, 248, 0, 0, 157, 0, 15, 0, ! 158, 159, 160, 161, 162, 0, 0, 0, 0, 163, ! 0, 0, 172, 173, 0, 164, 0, 0, 165, 0, ! 0, 0, 754, 166, 167, 168, 0, 0, 0, 169, ! 170, 250, 251, 252, 171, 253, 254, 255, 256, 257, ! 258, 259, 260, 261, 262, 263, 264, 265, 266, 0, ! 0, 0, 0, 172, 173, 250, 251, 252, 755, 253, ! 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, ! 264, 265, 266, 0, 0, 250, 251, 252, 825, 253, ! 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, ! 264, 265, 266, 250, 251, 252, 0, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, ! 266, 0, 0, 0, 0, 0, 0, 250, 251, 252, ! 432, 253, 254, 255, 256, 257, 258, 259, 260, 261, ! 262, 263, 264, 265, 266, 250, 251, 252, 433, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, ! 264, 265, 266, 0, 0, 0, 0, 0, 0, 14, ! 0, 0, 582, 259, 260, 261, 262, 263, 264, 265, ! 266, 0, 250, 251, 252, 747, 253, 254, 255, 256, ! 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, ! 5, 113, 7, 114, 5, 0, 7, 78, 9, 10, ! 11, 0, 9, 10, 11, 0, 0, 0, 0, 0, ! 0, 0, 0, 0, 13, 0, 14, 0, 13, 5, ! 14, 7, 8, 5, 73, 7, 74, 9, 10, 11, 0, 9, 10, 11, 0, 0, 0, 0, 0, 0, ! 0, 0, 0, 13, 0, 14, 0, 13, 5, 109, ! 7, 110, 5, 82, 7, 83, 9, 10, 11, 0, ! 9, 10, 11, 0, 0, 5, 118, 7, 119, 0, ! 0, 0, 13, 9, 10, 11, 13, 257, 258, 259, ! 260, 261, 262, 263, 264, 265, 266, 0, 0, 13, ! 250, 251, 252, 826, 253, 254, 255, 256, 257, 258, ! 259, 260, 261, 262, 263, 264, 265, 266, 250, 251, ! 252, 0, 253, 254, 255, 256, 257, 258, 259, 260, ! 261, 262, 263, 264, 265, 266, 252, 0, 253, 254, ! 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, ! 265, 266, 254, 255, 256, 257, 258, 259, 260, 261, ! 262, 263, 264, 265, 266 }; ! static const short yycheck[] = { 59, ! 60, 220, 313, 2, 3, 2, 3, 140, 319, 2, ! 3, 271, 9, 10, 11, 293, 216, 280, 315, 141, ! 540, 397, 2, 3, 21, 540, 23, 311, 25, 553, ! 27, 461, 29, 148, 31, 411, 33, 544, 35, 9, ! 2, 3, 2, 3, 2, 3, 2, 3, 226, 2, ! 3, 540, 563, 52, 461, 52, 622, 397, 540, 52, ! 303, 2, 3, 60, 63, 1, 63, 556, 457, 596, ! 63, 411, 52, 540, 10, 171, 1, 20, 1, 397, ! 47, 48, 49, 769, 599, 3, 4, 3, 4, 556, ! 52, 211, 52, 411, 52, 9, 52, 1, 68, 52, ! 3, 63, 622, 63, 158, 159, 495, 46, 854, 3, ! 4, 52, 45, 378, 168, 397, 1, 599, 7, 508, ! 174, 1, 511, 56, 57, 58, 668, 813, 670, 411, ! 0, 185, 392, 622, 1, 378, 0, 883, 30, 72, ! 236, 30, 7, 532, 83, 552, 553, 662, 81, 52, ! 246, 211, 248, 89, 46, 622, 334, 90, 30, 686, ! 3, 4, 85, 67, 89, 30, 99, 67, 544, 83, ! 856, 89, 46, 89, 171, 108, 296, 3, 4, 865, ! 556, 570, 382, 572, 117, 450, 451, 452, 453, 67, ! 187, 702, 189, 126, 191, 89, 193, 164, 141, 462, ! 85, 198, 135, 200, 544, 85, 730, 731, 46, 83, ! 896, 454, 272, 67, 211, 58, 556, 216, 85, 216, ! 335, 84, 337, 216, 751, 7, 544, 226, 44, 226, ! 197, 67, 58, 226, 89, 27, 296, 89, 556, 236, ! 300, 67, 68, 297, 810, 83, 226, 89, 30, 246, ! 66, 248, 68, 84, 216, 667, 216, 88, 37, 38, ! 203, 204, 544, 230, 226, 3, 226, 30, 226, 681, ! 226, 67, 205, 226, 556, 67, 68, 784, 67, 83, ! 67, 67, 68, 502, 88, 226, 83, 717, 548, 573, ! 810, 575, 3, 4, 348, 355, 726, 83, 1, 296, ! 3, 4, 269, 270, 67, 68, 83, 5, 6, 7, ! 717, 700, 84, 85, 12, 13, 14, 67, 68, 726, ! 58, 810, 88, 730, 731, 9, 323, 3, 325, 67, ! 327, 83, 329, 83, 7, 334, 432, 334, 434, 399, ! 84, 334, 402, 810, 88, 3, 4, 58, 291, 403, ! 739, 3, 450, 451, 334, 453, 67, 1, 873, 874, ! 4, 5, 6, 7, 7, 308, 309, 84, 12, 13, ! 14, 88, 334, 67, 334, 342, 334, 85, 334, 3, ! 4, 334, 58, 382, 28, 382, 84, 83, 46, 382, ! 85, 67, 68, 334, 5, 6, 7, 378, 397, 84, ! 58, 12, 13, 14, 397, 83, 58, 84, 784, 67, ! 377, 88, 411, 84, 85, 67, 68, 397, 411, 30, ! 382, 83, 382, 720, 391, 722, 88, 627, 83, 27, ! 84, 411, 30, 3, 88, 432, 636, 434, 46, 397, ! 32, 574, 64, 565, 784, 89, 44, 30, 83, 21, ! 22, 23, 24, 411, 83, 718, 83, 29, 30, 31, ! 32, 88, 429, 46, 727, 67, 784, 67, 68, 450, ! 451, 452, 453, 84, 863, 864, 46, 474, 9, 476, ! 540, 478, 58, 480, 67, 68, 84, 90, 58, 83, ! 88, 67, 68, 804, 88, 806, 15, 67, 17, 18, ! 19, 20, 784, 83, 25, 26, 27, 28, 88, 58, ! 59, 60, 33, 34, 35, 36, 21, 22, 23, 24, ! 67, 68, 67, 68, 29, 30, 31, 32, 84, 5, ! 6, 7, 67, 68, 67, 68, 12, 13, 14, 599, ! 44, 540, 84, 540, 763, 544, 606, 540, 83, 67, ! 68, 544, 331, 332, 30, 178, 179, 556, 525, 556, ! 540, 84, 84, 556, 544, 88, 88, 84, 622, 702, ! 84, 88, 44, 540, 88, 88, 556, 88, 540, 46, ! 540, 703, 540, 83, 540, 83, 544, 540, 210, 308, ! 309, 213, 717, 718, 556, 217, 556, 83, 556, 540, ! 556, 879, 90, 556, 83, 90, 90, 44, 84, 552, ! 553, 85, 85, 891, 85, 187, 188, 189, 190, 586, ! 89, 46, 565, 622, 1, 622, 85, 83, 627, 622, ! 627, 83, 599, 576, 627, 83, 696, 636, 635, 636, ! 607, 90, 622, 636, 90, 642, 84, 644, 84, 646, ! 85, 648, 27, 650, 88, 652, 88, 654, 791, 656, ! 622, 83, 622, 83, 622, 627, 622, 627, 83, 622, ! 191, 192, 193, 194, 636, 3, 636, 46, 46, 85, ! 88, 622, 187, 188, 189, 190, 3, 4, 5, 6, ! 7, 46, 314, 315, 46, 84, 221, 84, 320, 759, ! 5, 6, 7, 482, 483, 7, 84, 12, 13, 14, ! 84, 771, 85, 89, 336, 16, 67, 777, 497, 498, ! 5, 6, 7, 84, 84, 30, 67, 12, 13, 14, ! 25, 26, 27, 28, 4, 5, 6, 7, 33, 34, ! 35, 36, 12, 13, 14, 30, 85, 807, 808, 85, ! 810, 323, 324, 325, 326, 280, 46, 84, 28, 1, ! 703, 383, 4, 5, 6, 7, 17, 67, 10, 67, ! 12, 13, 14, 67, 717, 718, 83, 83, 67, 84, ! 84, 84, 90, 726, 727, 784, 28, 730, 731, 6, ! 7, 784, 725, 84, 854, 12, 13, 14, 858, 84, ! 83, 83, 88, 84, 784, 84, 327, 328, 329, 330, ! 9, 810, 83, 810, 84, 67, 84, 810, 323, 324, ! 325, 326, 83, 883, 884, 83, 784, 84, 0, 0, ! 810, 5, 6, 7, 392, 614, 615, 411, 12, 13, ! 14, 304, 464, 556, 556, 411, 556, 89, 810, 556, ! 810, 415, 810, 391, 810, 1, 571, 810, 4, 684, ! 6, 7, 4, 388, 6, 7, 12, 13, 14, 810, ! 12, 13, 14, 56, 57, 58, 59, 60, 845, 658, ! 659, 291, 28, 730, 30, 31, 28, 717, 413, 414, ! 512, 513, 431, 595, 516, 334, 191, 192, 193, 194, ! 671, 674, 474, 475, 814, 429, 478, 479, 816, 342, ! 84, 379, 618, 860, 1, 483, 862, 4, 5, 6, ! 7, 5, 6, 7, 464, 12, 13, 14, 12, 13, ! 14, -1, -1, -1, -1, -1, 461, 462, 84, 85, ! 27, 28, -1, 30, 4, 5, 6, 7, -1, -1, ! -1, -1, 12, 13, 14, 476, 477, 44, 580, 480, ! 481, 234, 235, -1, -1, -1, -1, -1, 28, 474, ! 475, -1, 245, 478, 479, -1, -1, 250, 251, -1, ! 67, 68, 255, 256, 257, 258, 259, 260, 261, 262, ! 263, 264, 265, 266, 378, -1, -1, 84, -1, -1, ! 84, 88, 89, -1, -1, -1, 628, 629, -1, -1, ! 632, -1, 5, 6, 7, 637, 638, -1, 640, 12, ! 13, 14, -1, 407, 84, -1, -1, 552, 553, -1, ! -1, -1, 327, 328, 329, 330, -1, 421, 422, -1, ! 4, 5, 6, 7, -1, -1, -1, -1, 12, 13, ! 14, 673, -1, 4, 676, 6, 7, -1, -1, -1, ! -1, 12, 13, 14, 28, -1, 450, 451, 452, 453, ! 642, 643, 644, 645, -1, -1, -1, 28, 650, 651, ! 652, 653, -1, -1, 357, 358, -1, -1, -1, -1, ! 1, 84, 3, 4, 5, 6, 7, -1, 720, 10, ! 722, 12, 13, 14, -1, 630, 631, -1, -1, -1, ! -1, -1, -1, 27, -1, -1, 30, 28, 740, 503, ! 84, 505, 744, -1, -1, 646, 647, 648, 649, -1, ! 44, -1, -1, 654, 655, 656, 657, 642, 643, 644, ! 645, -1, -1, -1, -1, 650, 651, 652, 653, -1, ! 5, 6, 7, 67, 68, 428, -1, 12, 13, 14, ! 433, -1, -1, 785, 786, -1, 788, 440, -1, -1, ! 84, 793, 83, 795, 88, 30, -1, -1, -1, -1, ! 802, 476, 477, -1, -1, 480, 481, -1, -1, 5, ! 6, 7, 717, 718, -1, -1, 12, 13, 14, -1, ! -1, 726, 727, -1, -1, 730, 731, 1, -1, -1, ! 4, 5, 6, 7, 30, -1, 10, -1, 12, 13, ! 14, 4, 5, 6, 7, -1, 499, 611, -1, 12, ! 13, 14, 6, 7, 28, 6, 7, -1, 12, 13, ! 14, 12, 13, 14, -1, 28, -1, 30, 521, -1, ! 1, -1, 3, 4, 779, 780, 781, 8, 9, 30, ! 11, -1, -1, -1, 15, -1, 17, 18, 19, 20, ! 21, 22, 23, 24, 25, 26, 27, -1, 29, -1, ! 31, -1, 33, 34, 35, 36, 37, 671, -1, 83, ! 674, 42, -1, -1, -1, -1, -1, 48, 571, -1, ! 51, 84, -1, -1, -1, 56, 57, 58, -1, 582, ! -1, 62, 63, -1, 587, -1, 67, 4, 5, 6, ! 7, -1, -1, 596, 597, 12, 13, 14, -1, 602, ! -1, -1, -1, 84, -1, 86, 87, -1, 89, -1, ! -1, 28, -1, 30, -1, -1, -1, -1, 1, -1, ! 3, 646, 647, 648, 649, 8, 9, -1, 11, 654, ! 655, 656, 657, 4, 5, 6, 7, -1, -1, -1, ! -1, 12, 13, 14, -1, -1, 29, -1, 31, -1, ! 33, 34, 35, 36, 37, -1, -1, 28, -1, 42, ! 774, -1, -1, -1, 667, 48, -1, 84, 51, 672, ! -1, -1, 675, 56, 57, 58, -1, -1, 681, 62, ! 63, 684, -1, 686, 67, 10, 4, 1, 6, 7, ! 4, -1, 6, 7, 12, 13, 14, -1, 12, 13, ! 14, -1, 816, 86, 87, -1, 89, -1, -1, -1, ! 28, -1, 30, 84, 28, -1, 30, 31, 43, 44, ! 45, -1, 47, 48, 49, 50, 51, 52, 53, 54, ! 55, 56, 57, 58, 59, 60, 850, 851, 741, -1, ! -1, -1, 745, -1, -1, 748, -1, -1, 751, -1, ! 1, 754, 3, 4, 5, 6, 7, 8, 9, -1, ! 11, 12, 13, 14, 15, 90, 17, 18, 19, 20, ! 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, ! 31, 32, 33, 34, 35, 36, 37, -1, -1, -1, ! -1, 42, -1, 4, 5, 6, 7, 48, -1, 10, ! 51, 12, 13, 14, -1, 56, 57, 58, -1, -1, ! -1, 62, 63, -1, -1, -1, 67, 28, -1, 30, ! -1, 5, 6, 7, -1, -1, -1, -1, 12, 13, ! 14, -1, -1, 84, 85, 86, 87, 1, 89, 3, ! 4, 5, 6, 7, 8, 9, 30, 11, 12, 13, ! 14, 15, -1, 17, 18, 19, 20, 21, 22, 23, ! 24, 25, 26, 27, 28, 29, 30, 31, -1, 33, ! 34, 35, 36, 37, 5, 6, 7, -1, 42, -1, ! -1, 12, 13, 14, 48, -1, -1, 51, 5, 6, ! 7, -1, 56, 57, 58, 12, 13, 14, 62, 63, ! -1, -1, -1, 67, 4, 5, 6, 7, 5, 6, ! 7, -1, 12, 13, 14, 12, 13, 14, -1, -1, ! 84, -1, 86, 87, 1, 89, 3, 4, 28, -1, ! 30, 8, 9, 30, 11, -1, -1, -1, 15, -1, ! 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, ! 27, -1, 29, -1, 31, -1, 33, 34, 35, 36, ! 37, -1, -1, -1, -1, 42, -1, -1, -1, 6, ! 7, 48, -1, -1, 51, 12, 13, 14, -1, 56, ! 57, 58, -1, -1, 84, 62, 63, -1, -1, 1, ! 67, 3, 4, 30, 6, 7, 8, 9, -1, 11, ! 12, 13, 14, -1, -1, -1, -1, 84, -1, 86, ! 87, -1, 89, -1, -1, -1, 28, 29, 30, 31, ! -1, 33, 34, 35, 36, 37, 5, 6, 7, -1, ! 42, -1, -1, 12, 13, 14, 48, -1, -1, 51, ! 5, 6, 7, -1, 56, 57, 58, 12, 13, 14, ! 62, 63, -1, -1, 1, 67, 3, 4, -1, -1, ! -1, 8, 9, -1, 11, -1, -1, -1, -1, -1, ! 4, 5, 6, 7, 86, 87, -1, 89, 12, 13, ! 14, -1, 29, -1, 31, -1, 33, 34, 35, 36, ! 37, -1, -1, -1, 28, 42, 30, -1, -1, -1, ! -1, 48, 62, 63, 51, 65, 66, 67, 68, 56, ! 57, 58, -1, -1, -1, 62, 63, -1, -1, 66, ! 67, 68, 1, -1, 3, 4, -1, -1, -1, 8, ! 9, -1, 11, -1, -1, -1, -1, -1, 85, 86, ! 87, -1, 89, 54, 55, 56, 57, 58, 59, 60, 29, -1, 31, -1, 33, 34, 35, 36, 37, -1, ! -1, -1, -1, 42, -1, -1, -1, -1, -1, 48, -1, -1, 51, -1, -1, -1, -1, 56, 57, 58, -1, -1, -1, 62, 63, -1, -1, 66, 67, 68, ! 1, -1, 3, -1, -1, -1, -1, 8, 9, -1, 11, -1, -1, -1, -1, -1, 85, 86, 87, -1, 89, -1, -1, -1, -1, -1, -1, -1, 29, -1, 31, -1, 33, 34, 35, 36, 37, -1, -1, -1, ! -1, 42, -1, 44, -1, -1, -1, 48, -1, -1, 51, -1, -1, -1, -1, 56, 57, 58, -1, -1, -1, 62, 63, -1, -1, 66, 67, 68, 1, -1, 3, -1, -1, -1, -1, 8, 9, -1, 11, -1, ! -1, 4, 5, 6, 7, 86, 87, -1, 89, 12, ! 13, 14, -1, -1, -1, -1, 29, -1, 31, -1, ! 33, 34, 35, 36, 37, 28, -1, 30, -1, 42, ! -1, -1, -1, -1, -1, 48, -1, -1, 51, -1, -1, -1, -1, 56, 57, 58, -1, -1, -1, 62, ! 63, -1, 1, -1, 67, 4, 5, 6, 7, -1, ! -1, -1, -1, 12, 13, 14, -1, -1, -1, -1, ! -1, -1, -1, 86, 87, -1, 89, -1, 27, 28, ! 1, 30, -1, 4, 5, 6, 7, -1, -1, -1, ! -1, 12, 13, 14, -1, 44, -1, -1, -1, 1, ! -1, 3, 4, 5, 6, 7, 27, 28, -1, 30, ! 12, 13, 14, -1, -1, -1, -1, -1, 67, 68, ! -1, -1, -1, 44, -1, 27, 28, -1, 30, 31, ! -1, -1, -1, -1, -1, 84, -1, -1, -1, 88, ! 89, -1, -1, -1, 3, 4, 5, 6, 7, 8, ! 9, -1, 11, 12, 13, 14, 58, -1, -1, -1, ! -1, -1, -1, 84, -1, 67, -1, 88, 89, 28, ! 29, 30, 31, -1, 33, 34, 35, 36, 37, -1, ! -1, -1, 84, 42, -1, 3, -1, 5, -1, 48, ! 8, 9, 51, 11, -1, -1, -1, 56, 57, 58, ! -1, -1, -1, 62, 63, -1, -1, -1, 67, -1, ! -1, 29, -1, 31, -1, 33, 34, 35, 36, 37, ! -1, -1, -1, -1, 42, -1, -1, 86, 87, -1, ! 48, 90, -1, 51, -1, -1, -1, -1, 56, 57, ! 58, -1, -1, -1, 62, 63, -1, 3, -1, 67, ! -1, -1, 8, 9, -1, 11, 49, 50, 51, 52, ! 53, 54, 55, 56, 57, 58, 59, 60, 86, 87, ! -1, -1, 90, 29, -1, 31, -1, 33, 34, 35, ! 36, 37, -1, -1, -1, -1, 42, -1, 3, -1, ! -1, -1, 48, 8, 9, 51, 11, -1, -1, -1, ! 56, 57, 58, -1, -1, -1, 62, 63, -1, -1, ! -1, 67, -1, -1, 29, -1, 31, -1, 33, 34, ! 35, 36, 37, -1, -1, -1, -1, 42, -1, -1, ! 86, 87, -1, 48, 90, -1, 51, -1, -1, -1, ! -1, 56, 57, 58, -1, -1, -1, 62, 63, -1, ! -1, -1, 67, -1, -1, -1, -1, -1, 3, 4, ! 5, 6, 7, 8, 9, -1, 11, 12, 13, 14, ! -1, 86, 87, -1, -1, 90, 21, 22, 23, 24, ! 25, 26, 27, 28, 29, 30, 31, -1, 33, 34, ! 35, 36, 37, -1, -1, -1, -1, 42, -1, 4, ! 5, 6, 7, 48, -1, -1, 51, 12, 13, 14, ! -1, 56, 57, 58, -1, -1, -1, 62, 63, -1, ! -1, -1, 67, 28, -1, 30, -1, 3, 4, -1, ! -1, -1, 8, 9, -1, 11, -1, -1, -1, 84, ! -1, 86, 87, -1, 89, 21, 22, 23, 24, 25, ! 26, 27, -1, 29, -1, 31, -1, 33, 34, 35, ! 36, 37, -1, -1, -1, -1, 42, -1, 4, 5, ! 6, 7, 48, -1, -1, 51, 12, 13, 14, 84, ! 56, 57, 58, -1, -1, -1, 62, 63, 3, -1, ! -1, 67, 28, 8, 9, -1, 11, 50, 51, 52, ! 53, 54, 55, 56, 57, 58, 59, 60, 84, -1, ! 86, 87, -1, 89, 29, -1, 31, -1, 33, 34, ! 35, 36, 37, -1, -1, -1, -1, 42, -1, -1, -1, -1, -1, 48, -1, -1, 51, -1, -1, -1, -1, 56, 57, 58, -1, -1, -1, 62, 63, -1, -1, -1, 67, 3, 4, 5, 6, 7, 8, 9, -1, 11, 12, 13, 14, -1, -1, 4, 5, 6, 7, 86, 87, -1, 89, 12, 13, 14, 28, 29, 30, 31, -1, 33, 34, 35, 36, 37, -1, -1, ! -1, 28, 42, 30, -1, -1, -1, -1, 48, -1, ! -1, 51, -1, -1, -1, -1, 56, 57, 58, -1, ! -1, -1, 62, 63, -1, 3, 4, 67, 6, 7, ! 8, 9, -1, 11, 12, 13, 14, 52, 53, 54, ! 55, 56, 57, 58, 59, 60, 86, 87, -1, -1, ! 28, 29, 30, 31, -1, 33, 34, 35, 36, 37, ! -1, -1, -1, -1, 42, -1, 3, -1, -1, -1, 48, 8, 9, 51, 11, -1, -1, -1, 56, 57, 58, -1, -1, -1, 62, 63, -1, -1, -1, 67, -1, -1, 29, -1, 31, -1, 33, 34, 35, 36, ! 37, -1, -1, -1, -1, 42, -1, 3, 86, 87, -1, 48, 8, 9, 51, 11, -1, -1, -1, 56, 57, 58, -1, -1, -1, 62, 63, -1, -1, -1, 67, -1, -1, 29, -1, 31, -1, 33, 34, 35, ! 36, 37, -1, -1, -1, -1, 42, 84, 3, 86, 87, -1, 48, 8, 9, 51, 11, -1, -1, -1, 56, 57, 58, -1, -1, -1, 62, 63, -1, -1, -1, 67, -1, -1, 29, -1, 31, -1, 33, 34, --- 660,1556 ---- 4, 0, 0, 9, 4, 0, 0, 8, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 3, 1, 2, 2, 2, 2, 2, 4, ! 2, 4, 2, 2, 1, 1, 1, 1, 4, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, ! 3, 3, 0, 4, 0, 4, 0, 0, 7, 0, ! 5, 3, 3, 1, 1, 1, 1, 0, 7, 3, ! 3, 3, 3, 4, 6, 8, 6, 4, 3, 3, ! 2, 2, 1, 2, 0, 1, 2, 3, 1, 1, ! 2, 2, 4, 4, 2, 2, 3, 0, 1, 4, ! 4, 3, 3, 2, 2, 1, 2, 2, 2, 2, ! 2, 1, 2, 1, 2, 2, 2, 2, 2, 2, ! 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, ! 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ! 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ! 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, ! 1, 1, 1, 1, 1, 1, 1, 4, 4, 1, ! 4, 1, 4, 0, 4, 0, 6, 3, 0, 6, ! 3, 0, 1, 1, 2, 6, 1, 3, 0, 1, ! 4, 6, 4, 1, 1, 1, 1, 1, 0, 4, ! 1, 0, 2, 1, 3, 3, 2, 0, 4, 1, ! 0, 4, 1, 1, 1, 2, 2, 5, 3, 0, ! 0, 7, 0, 0, 7, 1, 1, 4, 3, 2, ! 3, 1, 1, 1, 3, 2, 1, 3, 2, 3, ! 3, 4, 3, 4, 3, 2, 1, 1, 2, 1, ! 2, 1, 2, 0, 7, 5, 0, 7, 5, 0, ! 8, 0, 7, 2, 2, 2, 0, 1, 0, 1, ! 1, 2, 0, 3, 2, 3, 4, 3, 1, 1, ! 2, 1, 4, 1, 4, 4, 6, 5, 4, 6, ! 5, 1, 3, 1, 1, 3, 0, 3, 0, 1, ! 0, 1, 2, 1, 1, 1, 3, 2, 3, 4, ! 3, 2, 2, 1, 3, 4, 2, 3, 3, 4, ! 4, 5, 5, 1, 1, 1, 1, 1, 2, 2, ! 2, 2, 1, 2, 2, 2, 1, 2, 2, 2, ! 2, 1, 2, 1, 1, 1, 1, 2, 0, 0, ! 0, 0, 0, 1, 1, 2, 3, 1, 2, 1, ! 1, 5, 1, 1, 2, 2, 2, 2, 0, 5, ! 0, 4, 0, 0, 1, 2, 3, 3, 3, 0, ! 4, 1, 3, 0, 0, 7, 5, 2, 0, 0, ! 0, 0, 12, 0, 6, 2, 1, 1, 2, 3, ! 2, 2, 2, 3, 6, 8, 10, 12, 3, 4, ! 1, 3, 5, 2, 5, 0, 1, 0, 1, 0, ! 1, 1, 3, 4, 7, 1, 3, 0, 3, 2, ! 0, 0, 6, 2, 0, 1, 1, 3, 1, 3, ! 4, 4, 3, 4, 3, 4, 4, 3, 4, 3, ! 1, 0, 3, 1, 2, 1, 3, 1, 3, 1 }; static const short yydefact[] = { 3, ! 5, 0, 0, 0, 267, 158, 264, 126, 352, 348, ! 350, 0, 57, 0, 560, 17, 4, 8, 7, 0, ! 0, 211, 212, 213, 214, 203, 204, 205, 206, 215, ! 216, 217, 218, 207, 208, 209, 210, 118, 118, 0, ! 134, 141, 261, 263, 262, 132, 284, 0, 0, 0, ! 266, 265, 0, 6, 15, 16, 353, 349, 351, 0, ! 0, 0, 347, 259, 282, 0, 272, 0, 161, 127, ! 139, 145, 129, 162, 128, 140, 146, 168, 130, 151, ! 156, 133, 169, 131, 152, 157, 179, 135, 137, 143, ! 142, 180, 136, 138, 144, 194, 147, 149, 154, 153, ! 195, 148, 150, 155, 163, 159, 177, 186, 165, 164, ! 160, 178, 187, 170, 166, 192, 201, 172, 171, 167, ! 193, 202, 181, 173, 175, 184, 183, 182, 174, 176, ! 185, 196, 188, 190, 199, 198, 197, 189, 191, 200, ! 0, 0, 14, 285, 30, 31, 373, 364, 373, 365, ! 362, 366, 10, 84, 85, 103, 55, 56, 0, 0, ! 0, 0, 0, 87, 0, 32, 34, 33, 0, 35, ! 36, 0, 37, 38, 0, 0, 39, 58, 0, 0, ! 60, 42, 44, 86, 0, 0, 289, 0, 239, 240, ! 241, 242, 235, 236, 237, 238, 397, 0, 231, 232, ! 233, 234, 260, 0, 0, 283, 11, 282, 29, 0, ! 282, 0, 0, 282, 346, 332, 259, 282, 0, 270, ! 0, 326, 327, 0, 0, 0, 0, 354, 0, 357, ! 0, 360, 53, 54, 0, 0, 0, 48, 45, 0, ! 465, 0, 0, 47, 0, 0, 0, 49, 0, 51, ! 0, 0, 77, 75, 73, 0, 0, 0, 0, 0, ! 0, 0, 0, 0, 0, 0, 0, 101, 102, 0, ! 0, 40, 0, 104, 0, 461, 453, 0, 46, 295, ! 296, 297, 294, 0, 287, 290, 268, 399, 269, 345, ! 0, 0, 119, 0, 552, 343, 0, 0, 417, 0, ! 0, 0, 27, 0, 473, 110, 474, 281, 0, 0, ! 13, 282, 21, 0, 282, 282, 330, 12, 25, 0, ! 282, 380, 375, 231, 232, 233, 234, 227, 228, 229, ! 230, 118, 118, 372, 0, 373, 282, 373, 394, 395, ! 369, 392, 0, 0, 0, 0, 91, 90, 0, 9, ! 43, 0, 0, 83, 82, 0, 0, 0, 0, 71, ! 72, 70, 69, 68, 66, 67, 61, 62, 63, 64, ! 65, 100, 99, 0, 41, 0, 93, 0, 0, 454, ! 455, 92, 0, 289, 40, 259, 282, 398, 400, 405, ! 404, 406, 414, 344, 273, 274, 0, 0, 0, 0, ! 419, 415, 0, 0, 418, 0, 448, 473, 112, 107, ! 111, 0, 279, 331, 0, 0, 19, 278, 329, 23, ! 356, 473, 473, 374, 381, 0, 359, 0, 0, 370, ! 0, 369, 0, 0, 0, 88, 59, 50, 52, 0, ! 0, 76, 74, 94, 98, 558, 0, 464, 433, 463, ! 473, 473, 473, 473, 0, 442, 0, 474, 428, 437, ! 456, 286, 288, 84, 0, 408, 528, 413, 282, 412, ! 275, 0, 556, 536, 223, 224, 219, 220, 225, 226, ! 221, 222, 118, 118, 554, 0, 537, 539, 553, 0, ! 421, 0, 0, 420, 416, 474, 108, 118, 118, 0, ! 328, 271, 274, 473, 276, 473, 376, 382, 474, 378, ! 384, 474, 282, 282, 396, 393, 282, 0, 0, 0, ! 0, 0, 78, 81, 457, 0, 434, 429, 438, 435, ! 430, 439, 474, 431, 440, 436, 432, 441, 443, 450, ! 451, 291, 0, 293, 407, 409, 0, 0, 528, 411, ! 534, 551, 401, 401, 530, 531, 0, 555, 0, 422, ! 423, 0, 115, 0, 116, 0, 301, 299, 298, 280, ! 474, 0, 474, 282, 377, 282, 0, 355, 358, 363, ! 282, 95, 0, 97, 314, 84, 0, 0, 311, 0, ! 313, 0, 367, 304, 310, 0, 0, 0, 559, 451, ! 462, 267, 0, 0, 0, 0, 0, 0, 516, 511, ! 460, 473, 0, 117, 118, 118, 0, 0, 449, 498, ! 478, 479, 0, 0, 410, 529, 337, 259, 282, 282, ! 333, 334, 282, 548, 402, 405, 259, 282, 282, 550, ! 282, 538, 211, 212, 213, 214, 203, 204, 205, 206, ! 215, 216, 217, 218, 207, 208, 209, 210, 118, 118, ! 540, 557, 0, 28, 458, 0, 0, 0, 0, 277, ! 0, 473, 0, 282, 473, 0, 282, 361, 0, 317, ! 0, 0, 308, 89, 0, 303, 0, 316, 307, 79, ! 0, 514, 501, 502, 503, 0, 0, 0, 517, 0, ! 474, 499, 0, 0, 124, 469, 484, 471, 489, 0, ! 482, 0, 0, 452, 466, 125, 292, 408, 528, 546, ! 282, 336, 282, 339, 547, 403, 408, 528, 549, 532, ! 401, 401, 459, 113, 114, 0, 20, 24, 383, 474, ! 282, 0, 386, 385, 282, 0, 389, 96, 0, 319, ! 0, 0, 305, 306, 0, 512, 504, 0, 509, 0, ! 0, 0, 122, 320, 0, 123, 323, 0, 0, 451, ! 0, 0, 0, 468, 473, 467, 488, 0, 500, 340, ! 341, 0, 335, 338, 0, 282, 282, 543, 282, 545, ! 300, 0, 388, 282, 391, 282, 0, 312, 309, 0, ! 510, 0, 282, 120, 0, 121, 0, 0, 0, 0, ! 518, 0, 483, 451, 452, 475, 473, 0, 342, 533, ! 541, 542, 544, 387, 390, 318, 513, 520, 0, 515, ! 321, 324, 0, 0, 472, 519, 497, 490, 0, 494, ! 481, 477, 476, 0, 0, 0, 0, 521, 522, 505, ! 473, 473, 470, 485, 518, 496, 451, 487, 0, 0, ! 520, 0, 0, 474, 474, 451, 0, 495, 0, 0, ! 0, 506, 523, 0, 0, 486, 491, 524, 0, 0, ! 0, 322, 325, 518, 0, 526, 0, 507, 0, 0, ! 0, 0, 492, 525, 508, 527, 451, 493, 0, 0, ! 0 }; ! static const short yydefgoto[] = { 899, ! 1, 2, 3, 17, 18, 19, 314, 504, 320, 506, ! 213, 408, 590, 175, 242, 374, 177, 178, 179, 180, ! 20, 181, 182, 359, 358, 356, 598, 357, 183, 522, ! 184, 303, 304, 305, 497, 449, 21, 292, 614, 189, ! 190, 191, 192, 193, 194, 195, 196, 30, 31, 32, ! 33, 34, 35, 36, 37, 38, 39, 483, 484, 332, ! 203, 197, 40, 204, 41, 42, 43, 44, 45, 219, ! 66, 214, 220, 572, 67, 500, 293, 206, 47, 284, ! 285, 286, 570, 668, 592, 593, 594, 752, 595, 682, ! 596, 597, 763, 805, 851, 766, 807, 852, 503, 222, ! 630, 631, 632, 223, 48, 49, 50, 51, 336, 338, ! 343, 231, 52, 686, 431, 226, 227, 334, 507, 510, ! 508, 511, 341, 342, 198, 288, 388, 634, 635, 390, ! 391, 392, 215, 450, 451, 452, 453, 454, 455, 306, ! 277, 601, 775, 779, 379, 380, 381, 664, 619, 278, ! 457, 185, 665, 711, 712, 768, 713, 770, 307, 412, ! 815, 776, 816, 817, 714, 814, 769, 866, 771, 855, ! 884, 897, 857, 838, 621, 622, 700, 839, 847, 848, ! 849, 887, 468, 548, 485, 641, 785, 486, 487, 661, ! 488, 553, 296, 398, 489, 490, 447, 186 }; ! static const short yypact[] = { 57, ! 92, 986, 986, 379,-32768,-32768,-32768,-32768, 109, 109, ! 109, 105,-32768, 123,-32768,-32768,-32768,-32768,-32768, 165, ! 316, 509, 1138, 1295, 1166, 311, 1055, 833, 1206, 1326, ! 1453, 1379, 1540, 1605, 1298, 1625, 1591,-32768,-32768, 63, ! -32768,-32768,-32768,-32768,-32768, 109,-32768, 71, 80, 125, ! -32768,-32768, 986,-32768,-32768,-32768, 109, 109, 109, 2684, ! 176, 2602,-32768, 129, 109, 203,-32768, 896,-32768,-32768, ! -32768,-32768, 109,-32768,-32768,-32768,-32768,-32768,-32768,-32768, ! -32768, 109,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, ! 109,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 109, ! -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 109,-32768, ! -32768,-32768,-32768,-32768,-32768,-32768,-32768, 109,-32768,-32768, ! -32768,-32768,-32768,-32768,-32768,-32768, 109,-32768,-32768,-32768, ! -32768,-32768,-32768,-32768,-32768, 109,-32768,-32768,-32768,-32768, ! 206, 316,-32768,-32768,-32768,-32768,-32768, 42,-32768, 162, ! -32768, 189,-32768,-32768,-32768,-32768,-32768,-32768, 2684, 2684, ! 230, 238, 246,-32768, 483,-32768,-32768,-32768, 2684,-32768, ! -32768, 1797,-32768,-32768, 2684, 254, 270,-32768, 2725, 2766, ! -32768, 3099, 1053, 355, 1471, 2684, 908, 284, 2385, 3084, ! 2553, 3095, 690, 485, 732, 605,-32768, 295, 242, 373, ! 279, 409,-32768, 316, 316, 109,-32768, 109,-32768, 323, ! 109, 2131, 461, 109,-32768,-32768, 129, 109, 293,-32768, ! 1080, 504, 513, 304, 1045, 349, 489,-32768, 358,-32768, ! 542,-32768,-32768,-32768, 2684, 2684, 3026,-32768,-32768, 363, ! -32768, 369, 371,-32768, 387, 2684, 1797,-32768, 1797,-32768, ! 2684, 2684, 464,-32768,-32768, 2684, 2684, 2684, 2684, 2684, ! 2684, 2684, 2684, 2684, 2684, 2684, 2684,-32768,-32768, 483, ! 483, 2684, 2684,-32768, 405,-32768, 486, 424,-32768,-32768, ! -32768,-32768,-32768, 201,-32768, 457,-32768, 390,-32768, 513, ! 186, 316,-32768, 529,-32768,-32768, 2602, 2234,-32768, 466, ! 2172, 478,-32768, 356, 114,-32768,-32768, 532, 206, 206, ! -32768, 109,-32768, 461, 109, 109,-32768,-32768,-32768, 461, ! 109,-32768,-32768, 2385, 3084, 2553, 3095, 690, 485, 732, ! 605,-32768, 499, 502, 1413,-32768, 109,-32768,-32768, 546, ! 506,-32768, 542, 2872, 2890, 508,-32768,-32768, 2475,-32768, ! 3099, 517, 525, 3099, 3099, 2684, 568, 2684, 2684, 2437, ! 3062, 1208, 2564, 983, 879, 879, 288, 288,-32768,-32768, ! -32768,-32768,-32768, 555, 270, 551,-32768, 483, 1558, 486, ! -32768,-32768, 562, 908, 2807, 129, 109,-32768,-32768,-32768, ! -32768, 535,-32768,-32768,-32768, 99, 33, 1230, 557, 2684, ! -32768,-32768, 2684, 2275,-32768, 559,-32768,-32768,-32768,-32768, ! -32768, 2454,-32768, 504, 192, 206,-32768, 581,-32768,-32768, ! -32768,-32768,-32768,-32768,-32768, 566,-32768, 570, 2684, 483, ! 572, 506, 3026, 2684, 3026,-32768,-32768, 564, 564, 616, ! 2684, 3128, 2197,-32768,-32768,-32768, 314, 478,-32768,-32768, ! 94, 98, 112, 132, 662,-32768, 580,-32768,-32768,-32768, ! -32768,-32768,-32768, 326, 585, 390, 390,-32768, 109,-32768, ! -32768, 588,-32768,-32768, 1709, 3030, 1194, 864, 1875, 3055, ! 1712, 989,-32768,-32768,-32768, 591, 338,-32768,-32768, 327, ! -32768, 586, 590,-32768,-32768,-32768,-32768, 598, 601, 1313, ! -32768,-32768, 659,-32768,-32768,-32768, 602,-32768,-32768, 603, ! -32768,-32768, 109, 109, 3099,-32768, 109, 604, 615, 2914, ! 627, 1862,-32768, 3115,-32768, 483,-32768,-32768,-32768,-32768, ! -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, ! 2345,-32768, 2684,-32768,-32768,-32768, 628, 753,-32768,-32768, ! -32768,-32768, 383, 178,-32768,-32768, 945,-32768, 696,-32768, ! -32768, 69,-32768, 206,-32768, 316,-32768,-32768, 3099,-32768, ! -32768, 1313,-32768, 109, 253, 109, 362,-32768,-32768,-32768, ! 109,-32768, 2684,-32768,-32768, 671, 483, 2684,-32768, 684, ! 3099, 646, 644,-32768,-32768, 167, 1998, 2684,-32768, 2414, ! -32768, 687, 2684, 694, 652, 657, 2643, 141, 735,-32768, ! -32768,-32768, 663,-32768,-32768,-32768, 666, 704, 658,-32768, ! -32768,-32768, 2540, 352,-32768,-32768,-32768, 129, 109, 109, ! 538, 553, 158,-32768,-32768, 109, 129, 109, 158,-32768, ! 109,-32768, 1709, 3030, 2076, 3059, 1194, 864, 1772, 1536, ! 1875, 3055, 2144, 3072, 1712, 989, 1837, 1678,-32768,-32768, ! -32768,-32768, 672,-32768,-32768, 416, 421, 1862, 69,-32768, ! 69,-32768, 2684, 88,-32768, 2684, 329,-32768, 2932,-32768, ! 1228, 1862,-32768,-32768, 1930,-32768, 2066,-32768,-32768, 3115, ! 2852,-32768,-32768,-32768,-32768, 668, 2684, 680,-32768, 702, ! -32768,-32768, 206, 316,-32768,-32768,-32768,-32768,-32768, 705, ! 755, 1645, 118,-32768,-32768,-32768,-32768, 383, 336,-32768, ! 109,-32768, 109,-32768,-32768, 109, 178, 178,-32768,-32768, ! 383, 178,-32768,-32768,-32768, 693,-32768,-32768,-32768,-32768, ! 2969, 2684,-32768,-32768, 2969, 2684,-32768,-32768, 2684,-32768, ! 695, 2066,-32768,-32768, 2684,-32768,-32768, 703,-32768, 2684, ! 742, 469,-32768, 268, 475,-32768, 548, 722, 724,-32768, ! 726, 2684, 1732,-32768,-32768,-32768,-32768, 2684,-32768, 538, ! 553, 393,-32768,-32768, 753, 109, 158,-32768, 158,-32768, ! -32768, 253,-32768, 2969,-32768, 2969, 2828,-32768,-32768, 3081, ! -32768, 52, 109,-32768, 461,-32768, 461, 2684, 2684, 777, ! 2540, 713,-32768,-32768,-32768,-32768,-32768, 714,-32768,-32768, ! -32768,-32768,-32768,-32768,-32768,-32768,-32768, 121, 720,-32768, ! -32768,-32768, 715, 723,-32768,-32768,-32768,-32768, 729,-32768, ! -32768,-32768,-32768, 731, 740, 483, 97, 728,-32768,-32768, ! -32768,-32768,-32768,-32768, 2684,-32768,-32768,-32768, 2684, 730, ! 121, 738, 121,-32768,-32768,-32768, 739,-32768, 749, 824, ! 155,-32768,-32768, 672, 672,-32768,-32768,-32768, 767, 529, ! 751,-32768,-32768, 2684, 2684, 355, 389,-32768, 759, 760, ! 764, 529,-32768,-32768,-32768, 355,-32768,-32768, 844, 851, ! -32768 }; static const short yypgoto[] = {-32768, ! -32768,-32768,-32768, 87,-32768,-32768,-32768,-32768,-32768,-32768, ! -32768,-32768, 101,-32768, -60, 468, -253, 443,-32768,-32768, ! -32768, -82, 769,-32768,-32768,-32768,-32768,-32768,-32768,-32768, ! -293, -299, 549,-32768,-32768, 78, 68, -282, -572, 7, ! 41, 38, 44, 1, 20, 47, 50, -364, -336, 299, ! 302, -330, -326, 303, 305, -496, -461, 454, 456,-32768, ! -161, -127, -503, -200, 503, 683, 748, 774,-32768, -532, ! -135, -210, 470,-32768, 589,-32768, 96, 3, 64,-32768, ! 500,-32768, 315,-32768, -420,-32768, 204,-32768, -533,-32768, ! -32768, 292,-32768,-32768,-32768,-32768,-32768,-32768, -133, 319, ! 160, 180, -85, 202,-32768,-32768,-32768,-32768,-32768,-32768, ! -32768,-32768,-32768,-32768, 472, -94,-32768, 583,-32768,-32768, ! 233, 232, 573, 492, -84,-32768,-32768, -526, -272, -397, ! -442,-32768, 465,-32768,-32768,-32768,-32768,-32768,-32768, -268, ! -32768,-32768, -452, 104,-32768,-32768, 545, -343,-32768, 308, ! -32768,-32768, -521,-32768,-32768,-32768,-32768,-32768, 442, -395, ! 111, -689, -172, -150,-32768,-32768,-32768,-32768,-32768,-32768, ! -32768,-32768,-32768,-32768,-32768,-32768,-32768, -743, 84,-32768, ! 90,-32768, 487,-32768, -522,-32768,-32768,-32768,-32768,-32768, ! -32768, 476, -298,-32768,-32768,-32768,-32768, 56 }; ! #define YYLAST 3188 ! static const short yytable[] = { 176, ! 397, 188, 26, 26, 46, 46, 224, 221, 22, 22, ! 315, 57, 58, 59, 417, 389, 309, 419, 375, 620, ! 420, 27, 27, 546, 73, 626, 82, 640, 91, 416, ! 100, 666, 109, 479, 118, 409, 127, 617, 136, 24, ! 24, 274, 23, 23, 615, 25, 25, 479, 28, 28, ! 716, 29, 29, 26, 229, 46, -1, 53, 53, 22, ! 659, 480, 541, 689, 46, 333, 46, 481, 545, 663, ! 199, 482, 27, 145, 146, 480, 233, 234, 620, 616, ! 810, 481, 145, 146, 301, 482, 239, 243, 618, 54, ! 24, -2, 244, 23, -444, 660, 25, 828, -445, 28, ! 562, 201, 29, 279, 200, 141, 142, 202, 53, 144, ! 456, 867, -446, 575, -106, 471, 577, 14, 777, 617, ! 144, 144, 144, 410, 841, 210, 615, 145, 146, 845, ! 228, 375, -447, 742, 829, 8, 144, 600, 14, 153, ! 889, 733, 861, 145, 146, 144, 143, 618, 148, 150, ! 152, 300, 346, 754, 144, 636, 636, 611, 14, 147, ! 205, 616, 352, 144, 353, 211, 212, 868, 149, 400, ! 762, 60, 144, 333, 46, 669, 876, 671, -424, 862, ! 63, 144, -425, 479, 778, 466, 539, 14, 846, 61, ! 144, 73, 651, 82, 547, 91, -426, 100, 697, 144, ! 880, 73, -106, 82, 788, 790, 459, 898, 63, 216, ! 687, 480, 376, 151, 46, 239, -427, 481, 799, 46, ! 652, 482, 68, 199, 211, 212, 655, 328, 460, 46, ! 656, 62, 587, 324, 588, 637, 399, 881, 837, 46, ! 406, 426, 187, 428, 638, 212, 329, 736, 70, 46, ! 230, 46, 211, 212, 201, 63, 216, 200, 316, 212, ! 202, 751, 820, 217, 326, 238, 437, 325, 394, 144, ! 327, 14, 218, 330, 501, 546, 331, 232, 528, 531, ! 534, 537, 335, 383, 546, 79, 207, 283, 384, 624, ! 208, 672, 315, 675, 210, 440, 235, -274, 673, 46, ! 529, 532, 535, 538, 236, 761, 295, 617, 14, 308, ! 217, -274, 237, 310, 615, 87, 7, 88, 63, 218, ! 545, 239, 9, 10, 11, 737, 73, 738, 82, 545, ! 91, 340, 100, 636, 636, 328, 245, 46, 63, 492, ! 14, 324, 493, 225, 792, 265, 266, 267, 519, 616, ! 521, -274, 882, 883, 329, -274, 302, 246, 14, -109, ! -109, -109, -109, 274, 63, -109, 287, -109, -109, -109, ! 372, 373, 326, 64, 746, 325, 311, 289, 327, 75, ! 312, 330, 65, -109, 331, 63, 627, 318, 46, 294, ! 335, 208, 199, 628, -247, 211, 212, 525, 477, 422, ! 423, 526, 629, 212, 475, 290, 291, 676, 542, 558, ! 418, 295, 477, 543, 559, 84, 421, 478, 475, 64, ! 479, 556, 783, 201, 784, 557, 200, 718, 65, 202, ! 667, 478, 427, 321, 717, 46, 727, 46, 476, 246, ! 628, 674, 337, 340, -109, 347, 547, 386, 480, 629, ! 212, 348, 476, 349, 481, 547, 387, 212, 482, 723, ! 212, 302, 55, 56, -473, -473, -473, -473, 874, 875, ! 350, 891, -473, -473, -473, 819, 892, 73, 446, 91, ! 613, 109, 467, 127, 283, 145, 146, 377, -473, 322, ! 7, 93, 5, 396, 7, 8, 9, 10, 11, 734, ! 9, 10, 11, 312, 735, 831, 382, 832, 208, -80, ! 290, 291, 5, 69, 7, 70, 13, 378, 14, 15, ! 9, 10, 11, 385, 71, 76, 80, 85, 527, 530, ! 340, 536, 107, 112, 116, 121, 13, 156, 14, 613, ! 279, 26, 339, 46, 145, 146, 696, 22, 477, -105, ! 552, 552, 804, 315, 475, 402, 312, 647, 806, 46, ! 27, 407, 208, 643, 549, 564, 566, 478, 765, 764, ! 316, 212, 323, -371, 210, 413, 648, -274, 24, 211, ! 212, 23, -379, -379, 25, 424, 886, 28, 476, 429, ! 29, -274, -243, 430, 645, 435, 623, 644, 896, 438, ! 646, 469, 212, 649, 721, 212, 650, 439, 578, 579, ! 7, 102, 580, 441, 211, 212, 9, 10, 11, 723, ! 212, 248, 250, 26, 505, 46, 599, 414, 415, 22, ! 46, -274, 781, 782, 199, -274, 758, 444, 726, 46, ! 445, 612, 27, 199, 462, 73, 491, 82, 495, 91, ! 513, 100, 436, 109, 514, 118, 517, 127, 674, 136, ! 24, 523, 302, 23, 540, 201, 25, 544, 200, 28, ! 551, 202, 29, 555, 201, 560, 678, 200, 623, 561, ! 202, 563, 703, 704, 565, 210, 317, 680, 581, 574, ! 576, 71, 76, 80, 85, 7, 88, 582, 662, 802, ! 612, 9, 10, 11, 72, 77, 81, 86, 698, 584, ! 625, 812, 108, 113, 117, 122, -30, 818, 706, 14, ! 707, 708, 709, 710, 719, 720, 731, 732, 725, 683, ! 684, 685, -31, 728, 729, 693, 730, 7, 97, 692, ! 694, 699, 276, 9, 10, 11, 702, 833, 834, 705, ! 836, 757, 393, 472, 633, 639, 5, 6, 7, 8, ! 611, 14, 474, 759, 9, 10, 11, 396, 760, 743, ! 773, 772, 747, 89, 94, 98, 103, 791, 677, 798, ! 13, 125, 130, 134, 139, 477, 801, 803, 808, 144, ! 809, 475, 811, 835, 836, 840, 844, 853, 869, 90, ! 95, 99, 104, 850, 478, 854, 859, 126, 131, 135, ! 140, 26, 856, 46, 858, 863, 295, 22, 295, 870, ! 458, 872, 877, 836, 890, 476, 71, 76, 80, 85, ! 27, 878, 879, 885, 888, -535, 793, 96, 7, 97, ! 795, 893, 894, 900, 9, 10, 11, 895, 24, 496, ! 901, 23, 465, 411, 25, 653, 470, 28, 654, 657, ! 29, 658, 14, 509, 512, 498, 623, 499, 92, 7, ! 93, 72, 77, 81, 86, 9, 10, 11, 317, 317, ! 395, 821, 822, 463, 823, 502, 670, 688, 753, 824, ! 786, 825, 458, 458, 533, 458, 209, 780, 830, -26, ! -26, -26, -26, 518, 739, 767, 744, -26, -26, -26, ! 145, 146, 280, 281, 282, 432, -249, 425, 842, 290, ! 291, 516, 210, -26, 461, -274, 715, 843, 290, 291, ! 393, 393, 787, 789, 263, 264, 265, 266, 267, -274, ! 89, 94, 98, 103, 871, 571, 860, 573, 5, 6, ! 7, 8, 873, 0, 642, 550, 9, 10, 11, 554, ! 0, 0, 211, 212, 0, 0, 90, 95, 99, 104, ! 0, 0, 13, 0, 14, 0, 0, 71, 76, -274, ! 0, 107, 112, -274, -26, 0, 4, 0, -118, 5, ! 6, 7, 8, 128, 7, 129, 0, 9, 10, 11, ! 9, 10, 11, 344, 345, 0, 72, 77, 81, 86, ! 0, 0, 12, 13, 351, 14, 15, 393, 393, 354, ! 355, 0, 0, 0, 360, 361, 362, 363, 364, 365, ! 366, 367, 368, 369, 370, 371, 261, 262, 263, 264, ! 265, 266, 267, -118, 0, 319, 0, 0, -22, -22, ! -22, -22, -118, 701, 0, 0, -22, -22, -22, 92, ! 7, 93, 0, 0, 0, 0, 9, 10, 11, 16, ! 0, 210, -22, 0, -274, 89, 94, 98, 103, 0, ! 313, 0, 0, -18, -18, -18, -18, 0, -274, 0, ! 0, -18, -18, -18, 0, 722, 724, 0, 0, 0, ! 0, 90, 95, 99, 104, 0, 210, -18, 0, -274, ! 0, 211, 212, 740, 268, 269, 512, 270, 271, 272, ! 273, 0, 0, -274, 0, 0, 442, 443, -274, 0, ! 0, 0, -274, -22, 0, 0, 0, 0, -248, 0, ! 0, 5, 74, 7, 75, 71, 76, 80, 85, 9, ! 10, 11, 0, 107, 112, 116, 121, 72, 77, 0, ! 0, 108, 113, -274, 0, 13, 0, -274, -18, 5, ! 83, 7, 84, 0, 0, 0, 0, 9, 10, 11, ! 0, 0, 393, 393, 0, 0, 0, 0, 0, 0, ! 0, 393, 393, 13, 0, 393, 393, 515, 87, 7, ! 88, 0, 520, 0, 0, 9, 10, 11, 0, 524, ! 101, 7, 102, 0, 0, 0, 533, 9, 10, 11, ! 0, -244, 0, 14, 89, 94, 0, 0, 125, 130, ! 472, 0, 473, 5, 6, 7, 8, 749, 0, 474, ! 0, 9, 10, 11, 722, 724, 724, 0, 0, -246, ! 90, 95, 0, 0, 126, 131, 0, 13, 533, 259, ! 260, 261, 262, 263, 264, 265, 266, 267, 569, 0, ! 251, 252, 253, 0, 254, 255, 256, 257, 258, 259, ! 260, 261, 262, 263, 264, 265, 266, 267, 0, -250, ! 591, 0, 864, 865, 0, 0, 0, 0, 5, 78, ! 7, 79, 128, 7, 129, 0, 9, 10, 11, 9, ! 10, 11, -535, 567, 0, 154, 0, 750, 0, 0, ! 155, 156, 13, 157, 14, 72, 77, 81, 86, 5, ! 105, 7, 106, 108, 113, 117, 122, 9, 10, 11, ! 569, 158, 0, 15, 0, 159, 160, 161, 162, 163, ! 0, 679, 0, 13, 164, 14, 681, 0, 0, 0, ! 165, 0, 0, 166, 0, 591, 690, 0, 167, 168, ! 169, 691, 0, 0, 170, 171, 0, 0, -245, 172, ! 0, -256, 5, 114, 7, 115, 0, 0, 0, 0, ! 9, 10, 11, 0, 89, 94, 98, 103, 173, 174, ! 0, 568, 125, 130, 134, 139, 13, 0, 14, -251, ! 0, 0, 0, 322, 0, 0, 5, 0, 7, 8, ! 90, 95, 99, 104, 9, 10, 11, 0, 126, 131, ! 135, 140, 0, 0, 0, 0, 591, 0, 0, 0, ! 13, 741, 14, 15, 745, 0, 0, 0, 0, 0, ! 591, 0, 0, 591, 0, 591, 5, 110, 7, 111, ! 0, 0, -253, 0, 9, 10, 11, 0, 0, 0, ! 0, 275, 0, -449, -449, -449, -449, -449, -449, -449, ! 13, -449, -449, -449, -449, -449, 0, -449, -449, -449, ! -449, -449, -449, -449, -449, -449, -449, -449, -449, -449, ! -449, -449, -449, -449, -449, -449, -449, -449, 0, 0, ! 794, 0, -449, 0, 796, 0, 0, 797, -449, 0, ! 591, -449, 0, 800, 0, 0, -449, -449, -449, 0, ! 0, 0, -449, -449, 0, 0, -252, -449, 0, 0, ! 101, 7, 102, 5, 119, 7, 120, 9, 10, 11, ! 0, 9, 10, 11, -449, 276, -449, -449, 448, -449, ! -473, -473, -473, -473, -473, -473, -473, 13, -473, -473, ! -473, -473, -473, 0, -473, -473, -473, -473, -473, -473, ! -473, -473, -473, -473, -473, -473, -473, -473, -473, 0, ! -473, -473, -473, -473, -473, 137, 7, 138, 0, -473, ! 0, 0, 9, 10, 11, -473, 0, 0, -473, 123, ! 7, 124, 0, -473, -473, -473, 9, 10, 11, -473, ! -473, 0, 0, -254, -473, 0, 0, 0, 0, 132, ! 7, 133, 0, 0, 14, 0, 9, 10, 11, 0, ! 0, -473, 0, -473, -473, 774, -473, -451, -451, 0, ! 0, 0, -451, -451, 14, -451, 0, 0, 0, -451, ! 0, -451, -451, -451, -451, -451, -451, -451, -451, -451, ! -451, -451, 0, -451, -258, -451, 0, -451, -451, -451, ! -451, -451, 137, 7, 138, 0, -451, 0, -255, 9, ! 10, 11, -451, 0, 0, -451, 0, 0, 0, 0, ! -451, -451, -451, 0, 0, 0, -451, -451, -257, 0, ! 0, -451, 5, 69, 7, 70, 123, 7, 124, 0, ! 9, 10, 11, 9, 10, 11, 0, 0, -451, 0, ! -451, -451, 813, -451, -480, -480, 13, 0, 14, -480, ! -480, 14, -480, 0, 0, 0, -480, 0, -480, -480, ! -480, -480, -480, -480, -480, -480, -480, -480, -480, 0, ! -480, 0, -480, 0, -480, -480, -480, -480, -480, 0, ! 0, 0, 0, -480, 0, 0, 96, 7, 97, -480, ! 0, 0, -480, 9, 10, 11, 0, -480, -480, -480, ! 0, 0, 0, -480, -480, 0, 0, 240, -480, 154, ! 5, 14, 7, 8, 155, 156, 0, 157, 9, 10, ! 11, 0, 0, 0, 0, -480, 0, -480, -480, 0, ! -480, 0, 0, 0, 13, 158, 14, 15, 0, 159, ! 160, 161, 162, 163, 0, 0, 0, 0, 164, 0, ! 0, 132, 7, 133, 165, 0, 0, 166, 9, 10, ! 11, 0, 167, 168, 169, 0, 0, 0, 170, 171, ! 0, 0, 585, 172, 586, 146, 14, 0, 0, 155, ! 156, 0, 157, 0, 0, 0, 0, 0, 5, 105, ! 7, 106, 173, 174, 0, 241, 9, 10, 11, 0, ! 158, 0, 15, 0, 159, 160, 161, 162, 163, 0, ! 0, 0, 13, 164, 14, 0, 0, 0, 0, 165, ! 0, 0, 166, 0, 0, 0, 0, 167, 168, 169, ! 0, 0, 0, 170, 171, 0, 0, 587, 172, 588, ! 585, 0, 586, 146, 0, 0, 0, 155, 156, 0, ! 157, 0, 0, 0, 0, 0, -302, 173, 174, 0, ! 589, 0, 0, 0, 0, 0, 0, 0, 158, 0, ! 15, 0, 159, 160, 161, 162, 163, 0, 0, 0, ! 0, 164, 0, 0, 0, 0, 0, 165, 0, 0, ! 166, 0, 0, 0, 0, 167, 168, 169, 0, 0, ! 0, 170, 171, 0, 0, 587, 172, 588, 585, 0, ! 154, 0, 0, 0, 0, 155, 156, 0, 157, 0, ! 0, 0, 0, 0, -368, 173, 174, 0, 589, 0, ! 0, 0, 0, 0, 0, 0, 158, 0, 15, 0, ! 159, 160, 161, 162, 163, 0, 0, 0, 0, 164, ! 0, -315, 0, 0, 0, 165, 0, 0, 166, 0, ! 0, 0, 0, 167, 168, 169, 0, 0, 0, 170, ! 171, 0, 0, -315, 172, -315, 585, 0, 154, 0, ! 0, 0, 0, 155, 156, 0, 157, 0, 0, 5, ! 78, 7, 79, 173, 174, 0, 589, 9, 10, 11, ! 0, 0, 0, 0, 158, 0, 15, 0, 159, 160, ! 161, 162, 163, 13, 0, 14, 0, 164, 0, 0, ! 0, 0, 0, 165, 0, 0, 166, 0, 0, 0, ! 0, 167, 168, 169, 0, 0, 0, 170, 171, 0, ! 0, 0, 172, 154, 5, 297, 7, 8, 155, 156, ! 0, 157, 9, 10, 11, 0, 0, 5, 114, 7, ! 115, 173, 174, 0, 589, 9, 10, 11, 13, 158, ! 14, 15, 0, 159, 160, 161, 162, 163, 0, 0, ! 0, 13, 164, 14, 154, 0, 403, 0, 165, 155, ! 156, 166, 157, 0, 0, 0, 167, 168, 298, 0, ! 0, 0, 170, 171, 0, 0, 0, 172, 0, 0, ! 158, 0, 15, 0, 159, 160, 161, 162, 163, 0, ! 0, 0, 0, 164, 0, 0, 173, 174, 0, 165, ! 299, 0, 166, 0, 0, 0, 0, 167, 168, 404, ! 0, 0, 0, 170, 171, 0, 154, 0, 172, 0, ! 0, 155, 156, 0, 157, 256, 257, 258, 259, 260, ! 261, 262, 263, 264, 265, 266, 267, 173, 174, 0, ! 0, 405, 158, 0, 15, 0, 159, 160, 161, 162, ! 163, 0, 0, 0, 0, 164, 0, 154, 0, 0, ! 0, 165, 155, 156, 166, 157, 0, 0, 0, 167, ! 168, 169, 0, 0, 0, 170, 171, 0, 0, 0, ! 172, 0, 0, 158, 0, 15, 0, 159, 160, 161, ! 162, 163, 0, 0, 0, 0, 164, 0, 0, 173, ! 174, 0, 165, 401, 0, 166, 0, 0, 0, 0, ! 167, 168, 169, 0, 0, 0, 170, 171, 0, 0, ! 0, 172, 0, 0, 0, 0, 0, 586, 602, 6, ! 7, 8, 155, 156, 0, 157, 9, 10, 11, 0, ! 173, 174, 0, 0, 494, 603, 604, 605, 606, 607, ! 608, 609, 13, 158, 14, 15, 0, 159, 160, 161, ! 162, 163, 0, 0, 0, 0, 164, 0, 5, 0, ! 7, 70, 165, 0, 0, 166, 9, 10, 11, 0, ! 167, 168, 169, 0, 0, 0, 170, 171, 0, 0, ! 0, 172, 13, 0, 14, 0, 586, 146, 0, 0, ! 0, 155, 156, 0, 157, 0, 0, 0, 610, 0, ! 173, 174, 0, 611, 603, 604, 605, 606, 607, 608, ! 609, 0, 158, 0, 15, 0, 159, 160, 161, 162, ! 163, 0, 0, 0, 0, 164, 0, 5, 6, 7, ! 8, 165, 0, 0, 166, 9, 10, 11, 0, 167, ! 168, 169, 0, 0, 0, 170, 171, 154, 0, 0, ! 172, 13, 155, 156, 0, 157, 257, 258, 259, 260, ! 261, 262, 263, 264, 265, 266, 267, 610, 0, 173, ! 174, 0, 611, 158, 0, 15, 0, 159, 160, 161, ! 162, 163, 0, 0, 0, 0, 164, 0, 0, 0, ! 0, 0, 165, 0, 0, 166, 0, 0, 0, 0, ! 167, 168, 169, 0, 0, 0, 170, 171, 0, 0, ! 0, 172, 154, 5, 6, 7, 8, 155, 156, 0, ! 157, 9, 10, 11, 0, 0, 5, 0, 7, 79, ! 173, 174, 0, 436, 9, 10, 11, 13, 158, 14, ! 15, 0, 159, 160, 161, 162, 163, 0, 0, 0, ! 13, 164, 14, 0, 0, 0, 0, 165, 0, 0, ! 166, 0, 0, 0, 0, 167, 168, 169, 0, 0, ! 0, 170, 171, 0, 154, 5, 172, 7, 8, 155, ! 156, 0, 157, 9, 10, 11, 260, 261, 262, 263, ! 264, 265, 266, 267, 0, 173, 174, 0, 0, 13, ! 158, 14, 15, 0, 159, 160, 161, 162, 163, 0, ! 0, 0, 0, 164, 0, 154, 0, 0, 0, 165, ! 155, 156, 166, 157, 0, 0, 0, 167, 168, 169, ! 0, 0, 0, 170, 171, 0, 0, 0, 172, 0, ! 0, 158, 0, 15, 0, 159, 160, 161, 162, 163, ! 0, 0, 0, 0, 164, 0, 154, 173, 174, 0, ! 165, 155, 156, 166, 157, 0, 0, 0, 167, 168, ! 169, 0, 0, 0, 170, 171, 0, 0, 0, 172, ! 0, 0, 158, 0, 15, 0, 159, 160, 161, 162, ! 163, 0, 0, 0, 0, 164, 695, 154, 173, 174, ! 0, 165, 155, 156, 166, 157, 0, 0, 0, 167, ! 168, 169, 0, 0, 0, 170, 171, 0, 0, 0, ! 172, 0, 0, 158, 0, 15, 0, 159, 160, 161, ! 162, 163, 0, 0, 0, 0, 164, 0, 154, 173, ! 174, 0, 165, 155, 156, 166, 157, 0, 0, 0, ! 167, 168, 169, 0, 0, 0, 170, 171, 0, 0, ! 0, 247, 0, 0, 158, 0, 15, 0, 159, 160, ! 161, 162, 163, 0, 0, 0, 0, 164, 0, 464, ! 173, 174, 0, 165, 155, 156, 166, 157, 0, 0, ! 0, 167, 168, 169, 0, 0, 0, 170, 171, 0, ! 0, 0, 249, 0, 0, 158, 0, 15, 0, 159, ! 160, 161, 162, 163, 0, 0, 0, 0, 164, 0, ! 0, 173, 174, 0, 165, 0, 0, 166, 0, 0, ! 0, 755, 167, 168, 169, 0, 0, 0, 170, 171, ! 251, 252, 253, 172, 254, 255, 256, 257, 258, 259, ! 260, 261, 262, 263, 264, 265, 266, 267, 0, 0, ! 0, 0, 173, 174, 251, 252, 253, 756, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, ! 266, 267, 0, 0, 251, 252, 253, 826, 254, 255, ! 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, ! 266, 267, 251, 252, 253, 0, 254, 255, 256, 257, ! 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, ! 0, 0, 0, 0, 0, 0, 251, 252, 253, 433, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, ! 264, 265, 266, 267, 251, 252, 253, 434, 254, 255, ! 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, ! 266, 267, 0, 0, 0, 0, 0, 0, 14, 0, ! 0, 583, 0, 0, 0, 0, 0, 0, 0, 0, ! 0, 251, 252, 253, 748, 254, 255, 256, 257, 258, ! 259, 260, 261, 262, 263, 264, 265, 266, 267, 5, ! 0, 7, 8, 5, 74, 7, 75, 9, 10, 11, 0, 9, 10, 11, 0, 0, 0, 0, 0, 0, ! 0, 0, 0, 13, 0, 14, 0, 13, 5, 110, ! 7, 111, 5, 83, 7, 84, 9, 10, 11, 0, ! 9, 10, 11, 0, 0, 5, 119, 7, 120, 0, ! 0, 0, 13, 9, 10, 11, 13, 5, 0, 7, ! 75, 0, 0, 0, 0, 9, 10, 11, 5, 13, ! 7, 84, 0, 0, 0, 0, 9, 10, 11, 0, ! 0, 13, 258, 259, 260, 261, 262, 263, 264, 265, ! 266, 267, 13, 251, 252, 253, 827, 254, 255, 256, ! 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, ! 267, 251, 252, 253, 0, 254, 255, 256, 257, 258, ! 259, 260, 261, 262, 263, 264, 265, 266, 267, 253, ! 0, 254, 255, 256, 257, 258, 259, 260, 261, 262, ! 263, 264, 265, 266, 267, 255, 256, 257, 258, 259, ! 260, 261, 262, 263, 264, 265, 266, 267 }; ! static const short yycheck[] = { 60, ! 294, 62, 2, 3, 2, 3, 142, 141, 2, 3, ! 221, 9, 10, 11, 314, 288, 217, 316, 272, 541, ! 320, 2, 3, 466, 22, 548, 24, 554, 26, 312, ! 28, 564, 30, 398, 32, 304, 34, 541, 36, 2, ! 3, 9, 2, 3, 541, 2, 3, 412, 2, 3, ! 623, 2, 3, 53, 149, 53, 0, 2, 3, 53, ! 557, 398, 458, 597, 62, 227, 64, 398, 466, 1, ! 64, 398, 53, 3, 4, 412, 159, 160, 600, 541, ! 770, 412, 3, 4, 212, 412, 169, 172, 541, 3, ! 53, 0, 175, 53, 1, 557, 53, 46, 1, 53, ! 496, 64, 53, 186, 64, 38, 39, 64, 53, 46, ! 379, 855, 1, 509, 1, 83, 512, 30, 1, 623, ! 57, 58, 59, 10, 814, 27, 623, 3, 4, 9, ! 89, 385, 1, 46, 83, 7, 73, 533, 30, 53, ! 884, 663, 46, 3, 4, 82, 84, 600, 48, 49, ! 50, 212, 237, 687, 91, 553, 554, 89, 30, 89, ! 65, 623, 247, 100, 249, 67, 68, 857, 89, 297, ! 703, 67, 109, 335, 172, 571, 866, 573, 85, 83, ! 3, 118, 85, 548, 67, 386, 455, 30, 68, 67, ! 127, 189, 557, 191, 467, 193, 85, 195, 58, 136, ! 46, 199, 89, 201, 731, 732, 379, 897, 3, 4, ! 44, 548, 273, 89, 212, 298, 85, 548, 752, 217, ! 557, 548, 21, 217, 67, 68, 557, 227, 379, 227, ! 557, 67, 66, 227, 68, 58, 297, 83, 811, 237, ! 301, 336, 67, 338, 67, 68, 227, 668, 7, 247, ! 89, 249, 67, 68, 217, 3, 4, 217, 67, 68, ! 217, 682, 785, 58, 227, 165, 349, 227, 83, 206, ! 227, 30, 67, 227, 83, 718, 227, 89, 451, 452, ! 453, 454, 227, 83, 727, 7, 84, 187, 88, 543, ! 88, 574, 503, 576, 27, 356, 67, 30, 46, 297, ! 451, 452, 453, 454, 67, 701, 211, 811, 30, 214, ! 58, 44, 67, 218, 811, 5, 6, 7, 3, 67, ! 718, 404, 12, 13, 14, 669, 324, 671, 326, 727, ! 328, 231, 330, 731, 732, 335, 83, 335, 3, 400, ! 30, 335, 403, 142, 740, 58, 59, 60, 433, 811, ! 435, 84, 874, 875, 335, 88, 1, 88, 30, 4, ! 5, 6, 7, 9, 3, 10, 83, 12, 13, 14, ! 270, 271, 335, 58, 46, 335, 84, 83, 335, 7, ! 88, 335, 67, 28, 335, 3, 4, 84, 386, 67, ! 335, 88, 386, 58, 84, 67, 68, 84, 398, 332, ! 333, 88, 67, 68, 398, 204, 205, 46, 83, 83, ! 315, 316, 412, 88, 88, 7, 321, 398, 412, 58, ! 785, 84, 721, 386, 723, 88, 386, 628, 67, 386, ! 566, 412, 337, 85, 83, 433, 637, 435, 398, 88, ! 58, 575, 85, 343, 89, 83, 719, 58, 785, 67, ! 68, 83, 412, 83, 785, 728, 67, 68, 785, 67, ! 68, 1, 84, 85, 4, 5, 6, 7, 864, 865, ! 84, 83, 12, 13, 14, 83, 88, 475, 378, 477, ! 541, 479, 387, 481, 384, 3, 4, 83, 28, 1, ! 6, 7, 4, 292, 6, 7, 12, 13, 14, 84, ! 12, 13, 14, 88, 84, 805, 83, 807, 88, 46, ! 309, 310, 4, 5, 6, 7, 28, 32, 30, 31, ! 12, 13, 14, 67, 22, 23, 24, 25, 451, 452, ! 430, 454, 30, 31, 32, 33, 28, 9, 30, 600, ! 623, 541, 1, 541, 3, 4, 607, 541, 548, 89, ! 483, 484, 84, 764, 548, 90, 88, 557, 84, 557, ! 541, 84, 88, 557, 469, 498, 499, 548, 704, 703, ! 67, 68, 84, 85, 27, 44, 557, 30, 541, 67, ! 68, 541, 84, 85, 541, 84, 880, 541, 548, 44, ! 541, 44, 84, 88, 557, 88, 541, 557, 892, 83, ! 557, 67, 68, 557, 67, 68, 557, 83, 513, 514, ! 6, 7, 517, 46, 67, 68, 12, 13, 14, 67, ! 68, 179, 180, 623, 44, 623, 526, 309, 310, 623, ! 628, 84, 718, 719, 628, 88, 697, 83, 636, 637, ! 90, 541, 623, 637, 83, 643, 90, 645, 90, 647, ! 85, 649, 89, 651, 85, 653, 85, 655, 792, 657, ! 623, 46, 1, 623, 85, 628, 623, 83, 628, 623, ! 83, 628, 623, 83, 637, 90, 581, 637, 623, 90, ! 637, 84, 615, 616, 84, 27, 222, 587, 85, 88, ! 88, 189, 190, 191, 192, 6, 7, 83, 3, 760, ! 600, 12, 13, 14, 22, 23, 24, 25, 608, 83, ! 83, 772, 30, 31, 32, 33, 46, 778, 15, 30, ! 17, 18, 19, 20, 629, 630, 659, 660, 633, 46, ! 85, 88, 46, 638, 639, 84, 641, 6, 7, 46, ! 84, 7, 85, 12, 13, 14, 84, 808, 809, 84, ! 811, 84, 288, 1, 553, 554, 4, 5, 6, 7, ! 89, 30, 10, 84, 12, 13, 14, 566, 67, 674, ! 16, 67, 677, 26, 27, 28, 29, 85, 577, 85, ! 28, 34, 35, 36, 37, 785, 84, 46, 67, 726, ! 67, 785, 67, 17, 855, 83, 83, 83, 859, 26, ! 27, 28, 29, 84, 785, 83, 67, 34, 35, 36, ! 37, 811, 84, 811, 84, 88, 721, 811, 723, 90, ! 379, 84, 84, 884, 885, 785, 324, 325, 326, 327, ! 811, 83, 9, 67, 84, 83, 741, 5, 6, 7, ! 745, 83, 83, 0, 12, 13, 14, 84, 811, 408, ! 0, 811, 385, 305, 811, 557, 392, 811, 557, 557, ! 811, 557, 30, 422, 423, 412, 811, 412, 5, 6, ! 7, 189, 190, 191, 192, 12, 13, 14, 414, 415, ! 292, 786, 787, 384, 789, 416, 572, 596, 685, 794, ! 731, 796, 451, 452, 453, 454, 1, 718, 803, 4, ! 5, 6, 7, 432, 672, 704, 675, 12, 13, 14, ! 3, 4, 5, 6, 7, 343, 84, 335, 815, 718, ! 719, 430, 27, 28, 380, 30, 619, 817, 727, 728, ! 466, 467, 731, 732, 56, 57, 58, 59, 60, 44, ! 193, 194, 195, 196, 861, 504, 846, 506, 4, 5, ! 6, 7, 863, -1, 10, 469, 12, 13, 14, 484, ! -1, -1, 67, 68, -1, -1, 193, 194, 195, 196, ! -1, -1, 28, -1, 30, -1, -1, 475, 476, 84, ! -1, 479, 480, 88, 89, -1, 1, -1, 3, 4, ! 5, 6, 7, 5, 6, 7, -1, 12, 13, 14, ! 12, 13, 14, 235, 236, -1, 324, 325, 326, 327, ! -1, -1, 27, 28, 246, 30, 31, 553, 554, 251, ! 252, -1, -1, -1, 256, 257, 258, 259, 260, 261, ! 262, 263, 264, 265, 266, 267, 54, 55, 56, 57, ! 58, 59, 60, 58, -1, 1, -1, -1, 4, 5, ! 6, 7, 67, 612, -1, -1, 12, 13, 14, 5, ! 6, 7, -1, -1, -1, -1, 12, 13, 14, 84, ! -1, 27, 28, -1, 30, 328, 329, 330, 331, -1, ! 1, -1, -1, 4, 5, 6, 7, -1, 44, -1, ! -1, 12, 13, 14, -1, 631, 632, -1, -1, -1, ! -1, 328, 329, 330, 331, -1, 27, 28, -1, 30, ! -1, 67, 68, 672, 62, 63, 675, 65, 66, 67, ! 68, -1, -1, 44, -1, -1, 358, 359, 84, -1, ! -1, -1, 88, 89, -1, -1, -1, -1, 84, -1, ! -1, 4, 5, 6, 7, 643, 644, 645, 646, 12, ! 13, 14, -1, 651, 652, 653, 654, 475, 476, -1, ! -1, 479, 480, 84, -1, 28, -1, 88, 89, 4, ! 5, 6, 7, -1, -1, -1, -1, 12, 13, 14, ! -1, -1, 718, 719, -1, -1, -1, -1, -1, -1, ! -1, 727, 728, 28, -1, 731, 732, 429, 5, 6, ! 7, -1, 434, -1, -1, 12, 13, 14, -1, 441, ! 5, 6, 7, -1, -1, -1, 775, 12, 13, 14, ! -1, 84, -1, 30, 477, 478, -1, -1, 481, 482, ! 1, -1, 3, 4, 5, 6, 7, 10, -1, 10, ! -1, 12, 13, 14, 780, 781, 782, -1, -1, 84, ! 477, 478, -1, -1, 481, 482, -1, 28, 817, 52, ! 53, 54, 55, 56, 57, 58, 59, 60, 500, -1, ! 43, 44, 45, -1, 47, 48, 49, 50, 51, 52, ! 53, 54, 55, 56, 57, 58, 59, 60, -1, 84, ! 522, -1, 851, 852, -1, -1, -1, -1, 4, 5, ! 6, 7, 5, 6, 7, -1, 12, 13, 14, 12, ! 13, 14, 83, 1, -1, 3, -1, 90, -1, -1, ! 8, 9, 28, 11, 30, 643, 644, 645, 646, 4, ! 5, 6, 7, 651, 652, 653, 654, 12, 13, 14, ! 572, 29, -1, 31, -1, 33, 34, 35, 36, 37, ! -1, 583, -1, 28, 42, 30, 588, -1, -1, -1, ! 48, -1, -1, 51, -1, 597, 598, -1, 56, 57, ! 58, 603, -1, -1, 62, 63, -1, -1, 84, 67, ! -1, 84, 4, 5, 6, 7, -1, -1, -1, -1, ! 12, 13, 14, -1, 647, 648, 649, 650, 86, 87, ! -1, 89, 655, 656, 657, 658, 28, -1, 30, 84, ! -1, -1, -1, 1, -1, -1, 4, -1, 6, 7, ! 647, 648, 649, 650, 12, 13, 14, -1, 655, 656, ! 657, 658, -1, -1, -1, -1, 668, -1, -1, -1, ! 28, 673, 30, 31, 676, -1, -1, -1, -1, -1, ! 682, -1, -1, 685, -1, 687, 4, 5, 6, 7, ! -1, -1, 84, -1, 12, 13, 14, -1, -1, -1, ! -1, 1, -1, 3, 4, 5, 6, 7, 8, 9, ! 28, 11, 12, 13, 14, 15, -1, 17, 18, 19, ! 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, ! 30, 31, 32, 33, 34, 35, 36, 37, -1, -1, ! 742, -1, 42, -1, 746, -1, -1, 749, 48, -1, ! 752, 51, -1, 755, -1, -1, 56, 57, 58, -1, ! -1, -1, 62, 63, -1, -1, 84, 67, -1, -1, ! 5, 6, 7, 4, 5, 6, 7, 12, 13, 14, ! -1, 12, 13, 14, 84, 85, 86, 87, 1, 89, ! 3, 4, 5, 6, 7, 8, 9, 28, 11, 12, ! 13, 14, 15, -1, 17, 18, 19, 20, 21, 22, ! 23, 24, 25, 26, 27, 28, 29, 30, 31, -1, ! 33, 34, 35, 36, 37, 5, 6, 7, -1, 42, ! -1, -1, 12, 13, 14, 48, -1, -1, 51, 5, ! 6, 7, -1, 56, 57, 58, 12, 13, 14, 62, ! 63, -1, -1, 84, 67, -1, -1, -1, -1, 5, ! 6, 7, -1, -1, 30, -1, 12, 13, 14, -1, ! -1, 84, -1, 86, 87, 1, 89, 3, 4, -1, ! -1, -1, 8, 9, 30, 11, -1, -1, -1, 15, ! -1, 17, 18, 19, 20, 21, 22, 23, 24, 25, ! 26, 27, -1, 29, 84, 31, -1, 33, 34, 35, ! 36, 37, 5, 6, 7, -1, 42, -1, 84, 12, ! 13, 14, 48, -1, -1, 51, -1, -1, -1, -1, ! 56, 57, 58, -1, -1, -1, 62, 63, 84, -1, ! -1, 67, 4, 5, 6, 7, 5, 6, 7, -1, ! 12, 13, 14, 12, 13, 14, -1, -1, 84, -1, ! 86, 87, 1, 89, 3, 4, 28, -1, 30, 8, ! 9, 30, 11, -1, -1, -1, 15, -1, 17, 18, ! 19, 20, 21, 22, 23, 24, 25, 26, 27, -1, 29, -1, 31, -1, 33, 34, 35, 36, 37, -1, ! -1, -1, -1, 42, -1, -1, 5, 6, 7, 48, ! -1, -1, 51, 12, 13, 14, -1, 56, 57, 58, ! -1, -1, -1, 62, 63, -1, -1, 1, 67, 3, ! 4, 30, 6, 7, 8, 9, -1, 11, 12, 13, ! 14, -1, -1, -1, -1, 84, -1, 86, 87, -1, ! 89, -1, -1, -1, 28, 29, 30, 31, -1, 33, ! 34, 35, 36, 37, -1, -1, -1, -1, 42, -1, ! -1, 5, 6, 7, 48, -1, -1, 51, 12, 13, ! 14, -1, 56, 57, 58, -1, -1, -1, 62, 63, ! -1, -1, 1, 67, 3, 4, 30, -1, -1, 8, ! 9, -1, 11, -1, -1, -1, -1, -1, 4, 5, ! 6, 7, 86, 87, -1, 89, 12, 13, 14, -1, ! 29, -1, 31, -1, 33, 34, 35, 36, 37, -1, ! -1, -1, 28, 42, 30, -1, -1, -1, -1, 48, -1, -1, 51, -1, -1, -1, -1, 56, 57, 58, -1, -1, -1, 62, 63, -1, -1, 66, 67, 68, ! 1, -1, 3, 4, -1, -1, -1, 8, 9, -1, 11, -1, -1, -1, -1, -1, 85, 86, 87, -1, 89, -1, -1, -1, -1, -1, -1, -1, 29, -1, 31, -1, 33, 34, 35, 36, 37, -1, -1, -1, ! -1, 42, -1, -1, -1, -1, -1, 48, -1, -1, 51, -1, -1, -1, -1, 56, 57, 58, -1, -1, -1, 62, 63, -1, -1, 66, 67, 68, 1, -1, 3, -1, -1, -1, -1, 8, 9, -1, 11, -1, ! -1, -1, -1, -1, 85, 86, 87, -1, 89, -1, ! -1, -1, -1, -1, -1, -1, 29, -1, 31, -1, ! 33, 34, 35, 36, 37, -1, -1, -1, -1, 42, ! -1, 44, -1, -1, -1, 48, -1, -1, 51, -1, -1, -1, -1, 56, 57, 58, -1, -1, -1, 62, ! 63, -1, -1, 66, 67, 68, 1, -1, 3, -1, ! -1, -1, -1, 8, 9, -1, 11, -1, -1, 4, ! 5, 6, 7, 86, 87, -1, 89, 12, 13, 14, ! -1, -1, -1, -1, 29, -1, 31, -1, 33, 34, ! 35, 36, 37, 28, -1, 30, -1, 42, -1, -1, -1, -1, -1, 48, -1, -1, 51, -1, -1, -1, -1, 56, 57, 58, -1, -1, -1, 62, 63, -1, -1, -1, 67, 3, 4, 5, 6, 7, 8, 9, -1, 11, 12, 13, 14, -1, -1, 4, 5, 6, 7, 86, 87, -1, 89, 12, 13, 14, 28, 29, 30, 31, -1, 33, 34, 35, 36, 37, -1, -1, ! -1, 28, 42, 30, 3, -1, 5, -1, 48, 8, ! 9, 51, 11, -1, -1, -1, 56, 57, 58, -1, ! -1, -1, 62, 63, -1, -1, -1, 67, -1, -1, ! 29, -1, 31, -1, 33, 34, 35, 36, 37, -1, ! -1, -1, -1, 42, -1, -1, 86, 87, -1, 48, ! 90, -1, 51, -1, -1, -1, -1, 56, 57, 58, ! -1, -1, -1, 62, 63, -1, 3, -1, 67, -1, ! -1, 8, 9, -1, 11, 49, 50, 51, 52, 53, ! 54, 55, 56, 57, 58, 59, 60, 86, 87, -1, ! -1, 90, 29, -1, 31, -1, 33, 34, 35, 36, ! 37, -1, -1, -1, -1, 42, -1, 3, -1, -1, ! -1, 48, 8, 9, 51, 11, -1, -1, -1, 56, ! 57, 58, -1, -1, -1, 62, 63, -1, -1, -1, ! 67, -1, -1, 29, -1, 31, -1, 33, 34, 35, ! 36, 37, -1, -1, -1, -1, 42, -1, -1, 86, ! 87, -1, 48, 90, -1, 51, -1, -1, -1, -1, ! 56, 57, 58, -1, -1, -1, 62, 63, -1, -1, ! -1, 67, -1, -1, -1, -1, -1, 3, 4, 5, ! 6, 7, 8, 9, -1, 11, 12, 13, 14, -1, ! 86, 87, -1, -1, 90, 21, 22, 23, 24, 25, ! 26, 27, 28, 29, 30, 31, -1, 33, 34, 35, ! 36, 37, -1, -1, -1, -1, 42, -1, 4, -1, ! 6, 7, 48, -1, -1, 51, 12, 13, 14, -1, ! 56, 57, 58, -1, -1, -1, 62, 63, -1, -1, ! -1, 67, 28, -1, 30, -1, 3, 4, -1, -1, ! -1, 8, 9, -1, 11, -1, -1, -1, 84, -1, ! 86, 87, -1, 89, 21, 22, 23, 24, 25, 26, ! 27, -1, 29, -1, 31, -1, 33, 34, 35, 36, ! 37, -1, -1, -1, -1, 42, -1, 4, 5, 6, ! 7, 48, -1, -1, 51, 12, 13, 14, -1, 56, ! 57, 58, -1, -1, -1, 62, 63, 3, -1, -1, ! 67, 28, 8, 9, -1, 11, 50, 51, 52, 53, ! 54, 55, 56, 57, 58, 59, 60, 84, -1, 86, ! 87, -1, 89, 29, -1, 31, -1, 33, 34, 35, ! 36, 37, -1, -1, -1, -1, 42, -1, -1, -1, ! -1, -1, 48, -1, -1, 51, -1, -1, -1, -1, ! 56, 57, 58, -1, -1, -1, 62, 63, -1, -1, ! -1, 67, 3, 4, 5, 6, 7, 8, 9, -1, ! 11, 12, 13, 14, -1, -1, 4, -1, 6, 7, ! 86, 87, -1, 89, 12, 13, 14, 28, 29, 30, ! 31, -1, 33, 34, 35, 36, 37, -1, -1, -1, ! 28, 42, 30, -1, -1, -1, -1, 48, -1, -1, ! 51, -1, -1, -1, -1, 56, 57, 58, -1, -1, ! -1, 62, 63, -1, 3, 4, 67, 6, 7, 8, ! 9, -1, 11, 12, 13, 14, 53, 54, 55, 56, ! 57, 58, 59, 60, -1, 86, 87, -1, -1, 28, ! 29, 30, 31, -1, 33, 34, 35, 36, 37, -1, ! -1, -1, -1, 42, -1, 3, -1, -1, -1, 48, ! 8, 9, 51, 11, -1, -1, -1, 56, 57, 58, ! -1, -1, -1, 62, 63, -1, -1, -1, 67, -1, ! -1, 29, -1, 31, -1, 33, 34, 35, 36, 37, ! -1, -1, -1, -1, 42, -1, 3, 86, 87, -1, 48, 8, 9, 51, 11, -1, -1, -1, 56, 57, 58, -1, -1, -1, 62, 63, -1, -1, -1, 67, -1, -1, 29, -1, 31, -1, 33, 34, 35, 36, ! 37, -1, -1, -1, -1, 42, 84, 3, 86, 87, -1, 48, 8, 9, 51, 11, -1, -1, -1, 56, 57, 58, -1, -1, -1, 62, 63, -1, -1, -1, 67, -1, -1, 29, -1, 31, -1, 33, 34, 35, ! 36, 37, -1, -1, -1, -1, 42, -1, 3, 86, 87, -1, 48, 8, 9, 51, 11, -1, -1, -1, 56, 57, 58, -1, -1, -1, 62, 63, -1, -1, -1, 67, -1, -1, 29, -1, 31, -1, 33, 34, *************** static const short yycheck[] = { 59, *** 1555,1599 **** -1, 56, 57, 58, -1, -1, -1, 62, 63, -1, -1, -1, 67, -1, -1, 29, -1, 31, -1, 33, 34, 35, 36, 37, -1, -1, -1, -1, 42, -1, ! 3, 86, 87, -1, 48, 8, 9, 51, 11, -1, ! -1, -1, 56, 57, 58, -1, -1, -1, 62, 63, ! -1, -1, -1, 67, -1, -1, 29, -1, 31, -1, ! 33, 34, 35, 36, 37, -1, -1, -1, -1, 42, ! -1, -1, 86, 87, -1, 48, -1, -1, 51, -1, ! -1, -1, 10, 56, 57, 58, -1, -1, -1, 62, ! 63, 43, 44, 45, 67, 47, 48, 49, 50, 51, ! 52, 53, 54, 55, 56, 57, 58, 59, 60, -1, ! -1, -1, -1, 86, 87, 43, 44, 45, 46, 47, ! 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, ! 58, 59, 60, -1, -1, 43, 44, 45, 90, 47, ! 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, ! 58, 59, 60, 43, 44, 45, -1, 47, 48, 49, ! 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, ! 60, -1, -1, -1, -1, -1, -1, 43, 44, 45, ! 88, 47, 48, 49, 50, 51, 52, 53, 54, 55, ! 56, 57, 58, 59, 60, 43, 44, 45, 88, 47, ! 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, ! 58, 59, 60, -1, -1, -1, -1, -1, -1, 30, ! -1, -1, 88, 53, 54, 55, 56, 57, 58, 59, ! 60, -1, 43, 44, 45, 83, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, ! 4, 5, 6, 7, 4, -1, 6, 7, 12, 13, ! 14, -1, 12, 13, 14, -1, -1, -1, -1, -1, ! -1, -1, -1, -1, 28, -1, 30, -1, 28, 4, ! 30, 6, 7, 4, 5, 6, 7, 12, 13, 14, -1, 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, 28, -1, 30, -1, 28, 4, 5, 6, 7, 4, 5, 6, 7, 12, 13, 14, -1, 12, 13, 14, -1, -1, 4, 5, 6, 7, -1, ! -1, -1, 28, 12, 13, 14, 28, 51, 52, 53, ! 54, 55, 56, 57, 58, 59, 60, -1, -1, 28, ! 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, ! 53, 54, 55, 56, 57, 58, 59, 60, 43, 44, ! 45, -1, 47, 48, 49, 50, 51, 52, 53, 54, ! 55, 56, 57, 58, 59, 60, 45, -1, 47, 48, ! 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, ! 59, 60, 48, 49, 50, 51, 52, 53, 54, 55, ! 56, 57, 58, 59, 60 }; /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ #line 3 "/usr/lib/bison.simple" --- 1559,1598 ---- -1, 56, 57, 58, -1, -1, -1, 62, 63, -1, -1, -1, 67, -1, -1, 29, -1, 31, -1, 33, 34, 35, 36, 37, -1, -1, -1, -1, 42, -1, ! -1, 86, 87, -1, 48, -1, -1, 51, -1, -1, ! -1, 10, 56, 57, 58, -1, -1, -1, 62, 63, ! 43, 44, 45, 67, 47, 48, 49, 50, 51, 52, ! 53, 54, 55, 56, 57, 58, 59, 60, -1, -1, ! -1, -1, 86, 87, 43, 44, 45, 46, 47, 48, ! 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, ! 59, 60, -1, -1, 43, 44, 45, 90, 47, 48, ! 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, ! 59, 60, 43, 44, 45, -1, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, ! -1, -1, -1, -1, -1, -1, 43, 44, 45, 88, ! 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, ! 57, 58, 59, 60, 43, 44, 45, 88, 47, 48, ! 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, ! 59, 60, -1, -1, -1, -1, -1, -1, 30, -1, ! -1, 88, -1, -1, -1, -1, -1, -1, -1, -1, ! -1, 43, 44, 45, 83, 47, 48, 49, 50, 51, ! 52, 53, 54, 55, 56, 57, 58, 59, 60, 4, ! -1, 6, 7, 4, 5, 6, 7, 12, 13, 14, -1, 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, 28, -1, 30, -1, 28, 4, 5, 6, 7, 4, 5, 6, 7, 12, 13, 14, -1, 12, 13, 14, -1, -1, 4, 5, 6, 7, -1, ! -1, -1, 28, 12, 13, 14, 28, 4, -1, 6, ! 7, -1, -1, -1, -1, 12, 13, 14, 4, 28, ! 6, 7, -1, -1, -1, -1, 12, 13, 14, -1, ! -1, 28, 51, 52, 53, 54, 55, 56, 57, 58, ! 59, 60, 28, 43, 44, 45, 46, 47, 48, 49, ! 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, ! 60, 43, 44, 45, -1, 47, 48, 49, 50, 51, ! 52, 53, 54, 55, 56, 57, 58, 59, 60, 45, ! -1, 47, 48, 49, 50, 51, 52, 53, 54, 55, ! 56, 57, 58, 59, 60, 48, 49, 50, 51, 52, ! 53, 54, 55, 56, 57, 58, 59, 60 }; /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ #line 3 "/usr/lib/bison.simple" *************** case 56: *** 2374,2468 **** #line 488 "c-parse.y" { skip_evaluation++; ; break;} ! case 58: ! #line 494 "c-parse.y" ! { yyval.ttype = c_cast_expr (yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} ! case 60: ! #line 500 "c-parse.y" ! { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 61: ! #line 502 "c-parse.y" { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 62: ! #line 504 "c-parse.y" { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 63: ! #line 506 "c-parse.y" { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 64: ! #line 508 "c-parse.y" { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 65: ! #line 510 "c-parse.y" { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 66: ! #line 512 "c-parse.y" { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 67: ! #line 514 "c-parse.y" { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 68: ! #line 516 "c-parse.y" { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 69: ! #line 518 "c-parse.y" { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 70: ! #line 520 "c-parse.y" { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 71: ! #line 522 "c-parse.y" { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 72: ! #line 524 "c-parse.y" { yyvsp[-1].ttype = truthvalue_conversion (default_conversion (yyvsp[-1].ttype)); skip_evaluation += yyvsp[-1].ttype == boolean_false_node; ; break;} ! case 73: ! #line 527 "c-parse.y" { skip_evaluation -= yyvsp[-3].ttype == boolean_false_node; yyval.ttype = parser_build_binary_op (TRUTH_ANDIF_EXPR, yyvsp[-3].ttype, yyvsp[0].ttype); ; break;} ! case 74: ! #line 530 "c-parse.y" { yyvsp[-1].ttype = truthvalue_conversion (default_conversion (yyvsp[-1].ttype)); skip_evaluation += yyvsp[-1].ttype == boolean_true_node; ; break;} ! case 75: ! #line 533 "c-parse.y" { skip_evaluation -= yyvsp[-3].ttype == boolean_true_node; yyval.ttype = parser_build_binary_op (TRUTH_ORIF_EXPR, yyvsp[-3].ttype, yyvsp[0].ttype); ; break;} ! case 76: ! #line 536 "c-parse.y" { yyvsp[-1].ttype = truthvalue_conversion (default_conversion (yyvsp[-1].ttype)); skip_evaluation += yyvsp[-1].ttype == boolean_false_node; ; break;} ! case 77: ! #line 539 "c-parse.y" { skip_evaluation += ((yyvsp[-4].ttype == boolean_true_node) - (yyvsp[-4].ttype == boolean_false_node)); ; break;} ! case 78: ! #line 542 "c-parse.y" { skip_evaluation -= yyvsp[-6].ttype == boolean_true_node; yyval.ttype = build_conditional_expr (yyvsp[-6].ttype, yyvsp[-3].ttype, yyvsp[0].ttype); ; break;} ! case 79: ! #line 545 "c-parse.y" { if (pedantic) pedwarn ("ISO C forbids omitting the middle term of a ?: expression"); /* Make sure first operand is calculated only once. */ --- 2373,2471 ---- #line 488 "c-parse.y" { skip_evaluation++; ; break;} ! case 57: ! #line 492 "c-parse.y" ! { skip_evaluation++; ; break;} ! case 59: ! #line 498 "c-parse.y" ! { yyval.ttype = c_cast_expr (yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 61: ! #line 504 "c-parse.y" { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 62: ! #line 506 "c-parse.y" { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 63: ! #line 508 "c-parse.y" { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 64: ! #line 510 "c-parse.y" { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 65: ! #line 512 "c-parse.y" { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 66: ! #line 514 "c-parse.y" { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 67: ! #line 516 "c-parse.y" { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 68: ! #line 518 "c-parse.y" { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 69: ! #line 520 "c-parse.y" { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 70: ! #line 522 "c-parse.y" { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 71: ! #line 524 "c-parse.y" { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 72: ! #line 526 "c-parse.y" ! { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; ! break;} ! case 73: ! #line 528 "c-parse.y" { yyvsp[-1].ttype = truthvalue_conversion (default_conversion (yyvsp[-1].ttype)); skip_evaluation += yyvsp[-1].ttype == boolean_false_node; ; break;} ! case 74: ! #line 531 "c-parse.y" { skip_evaluation -= yyvsp[-3].ttype == boolean_false_node; yyval.ttype = parser_build_binary_op (TRUTH_ANDIF_EXPR, yyvsp[-3].ttype, yyvsp[0].ttype); ; break;} ! case 75: ! #line 534 "c-parse.y" { yyvsp[-1].ttype = truthvalue_conversion (default_conversion (yyvsp[-1].ttype)); skip_evaluation += yyvsp[-1].ttype == boolean_true_node; ; break;} ! case 76: ! #line 537 "c-parse.y" { skip_evaluation -= yyvsp[-3].ttype == boolean_true_node; yyval.ttype = parser_build_binary_op (TRUTH_ORIF_EXPR, yyvsp[-3].ttype, yyvsp[0].ttype); ; break;} ! case 77: ! #line 540 "c-parse.y" { yyvsp[-1].ttype = truthvalue_conversion (default_conversion (yyvsp[-1].ttype)); skip_evaluation += yyvsp[-1].ttype == boolean_false_node; ; break;} ! case 78: ! #line 543 "c-parse.y" { skip_evaluation += ((yyvsp[-4].ttype == boolean_true_node) - (yyvsp[-4].ttype == boolean_false_node)); ; break;} ! case 79: ! #line 546 "c-parse.y" { skip_evaluation -= yyvsp[-6].ttype == boolean_true_node; yyval.ttype = build_conditional_expr (yyvsp[-6].ttype, yyvsp[-3].ttype, yyvsp[0].ttype); ; break;} ! case 80: ! #line 549 "c-parse.y" { if (pedantic) pedwarn ("ISO C forbids omitting the middle term of a ?: expression"); /* Make sure first operand is calculated only once. */ *************** case 79: *** 2470,2482 **** yyvsp[-1].ttype = truthvalue_conversion (default_conversion (yyvsp[0].ttype)); skip_evaluation += yyvsp[-1].ttype == boolean_true_node; ; break;} ! case 80: ! #line 552 "c-parse.y" { skip_evaluation -= yyvsp[-4].ttype == boolean_true_node; yyval.ttype = build_conditional_expr (yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[0].ttype); ; break;} ! case 81: ! #line 555 "c-parse.y" { char class; yyval.ttype = build_modify_expr (yyvsp[-2].ttype, NOP_EXPR, yyvsp[0].ttype); class = TREE_CODE_CLASS (TREE_CODE (yyval.ttype)); --- 2473,2485 ---- yyvsp[-1].ttype = truthvalue_conversion (default_conversion (yyvsp[0].ttype)); skip_evaluation += yyvsp[-1].ttype == boolean_true_node; ; break;} ! case 81: ! #line 556 "c-parse.y" { skip_evaluation -= yyvsp[-4].ttype == boolean_true_node; yyval.ttype = build_conditional_expr (yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[0].ttype); ; break;} ! case 82: ! #line 559 "c-parse.y" { char class; yyval.ttype = build_modify_expr (yyvsp[-2].ttype, NOP_EXPR, yyvsp[0].ttype); class = TREE_CODE_CLASS (TREE_CODE (yyval.ttype)); *************** case 81: *** 2484,2491 **** C_SET_EXP_ORIGINAL_CODE (yyval.ttype, MODIFY_EXPR); ; break;} ! case 82: ! #line 562 "c-parse.y" { char class; yyval.ttype = build_modify_expr (yyvsp[-2].ttype, yyvsp[-1].code, yyvsp[0].ttype); /* This inhibits warnings in truthvalue_conversion. */ --- 2487,2494 ---- C_SET_EXP_ORIGINAL_CODE (yyval.ttype, MODIFY_EXPR); ; break;} ! case 83: ! #line 566 "c-parse.y" { char class; yyval.ttype = build_modify_expr (yyvsp[-2].ttype, yyvsp[-1].code, yyvsp[0].ttype); /* This inhibits warnings in truthvalue_conversion. */ *************** case 82: *** 2494,2523 **** C_SET_EXP_ORIGINAL_CODE (yyval.ttype, ERROR_MARK); ; break;} ! case 83: ! #line 573 "c-parse.y" { if (yychar == YYEMPTY) yychar = YYLEX; yyval.ttype = build_external_ref (yyvsp[0].ttype, yychar == '('); ; break;} ! case 85: ! #line 580 "c-parse.y" { yyval.ttype = combine_strings (yyvsp[0].ttype); ; break;} ! case 86: ! #line 582 "c-parse.y" { yyval.ttype = fname_decl (C_RID_CODE (yyval.ttype), yyval.ttype); ; break;} ! case 87: ! #line 584 "c-parse.y" { start_init (NULL_TREE, NULL, 0); yyvsp[-2].ttype = groktypename (yyvsp[-2].ttype); really_start_incremental_init (yyvsp[-2].ttype); ; break;} ! case 88: ! #line 588 "c-parse.y" { tree constructor = pop_init_level (0); tree type = yyvsp[-5].ttype; finish_init (); --- 2497,2526 ---- C_SET_EXP_ORIGINAL_CODE (yyval.ttype, ERROR_MARK); ; break;} ! case 84: ! #line 577 "c-parse.y" { if (yychar == YYEMPTY) yychar = YYLEX; yyval.ttype = build_external_ref (yyvsp[0].ttype, yychar == '('); ; break;} ! case 86: ! #line 584 "c-parse.y" { yyval.ttype = combine_strings (yyvsp[0].ttype); ; break;} ! case 87: ! #line 586 "c-parse.y" { yyval.ttype = fname_decl (C_RID_CODE (yyval.ttype), yyval.ttype); ; break;} ! case 88: ! #line 588 "c-parse.y" { start_init (NULL_TREE, NULL, 0); yyvsp[-2].ttype = groktypename (yyvsp[-2].ttype); really_start_incremental_init (yyvsp[-2].ttype); ; break;} ! case 89: ! #line 592 "c-parse.y" { tree constructor = pop_init_level (0); tree type = yyvsp[-5].ttype; finish_init (); *************** case 88: *** 2527,2545 **** yyval.ttype = build_compound_literal (type, constructor); ; break;} ! case 89: ! #line 597 "c-parse.y" { char class = TREE_CODE_CLASS (TREE_CODE (yyvsp[-1].ttype)); if (IS_EXPR_CODE_CLASS (class)) C_SET_EXP_ORIGINAL_CODE (yyvsp[-1].ttype, ERROR_MARK); yyval.ttype = yyvsp[-1].ttype; ; break;} ! case 90: ! #line 602 "c-parse.y" { yyval.ttype = error_mark_node; ; break;} ! case 91: ! #line 604 "c-parse.y" { tree saved_last_tree; if (pedantic) --- 2530,2548 ---- yyval.ttype = build_compound_literal (type, constructor); ; break;} ! case 90: ! #line 601 "c-parse.y" { char class = TREE_CODE_CLASS (TREE_CODE (yyvsp[-1].ttype)); if (IS_EXPR_CODE_CLASS (class)) C_SET_EXP_ORIGINAL_CODE (yyvsp[-1].ttype, ERROR_MARK); yyval.ttype = yyvsp[-1].ttype; ; break;} ! case 91: ! #line 606 "c-parse.y" { yyval.ttype = error_mark_node; ; break;} ! case 92: ! #line 608 "c-parse.y" { tree saved_last_tree; if (pedantic) *************** case 91: *** 2556,2563 **** TREE_SIDE_EFFECTS (yyval.ttype) = 1; ; break;} ! case 92: ! #line 620 "c-parse.y" { pop_label_level (); last_tree = COMPOUND_BODY (yyvsp[-2].ttype); --- 2559,2566 ---- TREE_SIDE_EFFECTS (yyval.ttype) = 1; ; break;} ! case 93: ! #line 624 "c-parse.y" { pop_label_level (); last_tree = COMPOUND_BODY (yyvsp[-2].ttype); *************** case 92: *** 2565,2580 **** yyval.ttype = error_mark_node; ; break;} ! case 93: ! #line 627 "c-parse.y" { yyval.ttype = build_function_call (yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} ! case 94: ! #line 629 "c-parse.y" { yyval.ttype = build_va_arg (yyvsp[-3].ttype, groktypename (yyvsp[-1].ttype)); ; break;} ! case 95: ! #line 632 "c-parse.y" { tree c; --- 2568,2583 ---- yyval.ttype = error_mark_node; ; break;} ! case 94: ! #line 631 "c-parse.y" { yyval.ttype = build_function_call (yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} ! case 95: ! #line 633 "c-parse.y" { yyval.ttype = build_va_arg (yyvsp[-3].ttype, groktypename (yyvsp[-1].ttype)); ; break;} ! case 96: ! #line 636 "c-parse.y" { tree c; *************** case 95: *** 2585,2592 **** yyval.ttype = integer_zerop (c) ? yyvsp[-1].ttype : yyvsp[-3].ttype; ; break;} ! case 96: ! #line 642 "c-parse.y" { tree e1, e2; --- 2588,2595 ---- yyval.ttype = integer_zerop (c) ? yyvsp[-1].ttype : yyvsp[-3].ttype; ; break;} ! case 97: ! #line 646 "c-parse.y" { tree e1, e2; *************** case 96: *** 2597,2630 **** ? build_int_2 (1, 0) : build_int_2 (0, 0); ; break;} ! case 97: ! #line 652 "c-parse.y" { yyval.ttype = build_array_ref (yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} ! case 98: ! #line 654 "c-parse.y" { yyval.ttype = build_component_ref (yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} ! case 99: ! #line 658 "c-parse.y" { tree expr = build_indirect_ref (yyvsp[-2].ttype, "->"); yyval.ttype = build_component_ref (expr, yyvsp[0].ttype); ; break;} ! case 100: ! #line 664 "c-parse.y" { yyval.ttype = build_unary_op (POSTINCREMENT_EXPR, yyvsp[-1].ttype, 0); ; break;} ! case 101: ! #line 666 "c-parse.y" { yyval.ttype = build_unary_op (POSTDECREMENT_EXPR, yyvsp[-1].ttype, 0); ; break;} ! case 103: ! #line 673 "c-parse.y" { static int last_lineno = 0; static const char *last_input_filename = 0; --- 2600,2633 ---- ? build_int_2 (1, 0) : build_int_2 (0, 0); ; break;} ! case 98: ! #line 656 "c-parse.y" { yyval.ttype = build_array_ref (yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} ! case 99: ! #line 658 "c-parse.y" { yyval.ttype = build_component_ref (yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} ! case 100: ! #line 662 "c-parse.y" { tree expr = build_indirect_ref (yyvsp[-2].ttype, "->"); yyval.ttype = build_component_ref (expr, yyvsp[0].ttype); ; break;} ! case 101: ! #line 668 "c-parse.y" { yyval.ttype = build_unary_op (POSTINCREMENT_EXPR, yyvsp[-1].ttype, 0); ; break;} ! case 102: ! #line 670 "c-parse.y" { yyval.ttype = build_unary_op (POSTDECREMENT_EXPR, yyvsp[-1].ttype, 0); ; break;} ! case 104: ! #line 677 "c-parse.y" { static int last_lineno = 0; static const char *last_input_filename = 0; *************** case 103: *** 2639,3010 **** } ; break;} ! case 106: ! #line 694 "c-parse.y" { c_mark_varargs (); if (pedantic) pedwarn ("ISO C does not permit use of `varargs.h'"); ; break;} ! case 107: ! #line 704 "c-parse.y" { ; break;} - case 112: - #line 720 "c-parse.y" - { POP_DECLSPEC_STACK; ; - break;} case 113: ! #line 722 "c-parse.y" { POP_DECLSPEC_STACK; ; break;} case 114: ! #line 724 "c-parse.y" { shadow_tag_warned (yyvsp[-1].ttype, 1); pedwarn ("empty declaration"); ; break;} ! case 115: ! #line 727 "c-parse.y" { pedwarn ("empty declaration"); ; break;} ! case 116: ! #line 736 "c-parse.y" { ; break;} ! case 117: ! #line 744 "c-parse.y" { pending_xref_error (); PUSH_DECLSPEC_STACK; split_specs_attrs (yyvsp[0].ttype, ¤t_declspecs, &prefix_attributes); all_prefix_attributes = prefix_attributes; ; break;} - case 118: - #line 755 "c-parse.y" - { all_prefix_attributes = chainon (yyvsp[0].ttype, prefix_attributes); ; - break;} case 119: ! #line 760 "c-parse.y" ! { POP_DECLSPEC_STACK; ; break;} case 120: ! #line 762 "c-parse.y" { POP_DECLSPEC_STACK; ; break;} case 121: ! #line 764 "c-parse.y" { POP_DECLSPEC_STACK; ; break;} case 122: ! #line 766 "c-parse.y" { POP_DECLSPEC_STACK; ; break;} case 123: ! #line 768 "c-parse.y" ! { shadow_tag (yyvsp[-1].ttype); ; break;} case 124: ! #line 770 "c-parse.y" ! { RESTORE_WARN_FLAGS (yyvsp[-1].ttype); ; break;} case 125: ! #line 827 "c-parse.y" ! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ! TREE_STATIC (yyval.ttype) = 1; ; break;} case 126: ! #line 830 "c-parse.y" ! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 127: ! #line 833 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 128: ! #line 839 "c-parse.y" { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; break;} ! case 129: ! #line 845 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} ! case 130: ! #line 848 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} ! case 131: ! #line 854 "c-parse.y" { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, NULL_TREE); TREE_STATIC (yyval.ttype) = 0; ; break;} ! case 132: ! #line 857 "c-parse.y" { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; break;} - case 133: - #line 863 "c-parse.y" - { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); - TREE_STATIC (yyval.ttype) = 1; ; - break;} case 134: ! #line 866 "c-parse.y" ! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 135: ! #line 869 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 136: ! #line 872 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 137: ! #line 875 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 138: ! #line 878 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 139: ! #line 881 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 140: ! #line 887 "c-parse.y" ! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); TREE_STATIC (yyval.ttype) = 1; ; break;} case 141: ! #line 890 "c-parse.y" ! { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); ! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; break;} case 142: ! #line 893 "c-parse.y" ! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ! TREE_STATIC (yyval.ttype) = 1; ; break;} case 143: ! #line 896 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 144: ! #line 899 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 145: ! #line 902 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 146: ! #line 908 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 147: ! #line 911 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 148: ! #line 914 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 149: ! #line 917 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 150: ! #line 920 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 151: ! #line 923 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 152: ! #line 929 "c-parse.y" ! { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); ! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; ! break;} ! case 153: ! #line 932 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 154: ! #line 935 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 155: ! #line 938 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 156: ! #line 941 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 157: ! #line 947 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); TREE_STATIC (yyval.ttype) = 0; ; break;} ! case 158: ! #line 950 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} ! case 159: ! #line 953 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} ! case 160: ! #line 956 "c-parse.y" { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype)) warning ("`%s' is not at beginning of declaration", IDENTIFIER_POINTER (yyvsp[0].ttype)); yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; break;} ! case 161: ! #line 962 "c-parse.y" { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype)) warning ("`%s' is not at beginning of declaration", IDENTIFIER_POINTER (yyvsp[0].ttype)); yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; break;} ! case 162: ! #line 968 "c-parse.y" { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype)) warning ("`%s' is not at beginning of declaration", IDENTIFIER_POINTER (yyvsp[0].ttype)); yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; break;} ! case 163: ! #line 974 "c-parse.y" { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype)) warning ("`%s' is not at beginning of declaration", IDENTIFIER_POINTER (yyvsp[0].ttype)); yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; break;} ! case 164: ! #line 983 "c-parse.y" { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; break;} ! case 165: ! #line 989 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} ! case 166: ! #line 992 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} ! case 167: ! #line 995 "c-parse.y" { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype)) warning ("`%s' is not at beginning of declaration", IDENTIFIER_POINTER (yyvsp[0].ttype)); yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; break;} ! case 168: ! #line 1001 "c-parse.y" { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype)) warning ("`%s' is not at beginning of declaration", IDENTIFIER_POINTER (yyvsp[0].ttype)); yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; break;} ! case 169: ! #line 1007 "c-parse.y" { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype)) warning ("`%s' is not at beginning of declaration", IDENTIFIER_POINTER (yyvsp[0].ttype)); yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; break;} ! case 170: ! #line 1013 "c-parse.y" { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype)) warning ("`%s' is not at beginning of declaration", IDENTIFIER_POINTER (yyvsp[0].ttype)); yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; break;} ! case 171: ! #line 1022 "c-parse.y" { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; break;} - case 172: - #line 1028 "c-parse.y" - { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); - TREE_STATIC (yyval.ttype) = 1; ; - break;} case 173: ! #line 1031 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 174: ! #line 1034 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 175: ! #line 1037 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 176: ! #line 1040 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 177: ! #line 1043 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 178: ! #line 1046 "c-parse.y" ! { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype)) ! warning ("`%s' is not at beginning of declaration", ! IDENTIFIER_POINTER (yyvsp[0].ttype)); ! yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; break;} case 179: ! #line 1052 "c-parse.y" { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype)) warning ("`%s' is not at beginning of declaration", IDENTIFIER_POINTER (yyvsp[0].ttype)); --- 2642,3005 ---- } ; break;} ! case 107: ! #line 698 "c-parse.y" { c_mark_varargs (); if (pedantic) pedwarn ("ISO C does not permit use of `varargs.h'"); ; break;} ! case 108: ! #line 708 "c-parse.y" { ; break;} case 113: ! #line 724 "c-parse.y" { POP_DECLSPEC_STACK; ; break;} case 114: ! #line 726 "c-parse.y" ! { POP_DECLSPEC_STACK; ; ! break;} ! case 115: ! #line 728 "c-parse.y" { shadow_tag_warned (yyvsp[-1].ttype, 1); pedwarn ("empty declaration"); ; break;} ! case 116: ! #line 731 "c-parse.y" { pedwarn ("empty declaration"); ; break;} ! case 117: ! #line 740 "c-parse.y" { ; break;} ! case 118: ! #line 748 "c-parse.y" { pending_xref_error (); PUSH_DECLSPEC_STACK; split_specs_attrs (yyvsp[0].ttype, ¤t_declspecs, &prefix_attributes); all_prefix_attributes = prefix_attributes; ; break;} case 119: ! #line 759 "c-parse.y" ! { all_prefix_attributes = chainon (yyvsp[0].ttype, prefix_attributes); ; break;} case 120: ! #line 764 "c-parse.y" { POP_DECLSPEC_STACK; ; break;} case 121: ! #line 766 "c-parse.y" { POP_DECLSPEC_STACK; ; break;} case 122: ! #line 768 "c-parse.y" { POP_DECLSPEC_STACK; ; break;} case 123: ! #line 770 "c-parse.y" ! { POP_DECLSPEC_STACK; ; break;} case 124: ! #line 772 "c-parse.y" ! { shadow_tag (yyvsp[-1].ttype); ; break;} case 125: ! #line 774 "c-parse.y" ! { RESTORE_WARN_FLAGS (yyvsp[-1].ttype); ; break;} case 126: ! #line 831 "c-parse.y" ! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); TREE_STATIC (yyval.ttype) = 1; ; break;} case 127: ! #line 834 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 128: ! #line 837 "c-parse.y" ! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ! TREE_STATIC (yyval.ttype) = 1; ; ! break;} ! case 129: ! #line 843 "c-parse.y" { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; break;} ! case 130: ! #line 849 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} ! case 131: ! #line 852 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} ! case 132: ! #line 858 "c-parse.y" { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, NULL_TREE); TREE_STATIC (yyval.ttype) = 0; ; break;} ! case 133: ! #line 861 "c-parse.y" { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; break;} case 134: ! #line 867 "c-parse.y" ! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); TREE_STATIC (yyval.ttype) = 1; ; break;} case 135: ! #line 870 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 136: ! #line 873 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 137: ! #line 876 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 138: ! #line 879 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 139: ! #line 882 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 140: ! #line 885 "c-parse.y" ! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 141: ! #line 891 "c-parse.y" ! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ! TREE_STATIC (yyval.ttype) = 1; ; break;} case 142: ! #line 894 "c-parse.y" ! { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); ! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; break;} case 143: ! #line 897 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 144: ! #line 900 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 145: ! #line 903 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 146: ! #line 906 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 147: ! #line 912 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 148: ! #line 915 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 149: ! #line 918 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 150: ! #line 921 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 151: ! #line 924 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 152: ! #line 927 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} + case 153: + #line 933 "c-parse.y" + { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); + TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; + break;} case 154: ! #line 936 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 155: ! #line 939 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 156: ! #line 942 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 157: ! #line 945 "c-parse.y" ! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ! TREE_STATIC (yyval.ttype) = 1; ; ! break;} ! case 158: ! #line 951 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); TREE_STATIC (yyval.ttype) = 0; ; break;} ! case 159: ! #line 954 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} ! case 160: ! #line 957 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} ! case 161: ! #line 960 "c-parse.y" { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype)) warning ("`%s' is not at beginning of declaration", IDENTIFIER_POINTER (yyvsp[0].ttype)); yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; break;} ! case 162: ! #line 966 "c-parse.y" { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype)) warning ("`%s' is not at beginning of declaration", IDENTIFIER_POINTER (yyvsp[0].ttype)); yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; break;} ! case 163: ! #line 972 "c-parse.y" { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype)) warning ("`%s' is not at beginning of declaration", IDENTIFIER_POINTER (yyvsp[0].ttype)); yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; break;} ! case 164: ! #line 978 "c-parse.y" { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype)) warning ("`%s' is not at beginning of declaration", IDENTIFIER_POINTER (yyvsp[0].ttype)); yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; break;} ! case 165: ! #line 987 "c-parse.y" { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; break;} ! case 166: ! #line 993 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} ! case 167: ! #line 996 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} ! case 168: ! #line 999 "c-parse.y" { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype)) warning ("`%s' is not at beginning of declaration", IDENTIFIER_POINTER (yyvsp[0].ttype)); yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; break;} ! case 169: ! #line 1005 "c-parse.y" { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype)) warning ("`%s' is not at beginning of declaration", IDENTIFIER_POINTER (yyvsp[0].ttype)); yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; break;} ! case 170: ! #line 1011 "c-parse.y" { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype)) warning ("`%s' is not at beginning of declaration", IDENTIFIER_POINTER (yyvsp[0].ttype)); yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; break;} ! case 171: ! #line 1017 "c-parse.y" { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype)) warning ("`%s' is not at beginning of declaration", IDENTIFIER_POINTER (yyvsp[0].ttype)); yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; break;} ! case 172: ! #line 1026 "c-parse.y" { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; break;} case 173: ! #line 1032 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 174: ! #line 1035 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 175: ! #line 1038 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 176: ! #line 1041 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 177: ! #line 1044 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 178: ! #line 1047 "c-parse.y" ! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ! TREE_STATIC (yyval.ttype) = 1; ; break;} case 179: ! #line 1050 "c-parse.y" { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype)) warning ("`%s' is not at beginning of declaration", IDENTIFIER_POINTER (yyvsp[0].ttype)); *************** case 179: *** 3012,3018 **** TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; break;} case 180: ! #line 1058 "c-parse.y" { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype)) warning ("`%s' is not at beginning of declaration", IDENTIFIER_POINTER (yyvsp[0].ttype)); --- 3007,3013 ---- TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; break;} case 180: ! #line 1056 "c-parse.y" { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype)) warning ("`%s' is not at beginning of declaration", IDENTIFIER_POINTER (yyvsp[0].ttype)); *************** case 180: *** 3020,3026 **** TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; break;} case 181: ! #line 1064 "c-parse.y" { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype)) warning ("`%s' is not at beginning of declaration", IDENTIFIER_POINTER (yyvsp[0].ttype)); --- 3015,3021 ---- TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; break;} case 181: ! #line 1062 "c-parse.y" { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype)) warning ("`%s' is not at beginning of declaration", IDENTIFIER_POINTER (yyvsp[0].ttype)); *************** case 181: *** 3028,3097 **** TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; break;} case 182: ! #line 1073 "c-parse.y" ! { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; break;} case 183: ! #line 1076 "c-parse.y" ! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ! TREE_STATIC (yyval.ttype) = 1; ; break;} case 184: ! #line 1079 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 185: ! #line 1082 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 186: ! #line 1085 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 187: ! #line 1091 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 188: ! #line 1094 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 189: ! #line 1097 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 190: ! #line 1100 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 191: ! #line 1103 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 192: ! #line 1106 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 193: ! #line 1109 "c-parse.y" ! { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype)) ! warning ("`%s' is not at beginning of declaration", ! IDENTIFIER_POINTER (yyvsp[0].ttype)); ! yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; break;} case 194: ! #line 1115 "c-parse.y" { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype)) warning ("`%s' is not at beginning of declaration", IDENTIFIER_POINTER (yyvsp[0].ttype)); --- 3023,3092 ---- TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; break;} case 182: ! #line 1068 "c-parse.y" ! { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype)) ! warning ("`%s' is not at beginning of declaration", ! IDENTIFIER_POINTER (yyvsp[0].ttype)); ! yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; break;} case 183: ! #line 1077 "c-parse.y" ! { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); ! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; break;} case 184: ! #line 1080 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 185: ! #line 1083 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 186: ! #line 1086 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 187: ! #line 1089 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 188: ! #line 1095 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 189: ! #line 1098 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 190: ! #line 1101 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 191: ! #line 1104 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 192: ! #line 1107 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 193: ! #line 1110 "c-parse.y" ! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ! TREE_STATIC (yyval.ttype) = 1; ; break;} case 194: ! #line 1113 "c-parse.y" { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype)) warning ("`%s' is not at beginning of declaration", IDENTIFIER_POINTER (yyvsp[0].ttype)); *************** case 194: *** 3099,3105 **** TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; break;} case 195: ! #line 1121 "c-parse.y" { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype)) warning ("`%s' is not at beginning of declaration", IDENTIFIER_POINTER (yyvsp[0].ttype)); --- 3094,3100 ---- TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; break;} case 195: ! #line 1119 "c-parse.y" { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype)) warning ("`%s' is not at beginning of declaration", IDENTIFIER_POINTER (yyvsp[0].ttype)); *************** case 195: *** 3107,3113 **** TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; break;} case 196: ! #line 1127 "c-parse.y" { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype)) warning ("`%s' is not at beginning of declaration", IDENTIFIER_POINTER (yyvsp[0].ttype)); --- 3102,3108 ---- TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; break;} case 196: ! #line 1125 "c-parse.y" { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype)) warning ("`%s' is not at beginning of declaration", IDENTIFIER_POINTER (yyvsp[0].ttype)); *************** case 196: *** 3115,3324 **** TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; break;} case 197: ! #line 1136 "c-parse.y" ! { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; break;} case 198: ! #line 1139 "c-parse.y" ! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ! TREE_STATIC (yyval.ttype) = 1; ; break;} case 199: ! #line 1142 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 200: ! #line 1145 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 201: ! #line 1148 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} ! case 258: ! #line 1236 "c-parse.y" ! { yyval.ttype = NULL_TREE; ; break;} case 259: ! #line 1238 "c-parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} ! case 263: ! #line 1273 "c-parse.y" { OBJC_NEED_RAW_IDENTIFIER (1); ; break;} ! case 266: ! #line 1283 "c-parse.y" { /* For a typedef name, record the meaning, not the name. In case of `foo foo, bar;'. */ yyval.ttype = lookup_name (yyvsp[0].ttype); ; break;} - case 267: - #line 1287 "c-parse.y" - { yyval.ttype = TREE_TYPE (yyvsp[-1].ttype); ; - break;} case 268: ! #line 1289 "c-parse.y" ! { yyval.ttype = groktypename (yyvsp[-1].ttype); ; break;} ! case 273: ! #line 1306 "c-parse.y" ! { yyval.ttype = NULL_TREE; ; break;} case 274: ! #line 1308 "c-parse.y" { if (TREE_CHAIN (yyvsp[-1].ttype)) yyvsp[-1].ttype = combine_strings (yyvsp[-1].ttype); yyval.ttype = yyvsp[-1].ttype; ; break;} ! case 275: ! #line 1315 "c-parse.y" { yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 1, chainon (yyvsp[-1].ttype, all_prefix_attributes)); start_init (yyval.ttype, yyvsp[-2].ttype, global_bindings_p ()); ; break;} ! case 276: ! #line 1320 "c-parse.y" { finish_init (); finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype); ; break;} ! case 277: ! #line 1323 "c-parse.y" { tree d = start_decl (yyvsp[-2].ttype, current_declspecs, 0, chainon (yyvsp[0].ttype, all_prefix_attributes)); finish_decl (d, NULL_TREE, yyvsp[-1].ttype); ; break;} ! case 278: ! #line 1331 "c-parse.y" { yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 1, chainon (yyvsp[-1].ttype, all_prefix_attributes)); start_init (yyval.ttype, yyvsp[-2].ttype, global_bindings_p ()); ; break;} ! case 279: ! #line 1336 "c-parse.y" { finish_init (); finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype); ; break;} ! case 280: ! #line 1339 "c-parse.y" { tree d = start_decl (yyvsp[-2].ttype, current_declspecs, 0, chainon (yyvsp[0].ttype, all_prefix_attributes)); finish_decl (d, NULL_TREE, yyvsp[-1].ttype); ; break;} - case 281: - #line 1347 "c-parse.y" - { yyval.ttype = NULL_TREE; ; - break;} case 282: ! #line 1349 "c-parse.y" ! { yyval.ttype = yyvsp[0].ttype; ; break;} case 283: ! #line 1354 "c-parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 284: ! #line 1356 "c-parse.y" ! { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 285: ! #line 1361 "c-parse.y" ! { yyval.ttype = yyvsp[-2].ttype; ; break;} case 286: ! #line 1366 "c-parse.y" ! { yyval.ttype = yyvsp[0].ttype; ; break;} case 287: ! #line 1368 "c-parse.y" ! { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 288: ! #line 1373 "c-parse.y" ! { yyval.ttype = NULL_TREE; ; break;} case 289: ! #line 1375 "c-parse.y" ! { yyval.ttype = build_tree_list (yyvsp[0].ttype, NULL_TREE); ; break;} case 290: ! #line 1377 "c-parse.y" ! { yyval.ttype = build_tree_list (yyvsp[-3].ttype, build_tree_list (NULL_TREE, yyvsp[-1].ttype)); ; break;} case 291: ! #line 1379 "c-parse.y" ! { yyval.ttype = build_tree_list (yyvsp[-5].ttype, tree_cons (NULL_TREE, yyvsp[-3].ttype, yyvsp[-1].ttype)); ; break;} case 292: ! #line 1381 "c-parse.y" { yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} ! case 298: ! #line 1399 "c-parse.y" { really_start_incremental_init (NULL_TREE); ; break;} ! case 299: ! #line 1401 "c-parse.y" { yyval.ttype = pop_init_level (0); ; break;} ! case 300: ! #line 1403 "c-parse.y" { yyval.ttype = error_mark_node; ; break;} ! case 301: ! #line 1409 "c-parse.y" { if (pedantic) pedwarn ("ISO C forbids empty initializer braces"); ; break;} ! case 305: ! #line 1423 "c-parse.y" { if (pedantic && ! flag_isoc99) pedwarn ("ISO C89 forbids specifying subobject to initialize"); ; break;} ! case 306: ! #line 1426 "c-parse.y" { if (pedantic) pedwarn ("obsolete use of designated initializer without `='"); ; break;} ! case 307: ! #line 1429 "c-parse.y" { set_init_label (yyvsp[-1].ttype); if (pedantic) pedwarn ("obsolete use of designated initializer with `:'"); ; break;} ! case 310: ! #line 1438 "c-parse.y" ! { push_init_level (0); ; break;} case 311: ! #line 1440 "c-parse.y" ! { process_init_element (pop_init_level (0)); ; break;} case 312: ! #line 1442 "c-parse.y" ! { process_init_element (yyvsp[0].ttype); ; break;} ! case 316: ! #line 1453 "c-parse.y" ! { set_init_label (yyvsp[0].ttype); ; break;} case 317: #line 1458 "c-parse.y" { set_init_index (yyvsp[-3].ttype, yyvsp[-1].ttype); if (pedantic) pedwarn ("ISO C forbids specifying range of elements to initialize"); ; break;} - case 318: - #line 1462 "c-parse.y" - { set_init_index (yyvsp[-1].ttype, NULL_TREE); ; - break;} case 319: #line 1467 "c-parse.y" { if (pedantic) pedwarn ("ISO C forbids nested functions"); --- 3110,3331 ---- TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; break;} case 197: ! #line 1131 "c-parse.y" ! { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype)) ! warning ("`%s' is not at beginning of declaration", ! IDENTIFIER_POINTER (yyvsp[0].ttype)); ! yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; break;} case 198: ! #line 1140 "c-parse.y" ! { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); ! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; break;} case 199: ! #line 1143 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 200: ! #line 1146 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 201: ! #line 1149 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} ! case 202: ! #line 1152 "c-parse.y" ! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ! TREE_STATIC (yyval.ttype) = 1; ; break;} case 259: ! #line 1240 "c-parse.y" ! { yyval.ttype = NULL_TREE; ; ! break;} ! case 260: ! #line 1242 "c-parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} ! case 264: ! #line 1277 "c-parse.y" { OBJC_NEED_RAW_IDENTIFIER (1); ; break;} ! case 267: ! #line 1287 "c-parse.y" { /* For a typedef name, record the meaning, not the name. In case of `foo foo, bar;'. */ yyval.ttype = lookup_name (yyvsp[0].ttype); ; break;} case 268: ! #line 1291 "c-parse.y" ! { skip_evaluation--; yyval.ttype = TREE_TYPE (yyvsp[-1].ttype); ; break;} ! case 269: ! #line 1293 "c-parse.y" ! { skip_evaluation--; yyval.ttype = groktypename (yyvsp[-1].ttype); ; break;} case 274: ! #line 1310 "c-parse.y" ! { yyval.ttype = NULL_TREE; ; ! break;} ! case 275: ! #line 1312 "c-parse.y" { if (TREE_CHAIN (yyvsp[-1].ttype)) yyvsp[-1].ttype = combine_strings (yyvsp[-1].ttype); yyval.ttype = yyvsp[-1].ttype; ; break;} ! case 276: ! #line 1319 "c-parse.y" { yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 1, chainon (yyvsp[-1].ttype, all_prefix_attributes)); start_init (yyval.ttype, yyvsp[-2].ttype, global_bindings_p ()); ; break;} ! case 277: ! #line 1324 "c-parse.y" { finish_init (); finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype); ; break;} ! case 278: ! #line 1327 "c-parse.y" { tree d = start_decl (yyvsp[-2].ttype, current_declspecs, 0, chainon (yyvsp[0].ttype, all_prefix_attributes)); finish_decl (d, NULL_TREE, yyvsp[-1].ttype); ; break;} ! case 279: ! #line 1335 "c-parse.y" { yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 1, chainon (yyvsp[-1].ttype, all_prefix_attributes)); start_init (yyval.ttype, yyvsp[-2].ttype, global_bindings_p ()); ; break;} ! case 280: ! #line 1340 "c-parse.y" { finish_init (); finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype); ; break;} ! case 281: ! #line 1343 "c-parse.y" { tree d = start_decl (yyvsp[-2].ttype, current_declspecs, 0, chainon (yyvsp[0].ttype, all_prefix_attributes)); finish_decl (d, NULL_TREE, yyvsp[-1].ttype); ; break;} case 282: ! #line 1351 "c-parse.y" ! { yyval.ttype = NULL_TREE; ; break;} case 283: ! #line 1353 "c-parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 284: ! #line 1358 "c-parse.y" ! { yyval.ttype = yyvsp[0].ttype; ; break;} case 285: ! #line 1360 "c-parse.y" ! { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 286: ! #line 1365 "c-parse.y" ! { yyval.ttype = yyvsp[-2].ttype; ; break;} case 287: ! #line 1370 "c-parse.y" ! { yyval.ttype = yyvsp[0].ttype; ; break;} case 288: ! #line 1372 "c-parse.y" ! { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 289: ! #line 1377 "c-parse.y" ! { yyval.ttype = NULL_TREE; ; break;} case 290: ! #line 1379 "c-parse.y" ! { yyval.ttype = build_tree_list (yyvsp[0].ttype, NULL_TREE); ; break;} case 291: ! #line 1381 "c-parse.y" ! { yyval.ttype = build_tree_list (yyvsp[-3].ttype, build_tree_list (NULL_TREE, yyvsp[-1].ttype)); ; break;} case 292: ! #line 1383 "c-parse.y" ! { yyval.ttype = build_tree_list (yyvsp[-5].ttype, tree_cons (NULL_TREE, yyvsp[-3].ttype, yyvsp[-1].ttype)); ; ! break;} ! case 293: ! #line 1385 "c-parse.y" { yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} ! case 299: ! #line 1403 "c-parse.y" { really_start_incremental_init (NULL_TREE); ; break;} ! case 300: ! #line 1405 "c-parse.y" { yyval.ttype = pop_init_level (0); ; break;} ! case 301: ! #line 1407 "c-parse.y" { yyval.ttype = error_mark_node; ; break;} ! case 302: ! #line 1413 "c-parse.y" { if (pedantic) pedwarn ("ISO C forbids empty initializer braces"); ; break;} ! case 306: ! #line 1427 "c-parse.y" { if (pedantic && ! flag_isoc99) pedwarn ("ISO C89 forbids specifying subobject to initialize"); ; break;} ! case 307: ! #line 1430 "c-parse.y" { if (pedantic) pedwarn ("obsolete use of designated initializer without `='"); ; break;} ! case 308: ! #line 1433 "c-parse.y" { set_init_label (yyvsp[-1].ttype); if (pedantic) pedwarn ("obsolete use of designated initializer with `:'"); ; break;} ! case 309: ! #line 1437 "c-parse.y" ! {; break;} case 311: ! #line 1443 "c-parse.y" ! { push_init_level (0); ; break;} case 312: ! #line 1445 "c-parse.y" ! { process_init_element (pop_init_level (0)); ; break;} ! case 313: ! #line 1447 "c-parse.y" ! { process_init_element (yyvsp[0].ttype); ; break;} case 317: #line 1458 "c-parse.y" + { set_init_label (yyvsp[0].ttype); ; + break;} + case 318: + #line 1463 "c-parse.y" { set_init_index (yyvsp[-3].ttype, yyvsp[-1].ttype); if (pedantic) pedwarn ("ISO C forbids specifying range of elements to initialize"); ; break;} case 319: #line 1467 "c-parse.y" + { set_init_index (yyvsp[-1].ttype, NULL_TREE); ; + break;} + case 320: + #line 1472 "c-parse.y" { if (pedantic) pedwarn ("ISO C forbids nested functions"); *************** case 319: *** 3331,3342 **** } ; break;} ! case 320: ! #line 1479 "c-parse.y" { store_parm_decls (); ; break;} ! case 321: ! #line 1487 "c-parse.y" { tree decl = current_function_decl; DECL_SOURCE_FILE (decl) = yyvsp[-2].filename; DECL_SOURCE_LINE (decl) = yyvsp[-1].lineno; --- 3338,3349 ---- } ; break;} ! case 321: ! #line 1484 "c-parse.y" { store_parm_decls (); ; break;} ! case 322: ! #line 1492 "c-parse.y" { tree decl = current_function_decl; DECL_SOURCE_FILE (decl) = yyvsp[-2].filename; DECL_SOURCE_LINE (decl) = yyvsp[-1].lineno; *************** case 321: *** 3344,3351 **** pop_function_context (); add_decl_stmt (decl); ; break;} ! case 322: ! #line 1497 "c-parse.y" { if (pedantic) pedwarn ("ISO C forbids nested functions"); --- 3351,3358 ---- pop_function_context (); add_decl_stmt (decl); ; break;} ! case 323: ! #line 1502 "c-parse.y" { if (pedantic) pedwarn ("ISO C forbids nested functions"); *************** case 322: *** 3358,3369 **** } ; break;} ! case 323: ! #line 1509 "c-parse.y" { store_parm_decls (); ; break;} ! case 324: ! #line 1517 "c-parse.y" { tree decl = current_function_decl; DECL_SOURCE_FILE (decl) = yyvsp[-2].filename; DECL_SOURCE_LINE (decl) = yyvsp[-1].lineno; --- 3365,3376 ---- } ; break;} ! case 324: ! #line 1514 "c-parse.y" { store_parm_decls (); ; break;} ! case 325: ! #line 1522 "c-parse.y" { tree decl = current_function_decl; DECL_SOURCE_FILE (decl) = yyvsp[-2].filename; DECL_SOURCE_LINE (decl) = yyvsp[-1].lineno; *************** case 324: *** 3371,3558 **** pop_function_context (); add_decl_stmt (decl); ; break;} - case 327: - #line 1537 "c-parse.y" - { yyval.ttype = yyvsp[-2].ttype ? tree_cons (yyvsp[-2].ttype, yyvsp[-1].ttype, NULL_TREE) : yyvsp[-1].ttype; ; - break;} case 328: ! #line 1539 "c-parse.y" ! { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ; break;} case 329: #line 1544 "c-parse.y" ! { yyval.ttype = set_array_declarator_type (yyvsp[0].ttype, yyvsp[-1].ttype, 0); ; break;} case 330: ! #line 1546 "c-parse.y" ! { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} ! case 334: ! #line 1561 "c-parse.y" ! { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ; break;} case 335: #line 1566 "c-parse.y" - { yyval.ttype = set_array_declarator_type (yyvsp[0].ttype, yyvsp[-1].ttype, 0); ; - break;} - case 337: - #line 1572 "c-parse.y" { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ; break;} case 338: #line 1577 "c-parse.y" ! { yyval.ttype = set_array_declarator_type (yyvsp[0].ttype, yyvsp[-1].ttype, 0); ; break;} case 339: ! #line 1579 "c-parse.y" ! { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 340: ! #line 1581 "c-parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 341: ! #line 1583 "c-parse.y" ! { yyval.ttype = yyvsp[-2].ttype ? tree_cons (yyvsp[-2].ttype, yyvsp[-1].ttype, NULL_TREE) : yyvsp[-1].ttype; ; break;} case 342: ! #line 1591 "c-parse.y" ! { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ; break;} case 343: #line 1596 "c-parse.y" ! { yyval.ttype = yyvsp[-2].ttype ? tree_cons (yyvsp[-2].ttype, yyvsp[-1].ttype, NULL_TREE) : yyvsp[-1].ttype; ; break;} case 344: ! #line 1598 "c-parse.y" ! { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 345: ! #line 1600 "c-parse.y" ! { yyval.ttype = set_array_declarator_type (yyvsp[0].ttype, yyvsp[-1].ttype, 0); ; break;} ! case 347: ! #line 1606 "c-parse.y" ! { yyval.ttype = NULL_TREE; ; break;} case 348: ! #line 1608 "c-parse.y" ! { yyval.ttype = yyvsp[0].ttype; ; break;} case 349: #line 1613 "c-parse.y" ! { yyval.ttype = NULL_TREE; ; break;} case 350: ! #line 1615 "c-parse.y" ! { yyval.ttype = yyvsp[0].ttype; ; break;} case 351: #line 1620 "c-parse.y" ! { yyval.ttype = NULL_TREE; ; break;} case 352: ! #line 1622 "c-parse.y" ! { yyval.ttype = yyvsp[0].ttype; ; break;} case 353: ! #line 1633 "c-parse.y" { yyval.ttype = start_struct (RECORD_TYPE, yyvsp[-1].ttype); /* Start scope of tag before parsing components. */ ; break;} ! case 354: ! #line 1637 "c-parse.y" { yyval.ttype = finish_struct (yyvsp[-3].ttype, yyvsp[-2].ttype, chainon (yyvsp[-6].ttype, yyvsp[0].ttype)); ; break;} ! case 355: ! #line 1639 "c-parse.y" { yyval.ttype = finish_struct (start_struct (RECORD_TYPE, NULL_TREE), yyvsp[-2].ttype, chainon (yyvsp[-4].ttype, yyvsp[0].ttype)); ; break;} ! case 356: ! #line 1643 "c-parse.y" { yyval.ttype = start_struct (UNION_TYPE, yyvsp[-1].ttype); ; break;} ! case 357: ! #line 1645 "c-parse.y" { yyval.ttype = finish_struct (yyvsp[-3].ttype, yyvsp[-2].ttype, chainon (yyvsp[-6].ttype, yyvsp[0].ttype)); ; break;} ! case 358: ! #line 1647 "c-parse.y" { yyval.ttype = finish_struct (start_struct (UNION_TYPE, NULL_TREE), yyvsp[-2].ttype, chainon (yyvsp[-4].ttype, yyvsp[0].ttype)); ; break;} ! case 359: ! #line 1651 "c-parse.y" { yyval.ttype = start_enum (yyvsp[-1].ttype); ; break;} ! case 360: ! #line 1653 "c-parse.y" { yyval.ttype = finish_enum (yyvsp[-4].ttype, nreverse (yyvsp[-3].ttype), chainon (yyvsp[-7].ttype, yyvsp[0].ttype)); ; break;} ! case 361: ! #line 1656 "c-parse.y" { yyval.ttype = start_enum (NULL_TREE); ; break;} ! case 362: ! #line 1658 "c-parse.y" { yyval.ttype = finish_enum (yyvsp[-4].ttype, nreverse (yyvsp[-3].ttype), chainon (yyvsp[-6].ttype, yyvsp[0].ttype)); ; break;} ! case 363: ! #line 1664 "c-parse.y" { yyval.ttype = xref_tag (RECORD_TYPE, yyvsp[0].ttype); ; break;} ! case 364: ! #line 1666 "c-parse.y" { yyval.ttype = xref_tag (UNION_TYPE, yyvsp[0].ttype); ; break;} ! case 365: ! #line 1668 "c-parse.y" { yyval.ttype = xref_tag (ENUMERAL_TYPE, yyvsp[0].ttype); /* In ISO C, enumerated types can be referred to only if already defined. */ if (pedantic && !COMPLETE_TYPE_P (yyval.ttype)) pedwarn ("ISO C forbids forward references to `enum' types"); ; break;} ! case 369: ! #line 1683 "c-parse.y" { if (pedantic && ! flag_isoc99) pedwarn ("comma at end of enumerator list"); ; break;} ! case 370: ! #line 1689 "c-parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} ! case 371: ! #line 1691 "c-parse.y" { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); pedwarn ("no semicolon at end of struct or union"); ; break;} ! case 372: ! #line 1696 "c-parse.y" { yyval.ttype = NULL_TREE; ; break;} ! case 373: ! #line 1698 "c-parse.y" { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[-1].ttype); ; break;} ! case 374: ! #line 1700 "c-parse.y" { if (pedantic) pedwarn ("extra semicolon in struct or union specified"); ; break;} ! case 375: ! #line 1706 "c-parse.y" { yyval.ttype = yyvsp[0].ttype; POP_DECLSPEC_STACK; ; break;} ! case 376: ! #line 1709 "c-parse.y" { /* Support for unnamed structs or unions as members of structs or unions (which is [a] useful and [b] supports --- 3378,3565 ---- pop_function_context (); add_decl_stmt (decl); ; break;} case 328: ! #line 1542 "c-parse.y" ! { yyval.ttype = yyvsp[-2].ttype ? tree_cons (yyvsp[-2].ttype, yyvsp[-1].ttype, NULL_TREE) : yyvsp[-1].ttype; ; break;} case 329: #line 1544 "c-parse.y" ! { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ; break;} case 330: ! #line 1549 "c-parse.y" ! { yyval.ttype = set_array_declarator_type (yyvsp[0].ttype, yyvsp[-1].ttype, 0); ; break;} ! case 331: ! #line 1551 "c-parse.y" ! { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 335: #line 1566 "c-parse.y" { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ; break;} + case 336: + #line 1571 "c-parse.y" + { yyval.ttype = set_array_declarator_type (yyvsp[0].ttype, yyvsp[-1].ttype, 0); ; + break;} case 338: #line 1577 "c-parse.y" ! { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ; break;} case 339: ! #line 1582 "c-parse.y" ! { yyval.ttype = set_array_declarator_type (yyvsp[0].ttype, yyvsp[-1].ttype, 0); ; break;} case 340: ! #line 1584 "c-parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 341: ! #line 1586 "c-parse.y" ! { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 342: ! #line 1588 "c-parse.y" ! { yyval.ttype = yyvsp[-2].ttype ? tree_cons (yyvsp[-2].ttype, yyvsp[-1].ttype, NULL_TREE) : yyvsp[-1].ttype; ; break;} case 343: #line 1596 "c-parse.y" ! { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ; break;} case 344: ! #line 1601 "c-parse.y" ! { yyval.ttype = yyvsp[-2].ttype ? tree_cons (yyvsp[-2].ttype, yyvsp[-1].ttype, NULL_TREE) : yyvsp[-1].ttype; ; break;} case 345: ! #line 1603 "c-parse.y" ! { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} ! case 346: ! #line 1605 "c-parse.y" ! { yyval.ttype = set_array_declarator_type (yyvsp[0].ttype, yyvsp[-1].ttype, 0); ; break;} case 348: ! #line 1611 "c-parse.y" ! { yyval.ttype = NULL_TREE; ; break;} case 349: #line 1613 "c-parse.y" ! { yyval.ttype = yyvsp[0].ttype; ; break;} case 350: ! #line 1618 "c-parse.y" ! { yyval.ttype = NULL_TREE; ; break;} case 351: #line 1620 "c-parse.y" ! { yyval.ttype = yyvsp[0].ttype; ; break;} case 352: ! #line 1625 "c-parse.y" ! { yyval.ttype = NULL_TREE; ; break;} case 353: ! #line 1627 "c-parse.y" ! { yyval.ttype = yyvsp[0].ttype; ; ! break;} ! case 354: ! #line 1638 "c-parse.y" { yyval.ttype = start_struct (RECORD_TYPE, yyvsp[-1].ttype); /* Start scope of tag before parsing components. */ ; break;} ! case 355: ! #line 1642 "c-parse.y" { yyval.ttype = finish_struct (yyvsp[-3].ttype, yyvsp[-2].ttype, chainon (yyvsp[-6].ttype, yyvsp[0].ttype)); ; break;} ! case 356: ! #line 1644 "c-parse.y" { yyval.ttype = finish_struct (start_struct (RECORD_TYPE, NULL_TREE), yyvsp[-2].ttype, chainon (yyvsp[-4].ttype, yyvsp[0].ttype)); ; break;} ! case 357: ! #line 1648 "c-parse.y" { yyval.ttype = start_struct (UNION_TYPE, yyvsp[-1].ttype); ; break;} ! case 358: ! #line 1650 "c-parse.y" { yyval.ttype = finish_struct (yyvsp[-3].ttype, yyvsp[-2].ttype, chainon (yyvsp[-6].ttype, yyvsp[0].ttype)); ; break;} ! case 359: ! #line 1652 "c-parse.y" { yyval.ttype = finish_struct (start_struct (UNION_TYPE, NULL_TREE), yyvsp[-2].ttype, chainon (yyvsp[-4].ttype, yyvsp[0].ttype)); ; break;} ! case 360: ! #line 1656 "c-parse.y" { yyval.ttype = start_enum (yyvsp[-1].ttype); ; break;} ! case 361: ! #line 1658 "c-parse.y" { yyval.ttype = finish_enum (yyvsp[-4].ttype, nreverse (yyvsp[-3].ttype), chainon (yyvsp[-7].ttype, yyvsp[0].ttype)); ; break;} ! case 362: ! #line 1661 "c-parse.y" { yyval.ttype = start_enum (NULL_TREE); ; break;} ! case 363: ! #line 1663 "c-parse.y" { yyval.ttype = finish_enum (yyvsp[-4].ttype, nreverse (yyvsp[-3].ttype), chainon (yyvsp[-6].ttype, yyvsp[0].ttype)); ; break;} ! case 364: ! #line 1669 "c-parse.y" { yyval.ttype = xref_tag (RECORD_TYPE, yyvsp[0].ttype); ; break;} ! case 365: ! #line 1671 "c-parse.y" { yyval.ttype = xref_tag (UNION_TYPE, yyvsp[0].ttype); ; break;} ! case 366: ! #line 1673 "c-parse.y" { yyval.ttype = xref_tag (ENUMERAL_TYPE, yyvsp[0].ttype); /* In ISO C, enumerated types can be referred to only if already defined. */ if (pedantic && !COMPLETE_TYPE_P (yyval.ttype)) pedwarn ("ISO C forbids forward references to `enum' types"); ; break;} ! case 370: ! #line 1688 "c-parse.y" { if (pedantic && ! flag_isoc99) pedwarn ("comma at end of enumerator list"); ; break;} ! case 371: ! #line 1694 "c-parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} ! case 372: ! #line 1696 "c-parse.y" { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); pedwarn ("no semicolon at end of struct or union"); ; break;} ! case 373: ! #line 1701 "c-parse.y" { yyval.ttype = NULL_TREE; ; break;} ! case 374: ! #line 1703 "c-parse.y" { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[-1].ttype); ; break;} ! case 375: ! #line 1705 "c-parse.y" { if (pedantic) pedwarn ("extra semicolon in struct or union specified"); ; break;} ! case 376: ! #line 1711 "c-parse.y" { yyval.ttype = yyvsp[0].ttype; POP_DECLSPEC_STACK; ; break;} ! case 377: ! #line 1714 "c-parse.y" { /* Support for unnamed structs or unions as members of structs or unions (which is [a] useful and [b] supports *************** case 376: *** 3563,3775 **** yyval.ttype = grokfield(yyvsp[-1].filename, yyvsp[0].lineno, NULL, current_declspecs, NULL_TREE); POP_DECLSPEC_STACK; ; break;} ! case 377: ! #line 1719 "c-parse.y" { yyval.ttype = yyvsp[0].ttype; POP_DECLSPEC_STACK; ; break;} ! case 378: ! #line 1722 "c-parse.y" { if (pedantic) pedwarn ("ISO C forbids member declarations with no members"); shadow_tag(yyvsp[0].ttype); yyval.ttype = NULL_TREE; ; break;} ! case 379: ! #line 1727 "c-parse.y" { yyval.ttype = NULL_TREE; ; break;} ! case 380: ! #line 1729 "c-parse.y" { yyval.ttype = yyvsp[0].ttype; RESTORE_WARN_FLAGS (yyvsp[-1].ttype); ; break;} ! case 382: ! #line 1736 "c-parse.y" ! { yyval.ttype = chainon (yyvsp[-3].ttype, yyvsp[0].ttype); ; ! break;} ! case 384: ! #line 1742 "c-parse.y" { yyval.ttype = chainon (yyvsp[-3].ttype, yyvsp[0].ttype); ; break;} case 385: #line 1747 "c-parse.y" { yyval.ttype = grokfield (yyvsp[-3].filename, yyvsp[-2].lineno, yyvsp[-1].ttype, current_declspecs, NULL_TREE); decl_attributes (&yyval.ttype, chainon (yyvsp[0].ttype, all_prefix_attributes), 0); ; break;} ! case 386: ! #line 1751 "c-parse.y" { yyval.ttype = grokfield (yyvsp[-5].filename, yyvsp[-4].lineno, yyvsp[-3].ttype, current_declspecs, yyvsp[-1].ttype); decl_attributes (&yyval.ttype, chainon (yyvsp[0].ttype, all_prefix_attributes), 0); ; break;} ! case 387: ! #line 1754 "c-parse.y" { yyval.ttype = grokfield (yyvsp[-4].filename, yyvsp[-3].lineno, NULL_TREE, current_declspecs, yyvsp[-1].ttype); decl_attributes (&yyval.ttype, chainon (yyvsp[0].ttype, all_prefix_attributes), 0); ; break;} ! case 388: ! #line 1760 "c-parse.y" { yyval.ttype = grokfield (yyvsp[-3].filename, yyvsp[-2].lineno, yyvsp[-1].ttype, current_declspecs, NULL_TREE); decl_attributes (&yyval.ttype, chainon (yyvsp[0].ttype, all_prefix_attributes), 0); ; break;} ! case 389: ! #line 1764 "c-parse.y" { yyval.ttype = grokfield (yyvsp[-5].filename, yyvsp[-4].lineno, yyvsp[-3].ttype, current_declspecs, yyvsp[-1].ttype); decl_attributes (&yyval.ttype, chainon (yyvsp[0].ttype, all_prefix_attributes), 0); ; break;} ! case 390: ! #line 1767 "c-parse.y" { yyval.ttype = grokfield (yyvsp[-4].filename, yyvsp[-3].lineno, NULL_TREE, current_declspecs, yyvsp[-1].ttype); decl_attributes (&yyval.ttype, chainon (yyvsp[0].ttype, all_prefix_attributes), 0); ; break;} ! case 392: ! #line 1779 "c-parse.y" { if (yyvsp[-2].ttype == error_mark_node) yyval.ttype = yyvsp[-2].ttype; else yyval.ttype = chainon (yyvsp[0].ttype, yyvsp[-2].ttype); ; break;} - case 393: - #line 1784 "c-parse.y" - { yyval.ttype = error_mark_node; ; - break;} case 394: ! #line 1790 "c-parse.y" ! { yyval.ttype = build_enumerator (yyvsp[0].ttype, NULL_TREE); ; break;} case 395: ! #line 1792 "c-parse.y" ! { yyval.ttype = build_enumerator (yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 396: #line 1797 "c-parse.y" ! { pending_xref_error (); ! yyval.ttype = yyvsp[0].ttype; ; break;} case 397: ! #line 1800 "c-parse.y" ! { yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 398: #line 1805 "c-parse.y" { yyval.ttype = NULL_TREE; ; break;} ! case 400: ! #line 1811 "c-parse.y" { yyval.ttype = build_tree_list (build_tree_list (current_declspecs, NULL_TREE), all_prefix_attributes); ; break;} ! case 401: ! #line 1815 "c-parse.y" { yyval.ttype = build_tree_list (build_tree_list (current_declspecs, yyvsp[0].ttype), all_prefix_attributes); ; break;} ! case 402: ! #line 1819 "c-parse.y" { yyval.ttype = build_tree_list (build_tree_list (current_declspecs, yyvsp[-1].ttype), chainon (yyvsp[0].ttype, all_prefix_attributes)); ; break;} - case 406: - #line 1832 "c-parse.y" - { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; - break;} case 407: #line 1837 "c-parse.y" ! { yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); ; break;} case 408: ! #line 1839 "c-parse.y" ! { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 409: #line 1844 "c-parse.y" ! { yyval.ttype = yyvsp[-2].ttype ? tree_cons (yyvsp[-2].ttype, yyvsp[-1].ttype, NULL_TREE) : yyvsp[-1].ttype; ; break;} case 410: ! #line 1846 "c-parse.y" ! { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ; break;} case 411: ! #line 1848 "c-parse.y" ! { yyval.ttype = set_array_declarator_type (yyvsp[0].ttype, yyvsp[-1].ttype, 1); ; break;} case 412: ! #line 1850 "c-parse.y" ! { yyval.ttype = build_nt (CALL_EXPR, NULL_TREE, yyvsp[0].ttype, NULL_TREE); ; break;} case 413: ! #line 1852 "c-parse.y" ! { yyval.ttype = set_array_declarator_type (yyvsp[0].ttype, NULL_TREE, 1); ; break;} case 414: ! #line 1859 "c-parse.y" ! { yyval.ttype = build_array_declarator (yyvsp[-1].ttype, NULL_TREE, 0, 0); ; break;} case 415: ! #line 1861 "c-parse.y" ! { yyval.ttype = build_array_declarator (yyvsp[-1].ttype, yyvsp[-2].ttype, 0, 0); ; break;} case 416: ! #line 1863 "c-parse.y" ! { yyval.ttype = build_array_declarator (NULL_TREE, NULL_TREE, 0, 0); ; break;} case 417: ! #line 1865 "c-parse.y" ! { yyval.ttype = build_array_declarator (NULL_TREE, yyvsp[-1].ttype, 0, 0); ; break;} case 418: ! #line 1867 "c-parse.y" ! { yyval.ttype = build_array_declarator (NULL_TREE, NULL_TREE, 0, 1); ; break;} case 419: ! #line 1869 "c-parse.y" ! { yyval.ttype = build_array_declarator (NULL_TREE, yyvsp[-2].ttype, 0, 1); ; break;} case 420: ! #line 1871 "c-parse.y" { if (C_RID_CODE (yyvsp[-2].ttype) != RID_STATIC) error ("storage class specifier in array declarator"); yyval.ttype = build_array_declarator (yyvsp[-1].ttype, NULL_TREE, 1, 0); ; break;} ! case 421: ! #line 1875 "c-parse.y" { if (C_RID_CODE (yyvsp[-3].ttype) != RID_STATIC) error ("storage class specifier in array declarator"); yyval.ttype = build_array_declarator (yyvsp[-1].ttype, yyvsp[-2].ttype, 1, 0); ; break;} ! case 422: ! #line 1879 "c-parse.y" { if (C_RID_CODE (yyvsp[-2].ttype) != RID_STATIC) error ("storage class specifier in array declarator"); yyval.ttype = build_array_declarator (yyvsp[-1].ttype, yyvsp[-3].ttype, 1, 0); ; break;} ! case 425: ! #line 1894 "c-parse.y" { pedwarn ("deprecated use of label at end of compound statement"); ; break;} ! case 433: ! #line 1911 "c-parse.y" { if (pedantic && !flag_isoc99) pedwarn ("ISO C89 forbids mixed declarations and code"); ; break;} ! case 448: ! #line 1941 "c-parse.y" { pushlevel (0); clear_last_expr (); add_scope_stmt (/*begin_p=*/1, /*partial_p=*/0); ; break;} - case 449: - #line 1948 "c-parse.y" - { yyval.ttype = add_scope_stmt (/*begin_p=*/0, /*partial_p=*/0); ; - break;} case 450: #line 1953 "c-parse.y" { if (flag_isoc99) { yyval.ttype = c_begin_compound_stmt (); --- 3570,3782 ---- yyval.ttype = grokfield(yyvsp[-1].filename, yyvsp[0].lineno, NULL, current_declspecs, NULL_TREE); POP_DECLSPEC_STACK; ; break;} ! case 378: ! #line 1724 "c-parse.y" { yyval.ttype = yyvsp[0].ttype; POP_DECLSPEC_STACK; ; break;} ! case 379: ! #line 1727 "c-parse.y" { if (pedantic) pedwarn ("ISO C forbids member declarations with no members"); shadow_tag(yyvsp[0].ttype); yyval.ttype = NULL_TREE; ; break;} ! case 380: ! #line 1732 "c-parse.y" { yyval.ttype = NULL_TREE; ; break;} ! case 381: ! #line 1734 "c-parse.y" { yyval.ttype = yyvsp[0].ttype; RESTORE_WARN_FLAGS (yyvsp[-1].ttype); ; break;} ! case 383: ! #line 1741 "c-parse.y" { yyval.ttype = chainon (yyvsp[-3].ttype, yyvsp[0].ttype); ; break;} case 385: #line 1747 "c-parse.y" + { yyval.ttype = chainon (yyvsp[-3].ttype, yyvsp[0].ttype); ; + break;} + case 386: + #line 1752 "c-parse.y" { yyval.ttype = grokfield (yyvsp[-3].filename, yyvsp[-2].lineno, yyvsp[-1].ttype, current_declspecs, NULL_TREE); decl_attributes (&yyval.ttype, chainon (yyvsp[0].ttype, all_prefix_attributes), 0); ; break;} ! case 387: ! #line 1756 "c-parse.y" { yyval.ttype = grokfield (yyvsp[-5].filename, yyvsp[-4].lineno, yyvsp[-3].ttype, current_declspecs, yyvsp[-1].ttype); decl_attributes (&yyval.ttype, chainon (yyvsp[0].ttype, all_prefix_attributes), 0); ; break;} ! case 388: ! #line 1759 "c-parse.y" { yyval.ttype = grokfield (yyvsp[-4].filename, yyvsp[-3].lineno, NULL_TREE, current_declspecs, yyvsp[-1].ttype); decl_attributes (&yyval.ttype, chainon (yyvsp[0].ttype, all_prefix_attributes), 0); ; break;} ! case 389: ! #line 1765 "c-parse.y" { yyval.ttype = grokfield (yyvsp[-3].filename, yyvsp[-2].lineno, yyvsp[-1].ttype, current_declspecs, NULL_TREE); decl_attributes (&yyval.ttype, chainon (yyvsp[0].ttype, all_prefix_attributes), 0); ; break;} ! case 390: ! #line 1769 "c-parse.y" { yyval.ttype = grokfield (yyvsp[-5].filename, yyvsp[-4].lineno, yyvsp[-3].ttype, current_declspecs, yyvsp[-1].ttype); decl_attributes (&yyval.ttype, chainon (yyvsp[0].ttype, all_prefix_attributes), 0); ; break;} ! case 391: ! #line 1772 "c-parse.y" { yyval.ttype = grokfield (yyvsp[-4].filename, yyvsp[-3].lineno, NULL_TREE, current_declspecs, yyvsp[-1].ttype); decl_attributes (&yyval.ttype, chainon (yyvsp[0].ttype, all_prefix_attributes), 0); ; break;} ! case 393: ! #line 1784 "c-parse.y" { if (yyvsp[-2].ttype == error_mark_node) yyval.ttype = yyvsp[-2].ttype; else yyval.ttype = chainon (yyvsp[0].ttype, yyvsp[-2].ttype); ; break;} case 394: ! #line 1789 "c-parse.y" ! { yyval.ttype = error_mark_node; ; break;} case 395: ! #line 1795 "c-parse.y" ! { yyval.ttype = build_enumerator (yyvsp[0].ttype, NULL_TREE); ; break;} case 396: #line 1797 "c-parse.y" ! { yyval.ttype = build_enumerator (yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 397: ! #line 1802 "c-parse.y" ! { pending_xref_error (); ! yyval.ttype = yyvsp[0].ttype; ; break;} case 398: #line 1805 "c-parse.y" + { yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); ; + break;} + case 399: + #line 1810 "c-parse.y" { yyval.ttype = NULL_TREE; ; break;} ! case 401: ! #line 1816 "c-parse.y" { yyval.ttype = build_tree_list (build_tree_list (current_declspecs, NULL_TREE), all_prefix_attributes); ; break;} ! case 402: ! #line 1820 "c-parse.y" { yyval.ttype = build_tree_list (build_tree_list (current_declspecs, yyvsp[0].ttype), all_prefix_attributes); ; break;} ! case 403: ! #line 1824 "c-parse.y" { yyval.ttype = build_tree_list (build_tree_list (current_declspecs, yyvsp[-1].ttype), chainon (yyvsp[0].ttype, all_prefix_attributes)); ; break;} case 407: #line 1837 "c-parse.y" ! { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 408: ! #line 1842 "c-parse.y" ! { yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); ; break;} case 409: #line 1844 "c-parse.y" ! { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 410: ! #line 1849 "c-parse.y" ! { yyval.ttype = yyvsp[-2].ttype ? tree_cons (yyvsp[-2].ttype, yyvsp[-1].ttype, NULL_TREE) : yyvsp[-1].ttype; ; break;} case 411: ! #line 1851 "c-parse.y" ! { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ; break;} case 412: ! #line 1853 "c-parse.y" ! { yyval.ttype = set_array_declarator_type (yyvsp[0].ttype, yyvsp[-1].ttype, 1); ; break;} case 413: ! #line 1855 "c-parse.y" ! { yyval.ttype = build_nt (CALL_EXPR, NULL_TREE, yyvsp[0].ttype, NULL_TREE); ; break;} case 414: ! #line 1857 "c-parse.y" ! { yyval.ttype = set_array_declarator_type (yyvsp[0].ttype, NULL_TREE, 1); ; break;} case 415: ! #line 1864 "c-parse.y" ! { yyval.ttype = build_array_declarator (yyvsp[-1].ttype, NULL_TREE, 0, 0); ; break;} case 416: ! #line 1866 "c-parse.y" ! { yyval.ttype = build_array_declarator (yyvsp[-1].ttype, yyvsp[-2].ttype, 0, 0); ; break;} case 417: ! #line 1868 "c-parse.y" ! { yyval.ttype = build_array_declarator (NULL_TREE, NULL_TREE, 0, 0); ; break;} case 418: ! #line 1870 "c-parse.y" ! { yyval.ttype = build_array_declarator (NULL_TREE, yyvsp[-1].ttype, 0, 0); ; break;} case 419: ! #line 1872 "c-parse.y" ! { yyval.ttype = build_array_declarator (NULL_TREE, NULL_TREE, 0, 1); ; break;} case 420: ! #line 1874 "c-parse.y" ! { yyval.ttype = build_array_declarator (NULL_TREE, yyvsp[-2].ttype, 0, 1); ; ! break;} ! case 421: ! #line 1876 "c-parse.y" { if (C_RID_CODE (yyvsp[-2].ttype) != RID_STATIC) error ("storage class specifier in array declarator"); yyval.ttype = build_array_declarator (yyvsp[-1].ttype, NULL_TREE, 1, 0); ; break;} ! case 422: ! #line 1880 "c-parse.y" { if (C_RID_CODE (yyvsp[-3].ttype) != RID_STATIC) error ("storage class specifier in array declarator"); yyval.ttype = build_array_declarator (yyvsp[-1].ttype, yyvsp[-2].ttype, 1, 0); ; break;} ! case 423: ! #line 1884 "c-parse.y" { if (C_RID_CODE (yyvsp[-2].ttype) != RID_STATIC) error ("storage class specifier in array declarator"); yyval.ttype = build_array_declarator (yyvsp[-1].ttype, yyvsp[-3].ttype, 1, 0); ; break;} ! case 426: ! #line 1899 "c-parse.y" { pedwarn ("deprecated use of label at end of compound statement"); ; break;} ! case 434: ! #line 1916 "c-parse.y" { if (pedantic && !flag_isoc99) pedwarn ("ISO C89 forbids mixed declarations and code"); ; break;} ! case 449: ! #line 1946 "c-parse.y" { pushlevel (0); clear_last_expr (); add_scope_stmt (/*begin_p=*/1, /*partial_p=*/0); ; break;} case 450: #line 1953 "c-parse.y" + { yyval.ttype = add_scope_stmt (/*begin_p=*/0, /*partial_p=*/0); ; + break;} + case 451: + #line 1958 "c-parse.y" { if (flag_isoc99) { yyval.ttype = c_begin_compound_stmt (); *************** case 450: *** 3781,3788 **** yyval.ttype = NULL_TREE; ; break;} ! case 451: ! #line 1969 "c-parse.y" { if (flag_isoc99) { tree scope_stmt = add_scope_stmt (/*begin_p=*/0, /*partial_p=*/0); --- 3788,3795 ---- yyval.ttype = NULL_TREE; ; break;} ! case 452: ! #line 1974 "c-parse.y" { if (flag_isoc99) { tree scope_stmt = add_scope_stmt (/*begin_p=*/0, /*partial_p=*/0); *************** case 451: *** 3794,3806 **** else yyval.ttype = NULL_TREE; ; break;} ! case 453: ! #line 1986 "c-parse.y" { if (pedantic) pedwarn ("ISO C forbids label declarations"); ; break;} ! case 456: ! #line 1997 "c-parse.y" { tree link; for (link = yyvsp[-1].ttype; link; link = TREE_CHAIN (link)) { --- 3801,3813 ---- else yyval.ttype = NULL_TREE; ; break;} ! case 454: ! #line 1991 "c-parse.y" { if (pedantic) pedwarn ("ISO C forbids label declarations"); ; break;} ! case 457: ! #line 2002 "c-parse.y" { tree link; for (link = yyvsp[-1].ttype; link; link = TREE_CHAIN (link)) { *************** case 456: *** 3810,3837 **** } ; break;} ! case 457: ! #line 2011 "c-parse.y" {; break;} ! case 459: ! #line 2015 "c-parse.y" { compstmt_count++; yyval.ttype = c_begin_compound_stmt (); ; break;} ! case 460: ! #line 2020 "c-parse.y" { yyval.ttype = convert (void_type_node, integer_zero_node); ; break;} ! case 461: ! #line 2022 "c-parse.y" { yyval.ttype = poplevel (kept_level_p (), 1, 0); SCOPE_STMT_BLOCK (TREE_PURPOSE (yyvsp[0].ttype)) = SCOPE_STMT_BLOCK (TREE_VALUE (yyvsp[0].ttype)) = yyval.ttype; ; break;} ! case 464: ! #line 2035 "c-parse.y" { if (current_function_decl == 0) { error ("braced-group within expression allowed only inside a function"); --- 3817,3844 ---- } ; break;} ! case 458: ! #line 2016 "c-parse.y" {; break;} ! case 460: ! #line 2020 "c-parse.y" { compstmt_count++; yyval.ttype = c_begin_compound_stmt (); ; break;} ! case 461: ! #line 2025 "c-parse.y" { yyval.ttype = convert (void_type_node, integer_zero_node); ; break;} ! case 462: ! #line 2027 "c-parse.y" { yyval.ttype = poplevel (kept_level_p (), 1, 0); SCOPE_STMT_BLOCK (TREE_PURPOSE (yyvsp[0].ttype)) = SCOPE_STMT_BLOCK (TREE_VALUE (yyvsp[0].ttype)) = yyval.ttype; ; break;} ! case 465: ! #line 2040 "c-parse.y" { if (current_function_decl == 0) { error ("braced-group within expression allowed only inside a function"); *************** case 464: *** 3847,3876 **** yyval.ttype = add_stmt (build_stmt (COMPOUND_STMT, last_tree)); ; break;} ! case 465: ! #line 2052 "c-parse.y" { RECHAIN_STMTS (yyvsp[-1].ttype, COMPOUND_BODY (yyvsp[-1].ttype)); last_expr_type = NULL_TREE; yyval.ttype = yyvsp[-1].ttype; ; break;} ! case 466: ! #line 2060 "c-parse.y" { c_finish_then (); ; break;} ! case 468: ! #line 2077 "c-parse.y" { yyval.ttype = c_begin_if_stmt (); ; break;} ! case 469: ! #line 2079 "c-parse.y" { c_expand_start_cond (truthvalue_conversion (yyvsp[-1].ttype), compstmt_count,yyvsp[-3].ttype); yyval.itype = stmt_count; if_stmt_file = yyvsp[-7].filename; if_stmt_line = yyvsp[-6].lineno; ; break;} ! case 470: ! #line 2091 "c-parse.y" { stmt_count++; compstmt_count++; yyval.ttype --- 3854,3883 ---- yyval.ttype = add_stmt (build_stmt (COMPOUND_STMT, last_tree)); ; break;} ! case 466: ! #line 2057 "c-parse.y" { RECHAIN_STMTS (yyvsp[-1].ttype, COMPOUND_BODY (yyvsp[-1].ttype)); last_expr_type = NULL_TREE; yyval.ttype = yyvsp[-1].ttype; ; break;} ! case 467: ! #line 2065 "c-parse.y" { c_finish_then (); ; break;} ! case 469: ! #line 2082 "c-parse.y" { yyval.ttype = c_begin_if_stmt (); ; break;} ! case 470: ! #line 2084 "c-parse.y" { c_expand_start_cond (truthvalue_conversion (yyvsp[-1].ttype), compstmt_count,yyvsp[-3].ttype); yyval.itype = stmt_count; if_stmt_file = yyvsp[-7].filename; if_stmt_line = yyvsp[-6].lineno; ; break;} ! case 471: ! #line 2096 "c-parse.y" { stmt_count++; compstmt_count++; yyval.ttype *************** case 470: *** 3882,3911 **** RTL-generation time. */ DO_COND (yyval.ttype) = error_mark_node; ; break;} ! case 471: ! #line 2102 "c-parse.y" { yyval.ttype = yyvsp[-2].ttype; RECHAIN_STMTS (yyval.ttype, DO_BODY (yyval.ttype)); ; break;} ! case 472: ! #line 2110 "c-parse.y" { if (yychar == YYEMPTY) yychar = YYLEX; yyval.filename = input_filename; ; break;} ! case 473: ! #line 2116 "c-parse.y" { if (yychar == YYEMPTY) yychar = YYLEX; yyval.lineno = lineno; ; break;} ! case 476: ! #line 2129 "c-parse.y" { if (flag_isoc99) RECHAIN_STMTS (yyvsp[-2].ttype, COMPOUND_BODY (yyvsp[-2].ttype)); ; break;} ! case 477: ! #line 2135 "c-parse.y" { if (yyvsp[0].ttype) { STMT_LINENO (yyvsp[0].ttype) = yyvsp[-1].lineno; --- 3889,3918 ---- RTL-generation time. */ DO_COND (yyval.ttype) = error_mark_node; ; break;} ! case 472: ! #line 2107 "c-parse.y" { yyval.ttype = yyvsp[-2].ttype; RECHAIN_STMTS (yyval.ttype, DO_BODY (yyval.ttype)); ; break;} ! case 473: ! #line 2115 "c-parse.y" { if (yychar == YYEMPTY) yychar = YYLEX; yyval.filename = input_filename; ; break;} ! case 474: ! #line 2121 "c-parse.y" { if (yychar == YYEMPTY) yychar = YYLEX; yyval.lineno = lineno; ; break;} ! case 477: ! #line 2134 "c-parse.y" { if (flag_isoc99) RECHAIN_STMTS (yyvsp[-2].ttype, COMPOUND_BODY (yyvsp[-2].ttype)); ; break;} ! case 478: ! #line 2140 "c-parse.y" { if (yyvsp[0].ttype) { STMT_LINENO (yyvsp[0].ttype) = yyvsp[-1].lineno; *************** case 477: *** 3917,3944 **** } ; break;} ! case 478: ! #line 2149 "c-parse.y" { if (yyvsp[0].ttype) { STMT_LINENO (yyvsp[0].ttype) = yyvsp[-1].lineno; } ; break;} ! case 479: ! #line 2158 "c-parse.y" { c_expand_start_else (); yyvsp[-1].itype = stmt_count; ; break;} ! case 480: ! #line 2161 "c-parse.y" { c_finish_else (); c_expand_end_cond (); if (extra_warnings && stmt_count == yyvsp[-3].itype) warning ("empty body in an else-statement"); ; break;} ! case 481: ! #line 2166 "c-parse.y" { c_expand_end_cond (); /* This warning is here instead of in simple_if, because we do not want a warning if an empty if is followed by an --- 3924,3951 ---- } ; break;} ! case 479: ! #line 2154 "c-parse.y" { if (yyvsp[0].ttype) { STMT_LINENO (yyvsp[0].ttype) = yyvsp[-1].lineno; } ; break;} ! case 480: ! #line 2163 "c-parse.y" { c_expand_start_else (); yyvsp[-1].itype = stmt_count; ; break;} ! case 481: ! #line 2166 "c-parse.y" { c_finish_else (); c_expand_end_cond (); if (extra_warnings && stmt_count == yyvsp[-3].itype) warning ("empty body in an else-statement"); ; break;} ! case 482: ! #line 2171 "c-parse.y" { c_expand_end_cond (); /* This warning is here instead of in simple_if, because we do not want a warning if an empty if is followed by an *************** case 481: *** 3948,4079 **** warning_with_file_and_line (if_stmt_file, if_stmt_line, "empty body in an if-statement"); ; break;} ! case 482: ! #line 2178 "c-parse.y" { c_expand_end_cond (); ; break;} ! case 483: ! #line 2188 "c-parse.y" { stmt_count++; yyval.ttype = c_begin_while_stmt (); ; break;} ! case 484: ! #line 2191 "c-parse.y" { yyvsp[-1].ttype = truthvalue_conversion (yyvsp[-1].ttype); c_finish_while_stmt_cond (truthvalue_conversion (yyvsp[-1].ttype), yyvsp[-3].ttype); yyval.ttype = add_stmt (yyvsp[-3].ttype); ; break;} ! case 485: ! #line 2196 "c-parse.y" { RECHAIN_STMTS (yyvsp[-1].ttype, WHILE_BODY (yyvsp[-1].ttype)); ; break;} ! case 486: ! #line 2199 "c-parse.y" { DO_COND (yyvsp[-4].ttype) = truthvalue_conversion (yyvsp[-2].ttype); ; break;} ! case 487: ! #line 2201 "c-parse.y" { ; break;} ! case 488: ! #line 2203 "c-parse.y" { yyval.ttype = build_stmt (FOR_STMT, NULL_TREE, NULL_TREE, NULL_TREE, NULL_TREE); add_stmt (yyval.ttype); ; break;} ! case 489: ! #line 2207 "c-parse.y" { stmt_count++; RECHAIN_STMTS (yyvsp[-2].ttype, FOR_INIT_STMT (yyvsp[-2].ttype)); ; break;} ! case 490: ! #line 2210 "c-parse.y" { if (yyvsp[-1].ttype) FOR_COND (yyvsp[-5].ttype) = truthvalue_conversion (yyvsp[-1].ttype); ; break;} ! case 491: ! #line 2213 "c-parse.y" { FOR_EXPR (yyvsp[-8].ttype) = yyvsp[-1].ttype; ; break;} ! case 492: ! #line 2215 "c-parse.y" { RECHAIN_STMTS (yyvsp[-10].ttype, FOR_BODY (yyvsp[-10].ttype)); ; break;} ! case 493: ! #line 2217 "c-parse.y" { stmt_count++; yyval.ttype = c_start_case (yyvsp[-1].ttype); ; break;} - case 494: - #line 2220 "c-parse.y" - { c_finish_case (); ; - break;} case 495: #line 2225 "c-parse.y" ! { add_stmt (build_stmt (EXPR_STMT, yyvsp[-1].ttype)); ; break;} case 496: ! #line 2227 "c-parse.y" ! { check_for_loop_decls (); ; break;} case 497: ! #line 2233 "c-parse.y" ! { stmt_count++; yyval.ttype = yyvsp[0].ttype; ; break;} case 498: ! #line 2235 "c-parse.y" { stmt_count++; yyval.ttype = c_expand_expr_stmt (yyvsp[-1].ttype); ; break;} ! case 499: ! #line 2238 "c-parse.y" { if (flag_isoc99) RECHAIN_STMTS (yyvsp[-2].ttype, COMPOUND_BODY (yyvsp[-2].ttype)); yyval.ttype = NULL_TREE; ; break;} - case 500: - #line 2242 "c-parse.y" - { stmt_count++; - yyval.ttype = add_stmt (build_break_stmt ()); ; - break;} case 501: ! #line 2245 "c-parse.y" { stmt_count++; ! yyval.ttype = add_stmt (build_continue_stmt ()); ; break;} case 502: ! #line 2248 "c-parse.y" { stmt_count++; ! yyval.ttype = c_expand_return (NULL_TREE); ; break;} case 503: ! #line 2251 "c-parse.y" { stmt_count++; ! yyval.ttype = c_expand_return (yyvsp[-1].ttype); ; break;} case 504: ! #line 2254 "c-parse.y" { stmt_count++; ! yyval.ttype = simple_asm_stmt (yyvsp[-2].ttype); ; break;} case 505: ! #line 2258 "c-parse.y" { stmt_count++; ! yyval.ttype = build_asm_stmt (yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE); ; break;} case 506: #line 2263 "c-parse.y" { stmt_count++; ! yyval.ttype = build_asm_stmt (yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE); ; break;} case 507: #line 2268 "c-parse.y" { stmt_count++; ! yyval.ttype = build_asm_stmt (yyvsp[-10].ttype, yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype); ; break;} case 508: ! #line 2271 "c-parse.y" { tree decl; stmt_count++; decl = lookup_label (yyvsp[-1].ttype); --- 3955,4086 ---- warning_with_file_and_line (if_stmt_file, if_stmt_line, "empty body in an if-statement"); ; break;} ! case 483: ! #line 2183 "c-parse.y" { c_expand_end_cond (); ; break;} ! case 484: ! #line 2193 "c-parse.y" { stmt_count++; yyval.ttype = c_begin_while_stmt (); ; break;} ! case 485: ! #line 2196 "c-parse.y" { yyvsp[-1].ttype = truthvalue_conversion (yyvsp[-1].ttype); c_finish_while_stmt_cond (truthvalue_conversion (yyvsp[-1].ttype), yyvsp[-3].ttype); yyval.ttype = add_stmt (yyvsp[-3].ttype); ; break;} ! case 486: ! #line 2201 "c-parse.y" { RECHAIN_STMTS (yyvsp[-1].ttype, WHILE_BODY (yyvsp[-1].ttype)); ; break;} ! case 487: ! #line 2204 "c-parse.y" { DO_COND (yyvsp[-4].ttype) = truthvalue_conversion (yyvsp[-2].ttype); ; break;} ! case 488: ! #line 2206 "c-parse.y" { ; break;} ! case 489: ! #line 2208 "c-parse.y" { yyval.ttype = build_stmt (FOR_STMT, NULL_TREE, NULL_TREE, NULL_TREE, NULL_TREE); add_stmt (yyval.ttype); ; break;} ! case 490: ! #line 2212 "c-parse.y" { stmt_count++; RECHAIN_STMTS (yyvsp[-2].ttype, FOR_INIT_STMT (yyvsp[-2].ttype)); ; break;} ! case 491: ! #line 2215 "c-parse.y" { if (yyvsp[-1].ttype) FOR_COND (yyvsp[-5].ttype) = truthvalue_conversion (yyvsp[-1].ttype); ; break;} ! case 492: ! #line 2218 "c-parse.y" { FOR_EXPR (yyvsp[-8].ttype) = yyvsp[-1].ttype; ; break;} ! case 493: ! #line 2220 "c-parse.y" { RECHAIN_STMTS (yyvsp[-10].ttype, FOR_BODY (yyvsp[-10].ttype)); ; break;} ! case 494: ! #line 2222 "c-parse.y" { stmt_count++; yyval.ttype = c_start_case (yyvsp[-1].ttype); ; break;} case 495: #line 2225 "c-parse.y" ! { c_finish_case (); ; break;} case 496: ! #line 2230 "c-parse.y" ! { add_stmt (build_stmt (EXPR_STMT, yyvsp[-1].ttype)); ; break;} case 497: ! #line 2232 "c-parse.y" ! { check_for_loop_decls (); ; break;} case 498: ! #line 2238 "c-parse.y" ! { stmt_count++; yyval.ttype = yyvsp[0].ttype; ; ! break;} ! case 499: ! #line 2240 "c-parse.y" { stmt_count++; yyval.ttype = c_expand_expr_stmt (yyvsp[-1].ttype); ; break;} ! case 500: ! #line 2243 "c-parse.y" { if (flag_isoc99) RECHAIN_STMTS (yyvsp[-2].ttype, COMPOUND_BODY (yyvsp[-2].ttype)); yyval.ttype = NULL_TREE; ; break;} case 501: ! #line 2247 "c-parse.y" { stmt_count++; ! yyval.ttype = add_stmt (build_break_stmt ()); ; break;} case 502: ! #line 2250 "c-parse.y" { stmt_count++; ! yyval.ttype = add_stmt (build_continue_stmt ()); ; break;} case 503: ! #line 2253 "c-parse.y" { stmt_count++; ! yyval.ttype = c_expand_return (NULL_TREE); ; break;} case 504: ! #line 2256 "c-parse.y" { stmt_count++; ! yyval.ttype = c_expand_return (yyvsp[-1].ttype); ; break;} case 505: ! #line 2259 "c-parse.y" { stmt_count++; ! yyval.ttype = simple_asm_stmt (yyvsp[-2].ttype); ; break;} case 506: #line 2263 "c-parse.y" { stmt_count++; ! yyval.ttype = build_asm_stmt (yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE); ; break;} case 507: #line 2268 "c-parse.y" { stmt_count++; ! yyval.ttype = build_asm_stmt (yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE); ; break;} case 508: ! #line 2273 "c-parse.y" ! { stmt_count++; ! yyval.ttype = build_asm_stmt (yyvsp[-10].ttype, yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype); ; ! break;} ! case 509: ! #line 2276 "c-parse.y" { tree decl; stmt_count++; decl = lookup_label (yyvsp[-1].ttype); *************** case 508: *** 4086,4120 **** yyval.ttype = NULL_TREE; ; break;} ! case 509: ! #line 2283 "c-parse.y" { if (pedantic) pedwarn ("ISO C forbids `goto *expr;'"); stmt_count++; yyvsp[-1].ttype = convert (ptr_type_node, yyvsp[-1].ttype); yyval.ttype = add_stmt (build_stmt (GOTO_STMT, yyvsp[-1].ttype)); ; break;} ! case 510: ! #line 2289 "c-parse.y" { yyval.ttype = NULL_TREE; ; break;} ! case 511: ! #line 2297 "c-parse.y" { stmt_count++; yyval.ttype = do_case (yyvsp[-1].ttype, NULL_TREE); ; break;} ! case 512: ! #line 2300 "c-parse.y" { stmt_count++; yyval.ttype = do_case (yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} ! case 513: ! #line 2303 "c-parse.y" { stmt_count++; yyval.ttype = do_case (NULL_TREE, NULL_TREE); ; break;} ! case 514: ! #line 2306 "c-parse.y" { tree label = define_label (yyvsp[-3].filename, yyvsp[-2].lineno, yyvsp[-4].ttype); stmt_count++; if (label) --- 4093,4127 ---- yyval.ttype = NULL_TREE; ; break;} ! case 510: ! #line 2288 "c-parse.y" { if (pedantic) pedwarn ("ISO C forbids `goto *expr;'"); stmt_count++; yyvsp[-1].ttype = convert (ptr_type_node, yyvsp[-1].ttype); yyval.ttype = add_stmt (build_stmt (GOTO_STMT, yyvsp[-1].ttype)); ; break;} ! case 511: ! #line 2294 "c-parse.y" { yyval.ttype = NULL_TREE; ; break;} ! case 512: ! #line 2302 "c-parse.y" { stmt_count++; yyval.ttype = do_case (yyvsp[-1].ttype, NULL_TREE); ; break;} ! case 513: ! #line 2305 "c-parse.y" { stmt_count++; yyval.ttype = do_case (yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} ! case 514: ! #line 2308 "c-parse.y" { stmt_count++; yyval.ttype = do_case (NULL_TREE, NULL_TREE); ; break;} ! case 515: ! #line 2311 "c-parse.y" { tree label = define_label (yyvsp[-3].filename, yyvsp[-2].lineno, yyvsp[-4].ttype); stmt_count++; if (label) *************** case 514: *** 4126,4182 **** yyval.ttype = NULL_TREE; ; break;} ! case 515: ! #line 2322 "c-parse.y" { emit_line_note (input_filename, lineno); yyval.ttype = NULL_TREE; ; break;} - case 516: - #line 2325 "c-parse.y" - { emit_line_note (input_filename, lineno); ; - break;} case 517: #line 2330 "c-parse.y" ! { yyval.ttype = NULL_TREE; ; break;} ! case 519: ! #line 2337 "c-parse.y" { yyval.ttype = NULL_TREE; ; break;} ! case 522: ! #line 2344 "c-parse.y" ! { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 523: #line 2349 "c-parse.y" ! { yyval.ttype = build_tree_list (build_tree_list (NULL_TREE, yyvsp[-3].ttype), yyvsp[-1].ttype); ; break;} case 524: ! #line 2351 "c-parse.y" ! { yyval.ttype = build_tree_list (build_tree_list (yyvsp[-5].ttype, yyvsp[-3].ttype), yyvsp[-1].ttype); ; break;} case 525: #line 2356 "c-parse.y" ! { yyval.ttype = tree_cons (NULL_TREE, combine_strings (yyvsp[0].ttype), NULL_TREE); ; break;} case 526: ! #line 2358 "c-parse.y" ! { yyval.ttype = tree_cons (NULL_TREE, combine_strings (yyvsp[0].ttype), yyvsp[-2].ttype); ; break;} case 527: ! #line 2368 "c-parse.y" { pushlevel (0); clear_parm_order (); declare_parm_level (0); ; break;} ! case 528: ! #line 2372 "c-parse.y" { yyval.ttype = yyvsp[0].ttype; parmlist_tags_warning (); poplevel (0, 0, 0); ; break;} ! case 530: ! #line 2380 "c-parse.y" { tree parm; if (pedantic) pedwarn ("ISO C forbids forward parameter declarations"); --- 4133,4189 ---- yyval.ttype = NULL_TREE; ; break;} ! case 516: ! #line 2327 "c-parse.y" { emit_line_note (input_filename, lineno); yyval.ttype = NULL_TREE; ; break;} case 517: #line 2330 "c-parse.y" ! { emit_line_note (input_filename, lineno); ; break;} ! case 518: ! #line 2335 "c-parse.y" { yyval.ttype = NULL_TREE; ; break;} ! case 520: ! #line 2342 "c-parse.y" ! { yyval.ttype = NULL_TREE; ; break;} case 523: #line 2349 "c-parse.y" ! { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 524: ! #line 2354 "c-parse.y" ! { yyval.ttype = build_tree_list (build_tree_list (NULL_TREE, yyvsp[-3].ttype), yyvsp[-1].ttype); ; break;} case 525: #line 2356 "c-parse.y" ! { yyval.ttype = build_tree_list (build_tree_list (yyvsp[-5].ttype, yyvsp[-3].ttype), yyvsp[-1].ttype); ; break;} case 526: ! #line 2361 "c-parse.y" ! { yyval.ttype = tree_cons (NULL_TREE, combine_strings (yyvsp[0].ttype), NULL_TREE); ; break;} case 527: ! #line 2363 "c-parse.y" ! { yyval.ttype = tree_cons (NULL_TREE, combine_strings (yyvsp[0].ttype), yyvsp[-2].ttype); ; ! break;} ! case 528: ! #line 2373 "c-parse.y" { pushlevel (0); clear_parm_order (); declare_parm_level (0); ; break;} ! case 529: ! #line 2377 "c-parse.y" { yyval.ttype = yyvsp[0].ttype; parmlist_tags_warning (); poplevel (0, 0, 0); ; break;} ! case 531: ! #line 2385 "c-parse.y" { tree parm; if (pedantic) pedwarn ("ISO C forbids forward parameter declarations"); *************** case 530: *** 4185,4209 **** TREE_ASM_WRITTEN (parm) = 1; clear_parm_order (); ; break;} ! case 531: ! #line 2388 "c-parse.y" { /* Dummy action so attributes are in known place on parser stack. */ ; break;} ! case 532: ! #line 2391 "c-parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} ! case 533: ! #line 2393 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, NULL_TREE, NULL_TREE); ; break;} ! case 534: ! #line 2399 "c-parse.y" { yyval.ttype = get_parm_info (0); ; break;} ! case 535: ! #line 2401 "c-parse.y" { yyval.ttype = get_parm_info (0); /* Gcc used to allow this as an extension. However, it does not work for all targets, and thus has been disabled. --- 4192,4216 ---- TREE_ASM_WRITTEN (parm) = 1; clear_parm_order (); ; break;} ! case 532: ! #line 2393 "c-parse.y" { /* Dummy action so attributes are in known place on parser stack. */ ; break;} ! case 533: ! #line 2396 "c-parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} ! case 534: ! #line 2398 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, NULL_TREE, NULL_TREE); ; break;} ! case 535: ! #line 2404 "c-parse.y" { yyval.ttype = get_parm_info (0); ; break;} ! case 536: ! #line 2406 "c-parse.y" { yyval.ttype = get_parm_info (0); /* Gcc used to allow this as an extension. However, it does not work for all targets, and thus has been disabled. *************** case 535: *** 4214,4316 **** error ("ISO C requires a named argument before `...'"); ; break;} - case 536: - #line 2411 "c-parse.y" - { yyval.ttype = get_parm_info (1); ; - break;} case 537: ! #line 2413 "c-parse.y" ! { yyval.ttype = get_parm_info (0); ; break;} case 538: #line 2418 "c-parse.y" ! { push_parm_decl (yyvsp[0].ttype); ; break;} case 539: ! #line 2420 "c-parse.y" { push_parm_decl (yyvsp[0].ttype); ; break;} case 540: ! #line 2427 "c-parse.y" { yyval.ttype = build_tree_list (build_tree_list (current_declspecs, yyvsp[-1].ttype), chainon (yyvsp[0].ttype, all_prefix_attributes)); POP_DECLSPEC_STACK; ; break;} ! case 541: ! #line 2432 "c-parse.y" { yyval.ttype = build_tree_list (build_tree_list (current_declspecs, yyvsp[-1].ttype), chainon (yyvsp[0].ttype, all_prefix_attributes)); POP_DECLSPEC_STACK; ; break;} ! case 542: ! #line 2437 "c-parse.y" { yyval.ttype = yyvsp[0].ttype; POP_DECLSPEC_STACK; ; break;} ! case 543: ! #line 2440 "c-parse.y" { yyval.ttype = build_tree_list (build_tree_list (current_declspecs, yyvsp[-1].ttype), chainon (yyvsp[0].ttype, all_prefix_attributes)); POP_DECLSPEC_STACK; ; break;} ! case 544: ! #line 2446 "c-parse.y" { yyval.ttype = yyvsp[0].ttype; POP_DECLSPEC_STACK; ; break;} ! case 545: ! #line 2454 "c-parse.y" { yyval.ttype = build_tree_list (build_tree_list (current_declspecs, yyvsp[-1].ttype), chainon (yyvsp[0].ttype, all_prefix_attributes)); POP_DECLSPEC_STACK; ; break;} ! case 546: ! #line 2459 "c-parse.y" { yyval.ttype = build_tree_list (build_tree_list (current_declspecs, yyvsp[-1].ttype), chainon (yyvsp[0].ttype, all_prefix_attributes)); POP_DECLSPEC_STACK; ; break;} ! case 547: ! #line 2464 "c-parse.y" { yyval.ttype = yyvsp[0].ttype; POP_DECLSPEC_STACK; ; break;} ! case 548: ! #line 2467 "c-parse.y" { yyval.ttype = build_tree_list (build_tree_list (current_declspecs, yyvsp[-1].ttype), chainon (yyvsp[0].ttype, all_prefix_attributes)); POP_DECLSPEC_STACK; ; break;} ! case 549: ! #line 2473 "c-parse.y" { yyval.ttype = yyvsp[0].ttype; POP_DECLSPEC_STACK; ; break;} ! case 550: ! #line 2479 "c-parse.y" { prefix_attributes = chainon (prefix_attributes, yyvsp[-3].ttype); all_prefix_attributes = prefix_attributes; ; break;} ! case 551: ! #line 2488 "c-parse.y" { pushlevel (0); clear_parm_order (); declare_parm_level (1); ; break;} ! case 552: ! #line 2492 "c-parse.y" { yyval.ttype = yyvsp[0].ttype; parmlist_tags_warning (); poplevel (0, 0, 0); ; break;} ! case 554: ! #line 2500 "c-parse.y" { tree t; for (t = yyvsp[-1].ttype; t; t = TREE_CHAIN (t)) if (TREE_VALUE (t) == NULL_TREE) --- 4221,4323 ---- error ("ISO C requires a named argument before `...'"); ; break;} case 537: ! #line 2416 "c-parse.y" ! { yyval.ttype = get_parm_info (1); ; break;} case 538: #line 2418 "c-parse.y" ! { yyval.ttype = get_parm_info (0); ; break;} case 539: ! #line 2423 "c-parse.y" { push_parm_decl (yyvsp[0].ttype); ; break;} case 540: ! #line 2425 "c-parse.y" ! { push_parm_decl (yyvsp[0].ttype); ; ! break;} ! case 541: ! #line 2432 "c-parse.y" { yyval.ttype = build_tree_list (build_tree_list (current_declspecs, yyvsp[-1].ttype), chainon (yyvsp[0].ttype, all_prefix_attributes)); POP_DECLSPEC_STACK; ; break;} ! case 542: ! #line 2437 "c-parse.y" { yyval.ttype = build_tree_list (build_tree_list (current_declspecs, yyvsp[-1].ttype), chainon (yyvsp[0].ttype, all_prefix_attributes)); POP_DECLSPEC_STACK; ; break;} ! case 543: ! #line 2442 "c-parse.y" { yyval.ttype = yyvsp[0].ttype; POP_DECLSPEC_STACK; ; break;} ! case 544: ! #line 2445 "c-parse.y" { yyval.ttype = build_tree_list (build_tree_list (current_declspecs, yyvsp[-1].ttype), chainon (yyvsp[0].ttype, all_prefix_attributes)); POP_DECLSPEC_STACK; ; break;} ! case 545: ! #line 2451 "c-parse.y" { yyval.ttype = yyvsp[0].ttype; POP_DECLSPEC_STACK; ; break;} ! case 546: ! #line 2459 "c-parse.y" { yyval.ttype = build_tree_list (build_tree_list (current_declspecs, yyvsp[-1].ttype), chainon (yyvsp[0].ttype, all_prefix_attributes)); POP_DECLSPEC_STACK; ; break;} ! case 547: ! #line 2464 "c-parse.y" { yyval.ttype = build_tree_list (build_tree_list (current_declspecs, yyvsp[-1].ttype), chainon (yyvsp[0].ttype, all_prefix_attributes)); POP_DECLSPEC_STACK; ; break;} ! case 548: ! #line 2469 "c-parse.y" { yyval.ttype = yyvsp[0].ttype; POP_DECLSPEC_STACK; ; break;} ! case 549: ! #line 2472 "c-parse.y" { yyval.ttype = build_tree_list (build_tree_list (current_declspecs, yyvsp[-1].ttype), chainon (yyvsp[0].ttype, all_prefix_attributes)); POP_DECLSPEC_STACK; ; break;} ! case 550: ! #line 2478 "c-parse.y" { yyval.ttype = yyvsp[0].ttype; POP_DECLSPEC_STACK; ; break;} ! case 551: ! #line 2484 "c-parse.y" { prefix_attributes = chainon (prefix_attributes, yyvsp[-3].ttype); all_prefix_attributes = prefix_attributes; ; break;} ! case 552: ! #line 2493 "c-parse.y" { pushlevel (0); clear_parm_order (); declare_parm_level (1); ; break;} ! case 553: ! #line 2497 "c-parse.y" { yyval.ttype = yyvsp[0].ttype; parmlist_tags_warning (); poplevel (0, 0, 0); ; break;} ! case 555: ! #line 2505 "c-parse.y" { tree t; for (t = yyvsp[-1].ttype; t; t = TREE_CHAIN (t)) if (TREE_VALUE (t) == NULL_TREE) *************** case 554: *** 4325,4348 **** YYERROR1; ; break;} - case 555: - #line 2518 "c-parse.y" - { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ; - break;} case 556: ! #line 2520 "c-parse.y" ! { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ; break;} case 557: ! #line 2526 "c-parse.y" ! { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ; break;} case 558: ! #line 2528 "c-parse.y" ! { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ; break;} case 559: #line 2533 "c-parse.y" { yyval.ttype = SAVE_WARN_FLAGS(); pedantic = 0; warn_pointer_arith = 0; --- 4332,4355 ---- YYERROR1; ; break;} case 556: ! #line 2523 "c-parse.y" ! { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ; break;} case 557: ! #line 2525 "c-parse.y" ! { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ; break;} case 558: ! #line 2531 "c-parse.y" ! { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ; break;} case 559: #line 2533 "c-parse.y" + { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ; + break;} + case 560: + #line 2538 "c-parse.y" { yyval.ttype = SAVE_WARN_FLAGS(); pedantic = 0; warn_pointer_arith = 0; *************** yyerrhandle: *** 4570,4576 **** } return 1; } ! #line 2539 "c-parse.y" /* yylex() is a thin wrapper around c_lex(), all it does is translate --- 4577,4583 ---- } return 1; } ! #line 2544 "c-parse.y" /* yylex() is a thin wrapper around c_lex(), all it does is translate diff -Nrc3pad gcc-3.2/gcc/c-parse.in gcc-3.2.1/gcc/c-parse.in *** gcc-3.2/gcc/c-parse.in Tue Apr 16 22:05:54 2002 --- gcc-3.2.1/gcc/c-parse.in Mon Oct 21 18:37:41 2002 *************** alignof: *** 534,539 **** --- 534,543 ---- ALIGNOF { skip_evaluation++; } ; + typeof: + TYPEOF { skip_evaluation++; } + ; + cast_expr: unary_expr | '(' typename ')' cast_expr %prec UNARY *************** ifobjc *** 1376,1385 **** | non_empty_protocolrefs { $$ = get_object_reference ($1); } end ifobjc ! | TYPEOF '(' expr ')' ! { $$ = TREE_TYPE ($3); } ! | TYPEOF '(' typename ')' ! { $$ = groktypename ($3); } ; /* typespec_nonreserved_attr does not exist. */ --- 1380,1389 ---- | non_empty_protocolrefs { $$ = get_object_reference ($1); } end ifobjc ! | typeof '(' expr ')' ! { skip_evaluation--; $$ = TREE_TYPE ($3); } ! | typeof '(' typename ')' ! { skip_evaluation--; $$ = groktypename ($3); } ; /* typespec_nonreserved_attr does not exist. */ *************** initelt: *** 1523,1528 **** --- 1527,1533 ---- if (pedantic) pedwarn ("obsolete use of designated initializer with `:'"); } initval + {} | initval ; *************** classdecl: *** 2696,2707 **** --- 2701,2714 ---- { objc_declare_class ($2); } + ; aliasdecl: ALIAS identifier identifier ';' { objc_declare_alias ($2, $3); } + ; classdef: INTERFACE identifier protocolrefs '{' diff -Nrc3pad gcc-3.2/gcc/c-parse.y gcc-3.2.1/gcc/c-parse.y *** gcc-3.2/gcc/c-parse.y Wed Aug 14 09:32:35 2002 --- gcc-3.2.1/gcc/c-parse.y Tue Nov 19 18:13:17 2002 *************** alignof: *** 488,493 **** --- 488,497 ---- ALIGNOF { skip_evaluation++; } ; + typeof: + TYPEOF { skip_evaluation++; } + ; + cast_expr: unary_expr | '(' typename ')' cast_expr %prec UNARY *************** typespec_nonreserved_nonattr: *** 1283,1292 **** { /* For a typedef name, record the meaning, not the name. In case of `foo foo, bar;'. */ $$ = lookup_name ($1); } ! | TYPEOF '(' expr ')' ! { $$ = TREE_TYPE ($3); } ! | TYPEOF '(' typename ')' ! { $$ = groktypename ($3); } ; /* typespec_nonreserved_attr does not exist. */ --- 1287,1296 ---- { /* For a typedef name, record the meaning, not the name. In case of `foo foo, bar;'. */ $$ = lookup_name ($1); } ! | typeof '(' expr ')' ! { skip_evaluation--; $$ = TREE_TYPE ($3); } ! | typeof '(' typename ')' ! { skip_evaluation--; $$ = groktypename ($3); } ; /* typespec_nonreserved_attr does not exist. */ *************** initelt: *** 1430,1435 **** --- 1434,1440 ---- if (pedantic) pedwarn ("obsolete use of designated initializer with `:'"); } initval + {} | initval ; diff -Nrc3pad gcc-3.2/gcc/c-tree.h gcc-3.2.1/gcc/c-tree.h *** gcc-3.2/gcc/c-tree.h Thu Mar 28 18:49:58 2002 --- gcc-3.2.1/gcc/c-tree.h Sun Sep 1 20:11:07 2002 *************** extern int current_function_returns_null *** 287,297 **** extern int current_function_returns_abnormally; - /* Nonzero means the expression being parsed will never be evaluated. - This is a count, since unevaluated expressions can nest. */ - - extern int skip_evaluation; - /* Nonzero means `$' can be in an identifier. */ extern int dollars_in_ident; --- 287,292 ---- diff -Nrc3pad gcc-3.2/gcc/c-typeck.c gcc-3.2.1/gcc/c-typeck.c *** gcc-3.2/gcc/c-typeck.c Fri Mar 22 01:53:39 2002 --- gcc-3.2.1/gcc/c-typeck.c Sun Sep 1 20:11:07 2002 *************** build_external_ref (id, fun) *** 1493,1499 **** if (TREE_TYPE (ref) == error_mark_node) return error_mark_node; ! assemble_external (ref); TREE_USED (ref) = 1; if (TREE_CODE (ref) == CONST_DECL) --- 1493,1500 ---- if (TREE_TYPE (ref) == error_mark_node) return error_mark_node; ! if (!skip_evaluation) ! assemble_external (ref); TREE_USED (ref) = 1; if (TREE_CODE (ref) == CONST_DECL) diff -Nrc3pad gcc-3.2/gcc/calls.c gcc-3.2.1/gcc/calls.c *** gcc-3.2/gcc/calls.c Thu Apr 4 23:28:47 2002 --- gcc-3.2.1/gcc/calls.c Fri Nov 8 22:12:37 2002 *************** Software Foundation, 59 Temple Place - S *** 46,54 **** --- 46,56 ---- #ifdef PUSH_ROUNDING + #ifndef PUSH_ARGS_REVERSED #if defined (STACK_GROWS_DOWNWARD) != defined (ARGS_GROW_DOWNWARD) #define PUSH_ARGS_REVERSED PUSH_ARGS #endif + #endif #endif *************** expand_call (exp, target, ignore) *** 2708,2713 **** --- 2710,2721 ---- if (pass == 0) { argblock = virtual_incoming_args_rtx; + argblock + #ifdef STACK_GROWS_DOWNWARD + = plus_constant (argblock, current_function_pretend_args_size); + #else + = plus_constant (argblock, -current_function_pretend_args_size); + #endif stored_args_map = sbitmap_alloc (args_size.constant); sbitmap_zero (stored_args_map); } *************** emit_library_call_value_1 (retval, orgfu *** 3666,3671 **** --- 3674,3687 ---- #endif ; + /* If this was a CONST function, it is now PURE since + it now reads memory. */ + if (flags & ECF_CONST) + { + flags &= ~ECF_CONST; + flags |= ECF_PURE; + } + if (GET_MODE (val) == MEM && ! must_copy) slot = val; else if (must_copy) *************** store_one_arg (arg, argblock, flags, var *** 4268,4274 **** struct arg_data *arg; rtx argblock; int flags; ! int variable_size ATTRIBUTE_UNUSED; int reg_parm_stack_space; { tree pval = arg->tree_value; --- 4284,4290 ---- struct arg_data *arg; rtx argblock; int flags; ! int variable_size; int reg_parm_stack_space; { tree pval = arg->tree_value; *************** store_one_arg (arg, argblock, flags, var *** 4343,4356 **** emit_move_insn (arg->save_area, stack_area); } } } - /* Now that we have saved any slots that will be overwritten by this - store, mark all slots this store will use. We must do this before - we actually expand the argument since the expansion itself may - trigger library calls which might need to use the same stack slot. */ - if (argblock && ! variable_size && arg->stack) - for (i = lower_bound; i < upper_bound; i++) - stack_usage_map[i] = 1; } /* If this isn't going to be placed on both the stack and in registers, --- 4359,4380 ---- emit_move_insn (arg->save_area, stack_area); } } + + /* Now that we have saved any slots that will be overwritten + by this store, mark all slots this store will use. We + must do this before we actually expand the argument since + the expansion itself may trigger library calls which might + need to use the same stack slot. We only do it if we can't + pass all arguments to a library call in registers. */ + if (arg->partial) + { + for (i = lower_bound; i < upper_bound; i++) + stack_usage_map[i] = 1; + + /* Set it so that we don't do it again. */ + variable_size = 1; + } } } /* If this isn't going to be placed on both the stack and in registers, *************** store_one_arg (arg, argblock, flags, var *** 4491,4497 **** emit_push_insn for BLKmode is careful to avoid it. */ excess = (arg->size.constant - int_size_in_bytes (TREE_TYPE (pval)) + partial * UNITS_PER_WORD); ! size_rtx = expr_size (pval); } if ((flags & ECF_SIBCALL) && GET_CODE (arg->value) == MEM) --- 4515,4522 ---- emit_push_insn for BLKmode is careful to avoid it. */ excess = (arg->size.constant - int_size_in_bytes (TREE_TYPE (pval)) + partial * UNITS_PER_WORD); ! size_rtx = expand_expr (size_in_bytes (TREE_TYPE (pval)), ! NULL_RTX, TYPE_MODE (sizetype), 0); } if ((flags & ECF_SIBCALL) && GET_CODE (arg->value) == MEM) *************** store_one_arg (arg, argblock, flags, var *** 4577,4582 **** --- 4602,4612 ---- arg->value = arg->stack_slot; } + if (ACCUMULATE_OUTGOING_ARGS && !(flags & ECF_SIBCALL) + && argblock && ! variable_size && arg->stack) + for (i = lower_bound; i < upper_bound; i++) + stack_usage_map[i] = 1; + /* Once we have pushed something, pops can't safely be deferred during the rest of the arguments. */ NO_DEFER_POP; diff -Nrc3pad gcc-3.2/gcc/cfganal.c gcc-3.2.1/gcc/cfganal.c *** gcc-3.2/gcc/cfganal.c Fri Feb 8 00:35:15 2002 --- gcc-3.2.1/gcc/cfganal.c Thu Nov 7 00:22:48 2002 *************** static void flow_dfs_compute_reverse_fin *** 56,62 **** --- 56,86 ---- static void remove_fake_successors PARAMS ((basic_block)); static bool need_fake_edge_p PARAMS ((rtx)); static bool keep_with_call_p PARAMS ((rtx)); + static bool flow_active_insn_p PARAMS ((rtx)); + /* Like active_insn_p, except keep the return value clobber around + even after reload. */ + + static bool + flow_active_insn_p (insn) + rtx insn; + { + if (active_insn_p (insn)) + return true; + + /* A clobber of the function return value exists for buggy + programs that fail to return a value. It's effect is to + keep the return value from being live across the entire + function. If we allow it to be skipped, we introduce the + possibility for register livetime aborts. */ + if (GET_CODE (PATTERN (insn)) == CLOBBER + && GET_CODE (XEXP (PATTERN (insn), 0)) == REG + && REG_FUNCTION_VALUE_P (XEXP (PATTERN (insn), 0))) + return true; + + return false; + } + /* Return true if the block has no effect and only forwards control flow to its single destination. */ *************** forwarder_block_p (bb) *** 71,82 **** return false; for (insn = bb->head; insn != bb->end; insn = NEXT_INSN (insn)) ! if (INSN_P (insn) && active_insn_p (insn)) return false; return (!INSN_P (insn) || (GET_CODE (insn) == JUMP_INSN && simplejump_p (insn)) ! || !active_insn_p (insn)); } /* Return nonzero if we can reach target from src by falling through. */ --- 95,106 ---- return false; for (insn = bb->head; insn != bb->end; insn = NEXT_INSN (insn)) ! if (INSN_P (insn) && flow_active_insn_p (insn)) return false; return (!INSN_P (insn) || (GET_CODE (insn) == JUMP_INSN && simplejump_p (insn)) ! || !flow_active_insn_p (insn)); } /* Return nonzero if we can reach target from src by falling through. */ diff -Nrc3pad gcc-3.2/gcc/cfgcleanup.c gcc-3.2.1/gcc/cfgcleanup.c *** gcc-3.2/gcc/cfgcleanup.c Mon Jun 10 21:39:45 2002 --- gcc-3.2.1/gcc/cfgcleanup.c Sat Nov 16 01:55:47 2002 *************** try_optimize_cfg (mode) *** 1638,1644 **** /* If the jump insn has side effects, we can't kill the edge. */ && (GET_CODE (b->end) != JUMP_INSN ! || onlyjump_p (b->end)) && merge_blocks (s, b, c, mode)) changed_here = true; --- 1638,1645 ---- /* If the jump insn has side effects, we can't kill the edge. */ && (GET_CODE (b->end) != JUMP_INSN ! || (onlyjump_p (b->end) ! && !tablejump_p (b->end))) && merge_blocks (s, b, c, mode)) changed_here = true; diff -Nrc3pad gcc-3.2/gcc/cfgrtl.c gcc-3.2.1/gcc/cfgrtl.c *** gcc-3.2/gcc/cfgrtl.c Mon Jul 15 16:19:38 2002 --- gcc-3.2.1/gcc/cfgrtl.c Mon Nov 11 03:35:59 2002 *************** try_redirect_by_replacing_jump (e, targe *** 665,670 **** --- 665,671 ---- edge tmp; rtx set; int fallthru = 0; + rtx table; /* Verify that all targets will be TARGET. */ for (tmp = src->succ; tmp; tmp = tmp->succ_next) *************** try_redirect_by_replacing_jump (e, targe *** 674,679 **** --- 675,687 ---- if (tmp || !onlyjump_p (insn)) return false; + if (reload_completed && JUMP_LABEL (insn) + && (table = NEXT_INSN (JUMP_LABEL (insn))) != NULL_RTX + && GET_CODE (table) == JUMP_INSN + && (GET_CODE (PATTERN (table)) == ADDR_VEC + || GET_CODE (PATTERN (table)) == ADDR_DIFF_VEC)) + return false; + /* Avoid removing branch with side effects. */ set = single_set (insn); if (!set || side_effects_p (set)) diff -Nrc3pad gcc-3.2/gcc/collect2.c gcc-3.2.1/gcc/collect2.c *** gcc-3.2/gcc/collect2.c Tue Feb 5 16:33:31 2002 --- gcc-3.2.1/gcc/collect2.c Fri Aug 16 18:03:06 2002 *************** is_ctor_dtor (s) *** 577,582 **** --- 577,591 ---- const char *orig_s = s; static const struct names special[] = { + #ifndef NO_DOLLAR_IN_LABEL + { "GLOBAL__I$", sizeof ("GLOBAL__I$")-1, 1, 0 }, + { "GLOBAL__D$", sizeof ("GLOBAL__D$")-1, 2, 0 }, + #else + #ifndef NO_DOT_IN_LABEL + { "GLOBAL__I.", sizeof ("GLOBAL__I.")-1, 1, 0 }, + { "GLOBAL__D.", sizeof ("GLOBAL__D.")-1, 2, 0 }, + #endif /* NO_DOT_IN_LABEL */ + #endif /* NO_DOLLAR_IN_LABEL */ { "GLOBAL__I_", sizeof ("GLOBAL__I_")-1, 1, 0 }, { "GLOBAL__D_", sizeof ("GLOBAL__D_")-1, 2, 0 }, { "GLOBAL__F_", sizeof ("GLOBAL__F_")-1, 5, 0 }, diff -Nrc3pad gcc-3.2/gcc/config/alpha/alpha.md gcc-3.2.1/gcc/config/alpha/alpha.md *** gcc-3.2/gcc/config/alpha/alpha.md Wed Apr 10 05:14:55 2002 --- gcc-3.2.1/gcc/config/alpha/alpha.md Sun Sep 8 05:30:19 2002 *************** fadd,fmul,fcpys,fdiv,fsqrt,misc,mvi,ftoi *** 2374,2380 **** (define_expand "abstf2" [(parallel [(set (match_operand:TF 0 "register_operand" "") ! (neg:TF (match_operand:TF 1 "reg_or_fp0_operand" ""))) (use (match_dup 2))])] "TARGET_HAS_XFLOATING_LIBS" { --- 2374,2380 ---- (define_expand "abstf2" [(parallel [(set (match_operand:TF 0 "register_operand" "") ! (abs:TF (match_operand:TF 1 "reg_or_fp0_operand" ""))) (use (match_dup 2))])] "TARGET_HAS_XFLOATING_LIBS" { diff -Nrc3pad gcc-3.2/gcc/config/arm/arm.c gcc-3.2.1/gcc/config/arm/arm.c *** gcc-3.2/gcc/config/arm/arm.c Sun Jul 21 12:09:02 2002 --- gcc-3.2.1/gcc/config/arm/arm.c Fri Nov 1 14:40:23 2002 *************** use_return_insn (iscond) *** 890,895 **** --- 890,896 ---- { int regno; unsigned int func_type; + unsigned long saved_int_regs; /* Never use a return instruction before reload has run. */ if (!reload_completed) *************** use_return_insn (iscond) *** 912,934 **** && !frame_pointer_needed)) return 0; /* Can't be done if interworking with Thumb, and any registers have been ! stacked. Similarly, on StrongARM, conditional returns are expensive ! if they aren't taken and registers have been stacked. */ ! if (iscond && arm_is_strong && frame_pointer_needed) return 0; ! ! if ((iscond && arm_is_strong) ! || TARGET_INTERWORK) { ! for (regno = 0; regno <= LAST_ARM_REGNUM; regno++) ! if (regs_ever_live[regno] && !call_used_regs[regno]) ! return 0; if (flag_pic && regs_ever_live[PIC_OFFSET_TABLE_REGNUM]) return 0; } ! /* Can't be done if any of the FPU regs are pushed, since this also requires an insn. */ if (TARGET_HARD_FLOAT) --- 913,943 ---- && !frame_pointer_needed)) return 0; + saved_int_regs = arm_compute_save_reg_mask (); + /* Can't be done if interworking with Thumb, and any registers have been ! stacked. */ ! if (TARGET_INTERWORK && saved_int_regs != 0) return 0; ! ! /* On StrongARM, conditional returns are expensive if they aren't ! taken and multiple registers have been stacked. */ ! if (iscond && arm_is_strong) { ! /* Conditional return when just the LR is stored is a simple ! conditional-load instruction, that's not expensive. */ ! if (saved_int_regs != 0 && saved_int_regs != (1 << LR_REGNUM)) ! return 0; if (flag_pic && regs_ever_live[PIC_OFFSET_TABLE_REGNUM]) return 0; } ! ! /* If there are saved registers but the LR isn't saved, then we need ! two instructions for the return. */ ! if (saved_int_regs && !(saved_int_regs & (1 << LR_REGNUM))) ! return 0; ! /* Can't be done if any of the FPU regs are pushed, since this also requires an insn. */ if (TARGET_HARD_FLOAT) diff -Nrc3pad gcc-3.2/gcc/config/arm/arm.h gcc-3.2.1/gcc/config/arm/arm.h *** gcc-3.2/gcc/config/arm/arm.h Wed Mar 13 05:35:51 2002 --- gcc-3.2.1/gcc/config/arm/arm.h Mon Sep 30 11:54:00 2002 *************** enum reg_class *** 1093,1106 **** /* The class value for index registers, and the one for base regs. */ #define INDEX_REG_CLASS (TARGET_THUMB ? LO_REGS : GENERAL_REGS) ! #define BASE_REG_CLASS (TARGET_THUMB ? BASE_REGS : GENERAL_REGS) ! /* For the Thumb the high registers cannot be used as base ! registers when addressing quanitities in QI or HI mode. */ #define MODE_BASE_REG_CLASS(MODE) \ ! (TARGET_ARM ? BASE_REGS : \ ! (((MODE) == QImode || (MODE) == HImode || (MODE) == VOIDmode) \ ! ? LO_REGS : BASE_REGS)) /* When SMALL_REGISTER_CLASSES is nonzero, the compiler allows registers explicitly used in the rtl to be used as spill registers --- 1093,1108 ---- /* The class value for index registers, and the one for base regs. */ #define INDEX_REG_CLASS (TARGET_THUMB ? LO_REGS : GENERAL_REGS) ! #define BASE_REG_CLASS (TARGET_THUMB ? LO_REGS : GENERAL_REGS) ! /* For the Thumb the high registers cannot be used as base registers ! when addressing quanitities in QI or HI mode; if we don't know the ! mode, then we must be conservative. After reload we must also be ! conservative, since we can't support SP+reg addressing, and we ! can't fix up any bad substitutions. */ #define MODE_BASE_REG_CLASS(MODE) \ ! (TARGET_ARM ? GENERAL_REGS : \ ! (((MODE) == SImode && !reload_completed) ? BASE_REGS : LO_REGS)) /* When SMALL_REGISTER_CLASSES is nonzero, the compiler allows registers explicitly used in the rtl to be used as spill registers diff -Nrc3pad gcc-3.2/gcc/config/arm/arm.md gcc-3.2.1/gcc/config/arm/arm.md *** gcc-3.2/gcc/config/arm/arm.md Sun Jul 21 12:09:03 2002 --- gcc-3.2.1/gcc/config/arm/arm.md Fri Sep 20 14:01:24 2002 *************** *** 1837,1843 **** (match_operand:SI 1 "s_register_operand" "r") (match_operand:SI 2 "const_int_operand" "n") (match_operand:SI 3 "const_int_operand" "n")) ! (const_int 0)))] "TARGET_ARM && (INTVAL (operands[3]) >= 0 && INTVAL (operands[3]) < 32 && INTVAL (operands[2]) > 0 --- 1837,1844 ---- (match_operand:SI 1 "s_register_operand" "r") (match_operand:SI 2 "const_int_operand" "n") (match_operand:SI 3 "const_int_operand" "n")) ! (const_int 0))) ! (clobber (reg:CC CC_REGNUM))] "TARGET_ARM && (INTVAL (operands[3]) >= 0 && INTVAL (operands[3]) < 32 && INTVAL (operands[2]) > 0 *************** *** 8947,8953 **** [(set (match_operand:SI 0 "s_register_operand" "=r") (sign_extract:SI (match_operand:SI 1 "s_register_operand" "r") (const_int 1) ! (match_operand:SI 2 "const_int_operand" "n")))] "TARGET_ARM" "* operands[2] = GEN_INT (1 << INTVAL (operands[2])); --- 8948,8955 ---- [(set (match_operand:SI 0 "s_register_operand" "=r") (sign_extract:SI (match_operand:SI 1 "s_register_operand" "r") (const_int 1) ! (match_operand:SI 2 "const_int_operand" "n"))) ! (clobber (reg:CC CC_REGNUM))] "TARGET_ARM" "* operands[2] = GEN_INT (1 << INTVAL (operands[2])); *************** *** 8963,8969 **** (not:SI (sign_extract:SI (match_operand:SI 1 "s_register_operand" "r") (const_int 1) ! (match_operand:SI 2 "const_int_operand" "n"))))] "TARGET_ARM" "* operands[2] = GEN_INT (1 << INTVAL (operands[2])); --- 8965,8972 ---- (not:SI (sign_extract:SI (match_operand:SI 1 "s_register_operand" "r") (const_int 1) ! (match_operand:SI 2 "const_int_operand" "n")))) ! (clobber (reg:CC CC_REGNUM))] "TARGET_ARM" "* operands[2] = GEN_INT (1 << INTVAL (operands[2])); diff -Nrc3pad gcc-3.2/gcc/config/avr/avr.md gcc-3.2.1/gcc/config/avr/avr.md *** gcc-3.2/gcc/config/avr/avr.md Thu Mar 21 22:14:07 2002 --- gcc-3.2.1/gcc/config/avr/avr.md Sun Sep 1 18:46:20 2002 *************** *** 1,7 **** ;; -*- Mode: Scheme -*- ;; Machine description for GNU compiler, ;; for ATMEL AVR micro controllers. ! ;; Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. ;; Contributed by Denis Chertykov (denisc@overta.ru) ;; This file is part of GNU CC. --- 1,7 ---- ;; -*- Mode: Scheme -*- ;; Machine description for GNU compiler, ;; for ATMEL AVR micro controllers. ! ;; Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. ;; Contributed by Denis Chertykov (denisc@overta.ru) ;; This file is part of GNU CC. *************** *** 2250,2255 **** --- 2250,2256 ---- && test_hard_reg_class (LD_REGS, operands[1]))" "* { + CC_STATUS_INIT; if (test_hard_reg_class (ADDW_REGS, operands[0])) output_asm_insn (AS2 (sbiw,%0,1) CR_TAB AS2 (sbc,%C0,__zero_reg__) CR_TAB *************** *** 2288,2293 **** --- 2289,2295 ---- && test_hard_reg_class (LD_REGS, operands[1]))" "* { + CC_STATUS_INIT; if (test_hard_reg_class (ADDW_REGS, operands[0])) output_asm_insn (AS2 (sbiw,%0,1), operands); else *************** *** 2319,2324 **** --- 2321,2329 ---- "test_hard_reg_class (LD_REGS, operands[0])" "* { + CC_STATUS_INIT; + cc_status.value1 = operands[0]; + cc_status.flags |= CC_OVERFLOW_UNUSABLE; output_asm_insn (AS2 (subi,%A0,1), operands); switch (avr_jump_mode (operands[1],insn)) { diff -Nrc3pad gcc-3.2/gcc/config/i386/i386.c gcc-3.2.1/gcc/config/i386/i386.c *** gcc-3.2/gcc/config/i386/i386.c Wed Aug 7 18:10:57 2002 --- gcc-3.2.1/gcc/config/i386/i386.c Thu Oct 31 18:39:32 2002 *************** struct processor_costs athlon_cost = { *** 284,308 **** 8, /* "large" insn */ 9, /* MOVE_RATIO */ 4, /* cost for loading QImode using movzbl */ ! {4, 5, 4}, /* cost of loading integer registers in QImode, HImode and SImode. Relative to reg-reg move (2). */ ! {2, 3, 2}, /* cost of storing integer registers */ 4, /* cost of reg,reg fld/fst */ ! {6, 6, 20}, /* cost of loading fp registers in SFmode, DFmode and XFmode */ ! {4, 4, 16}, /* cost of loading integer registers */ 2, /* cost of moving MMX register */ ! {2, 2}, /* cost of loading MMX registers in SImode and DImode */ ! {2, 2}, /* cost of storing MMX registers in SImode and DImode */ 2, /* cost of moving SSE register */ ! {2, 2, 8}, /* cost of loading SSE registers in SImode, DImode and TImode */ ! {2, 2, 8}, /* cost of storing SSE registers in SImode, DImode and TImode */ ! 6, /* MMX or SSE register to integer */ 64, /* size of prefetch block */ 6, /* number of parallel prefetches */ }; --- 284,308 ---- 8, /* "large" insn */ 9, /* MOVE_RATIO */ 4, /* cost for loading QImode using movzbl */ ! {3, 4, 3}, /* cost of loading integer registers in QImode, HImode and SImode. Relative to reg-reg move (2). */ ! {3, 4, 3}, /* cost of storing integer registers */ 4, /* cost of reg,reg fld/fst */ ! {4, 4, 12}, /* cost of loading fp registers in SFmode, DFmode and XFmode */ ! {6, 6, 8}, /* cost of loading integer registers */ 2, /* cost of moving MMX register */ ! {4, 4}, /* cost of loading MMX registers in SImode and DImode */ ! {4, 4}, /* cost of storing MMX registers in SImode and DImode */ 2, /* cost of moving SSE register */ ! {4, 4, 6}, /* cost of loading SSE registers in SImode, DImode and TImode */ ! {4, 4, 5}, /* cost of storing SSE registers in SImode, DImode and TImode */ ! 5, /* MMX or SSE register to integer */ 64, /* size of prefetch block */ 6, /* number of parallel prefetches */ }; *************** override_options () *** 906,911 **** --- 906,932 ---- 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. */ + if (TARGET_64BIT) + { + if (flag_omit_frame_pointer == 2) + flag_omit_frame_pointer = 1; + if (flag_asynchronous_unwind_tables == 2) + flag_asynchronous_unwind_tables = 1; + if (flag_pcc_struct_return == 2) + flag_pcc_struct_return = 0; + } + else + { + if (flag_omit_frame_pointer == 2) + flag_omit_frame_pointer = 0; + if (flag_asynchronous_unwind_tables == 2) + flag_asynchronous_unwind_tables = 0; + if (flag_pcc_struct_return == 2) + flag_pcc_struct_return = 1; + } + #ifdef SUBTARGET_OVERRIDE_OPTIONS SUBTARGET_OVERRIDE_OPTIONS; #endif *************** optimization_options (level, size) *** 1213,1225 **** if (level > 1) flag_schedule_insns = 0; #endif ! if (TARGET_64BIT && optimize >= 1) ! flag_omit_frame_pointer = 1; ! if (TARGET_64BIT) ! { ! flag_pcc_struct_return = 0; ! flag_asynchronous_unwind_tables = 1; ! } } /* Table of valid machine attributes. */ --- 1234,1247 ---- 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 ! specifying them, we will set the defaults in override_options. */ ! if (optimize >= 1) ! flag_omit_frame_pointer = 2; ! flag_pcc_struct_return = 2; ! flag_asynchronous_unwind_tables = 2; } /* Table of valid machine attributes. */ *************** classify_argument (mode, type, classes, *** 1649,1655 **** { int bytes = (mode == BLKmode) ? int_size_in_bytes (type) : (int) GET_MODE_SIZE (mode); ! int words = (bytes + UNITS_PER_WORD - 1) / UNITS_PER_WORD; if (type && AGGREGATE_TYPE_P (type)) { --- 1671,1681 ---- { int bytes = (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 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)) { *************** q_regs_operand (op, mode) *** 3206,3212 **** return 0; if (GET_CODE (op) == SUBREG) op = SUBREG_REG (op); ! return QI_REG_P (op); } /* Return true if op is a NON_Q_REGS class register. */ --- 3232,3238 ---- return 0; if (GET_CODE (op) == SUBREG) op = SUBREG_REG (op); ! return ANY_QI_REG_P (op); } /* Return true if op is a NON_Q_REGS class register. */ *************** print_operand_address (file, addr) *** 6123,6129 **** int scale; if (! ix86_decompose_address (addr, &parts)) ! abort (); base = parts.base; index = parts.index; --- 6149,6158 ---- int scale; if (! ix86_decompose_address (addr, &parts)) ! { ! output_operand_lossage ("Wrong address expression or operand constraint"); ! return; ! } base = parts.base; index = parts.index; *************** ix86_expand_vector_move (mode, operands) *** 6855,6862 **** /* Make operand1 a register if it isn't already. */ if ((reload_in_progress | reload_completed) == 0 && !register_operand (operands[0], mode) ! && !register_operand (operands[1], mode) ! && operands[1] != CONST0_RTX (mode)) { rtx temp = force_reg (GET_MODE (operands[1]), operands[1]); emit_move_insn (operands[0], temp); --- 6884,6890 ---- /* Make operand1 a register if it isn't already. */ if ((reload_in_progress | reload_completed) == 0 && !register_operand (operands[0], mode) ! && !register_operand (operands[1], mode)) { rtx temp = force_reg (GET_MODE (operands[1]), operands[1]); emit_move_insn (operands[0], temp); *************** ix86_expand_int_movcc (operands) *** 8237,8243 **** clob = gen_rtx_CLOBBER (VOIDmode, clob); tmp = gen_rtx_SET (VOIDmode, out, tmp); ! tmp = gen_rtx_PARALLEL (VOIDmode, gen_rtvec (2, tmp, clob)); emit_insn (tmp); } else --- 8265,8271 ---- 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 *************** static const struct builtin_description *** 10954,10967 **** { 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_cmpgtss", IX86_BUILTIN_CMPGTSS, LT, 1 }, - { MASK_SSE, CODE_FOR_vmmaskcmpv4sf3, "__builtin_ia32_cmpgess", IX86_BUILTIN_CMPGESS, LE, 1 }, { 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_cmpngtss", IX86_BUILTIN_CMPNGTSS, LT, 1 }, - { MASK_SSE, CODE_FOR_vmmaskncmpv4sf3, "__builtin_ia32_cmpngess", IX86_BUILTIN_CMPNGESS, LE, 1 }, { 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 }, --- 10982,10991 ---- *************** ix86_register_move_cost (mode, class1, c *** 12355,12371 **** enum reg_class class1, class2; { /* In case we require secondary memory, compute cost of the store followed ! by load. In case of copying from general_purpose_register we may emit ! multiple stores followed by single load causing memory size mismatch ! stall. Count this as arbitarily high cost of 20. */ if (ix86_secondary_memory_needed (class1, class2, mode, 0)) { ! int add_cost = 0; if (CLASS_MAX_NREGS (class1, mode) > CLASS_MAX_NREGS (class2, mode)) ! add_cost = 20; ! return (MEMORY_MOVE_COST (mode, class1, 0) ! + MEMORY_MOVE_COST (mode, class2, 1) + add_cost); } /* Moves between SSE/MMX and integer unit are expensive. */ if (MMX_CLASS_P (class1) != MMX_CLASS_P (class2) || SSE_CLASS_P (class1) != SSE_CLASS_P (class2)) --- 12379,12411 ---- enum reg_class class1, class2; { /* In case we require secondary memory, compute cost of the store followed ! by load. In order to avoid bad register allocation choices, we need ! for this to be *at least* as high as the symmetric MEMORY_MOVE_COST. */ ! if (ix86_secondary_memory_needed (class1, class2, mode, 0)) { ! int cost = 1; ! ! cost += MAX (MEMORY_MOVE_COST (mode, class1, 0), ! MEMORY_MOVE_COST (mode, class1, 1)); ! cost += MAX (MEMORY_MOVE_COST (mode, class2, 0), ! MEMORY_MOVE_COST (mode, class2, 1)); ! ! /* In case of copying from general_purpose_register we may emit multiple ! stores followed by single load causing memory size mismatch stall. ! Count this as arbitarily high cost of 20. */ if (CLASS_MAX_NREGS (class1, mode) > CLASS_MAX_NREGS (class2, mode)) ! cost += 20; ! ! /* In the case of FP/MMX moves, the registers actually overlap, and we ! have to switch modes in order to treat them differently. */ ! if ((MMX_CLASS_P (class1) && MAYBE_FLOAT_CLASS_P (class2)) ! || (MMX_CLASS_P (class2) && MAYBE_FLOAT_CLASS_P (class1))) ! cost += 20; ! ! return cost; } + /* Moves between SSE/MMX and integer unit are expensive. */ if (MMX_CLASS_P (class1) != MMX_CLASS_P (class2) || SSE_CLASS_P (class1) != SSE_CLASS_P (class2)) diff -Nrc3pad gcc-3.2/gcc/config/i386/i386.h gcc-3.2.1/gcc/config/i386/i386.h *** gcc-3.2/gcc/config/i386/i386.h Mon Jul 15 06:54:36 2002 --- gcc-3.2.1/gcc/config/i386/i386.h Thu Nov 7 17:46:18 2002 *************** extern int ix86_arch; *** 584,592 **** %{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:-D__i686 -D__i686__ \ -D__pentiumpro -D__pentiumpro__ \ %{!mcpu*:-D__tune_i686__ -D__tune_pentiumpro__ }}\ %{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__ }}\ --- 584,596 ---- %{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__ }}\ *************** extern int ix86_arch; *** 601,607 **** %{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|cpu=pentium2|cpu=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:\ --- 605,611 ---- %{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:\ *************** extern int ix86_arch; *** 609,625 **** %{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:\ -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: -D__MMX__ }\ %{march=k6-2|march=k6-3\ |march=athlon|march=athlon-tbird|march=athlon-4|march=athlon-xp\ ! |march=athlon-mp: -D__3dNOW__ }\ %{march=athlon|march=athlon-tbird|march=athlon-4|march=athlon-xp\ |march=athlon-mp: -D__3dNOW_A__ }\ ! %{march=pentium4: -D__SSE2__ }\ %{!march*:%{!mcpu*:%{!m386:%{!m486:%{!mpentium*:%(cpp_cpu_default)}}}}}" #ifndef CPP_CPU_SPEC --- 613,629 ---- %{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 *************** extern int ix86_arch; *** 756,763 **** #define FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN \ (ix86_preferred_stack_boundary > STACK_BOUNDARY && !TARGET_64BIT) ! /* Allocation boundary for the code of a function. */ ! #define FUNCTION_BOUNDARY 16 /* Alignment of field after `int : 0' in a structure. */ --- 760,770 ---- #define FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN \ (ix86_preferred_stack_boundary > STACK_BOUNDARY && !TARGET_64BIT) ! /* Minimum allocation boundary for the code of a function. */ ! #define FUNCTION_BOUNDARY 8 ! ! /* C++ stores the virtual bit in the lowest bit of function pointers. */ ! #define TARGET_PTRMEMFUNC_VBIT_LOCATION ptrmemfunc_vbit_in_pfn /* Alignment of field after `int : 0' in a structure. */ *************** enum reg_class *** 1581,1586 **** --- 1588,1597 ---- #define PUSH_ARGS (TARGET_PUSH_ARGS && !ACCUMULATE_OUTGOING_ARGS) + /* We want the stack and args grow in opposite directions, even if + PUSH_ARGS is 0. */ + #define PUSH_ARGS_REVERSED 1 + /* Offset of first parameter from the argument pointer register value. */ #define FIRST_PARM_OFFSET(FNDECL) 0 *************** enum ix86_builtins *** 2053,2065 **** IX86_BUILTIN_CMPEQSS, IX86_BUILTIN_CMPLTSS, IX86_BUILTIN_CMPLESS, - IX86_BUILTIN_CMPGTSS, - IX86_BUILTIN_CMPGESS, IX86_BUILTIN_CMPNEQSS, IX86_BUILTIN_CMPNLTSS, IX86_BUILTIN_CMPNLESS, - IX86_BUILTIN_CMPNGTSS, - IX86_BUILTIN_CMPNGESS, IX86_BUILTIN_CMPORDSS, IX86_BUILTIN_CMPUNORDSS, IX86_BUILTIN_CMPNESS, --- 2064,2072 ---- *************** extern int const svr4_dbx_register_map[F *** 2871,2883 **** It need not be very fast code. */ #define ASM_OUTPUT_REG_PUSH(FILE, REGNO) \ ! asm_fprintf ((FILE), "\tpush{l}\t%%e%s\n", reg_names[(REGNO)]) /* This is how to output an insn to pop a register from the stack. It need not be very fast code. */ #define ASM_OUTPUT_REG_POP(FILE, REGNO) \ ! asm_fprintf ((FILE), "\tpop{l}\t%%e%s\n", reg_names[(REGNO)]) /* This is how to output an element of a case-vector that is absolute. */ --- 2878,2902 ---- It need not be very fast code. */ #define ASM_OUTPUT_REG_PUSH(FILE, REGNO) \ ! do { \ ! if (TARGET_64BIT) \ ! asm_fprintf ((FILE), "\tpush{q}\t%%r%s\n", \ ! reg_names[(REGNO)] + (REX_INT_REGNO_P (REGNO) != 0)); \ ! else \ ! asm_fprintf ((FILE), "\tpush{l}\t%%e%s\n", reg_names[(REGNO)]); \ ! } while (0) /* This is how to output an insn to pop a register from the stack. It need not be very fast code. */ #define ASM_OUTPUT_REG_POP(FILE, REGNO) \ ! do { \ ! if (TARGET_64BIT) \ ! asm_fprintf ((FILE), "\tpop{q}\t%%r%s\n", \ ! reg_names[(REGNO)] + (REX_INT_REGNO_P (REGNO) != 0)); \ ! else \ ! asm_fprintf ((FILE), "\tpop{l}\t%%e%s\n", reg_names[(REGNO)]); \ ! } while (0) /* This is how to output an element of a case-vector that is absolute. */ diff -Nrc3pad gcc-3.2/gcc/config/i386/i386.md gcc-3.2.1/gcc/config/i386/i386.md *** gcc-3.2/gcc/config/i386/i386.md Mon Jul 15 06:54:36 2002 --- gcc-3.2.1/gcc/config/i386/i386.md Thu Oct 24 17:11:54 2002 *************** *** 5311,5317 **** (plus:DI (match_operand:DI 1 "nonimmediate_operand" "%0,0") (match_operand:DI 2 "general_operand" "roiF,riF"))) (clobber (reg:CC 17))] ! "!TARGET_64BIT" "#") (define_split --- 5311,5317 ---- (plus:DI (match_operand:DI 1 "nonimmediate_operand" "%0,0") (match_operand:DI 2 "general_operand" "roiF,riF"))) (clobber (reg:CC 17))] ! "!TARGET_64BIT && ix86_binary_operator_ok (PLUS, DImode, operands)" "#") (define_split *************** *** 6940,6946 **** (minus:DI (match_operand:DI 1 "nonimmediate_operand" "0,0") (match_operand:DI 2 "general_operand" "roiF,riF"))) (clobber (reg:CC 17))] ! "!TARGET_64BIT" "#") (define_split --- 6940,6946 ---- (minus:DI (match_operand:DI 1 "nonimmediate_operand" "0,0") (match_operand:DI 2 "general_operand" "roiF,riF"))) (clobber (reg:CC 17))] ! "!TARGET_64BIT && ix86_binary_operator_ok (MINUS, DImode, operands)" "#") (define_split *************** *** 19783,19789 **** [(set_attr "type" "mmx")]) (define_expand "prefetch" ! [(prefetch (match_operand:SI 0 "address_operand" "") (match_operand:SI 1 "const_int_operand" "") (match_operand:SI 2 "const_int_operand" ""))] "TARGET_PREFETCH_SSE || TARGET_3DNOW" --- 19783,19789 ---- [(set_attr "type" "mmx")]) (define_expand "prefetch" ! [(prefetch (match_operand 0 "address_operand" "") (match_operand:SI 1 "const_int_operand" "") (match_operand:SI 2 "const_int_operand" ""))] "TARGET_PREFETCH_SSE || TARGET_3DNOW" *************** *** 19795,19800 **** --- 19795,19802 ---- abort (); if (locality < 0 || locality > 3) abort (); + if (GET_MODE (operands[0]) != Pmode && GET_MODE (operands[0]) != VOIDmode) + abort (); /* Use 3dNOW prefetch in case we are asking for write prefetch not suported by SSE counterpart or the SSE prefetch is not available *************** *** 19810,19816 **** [(prefetch (match_operand:SI 0 "address_operand" "p") (const_int 0) (match_operand:SI 1 "const_int_operand" ""))] ! "TARGET_PREFETCH_SSE" { static const char * const patterns[4] = { "prefetchnta\t%a0", "prefetcht2\t%a0", "prefetcht1\t%a0", "prefetcht0\t%a0" --- 19812,19837 ---- [(prefetch (match_operand:SI 0 "address_operand" "p") (const_int 0) (match_operand:SI 1 "const_int_operand" ""))] ! "TARGET_PREFETCH_SSE && !TARGET_64BIT" ! { ! static const char * const patterns[4] = { ! "prefetchnta\t%a0", "prefetcht2\t%a0", "prefetcht1\t%a0", "prefetcht0\t%a0" ! }; ! ! int locality = INTVAL (operands[1]); ! if (locality < 0 || locality > 3) ! abort (); ! ! return patterns[locality]; ! } ! [(set_attr "type" "sse") ! (set_attr "memory" "none")]) ! ! (define_insn "*prefetch_sse_rex" ! [(prefetch (match_operand:DI 0 "address_operand" "p") ! (const_int 0) ! (match_operand:SI 1 "const_int_operand" ""))] ! "TARGET_PREFETCH_SSE && TARGET_64BIT" { static const char * const patterns[4] = { "prefetchnta\t%a0", "prefetcht2\t%a0", "prefetcht1\t%a0", "prefetcht0\t%a0" *************** *** 19828,19834 **** [(prefetch (match_operand:SI 0 "address_operand" "p") (match_operand:SI 1 "const_int_operand" "n") (const_int 3))] ! "TARGET_3DNOW" { if (INTVAL (operands[1]) == 0) return "prefetch\t%a0"; --- 19849,19869 ---- [(prefetch (match_operand:SI 0 "address_operand" "p") (match_operand:SI 1 "const_int_operand" "n") (const_int 3))] ! "TARGET_3DNOW && !TARGET_64BIT" ! { ! if (INTVAL (operands[1]) == 0) ! return "prefetch\t%a0"; ! else ! return "prefetchw\t%a0"; ! } ! [(set_attr "type" "mmx") ! (set_attr "memory" "none")]) ! ! (define_insn "*prefetch_3dnow_rex" ! [(prefetch (match_operand:DI 0 "address_operand" "p") ! (match_operand:SI 1 "const_int_operand" "n") ! (const_int 3))] ! "TARGET_3DNOW && TARGET_64BIT" { if (INTVAL (operands[1]) == 0) return "prefetch\t%a0"; diff -Nrc3pad gcc-3.2/gcc/config/i386/linux64.h gcc-3.2.1/gcc/config/i386/linux64.h *** gcc-3.2/gcc/config/i386/linux64.h Fri Jun 21 07:04:46 2002 --- gcc-3.2.1/gcc/config/i386/linux64.h Sun Oct 27 09:24:50 2002 *************** Boston, MA 02111-1307, USA. */ *** 30,35 **** --- 30,41 ---- #undef CPP_SPEC #define CPP_SPEC "%(cpp_cpu) %{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} %{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT} %{!m32:-D__LONG_MAX__=9223372036854775807L}" + /* The svr4 ABI for the i386 says that records and unions are returned + in memory. In the 64bit compilation we will turn this flag off in + override_options, as we never do pcc_struct_return scheme on this target. */ + #undef DEFAULT_PCC_STRUCT_RETURN + #define DEFAULT_PCC_STRUCT_RETURN 1 + /* Provide a LINK_SPEC. 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 *************** Boston, MA 02111-1307, USA. */ *** 50,70 **** #undef STARTFILE_SPEC #define STARTFILE_SPEC \ ! "%{m32:%{!shared: \ ! %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} \ ! %{!p:%{profile:gcrt1.o%s} %{!profile:crt1.o%s}}}} \ ! crti.o%s %{static:crtbeginT.o%s}\ ! %{!static:%{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}}} \ ! %{!m32:%{!shared: \ ! %{pg:/usr/lib64/gcrt1.o%s} %{!pg:%{p:/usr/lib64/gcrt1.o%s} \ ! %{!p:%{profile:/usr/lib64/gcrt1.o%s} %{!profile:/usr/lib64/crt1.o%s}}}}\ ! /usr/lib64/crti.o%s %{static:crtbeginT.o%s} \ ! %{!static:%{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}}}" #undef ENDFILE_SPEC ! #define ENDFILE_SPEC "\ ! %{m32:%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s} \ ! %{!m32:%{!shared:crtend.o%s} %{shared:crtendS.o%s} /usr/lib64/crtn.o%s}" #define MULTILIB_DEFAULTS { "m64" } --- 56,69 ---- #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 %{static:crtbeginT.o%s} \ ! %{!static:%{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}}" #undef ENDFILE_SPEC ! #define ENDFILE_SPEC "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s" #define MULTILIB_DEFAULTS { "m64" } diff -Nrc3pad gcc-3.2/gcc/config/i386/mmintrin.h gcc-3.2.1/gcc/config/i386/mmintrin.h *** gcc-3.2/gcc/config/i386/mmintrin.h Tue Aug 6 18:30:43 2002 --- gcc-3.2.1/gcc/config/i386/mmintrin.h Sat Oct 19 13:51:34 2002 *************** *** 31,37 **** #define _MMINTRIN_H_INCLUDED /* The data type intended for user use. */ ! typedef unsigned long long __m64 __attribute__ ((__aligned__ (8))); /* Internal data types for implementing the intrinsics. */ typedef int __v2si __attribute__ ((__mode__ (__V2SI__))); --- 31,37 ---- #define _MMINTRIN_H_INCLUDED /* The data type intended for user use. */ ! typedef int __m64 __attribute__ ((__mode__ (__V2SI__))); /* Internal data types for implementing the intrinsics. */ typedef int __v2si __attribute__ ((__mode__ (__V2SI__))); *************** _mm_empty (void) *** 49,62 **** static __inline __m64 _mm_cvtsi32_si64 (int __i) { ! return (unsigned int) __i; } /* Convert the lower 32 bits of the __m64 object into an integer. */ static __inline int _mm_cvtsi64_si32 (__m64 __i) { ! return __i; } /* Pack the four 16-bit values from M1 into the lower four 8-bit values of --- 49,64 ---- static __inline __m64 _mm_cvtsi32_si64 (int __i) { ! long long __tmp = (unsigned int)__i; ! return (__m64) __tmp; } /* Convert the lower 32 bits of the __m64 object into an integer. */ static __inline int _mm_cvtsi64_si32 (__m64 __i) { ! long long __tmp = (long long)__i; ! return __tmp; } /* Pack the four 16-bit values from M1 into the lower four 8-bit values of *************** _mm_mullo_pi16 (__m64 __m1, __m64 __m2) *** 269,275 **** static __inline __m64 _mm_sll_pi16 (__m64 __m, __m64 __count) { ! return (__m64) __builtin_ia32_psllw ((__v4hi)__m, __count); } static __inline __m64 --- 271,277 ---- static __inline __m64 _mm_sll_pi16 (__m64 __m, __m64 __count) { ! return (__m64) __builtin_ia32_psllw ((__v4hi)__m, (long long)__count); } static __inline __m64 *************** _mm_slli_pi16 (__m64 __m, int __count) *** 282,288 **** static __inline __m64 _mm_sll_pi32 (__m64 __m, __m64 __count) { ! return (__m64) __builtin_ia32_pslld ((__v2si)__m, __count); } static __inline __m64 --- 284,290 ---- static __inline __m64 _mm_sll_pi32 (__m64 __m, __m64 __count) { ! return (__m64) __builtin_ia32_pslld ((__v2si)__m, (long long)__count); } static __inline __m64 *************** _mm_slli_pi32 (__m64 __m, int __count) *** 293,314 **** /* Shift the 64-bit value in M left by COUNT. */ static __inline __m64 ! _mm_sll_pi64 (__m64 __m, __m64 __count) { ! return (__m64) __builtin_ia32_psllq (__m, __count); } static __inline __m64 ! _mm_slli_pi64 (__m64 __m, int __count) { ! return (__m64) __builtin_ia32_psllq (__m, __count); } /* Shift four 16-bit values in M right by COUNT; shift in the sign bit. */ static __inline __m64 _mm_sra_pi16 (__m64 __m, __m64 __count) { ! return (__m64) __builtin_ia32_psraw ((__v4hi)__m, __count); } static __inline __m64 --- 295,316 ---- /* Shift the 64-bit value in M left by COUNT. */ static __inline __m64 ! _mm_sll_si64 (__m64 __m, __m64 __count) { ! return (__m64) __builtin_ia32_psllq ((long long)__m, (long long)__count); } static __inline __m64 ! _mm_slli_si64 (__m64 __m, int __count) { ! return (__m64) __builtin_ia32_psllq ((long long)__m, (long long)__count); } /* Shift four 16-bit values in M right by COUNT; shift in the sign bit. */ static __inline __m64 _mm_sra_pi16 (__m64 __m, __m64 __count) { ! return (__m64) __builtin_ia32_psraw ((__v4hi)__m, (long long)__count); } static __inline __m64 *************** _mm_srai_pi16 (__m64 __m, int __count) *** 321,327 **** static __inline __m64 _mm_sra_pi32 (__m64 __m, __m64 __count) { ! return (__m64) __builtin_ia32_psrad ((__v2si)__m, __count); } static __inline __m64 --- 323,329 ---- static __inline __m64 _mm_sra_pi32 (__m64 __m, __m64 __count) { ! return (__m64) __builtin_ia32_psrad ((__v2si)__m, (long long)__count); } static __inline __m64 *************** _mm_srai_pi32 (__m64 __m, int __count) *** 334,340 **** static __inline __m64 _mm_srl_pi16 (__m64 __m, __m64 __count) { ! return (__m64) __builtin_ia32_psrlw ((__v4hi)__m, __count); } static __inline __m64 --- 336,342 ---- static __inline __m64 _mm_srl_pi16 (__m64 __m, __m64 __count) { ! return (__m64) __builtin_ia32_psrlw ((__v4hi)__m, (long long)__count); } static __inline __m64 *************** _mm_srli_pi16 (__m64 __m, int __count) *** 347,353 **** static __inline __m64 _mm_srl_pi32 (__m64 __m, __m64 __count) { ! return (__m64) __builtin_ia32_psrld ((__v2si)__m, __count); } static __inline __m64 --- 349,355 ---- static __inline __m64 _mm_srl_pi32 (__m64 __m, __m64 __count) { ! return (__m64) __builtin_ia32_psrld ((__v2si)__m, (long long)__count); } static __inline __m64 *************** _mm_srli_pi32 (__m64 __m, int __count) *** 358,379 **** /* Shift the 64-bit value in M left by COUNT; shift in zeros. */ static __inline __m64 ! _mm_srl_pi64 (__m64 __m, __m64 __count) { ! return (__m64) __builtin_ia32_psrlq (__m, __count); } static __inline __m64 ! _mm_srli_pi64 (__m64 __m, int __count) { ! return (__m64) __builtin_ia32_psrlq (__m, __count); } /* Bit-wise AND the 64-bit values in M1 and M2. */ static __inline __m64 _mm_and_si64 (__m64 __m1, __m64 __m2) { ! return __builtin_ia32_pand (__m1, __m2); } /* Bit-wise complement the 64-bit value in M1 and bit-wise AND it with the --- 360,381 ---- /* Shift the 64-bit value in M left by COUNT; shift in zeros. */ static __inline __m64 ! _mm_srl_si64 (__m64 __m, __m64 __count) { ! return (__m64) __builtin_ia32_psrlq ((long long)__m, (long long)__count); } static __inline __m64 ! _mm_srli_si64 (__m64 __m, int __count) { ! return (__m64) __builtin_ia32_psrlq ((long long)__m, (long long)__count); } /* Bit-wise AND the 64-bit values in M1 and M2. */ static __inline __m64 _mm_and_si64 (__m64 __m1, __m64 __m2) { ! return (__m64) __builtin_ia32_pand ((long long)__m1, (long long)__m2); } /* Bit-wise complement the 64-bit value in M1 and bit-wise AND it with the *************** _mm_and_si64 (__m64 __m1, __m64 __m2) *** 381,401 **** static __inline __m64 _mm_andnot_si64 (__m64 __m1, __m64 __m2) { ! return __builtin_ia32_pandn (__m1, __m2); } /* Bit-wise inclusive OR the 64-bit values in M1 and M2. */ static __inline __m64 _mm_or_si64 (__m64 __m1, __m64 __m2) { ! return __builtin_ia32_por (__m1, __m2); } /* Bit-wise exclusive OR the 64-bit values in M1 and M2. */ static __inline __m64 _mm_xor_si64 (__m64 __m1, __m64 __m2) { ! return __builtin_ia32_pxor (__m1, __m2); } /* Compare eight 8-bit values. The result of the comparison is 0xFF if the --- 383,403 ---- static __inline __m64 _mm_andnot_si64 (__m64 __m1, __m64 __m2) { ! return (__m64) __builtin_ia32_pandn ((long long)__m1, (long long)__m2); } /* Bit-wise inclusive OR the 64-bit values in M1 and M2. */ static __inline __m64 _mm_or_si64 (__m64 __m1, __m64 __m2) { ! return (__m64)__builtin_ia32_por ((long long)__m1, (long long)__m2); } /* Bit-wise exclusive OR the 64-bit values in M1 and M2. */ static __inline __m64 _mm_xor_si64 (__m64 __m1, __m64 __m2) { ! return (__m64)__builtin_ia32_pxor ((long long)__m1, (long long)__m2); } /* Compare eight 8-bit values. The result of the comparison is 0xFF if the *************** _mm_cmpgt_pi32 (__m64 __m1, __m64 __m2) *** 444,450 **** static __inline __m64 _mm_setzero_si64 (void) { ! return __builtin_ia32_mmx_zero (); } /* Creates a vector of two 32-bit values; I0 is least significant. */ --- 446,452 ---- static __inline __m64 _mm_setzero_si64 (void) { ! return (__m64)__builtin_ia32_mmx_zero (); } /* Creates a vector of two 32-bit values; I0 is least significant. */ diff -Nrc3pad gcc-3.2/gcc/config/i386/t-linux64 gcc-3.2.1/gcc/config/i386/t-linux64 *** gcc-3.2/gcc/config/i386/t-linux64 Wed May 8 23:23:20 2002 --- gcc-3.2.1/gcc/config/i386/t-linux64 Sat Oct 5 21:32:08 2002 *************** SHLIB_MAPFILES = $(srcdir)/libgcc-std.ve *** 6,15 **** MULTILIB_OPTIONS = m64/m32 MULTILIB_DIRNAMES = 64 32 LIBGCC = stmp-multilib INSTALL_LIBGCC = install-multilib EXTRA_MULTILIB_PARTS=crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o - - SHLIB_SLIBDIR_SUFFIXES = 64:64 32: --- 6,14 ---- MULTILIB_OPTIONS = m64/m32 MULTILIB_DIRNAMES = 64 32 + MULTILIB_OSDIRNAMES = ../lib64 ../lib LIBGCC = stmp-multilib INSTALL_LIBGCC = install-multilib EXTRA_MULTILIB_PARTS=crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o diff -Nrc3pad gcc-3.2/gcc/config/i386/winnt.c gcc-3.2.1/gcc/config/i386/winnt.c *** gcc-3.2/gcc/config/i386/winnt.c Mon Dec 3 19:13:32 2001 --- gcc-3.2.1/gcc/config/i386/winnt.c Mon Sep 16 22:24:43 2002 *************** ix86_handle_dll_attribute (node, name, a *** 76,81 **** --- 76,90 ---- } } + /* `extern' needn't be specified with dllimport. + Specify `extern' now and hope for the best. Sigh. */ + else if (TREE_CODE (*node) == VAR_DECL + && is_attribute_p ("dllimport", name)) + { + DECL_EXTERNAL (*node) = 1; + TREE_PUBLIC (*node) = 1; + } + return NULL_TREE; } *************** i386_pe_mark_dllimport (decl) *** 300,315 **** return; } - /* `extern' needn't be specified with dllimport. - Specify `extern' now and hope for the best. Sigh. */ - if (TREE_CODE (decl) == VAR_DECL - /* ??? Is this test for vtables needed? */ - && !DECL_VIRTUAL_P (decl)) - { - DECL_EXTERNAL (decl) = 1; - TREE_PUBLIC (decl) = 1; - } - newname = alloca (strlen (oldname) + 11); sprintf (newname, "@i._imp__%s", oldname); --- 309,314 ---- diff -Nrc3pad gcc-3.2/gcc/config/i386/xmmintrin.h gcc-3.2.1/gcc/config/i386/xmmintrin.h *** gcc-3.2/gcc/config/i386/xmmintrin.h Sat Jan 12 10:05:28 2002 --- gcc-3.2.1/gcc/config/i386/xmmintrin.h Sun Oct 27 09:28:12 2002 *************** _mm_cmple_ss (__m128 __A, __m128 __B) *** 245,257 **** static __inline __m128 _mm_cmpgt_ss (__m128 __A, __m128 __B) { ! return (__m128) __builtin_ia32_cmpgtss ((__v4sf)__A, (__v4sf)__B); } static __inline __m128 _mm_cmpge_ss (__m128 __A, __m128 __B) { ! return (__m128) __builtin_ia32_cmpgess ((__v4sf)__A, (__v4sf)__B); } static __inline __m128 --- 245,265 ---- static __inline __m128 _mm_cmpgt_ss (__m128 __A, __m128 __B) { ! return (__m128) __builtin_ia32_movss ((__v4sf) __A, ! (__v4sf) ! __builtin_ia32_cmpltss ((__v4sf) __B, ! (__v4sf) ! __A)); } static __inline __m128 _mm_cmpge_ss (__m128 __A, __m128 __B) { ! return (__m128) __builtin_ia32_movss ((__v4sf) __A, ! (__v4sf) ! __builtin_ia32_cmpless ((__v4sf) __B, ! (__v4sf) ! __A)); } static __inline __m128 *************** _mm_cmpnle_ss (__m128 __A, __m128 __B) *** 275,287 **** static __inline __m128 _mm_cmpngt_ss (__m128 __A, __m128 __B) { ! return (__m128) __builtin_ia32_cmpngtss ((__v4sf)__A, (__v4sf)__B); } static __inline __m128 _mm_cmpnge_ss (__m128 __A, __m128 __B) { ! return (__m128) __builtin_ia32_cmpngess ((__v4sf)__A, (__v4sf)__B); } static __inline __m128 --- 283,303 ---- static __inline __m128 _mm_cmpngt_ss (__m128 __A, __m128 __B) { ! return (__m128) __builtin_ia32_movss ((__v4sf) __A, ! (__v4sf) ! __builtin_ia32_cmpnltss ((__v4sf) __B, ! (__v4sf) ! __A)); } static __inline __m128 _mm_cmpnge_ss (__m128 __A, __m128 __B) { ! return (__m128) __builtin_ia32_movss ((__v4sf) __A, ! (__v4sf) ! __builtin_ia32_cmpnless ((__v4sf) __B, ! (__v4sf) ! __A)); } static __inline __m128 *************** _mm_prefetch (void *__P, enum _mm_hint _ *** 1017,1023 **** static __inline void _mm_stream_pi (__m64 *__P, __m64 __A) { ! __builtin_ia32_movntq (__P, __A); } /* Likewise. The address must be 16-byte aligned. */ --- 1033,1039 ---- static __inline void _mm_stream_pi (__m64 *__P, __m64 __A) { ! __builtin_ia32_movntq (__P, (long long)__A); } /* Likewise. The address must be 16-byte aligned. */ *************** _mm_pause (void) *** 1049,1056 **** do { \ __v4sf __r0 = (row0), __r1 = (row1), __r2 = (row2), __r3 = (row3); \ __v4sf __t0 = __builtin_ia32_shufps (__r0, __r1, 0x44); \ ! __v4sf __t1 = __builtin_ia32_shufps (__r0, __r1, 0xEE); \ ! __v4sf __t2 = __builtin_ia32_shufps (__r2, __r3, 0x44); \ __v4sf __t3 = __builtin_ia32_shufps (__r2, __r3, 0xEE); \ (row0) = __builtin_ia32_shufps (__t0, __t1, 0x88); \ (row1) = __builtin_ia32_shufps (__t0, __t1, 0xDD); \ --- 1065,1072 ---- do { \ __v4sf __r0 = (row0), __r1 = (row1), __r2 = (row2), __r3 = (row3); \ __v4sf __t0 = __builtin_ia32_shufps (__r0, __r1, 0x44); \ ! __v4sf __t2 = __builtin_ia32_shufps (__r0, __r1, 0xEE); \ ! __v4sf __t1 = __builtin_ia32_shufps (__r2, __r3, 0x44); \ __v4sf __t3 = __builtin_ia32_shufps (__r2, __r3, 0xEE); \ (row0) = __builtin_ia32_shufps (__t0, __t1, 0x88); \ (row1) = __builtin_ia32_shufps (__t0, __t1, 0xDD); \ diff -Nrc3pad gcc-3.2/gcc/config/m68hc11/m68hc11.md gcc-3.2.1/gcc/config/m68hc11/m68hc11.md *** gcc-3.2/gcc/config/m68hc11/m68hc11.md Fri Jul 12 20:43:54 2002 --- gcc-3.2.1/gcc/config/m68hc11/m68hc11.md Sat Sep 14 12:06:58 2002 *************** *** 651,657 **** ") (define_insn "movdi_internal" ! [(set (match_operand:DI 0 "nonimmediate_operand" "=uS,U,!u,U,m,m,!u") (match_operand:DI 1 "general_operand" "K,iU,iU,!u,mi,!u,!mu")) (clobber (match_scratch:HI 2 "=X,&d,&d,&d,&d,&d,&d"))] "" --- 651,657 ---- ") (define_insn "movdi_internal" ! [(set (match_operand:DI 0 "nonimmediate_operand" "=ou,U,!u,U,m,m,!u") (match_operand:DI 1 "general_operand" "K,iU,iU,!u,mi,!u,!mu")) (clobber (match_scratch:HI 2 "=X,&d,&d,&d,&d,&d,&d"))] "" *************** *** 687,693 **** ") (define_insn "movdf_internal" ! [(set (match_operand:DF 0 "nonimmediate_operand" "=uS,U,!u,U,m,m,!u") (match_operand:DF 1 "general_operand" "G,iU,iU,!u,mi,!u,!mu")) (clobber (match_scratch:HI 2 "=X,&d,&d,&d,&d,&d,&d"))] "" --- 687,693 ---- ") (define_insn "movdf_internal" ! [(set (match_operand:DF 0 "nonimmediate_operand" "=ou,U,!u,U,m,m,!u") (match_operand:DF 1 "general_operand" "G,iU,iU,!u,mi,!u,!mu")) (clobber (match_scratch:HI 2 "=X,&d,&d,&d,&d,&d,&d"))] "" *************** *** 732,738 **** ") (define_insn "movsi_internal" ! [(set (match_operand:SI 0 "nonimmediate_operand" "=uS,mu,?D,m,?D,?u,?u,!u,D") (match_operand:SI 1 "general_operand" "K,imu,im,?D,!u,?D,mi,!u,!D")) (clobber (match_scratch:HI 2 "=X,&d,X,X,X,X,&d,&d,X"))] "" --- 732,738 ---- ") (define_insn "movsi_internal" ! [(set (match_operand:SI 0 "nonimmediate_operand" "=ou,mu,?D,m,?D,?u,?u,!u,D") (match_operand:SI 1 "general_operand" "K,imu,im,?D,!u,?D,mi,!u,!D")) (clobber (match_scratch:HI 2 "=X,&d,X,X,X,X,&d,&d,X"))] "" *************** *** 768,774 **** ") (define_insn "movsf_internal" ! [(set (match_operand:SF 0 "nonimmediate_operand" "=S!u,m,D,m,D,!u,!u,!u,D") (match_operand:SF 1 "general_operand" "G,im,im,D,!u,D,mi,!u,!D")) (clobber (match_scratch:HI 2 "=X,&d,X,X,X,X,&d,&d,X"))] "" --- 768,774 ---- ") (define_insn "movsf_internal" ! [(set (match_operand:SF 0 "nonimmediate_operand" "=o!u,m,D,m,D,!u,!u,!u,D") (match_operand:SF 1 "general_operand" "G,im,im,D,!u,D,mi,!u,!D")) (clobber (match_scratch:HI 2 "=X,&d,X,X,X,X,&d,&d,X"))] "" diff -Nrc3pad gcc-3.2/gcc/config/m68k/t-crtstuff gcc-3.2.1/gcc/config/m68k/t-crtstuff *** gcc-3.2/gcc/config/m68k/t-crtstuff Tue Sep 14 09:52:09 1999 --- gcc-3.2.1/gcc/config/m68k/t-crtstuff Mon Nov 11 06:01:39 2002 *************** *** 1,11 **** - # from ../t-svr4 - EXTRA_PARTS=crtbegin.o crtend.o crti.o crtn.o - # Add flags here as required. CRTSTUFF_T_CFLAGS = # Assemble startup files. ! crti.o: $(srcdir)/config/m68k/crti.s $(GCC_PASSES) ! $(GCC_FOR_TARGET) -c -o crti.o $(srcdir)/config/m68k/crti.s ! crtn.o: $(srcdir)/config/m68k/crtn.s $(GCC_PASSES) ! $(GCC_FOR_TARGET) -c -o crtn.o $(srcdir)/config/m68k/crtn.s --- 1,8 ---- # Add flags here as required. CRTSTUFF_T_CFLAGS = # Assemble startup files. ! $(T)crti.o: $(srcdir)/config/m68k/crti.s $(GCC_PASSES) ! $(GCC_FOR_TARGET) -c -o $(T)crti.o $(srcdir)/config/m68k/crti.s ! $(T)crtn.o: $(srcdir)/config/m68k/crtn.s $(GCC_PASSES) ! $(GCC_FOR_TARGET) -c -o $(T)crtn.o $(srcdir)/config/m68k/crtn.s diff -Nrc3pad gcc-3.2/gcc/config/mips/mips.md gcc-3.2.1/gcc/config/mips/mips.md *** gcc-3.2/gcc/config/mips/mips.md Wed Apr 24 17:40:50 2002 --- gcc-3.2.1/gcc/config/mips/mips.md Mon Nov 11 05:57:14 2002 *************** move\\t%0,%z4\\n\\ *** 4882,4888 **** if ((INTVAL (offset) & 7) == 0 && (mem_addr == stack_pointer_rtx || mem_addr == frame_pointer_rtx)) ! return \"sd\\t%1,%0\"; return \"usd\\t%z1,%0\"; }" --- 4882,4888 ---- if ((INTVAL (offset) & 7) == 0 && (mem_addr == stack_pointer_rtx || mem_addr == frame_pointer_rtx)) ! return \"sd\\t%z1,%0\"; return \"usd\\t%z1,%0\"; }" diff -Nrc3pad gcc-3.2/gcc/config/mips/t-iris6 gcc-3.2.1/gcc/config/mips/t-iris6 *** gcc-3.2/gcc/config/mips/t-iris6 Fri May 10 15:22:05 2002 --- gcc-3.2.1/gcc/config/mips/t-iris6 Tue Nov 12 11:14:07 2002 *************** *** 4,9 **** --- 4,10 ---- MULTILIB_OPTIONS=mabi=n32/mabi=64 MULTILIB_DIRNAMES= MULTILIB_MATCHES= + MULTILIB_OSDIRNAMES=. mabi=64 LIBGCC = stmp-multilib INSTALL_LIBGCC = install-multilib *************** SHLIB_NAME = @shlib_dir@@shlib_so_name@. *** 22,28 **** SHLIB_MAP = @shlib_map_file@ SHLIB_OBJS = @shlib_objs@ SHLIB_SLIBDIR_QUAL = @shlib_slibdir_qual@ - SHLIB_SLIBDIR_SUFFIXES = mabi=64:/mabi=64 mabi=n32: SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \ -Wl,-soname,$(SHLIB_SONAME) \ --- 23,28 ---- diff -Nrc3pad gcc-3.2/gcc/config/rs6000/linux64.h gcc-3.2.1/gcc/config/rs6000/linux64.h *** gcc-3.2/gcc/config/rs6000/linux64.h Thu Aug 8 17:52:40 2002 --- gcc-3.2.1/gcc/config/rs6000/linux64.h Sat Sep 14 00:26:39 2002 *************** Boston, MA 02111-1307, USA. */ *** 37,42 **** --- 37,48 ---- #undef ASM_DEFAULT_SPEC #define ASM_DEFAULT_SPEC "-mppc64" + #undef ASM_SPEC + #define ASM_SPEC "%{.s: %{mregnames} %{mno-regnames}} \ + %{.S: %{mregnames} %{mno-regnames}} \ + %{mlittle} %{mlittle-endian} %{mbig} %{mbig-endian} \ + %{v:-V} %{Qy:} %{!Qn:-Qy} -a64 %(asm_cpu) %{Wa,*:%*}" + /* 64-bit PowerPC Linux always has a TOC. */ #undef TARGET_NO_TOC #define TARGET_NO_TOC 0 *************** Boston, MA 02111-1307, USA. */ *** 65,70 **** --- 71,77 ---- #define USER_LABEL_PREFIX "" /* AIX word-aligns FP doubles but doubleword-aligns 64-bit ints. */ + #undef ADJUST_FIELD_ALIGN #define ADJUST_FIELD_ALIGN(FIELD, COMPUTED) \ (TYPE_MODE (TREE_CODE (TREE_TYPE (FIELD)) == ARRAY_TYPE \ ? get_inner_array_type (FIELD) \ *************** do \ *** 327,329 **** --- 334,382 ---- sym_lineno += 1; \ } \ while (0) + + /* Similarly, we want the function code label here. */ + #define DBX_OUTPUT_BRAC(FILE, NAME, BRAC) \ + do \ + { \ + const char *flab; \ + fprintf (FILE, "%s%d,0,0,", ASM_STABN_OP, BRAC); \ + assemble_name (FILE, NAME); \ + putc ('-', FILE); \ + if (current_function_func_begin_label != NULL_TREE) \ + flab = IDENTIFIER_POINTER (current_function_func_begin_label); \ + else \ + { \ + putc ('.', FILE); \ + flab = XSTR (XEXP (DECL_RTL (current_function_decl), 0), 0); \ + } \ + assemble_name (FILE, flab); \ + putc ('\n', FILE); \ + } \ + while (0) + + #define DBX_OUTPUT_LBRAC(FILE, NAME) DBX_OUTPUT_BRAC (FILE, NAME, N_LBRAC) + #define DBX_OUTPUT_RBRAC(FILE, NAME) DBX_OUTPUT_BRAC (FILE, NAME, N_RBRAC) + + /* Another case where we want the dot name. */ + #define DBX_OUTPUT_NFUN(FILE, LSCOPE, DECL) \ + do \ + { \ + fprintf (FILE, "%s\"\",%d,0,0,", ASM_STABS_OP, N_FUN); \ + assemble_name (FILE, LSCOPE); \ + fputs ("-.", FILE); \ + assemble_name (FILE, XSTR (XEXP (DECL_RTL (DECL), 0), 0)); \ + putc ('\n', FILE); \ + } \ + while (0) + + /* Override sysv4.h as these are ABI_V4 only. */ + #undef ASM_OUTPUT_REG_PUSH + #undef ASM_OUTPUT_REG_POP + + /* 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 + true if the symbol may be affected by dynamic relocations. */ + #undef ASM_PREFERRED_EH_DATA_FORMAT + #define ASM_PREFERRED_EH_DATA_FORMAT(CODE, GLOBAL) \ + (((GLOBAL) ? DW_EH_PE_indirect : 0) | DW_EH_PE_pcrel | DW_EH_PE_udata8) diff -Nrc3pad gcc-3.2/gcc/config/rs6000/rs6000.c gcc-3.2.1/gcc/config/rs6000/rs6000.c *** gcc-3.2/gcc/config/rs6000/rs6000.c Thu Aug 8 14:51:47 2002 --- gcc-3.2.1/gcc/config/rs6000/rs6000.c Thu Nov 7 07:04:20 2002 *************** static int rs6000_sr_alias_set; *** 120,126 **** static void rs6000_add_gc_roots PARAMS ((void)); static int num_insns_constant_wide PARAMS ((HOST_WIDE_INT)); - static rtx expand_block_move_mem PARAMS ((enum machine_mode, rtx, rtx)); static void validate_condition_mode PARAMS ((enum rtx_code, enum machine_mode)); static rtx rs6000_generate_compare PARAMS ((enum rtx_code)); --- 120,125 ---- *************** rs6000_legitimate_address (mode, x, reg_ *** 2012,2017 **** --- 2011,2017 ---- if (LEGITIMATE_INDIRECT_ADDRESS_P (x, reg_ok_strict)) return 1; if ((GET_CODE (x) == PRE_INC || GET_CODE (x) == PRE_DEC) + && !ALTIVEC_VECTOR_MODE (mode) && TARGET_UPDATE && LEGITIMATE_INDIRECT_ADDRESS_P (XEXP (x, 0), reg_ok_strict)) return 1; *************** altivec_init_builtins (void) *** 4909,4929 **** } - /* Generate a memory reference for expand_block_move, copying volatile, - and other bits from an original memory reference. */ - - static rtx - expand_block_move_mem (mode, addr, orig_mem) - enum machine_mode mode; - rtx addr; - rtx orig_mem; - { - rtx mem = gen_rtx_MEM (mode, addr); - - MEM_COPY_ATTRIBUTES (mem, orig_mem); - return mem; - } - /* Expand a block move operation, and return 1 if successful. Return 0 if we should let the compiler generate normal code. --- 4909,4914 ---- *************** expand_block_move (operands) *** 4946,4959 **** int align; int bytes; int offset; - int num_reg; - int i; - rtx src_reg; - rtx dest_reg; - rtx src_addr; - rtx dest_addr; - rtx tmp_reg; - rtx stores[MAX_MOVE_REG]; int move_bytes; /* If this is not a fixed size move, just call memcpy */ --- 4931,4936 ---- *************** expand_block_move (operands) *** 4975,4988 **** if (bytes > (TARGET_POWERPC64 ? 64 : 32)) return 0; - /* Move the address into scratch registers. */ - dest_reg = copy_addr_to_reg (XEXP (orig_dest, 0)); - src_reg = copy_addr_to_reg (XEXP (orig_src, 0)); - if (TARGET_STRING) /* string instructions are available */ { ! for ( ; bytes > 0; bytes -= move_bytes) { if (bytes > 24 /* move up to 32 bytes at a time */ && ! fixed_regs[5] && ! fixed_regs[6] --- 4952,4968 ---- if (bytes > (TARGET_POWERPC64 ? 64 : 32)) return 0; if (TARGET_STRING) /* string instructions are available */ { ! for (offset = 0; bytes > 0; offset += move_bytes, bytes -= move_bytes) { + union { + rtx (*movstrsi) PARAMS ((rtx, rtx, rtx, rtx)); + rtx (*mov) PARAMS ((rtx, rtx)); + } gen_func; + enum machine_mode mode = BLKmode; + rtx src, dest; + if (bytes > 24 /* move up to 32 bytes at a time */ && ! fixed_regs[5] && ! fixed_regs[6] *************** expand_block_move (operands) *** 4994,5008 **** && ! fixed_regs[12]) { move_bytes = (bytes > 32) ? 32 : bytes; ! emit_insn (gen_movstrsi_8reg (expand_block_move_mem (BLKmode, ! dest_reg, ! orig_dest), ! expand_block_move_mem (BLKmode, ! src_reg, ! orig_src), ! GEN_INT ((move_bytes == 32) ! ? 0 : move_bytes), ! align_rtx)); } else if (bytes > 16 /* move up to 24 bytes at a time */ && ! fixed_regs[5] --- 4974,4980 ---- && ! fixed_regs[12]) { move_bytes = (bytes > 32) ? 32 : bytes; ! gen_func.movstrsi = gen_movstrsi_8reg; } else if (bytes > 16 /* move up to 24 bytes at a time */ && ! fixed_regs[5] *************** expand_block_move (operands) *** 5013,5026 **** && ! fixed_regs[10]) { move_bytes = (bytes > 24) ? 24 : bytes; ! emit_insn (gen_movstrsi_6reg (expand_block_move_mem (BLKmode, ! dest_reg, ! orig_dest), ! expand_block_move_mem (BLKmode, ! src_reg, ! orig_src), ! GEN_INT (move_bytes), ! align_rtx)); } else if (bytes > 8 /* move up to 16 bytes at a time */ && ! fixed_regs[5] --- 4985,4991 ---- && ! fixed_regs[10]) { move_bytes = (bytes > 24) ? 24 : bytes; ! gen_func.movstrsi = gen_movstrsi_6reg; } else if (bytes > 8 /* move up to 16 bytes at a time */ && ! fixed_regs[5] *************** expand_block_move (operands) *** 5029,5042 **** && ! fixed_regs[8]) { move_bytes = (bytes > 16) ? 16 : bytes; ! emit_insn (gen_movstrsi_4reg (expand_block_move_mem (BLKmode, ! dest_reg, ! orig_dest), ! expand_block_move_mem (BLKmode, ! src_reg, ! orig_src), ! GEN_INT (move_bytes), ! align_rtx)); } else if (bytes >= 8 && TARGET_POWERPC64 /* 64-bit loads and stores require word-aligned --- 4994,5000 ---- && ! fixed_regs[8]) { move_bytes = (bytes > 16) ? 16 : bytes; ! gen_func.movstrsi = gen_movstrsi_4reg; } else if (bytes >= 8 && TARGET_POWERPC64 /* 64-bit loads and stores require word-aligned *************** expand_block_move (operands) *** 5044,5151 **** && (align >= 8 || (! STRICT_ALIGNMENT && align >= 4))) { move_bytes = 8; ! tmp_reg = gen_reg_rtx (DImode); ! emit_move_insn (tmp_reg, ! expand_block_move_mem (DImode, ! src_reg, orig_src)); ! emit_move_insn (expand_block_move_mem (DImode, ! dest_reg, orig_dest), ! tmp_reg); } else if (bytes > 4 && !TARGET_POWERPC64) { /* move up to 8 bytes at a time */ move_bytes = (bytes > 8) ? 8 : bytes; ! emit_insn (gen_movstrsi_2reg (expand_block_move_mem (BLKmode, ! dest_reg, ! orig_dest), ! expand_block_move_mem (BLKmode, ! src_reg, ! orig_src), ! GEN_INT (move_bytes), ! align_rtx)); } else if (bytes >= 4 && (align >= 4 || ! STRICT_ALIGNMENT)) { /* move 4 bytes */ move_bytes = 4; ! tmp_reg = gen_reg_rtx (SImode); ! emit_move_insn (tmp_reg, ! expand_block_move_mem (SImode, ! src_reg, orig_src)); ! emit_move_insn (expand_block_move_mem (SImode, ! dest_reg, orig_dest), ! tmp_reg); } else if (bytes == 2 && (align >= 2 || ! STRICT_ALIGNMENT)) { /* move 2 bytes */ move_bytes = 2; ! tmp_reg = gen_reg_rtx (HImode); ! emit_move_insn (tmp_reg, ! expand_block_move_mem (HImode, ! src_reg, orig_src)); ! emit_move_insn (expand_block_move_mem (HImode, ! dest_reg, orig_dest), ! tmp_reg); } else if (bytes == 1) /* move 1 byte */ { move_bytes = 1; ! tmp_reg = gen_reg_rtx (QImode); ! emit_move_insn (tmp_reg, ! expand_block_move_mem (QImode, ! src_reg, orig_src)); ! emit_move_insn (expand_block_move_mem (QImode, ! dest_reg, orig_dest), ! tmp_reg); } else { /* move up to 4 bytes at a time */ move_bytes = (bytes > 4) ? 4 : bytes; ! emit_insn (gen_movstrsi_1reg (expand_block_move_mem (BLKmode, ! dest_reg, ! orig_dest), ! expand_block_move_mem (BLKmode, ! src_reg, ! orig_src), ! GEN_INT (move_bytes), ! align_rtx)); } ! if (bytes > move_bytes) { ! if (! TARGET_POWERPC64) { ! emit_insn (gen_addsi3 (src_reg, src_reg, ! GEN_INT (move_bytes))); ! emit_insn (gen_addsi3 (dest_reg, dest_reg, ! GEN_INT (move_bytes))); } ! else { ! emit_insn (gen_adddi3 (src_reg, src_reg, ! GEN_INT (move_bytes))); ! emit_insn (gen_adddi3 (dest_reg, dest_reg, ! GEN_INT (move_bytes))); } } } } else /* string instructions not available */ { ! num_reg = offset = 0; ! for ( ; bytes > 0; (bytes -= move_bytes), (offset += move_bytes)) { ! /* Calculate the correct offset for src/dest */ ! if (offset == 0) ! { ! src_addr = src_reg; ! dest_addr = dest_reg; ! } ! else ! { ! src_addr = plus_constant (src_reg, offset); ! dest_addr = plus_constant (dest_reg, offset); ! } /* Generate the appropriate load and store, saving the stores for later. */ --- 5002,5085 ---- && (align >= 8 || (! STRICT_ALIGNMENT && align >= 4))) { move_bytes = 8; ! mode = DImode; ! gen_func.mov = gen_movdi; } else if (bytes > 4 && !TARGET_POWERPC64) { /* move up to 8 bytes at a time */ move_bytes = (bytes > 8) ? 8 : bytes; ! gen_func.movstrsi = gen_movstrsi_2reg; } else if (bytes >= 4 && (align >= 4 || ! STRICT_ALIGNMENT)) { /* move 4 bytes */ move_bytes = 4; ! mode = SImode; ! gen_func.mov = gen_movsi; } else if (bytes == 2 && (align >= 2 || ! STRICT_ALIGNMENT)) { /* move 2 bytes */ move_bytes = 2; ! mode = HImode; ! gen_func.mov = gen_movhi; } else if (bytes == 1) /* move 1 byte */ { move_bytes = 1; ! mode = QImode; ! gen_func.mov = gen_movqi; } else { /* move up to 4 bytes at a time */ move_bytes = (bytes > 4) ? 4 : bytes; ! gen_func.movstrsi = gen_movstrsi_1reg; } ! src = adjust_address (orig_src, mode, offset); ! dest = adjust_address (orig_dest, mode, offset); ! ! if (mode == BLKmode) { ! /* Move the address into scratch registers. The movstrsi ! patterns require zero offset. */ ! if (!REG_P (XEXP (src, 0))) { ! rtx src_reg = copy_addr_to_reg (XEXP (src, 0)); ! src = replace_equiv_address (src, src_reg); } ! set_mem_size (src, GEN_INT (move_bytes)); ! ! if (!REG_P (XEXP (dest, 0))) { ! rtx dest_reg = copy_addr_to_reg (XEXP (dest, 0)); ! dest = replace_equiv_address (dest, dest_reg); } + set_mem_size (dest, GEN_INT (move_bytes)); + + emit_insn ((*gen_func.movstrsi) (dest, src, + GEN_INT (move_bytes & 31), + align_rtx)); + } + else + { + rtx tmp_reg = gen_reg_rtx (mode); + + emit_insn ((*gen_func.mov) (tmp_reg, src)); + emit_insn ((*gen_func.mov) (dest, tmp_reg)); } } } else /* string instructions not available */ { ! rtx stores[MAX_MOVE_REG]; ! int num_reg = 0; ! int i; ! ! for (offset = 0; bytes > 0; offset += move_bytes, bytes -= move_bytes) { ! rtx (*gen_mov_func) PARAMS ((rtx, rtx)); ! enum machine_mode mode; ! rtx src, dest, tmp_reg; /* Generate the appropriate load and store, saving the stores for later. */ *************** expand_block_move (operands) *** 5155,5210 **** && (align >= 8 || (! STRICT_ALIGNMENT && align >= 4))) { move_bytes = 8; ! tmp_reg = gen_reg_rtx (DImode); ! emit_insn (gen_movdi (tmp_reg, ! expand_block_move_mem (DImode, ! src_addr, ! orig_src))); ! stores[num_reg++] = gen_movdi (expand_block_move_mem (DImode, ! dest_addr, ! orig_dest), ! tmp_reg); } else if (bytes >= 4 && (align >= 4 || ! STRICT_ALIGNMENT)) { move_bytes = 4; ! tmp_reg = gen_reg_rtx (SImode); ! emit_insn (gen_movsi (tmp_reg, ! expand_block_move_mem (SImode, ! src_addr, ! orig_src))); ! stores[num_reg++] = gen_movsi (expand_block_move_mem (SImode, ! dest_addr, ! orig_dest), ! tmp_reg); } else if (bytes >= 2 && (align >= 2 || ! STRICT_ALIGNMENT)) { move_bytes = 2; ! tmp_reg = gen_reg_rtx (HImode); ! emit_insn (gen_movhi (tmp_reg, ! expand_block_move_mem (HImode, ! src_addr, ! orig_src))); ! stores[num_reg++] = gen_movhi (expand_block_move_mem (HImode, ! dest_addr, ! orig_dest), ! tmp_reg); } else { move_bytes = 1; ! tmp_reg = gen_reg_rtx (QImode); ! emit_insn (gen_movqi (tmp_reg, ! expand_block_move_mem (QImode, ! src_addr, ! orig_src))); ! stores[num_reg++] = gen_movqi (expand_block_move_mem (QImode, ! dest_addr, ! orig_dest), ! tmp_reg); } if (num_reg >= MAX_MOVE_REG) { for (i = 0; i < num_reg; i++) --- 5089,5123 ---- && (align >= 8 || (! STRICT_ALIGNMENT && align >= 4))) { move_bytes = 8; ! mode = DImode; ! gen_mov_func = gen_movdi; } else if (bytes >= 4 && (align >= 4 || ! STRICT_ALIGNMENT)) { move_bytes = 4; ! mode = SImode; ! gen_mov_func = gen_movsi; } else if (bytes >= 2 && (align >= 2 || ! STRICT_ALIGNMENT)) { move_bytes = 2; ! mode = HImode; ! gen_mov_func = gen_movhi; } else { move_bytes = 1; ! mode = QImode; ! gen_mov_func = gen_movqi; } + src = adjust_address (orig_src, mode, offset); + dest = adjust_address (orig_dest, mode, offset); + tmp_reg = gen_reg_rtx (mode); + + emit_insn ((*gen_mov_func) (tmp_reg, src)); + stores[num_reg++] = (*gen_mov_func) (dest, tmp_reg); + if (num_reg >= MAX_MOVE_REG) { for (i = 0; i < num_reg; i++) *************** rs6000_reverse_condition (mode, code) *** 7008,7014 **** { /* Reversal of FP compares takes care -- an ordered compare becomes an unordered compare and vice versa. */ ! if (mode == CCFPmode) return reverse_condition_maybe_unordered (code); else return reverse_condition (code); --- 6921,6927 ---- { /* Reversal of FP compares takes care -- an ordered compare becomes an unordered compare and vice versa. */ ! if (mode == CCFPmode && !flag_unsafe_math_optimizations) return reverse_condition_maybe_unordered (code); else return reverse_condition (code); *************** output_cbranch (op, label, reversed, ins *** 7161,7167 **** reverse_condition_maybe_unordered here always but this makes the resulting assembler clearer. */ if (really_reversed) ! code = rs6000_reverse_condition (mode, code); switch (code) { --- 7074,7087 ---- reverse_condition_maybe_unordered here always but this makes the resulting assembler clearer. */ if (really_reversed) ! { ! /* Reversal of FP compares takes care -- an ordered compare ! becomes an unordered compare and vice versa. */ ! if (mode == CCFPmode) ! code = reverse_condition_maybe_unordered (code); ! else ! code = reverse_condition (code); ! } switch (code) { *************** first_reg_to_save () *** 7434,7486 **** || (DEFAULT_ABI == ABI_DARWIN && flag_pic))))) break; - if (current_function_profile) - { - /* AIX must save/restore every register that contains a parameter - before/after the .__mcount call plus an additional register - for the static chain, if needed; use registers from 30 down to 22 - to do this. */ - if (DEFAULT_ABI == ABI_AIX || DEFAULT_ABI == ABI_DARWIN) - { - int last_parm_reg, profile_first_reg; - - /* Figure out last used parameter register. The proper thing - to do is to walk incoming args of the function. A function - might have live parameter registers even if it has no - incoming args. */ - for (last_parm_reg = 10; - last_parm_reg > 2 && ! regs_ever_live [last_parm_reg]; - last_parm_reg--) - ; - - /* Calculate first reg for saving parameter registers - and static chain. - Skip reg 31 which may contain the frame pointer. */ - profile_first_reg = (33 - last_parm_reg - - (current_function_needs_context ? 1 : 0)); - #if TARGET_MACHO - /* Need to skip another reg to account for R31 being PICBASE - (when flag_pic is set) or R30 being used as the frame - pointer (when flag_pic is not set). */ - --profile_first_reg; - #endif - /* Do not save frame pointer if no parameters needs to be saved. */ - if (profile_first_reg == 31) - profile_first_reg = 32; - - if (first_reg > profile_first_reg) - first_reg = profile_first_reg; - } - - /* SVR4 may need one register to preserve the static chain. */ - else if (current_function_needs_context) - { - /* Skip reg 31 which may contain the frame pointer. */ - if (first_reg > 30) - first_reg = 30; - } - } - #if TARGET_MACHO if (flag_pic && current_function_uses_pic_offset_table && (first_reg > RS6000_PIC_OFFSET_TABLE_REGNUM)) --- 7354,7359 ---- *************** rs6000_emit_load_toc_table (fromprolog) *** 8124,8214 **** rtx dest; dest = gen_rtx_REG (Pmode, RS6000_PIC_OFFSET_TABLE_REGNUM); ! if (TARGET_ELF && DEFAULT_ABI != ABI_AIX) { ! if (DEFAULT_ABI == ABI_V4 && flag_pic == 1) { ! rtx temp = (fromprolog ! ? gen_rtx_REG (Pmode, LINK_REGISTER_REGNUM) ! : gen_reg_rtx (Pmode)); ! rs6000_maybe_dead (emit_insn (gen_load_toc_v4_pic_si (temp))); ! rs6000_maybe_dead (emit_move_insn (dest, temp)); } - else if (flag_pic == 2) - { - char buf[30]; - rtx tempLR = (fromprolog - ? gen_rtx_REG (Pmode, LINK_REGISTER_REGNUM) - : gen_reg_rtx (Pmode)); - rtx temp0 = (fromprolog - ? gen_rtx_REG (Pmode, 0) - : gen_reg_rtx (Pmode)); - rtx symF; ! /* possibly create the toc section */ ! if (! toc_initialized) ! { ! toc_section (); ! function_section (current_function_decl); ! } ! ! if (fromprolog) ! { ! rtx symL; ! ! ASM_GENERATE_INTERNAL_LABEL (buf, "LCF", rs6000_pic_labelno); ! symF = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (buf)); ! ASM_GENERATE_INTERNAL_LABEL (buf, "LCL", rs6000_pic_labelno); ! symL = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (buf)); ! rs6000_maybe_dead (emit_insn (gen_load_toc_v4_PIC_1 (tempLR, ! symF))); ! rs6000_maybe_dead (emit_move_insn (dest, tempLR)); ! rs6000_maybe_dead (emit_insn (gen_load_toc_v4_PIC_2 (temp0, dest, ! symL, ! symF))); ! } ! else ! { ! rtx tocsym; ! static int reload_toc_labelno = 0; ! tocsym = gen_rtx_SYMBOL_REF (Pmode, toc_label_name); ! ASM_GENERATE_INTERNAL_LABEL (buf, "LCG", reload_toc_labelno++); ! symF = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (buf)); ! rs6000_maybe_dead (emit_insn (gen_load_toc_v4_PIC_1b (tempLR, ! symF, ! tocsym))); ! rs6000_maybe_dead (emit_move_insn (dest, tempLR)); ! rs6000_maybe_dead (emit_move_insn (temp0, ! gen_rtx_MEM (Pmode, dest))); ! } ! rs6000_maybe_dead (emit_insn (gen_addsi3 (dest, temp0, dest))); ! } ! else if (flag_pic == 0 && TARGET_MINIMAL_TOC) ! { ! /* This is for AIX code running in non-PIC ELF. */ ! char buf[30]; ! rtx realsym; ! ASM_GENERATE_INTERNAL_LABEL (buf, "LCTOC", 1); ! realsym = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (buf)); ! ! rs6000_maybe_dead (emit_insn (gen_elf_high (dest, realsym))); ! rs6000_maybe_dead (emit_insn (gen_elf_low (dest, dest, realsym))); } ! else ! abort (); } ! else { if (TARGET_32BIT) ! rs6000_maybe_dead (emit_insn (gen_load_toc_aix_si (dest))); else ! rs6000_maybe_dead (emit_insn (gen_load_toc_aix_di (dest))); } } int --- 7997,8084 ---- rtx dest; dest = gen_rtx_REG (Pmode, RS6000_PIC_OFFSET_TABLE_REGNUM); ! if (TARGET_ELF && DEFAULT_ABI == ABI_V4 && flag_pic == 1) { ! rtx temp = (fromprolog ! ? gen_rtx_REG (Pmode, LINK_REGISTER_REGNUM) ! : gen_reg_rtx (Pmode)); ! rs6000_maybe_dead (emit_insn (gen_load_toc_v4_pic_si (temp))); ! rs6000_maybe_dead (emit_move_insn (dest, temp)); ! } ! else if (TARGET_ELF && DEFAULT_ABI != ABI_AIX && flag_pic == 2) ! { ! char buf[30]; ! rtx tempLR = (fromprolog ! ? gen_rtx_REG (Pmode, LINK_REGISTER_REGNUM) ! : gen_reg_rtx (Pmode)); ! rtx temp0 = (fromprolog ! ? gen_rtx_REG (Pmode, 0) ! : gen_reg_rtx (Pmode)); ! rtx symF; ! ! /* possibly create the toc section */ ! if (! toc_initialized) { ! toc_section (); ! function_section (current_function_decl); } ! if (fromprolog) ! { ! rtx symL; ! ASM_GENERATE_INTERNAL_LABEL (buf, "LCF", rs6000_pic_labelno); ! symF = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (buf)); ! ASM_GENERATE_INTERNAL_LABEL (buf, "LCL", rs6000_pic_labelno); ! symL = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (buf)); ! rs6000_maybe_dead (emit_insn (gen_load_toc_v4_PIC_1 (tempLR, ! symF))); ! rs6000_maybe_dead (emit_move_insn (dest, tempLR)); ! rs6000_maybe_dead (emit_insn (gen_load_toc_v4_PIC_2 (temp0, dest, ! symL, ! symF))); ! } ! else ! { ! rtx tocsym; ! static int reload_toc_labelno = 0; ! tocsym = gen_rtx_SYMBOL_REF (Pmode, toc_label_name); ! ASM_GENERATE_INTERNAL_LABEL (buf, "LCG", reload_toc_labelno++); ! symF = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (buf)); ! ! rs6000_maybe_dead (emit_insn (gen_load_toc_v4_PIC_1b (tempLR, ! symF, ! tocsym))); ! rs6000_maybe_dead (emit_move_insn (dest, tempLR)); ! rs6000_maybe_dead (emit_move_insn (temp0, ! gen_rtx_MEM (Pmode, dest))); } ! rs6000_maybe_dead (emit_insn (gen_addsi3 (dest, temp0, dest))); } ! else if (TARGET_ELF && !TARGET_AIX && flag_pic == 0 && TARGET_MINIMAL_TOC) ! { ! /* This is for AIX code running in non-PIC ELF32. */ ! char buf[30]; ! rtx realsym; ! ASM_GENERATE_INTERNAL_LABEL (buf, "LCTOC", 1); ! realsym = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (buf)); ! ! rs6000_maybe_dead (emit_insn (gen_elf_high (dest, realsym))); ! rs6000_maybe_dead (emit_insn (gen_elf_low (dest, dest, realsym))); ! } ! else if (DEFAULT_ABI == ABI_AIX) { if (TARGET_32BIT) ! rs6000_maybe_dead (emit_insn (gen_load_toc_aix_si (dest))); else ! rs6000_maybe_dead (emit_insn (gen_load_toc_aix_di (dest))); } + else + abort (); } int *************** output_mi_thunk (file, thunk_fndecl, del *** 9735,9757 **** fprintf (file, "\taddi %s,%s,%d\n", this_reg, this_reg, delta); } /* Large constants that can be done by one addis instruction. */ ! else if ((delta & 0xffff) == 0 && num_insns_constant_wide (delta) == 1) asm_fprintf (file, "\t{cau|addis} %s,%s,%d\n", this_reg, this_reg, delta >> 16); /* 32-bit constants that can be done by an add and addis instruction. */ ! else if (TARGET_32BIT || num_insns_constant_wide (delta) == 1) { /* Break into two pieces, propagating the sign bit from the low word to the upper word. */ ! int delta_high = delta >> 16; ! int delta_low = delta & 0xffff; ! if ((delta_low & 0x8000) != 0) ! { ! delta_high++; ! delta_low = (delta_low ^ 0x8000) - 0x8000; /* sign extend */ ! } asm_fprintf (file, "\t{cau|addis} %s,%s,%d\n", this_reg, this_reg, delta_high); --- 9605,9626 ---- fprintf (file, "\taddi %s,%s,%d\n", this_reg, this_reg, delta); } + /* 64-bit constants. If "int" is 32 bits, we'll never hit this abort. */ + else if (TARGET_64BIT && (delta < -2147483647 - 1 || delta > 2147483647)) + abort (); + /* Large constants that can be done by one addis instruction. */ ! else if ((delta & 0xffff) == 0) asm_fprintf (file, "\t{cau|addis} %s,%s,%d\n", this_reg, this_reg, delta >> 16); /* 32-bit constants that can be done by an add and addis instruction. */ ! else { /* Break into two pieces, propagating the sign bit from the low word to the upper word. */ ! int delta_low = ((delta & 0xffff) ^ 0x8000) - 0x8000; ! int delta_high = (delta - delta_low) >> 16; asm_fprintf (file, "\t{cau|addis} %s,%s,%d\n", this_reg, this_reg, delta_high); *************** output_mi_thunk (file, thunk_fndecl, del *** 9762,9771 **** fprintf (file, "\taddi %s,%s,%d\n", this_reg, this_reg, delta_low); } - /* 64-bit constants, fixme */ - else - abort (); - /* Get the prefix in front of the names. */ switch (DEFAULT_ABI) { --- 9631,9636 ---- *************** output_mi_thunk (file, thunk_fndecl, del *** 9821,9827 **** } assemble_name (file, fname); putc ('\n', file); ! text_section (); if (TARGET_MINIMAL_TOC) asm_fprintf (file, (TARGET_32BIT) ? "\t{l|lwz} %s,%s(%s)\n" : "\tld %s,%s(%s)\n", r12, --- 9686,9695 ---- } assemble_name (file, fname); putc ('\n', file); ! if (TARGET_ELF) ! function_section (current_function_decl); ! else ! text_section (); if (TARGET_MINIMAL_TOC) asm_fprintf (file, (TARGET_32BIT) ? "\t{l|lwz} %s,%s(%s)\n" : "\tld %s,%s(%s)\n", r12, *************** output_toc (file, x, labelno, mode) *** 10240,10247 **** abort ();/* It would be easy to make this work, but it doesn't now. */ if (POINTER_SIZE > GET_MODE_BITSIZE (mode)) ! lshift_double (low, high, POINTER_SIZE - GET_MODE_BITSIZE (mode), ! POINTER_SIZE, &low, &high, 0); if (TARGET_64BIT) { --- 10108,10124 ---- abort ();/* It would be easy to make this work, but it doesn't now. */ if (POINTER_SIZE > GET_MODE_BITSIZE (mode)) ! { ! #if HOST_BITS_PER_WIDE_INT == 32 ! lshift_double (low, high, POINTER_SIZE - GET_MODE_BITSIZE (mode), ! POINTER_SIZE, &low, &high, 0); ! #else ! low |= high << 32; ! low <<= POINTER_SIZE - GET_MODE_BITSIZE (mode); ! high = (HOST_WIDE_INT) low >> 32; ! low &= 0xffffffff; ! #endif ! } if (TARGET_64BIT) { *************** rs6000_gen_section_name (buf, filename, *** 10459,10468 **** void output_profile_hook (labelno) ! int labelno; { if (DEFAULT_ABI == ABI_AIX) { char buf[30]; const char *label_name; rtx fun; --- 10336,10348 ---- void output_profile_hook (labelno) ! int labelno ATTRIBUTE_UNUSED; { if (DEFAULT_ABI == ABI_AIX) { + #ifdef NO_PROFILE_COUNTERS + emit_library_call (init_one_libfunc (RS6000_MCOUNT), 0, VOIDmode, 0); + #else char buf[30]; const char *label_name; rtx fun; *************** output_profile_hook (labelno) *** 10473,10478 **** --- 10353,10359 ---- emit_library_call (init_one_libfunc (RS6000_MCOUNT), 0, VOIDmode, 1, fun, Pmode); + #endif } else if (DEFAULT_ABI == ABI_DARWIN) { *************** output_function_profiler (file, labelno) *** 10506,10511 **** --- 10387,10393 ---- int labelno; { char buf[100]; + int save_lr = 8; ASM_GENERATE_INTERNAL_LABEL (buf, "LP", labelno); switch (DEFAULT_ABI) *************** output_function_profiler (file, labelno) *** 10514,10526 **** abort (); case ABI_V4: case ABI_AIX_NODESC: fprintf (file, "\tmflr %s\n", reg_names[0]); if (flag_pic == 1) { fputs ("\tbl _GLOBAL_OFFSET_TABLE_@local-4\n", file); ! asm_fprintf (file, "\t{st|stw} %s,4(%s)\n", ! reg_names[0], reg_names[1]); asm_fprintf (file, "\tmflr %s\n", reg_names[12]); asm_fprintf (file, "\t{l|lwz} %s,", reg_names[0]); assemble_name (file, buf); --- 10396,10416 ---- abort (); case ABI_V4: + save_lr = 4; + /* Fall through. */ + case ABI_AIX_NODESC: + if (!TARGET_32BIT) + { + warning ("no profiling of 64-bit code for this ABI"); + return; + } fprintf (file, "\tmflr %s\n", reg_names[0]); if (flag_pic == 1) { fputs ("\tbl _GLOBAL_OFFSET_TABLE_@local-4\n", file); ! asm_fprintf (file, "\t{st|stw} %s,%d(%s)\n", ! reg_names[0], save_lr, reg_names[1]); asm_fprintf (file, "\tmflr %s\n", reg_names[12]); asm_fprintf (file, "\t{l|lwz} %s,", reg_names[0]); assemble_name (file, buf); *************** output_function_profiler (file, labelno) *** 10528,10535 **** } else if (flag_pic > 1) { ! asm_fprintf (file, "\t{st|stw} %s,4(%s)\n", ! reg_names[0], reg_names[1]); /* Now, we need to get the address of the label. */ fputs ("\tbl 1f\n\t.long ", file); assemble_name (file, buf); --- 10418,10425 ---- } else if (flag_pic > 1) { ! asm_fprintf (file, "\t{st|stw} %s,%d(%s)\n", ! reg_names[0], save_lr, reg_names[1]); /* Now, we need to get the address of the label. */ fputs ("\tbl 1f\n\t.long ", file); assemble_name (file, buf); *************** output_function_profiler (file, labelno) *** 10545,10571 **** asm_fprintf (file, "\t{liu|lis} %s,", reg_names[12]); assemble_name (file, buf); fputs ("@ha\n", file); ! asm_fprintf (file, "\t{st|stw} %s,4(%s)\n", ! reg_names[0], reg_names[1]); asm_fprintf (file, "\t{cal|la} %s,", reg_names[0]); assemble_name (file, buf); asm_fprintf (file, "@l(%s)\n", reg_names[12]); } ! if (current_function_needs_context) ! asm_fprintf (file, "\tmr %s,%s\n", ! reg_names[30], reg_names[STATIC_CHAIN_REGNUM]); ! fprintf (file, "\tbl %s\n", RS6000_MCOUNT); ! if (current_function_needs_context) ! asm_fprintf (file, "\tmr %s,%s\n", ! reg_names[STATIC_CHAIN_REGNUM], reg_names[30]); break; case ABI_AIX: case ABI_DARWIN: /* Don't do anything, done in output_profile_hook (). */ break; - } } --- 10435,10466 ---- asm_fprintf (file, "\t{liu|lis} %s,", reg_names[12]); assemble_name (file, buf); fputs ("@ha\n", file); ! asm_fprintf (file, "\t{st|stw} %s,%d(%s)\n", ! reg_names[0], save_lr, reg_names[1]); asm_fprintf (file, "\t{cal|la} %s,", reg_names[0]); assemble_name (file, buf); asm_fprintf (file, "@l(%s)\n", reg_names[12]); } ! if (current_function_needs_context && DEFAULT_ABI == ABI_AIX_NODESC) ! { ! asm_fprintf (file, "\t{st|stw} %s,%d(%s)\n", ! reg_names[STATIC_CHAIN_REGNUM], ! 12, reg_names[1]); ! fprintf (file, "\tbl %s\n", RS6000_MCOUNT); ! asm_fprintf (file, "\t{l|lwz} %s,%d(%s)\n", ! reg_names[STATIC_CHAIN_REGNUM], ! 12, reg_names[1]); ! } ! else ! /* ABI_V4 saves the static chain reg with ASM_OUTPUT_REG_PUSH. */ ! fprintf (file, "\tbl %s\n", RS6000_MCOUNT); break; case ABI_AIX: case ABI_DARWIN: /* Don't do anything, done in output_profile_hook (). */ break; } } *************** rs6000_select_section (decl, reloc) *** 10886,10903 **** if (TREE_CODE (decl) == STRING_CST) readonly = ! flag_writable_strings; else if (TREE_CODE (decl) == VAR_DECL) ! readonly = (! (flag_pic && reloc) && TREE_READONLY (decl) && ! TREE_SIDE_EFFECTS (decl) && DECL_INITIAL (decl) && DECL_INITIAL (decl) != error_mark_node && TREE_CONSTANT (DECL_INITIAL (decl))); else if (TREE_CODE (decl) == CONSTRUCTOR) ! readonly = (! (flag_pic && reloc) && ! TREE_SIDE_EFFECTS (decl) && TREE_CONSTANT (decl)); else ! readonly = 1; if (needs_sdata && rs6000_sdata != SDATA_EABI) readonly = 0; --- 10781,10799 ---- if (TREE_CODE (decl) == STRING_CST) readonly = ! flag_writable_strings; else if (TREE_CODE (decl) == VAR_DECL) ! readonly = (! ((flag_pic || DEFAULT_ABI == ABI_AIX) && reloc) && TREE_READONLY (decl) && ! TREE_SIDE_EFFECTS (decl) && DECL_INITIAL (decl) && DECL_INITIAL (decl) != error_mark_node && TREE_CONSTANT (DECL_INITIAL (decl))); else if (TREE_CODE (decl) == CONSTRUCTOR) ! readonly = (! ((flag_pic || DEFAULT_ABI == ABI_AIX) && reloc) && ! TREE_SIDE_EFFECTS (decl) && TREE_CONSTANT (decl)); else ! readonly = ! ((flag_pic || DEFAULT_ABI == ABI_AIX) && reloc); ! if (needs_sdata && rs6000_sdata != SDATA_EABI) readonly = 0; *************** rs6000_unique_section (decl, reloc) *** 10942,10955 **** int needs_sdata; int size; - readonly = 1; if (TREE_CODE (decl) == STRING_CST) readonly = ! flag_writable_strings; else if (TREE_CODE (decl) == VAR_DECL) ! readonly = (! (flag_pic && reloc) && TREE_READONLY (decl) && ! TREE_SIDE_EFFECTS (decl) && TREE_CONSTANT (DECL_INITIAL (decl))); size = int_size_in_bytes (TREE_TYPE (decl)); needs_sdata = (size > 0 --- 10838,10852 ---- int needs_sdata; int size; if (TREE_CODE (decl) == STRING_CST) readonly = ! flag_writable_strings; else if (TREE_CODE (decl) == VAR_DECL) ! readonly = (! ((flag_pic || DEFAULT_ABI == ABI_AIX) && reloc) && TREE_READONLY (decl) && ! TREE_SIDE_EFFECTS (decl) && TREE_CONSTANT (DECL_INITIAL (decl))); + else + readonly = ! ((flag_pic || DEFAULT_ABI == ABI_AIX) && reloc); size = int_size_in_bytes (TREE_TYPE (decl)); needs_sdata = (size > 0 diff -Nrc3pad gcc-3.2/gcc/config/rs6000/rs6000.md gcc-3.2.1/gcc/config/rs6000/rs6000.md *** gcc-3.2/gcc/config/rs6000/rs6000.md Mon Jul 15 05:29:43 2002 --- gcc-3.2.1/gcc/config/rs6000/rs6000.md Mon Oct 7 04:21:05 2002 *************** *** 9641,9647 **** [(set (match_operand:SI 0 "register_operand" "=l") (match_operand:SI 1 "immediate_operand" "s")) (unspec [(match_dup 1)] 7)] ! "TARGET_ELF && flag_pic == 2" "bl %1\\n%1:" [(set_attr "type" "branch") (set_attr "length" "4")]) --- 9641,9647 ---- [(set (match_operand:SI 0 "register_operand" "=l") (match_operand:SI 1 "immediate_operand" "s")) (unspec [(match_dup 1)] 7)] ! "TARGET_ELF && DEFAULT_ABI != ABI_AIX && flag_pic == 2" "bl %1\\n%1:" [(set_attr "type" "branch") (set_attr "length" "4")]) *************** *** 9650,9666 **** [(set (match_operand:SI 0 "register_operand" "=l") (match_operand:SI 1 "immediate_operand" "s")) (unspec [(match_dup 1) (match_operand 2 "immediate_operand" "s")] 6)] ! "TARGET_ELF && flag_pic == 2" "bl %1\\n\\t.long %2-%1+4\\n%1:" [(set_attr "type" "branch") (set_attr "length" "8")]) (define_insn "load_toc_v4_PIC_2" [(set (match_operand:SI 0 "register_operand" "=r") ! (mem:SI (plus:SI (match_operand:SI 1 "register_operand" "r") (minus:SI (match_operand:SI 2 "immediate_operand" "s") (match_operand:SI 3 "immediate_operand" "s")))))] ! "TARGET_ELF && flag_pic == 2" "{l|lwz} %0,%2-%3(%1)" [(set_attr "type" "load")]) --- 9650,9666 ---- [(set (match_operand:SI 0 "register_operand" "=l") (match_operand:SI 1 "immediate_operand" "s")) (unspec [(match_dup 1) (match_operand 2 "immediate_operand" "s")] 6)] ! "TARGET_ELF && DEFAULT_ABI != ABI_AIX && flag_pic == 2" "bl %1\\n\\t.long %2-%1+4\\n%1:" [(set_attr "type" "branch") (set_attr "length" "8")]) (define_insn "load_toc_v4_PIC_2" [(set (match_operand:SI 0 "register_operand" "=r") ! (mem:SI (plus:SI (match_operand:SI 1 "register_operand" "b") (minus:SI (match_operand:SI 2 "immediate_operand" "s") (match_operand:SI 3 "immediate_operand" "s")))))] ! "TARGET_ELF && DEFAULT_ABI != ABI_AIX && flag_pic == 2" "{l|lwz} %0,%2-%3(%1)" [(set_attr "type" "load")]) *************** *** 11253,11267 **** "") (define_insn "" ! [(set (match_operand:SI 0 "gpc_reg_operand" "=r,r") (plus:SI (le:SI (match_operand:SI 1 "gpc_reg_operand" "r,r") (match_operand:SI 2 "reg_or_short_operand" "r,O")) ! (match_operand:SI 3 "gpc_reg_operand" "r,r"))) ! (clobber (match_scratch:SI 4 "=&r,&r"))] "TARGET_POWER" "@ ! doz %4,%2,%1\;{sfi|subfic} %4,%4,0\;{aze|addze} %0,%3 ! {srai|srawi} %4,%1,31\;{sf|subfc} %4,%1,%4\;{aze|addze} %0,%3" [(set_attr "length" "12")]) (define_insn "" --- 11253,11266 ---- "") (define_insn "" ! [(set (match_operand:SI 0 "gpc_reg_operand" "=&r,&r") (plus:SI (le:SI (match_operand:SI 1 "gpc_reg_operand" "r,r") (match_operand:SI 2 "reg_or_short_operand" "r,O")) ! (match_operand:SI 3 "gpc_reg_operand" "r,r")))] "TARGET_POWER" "@ ! doz %0,%2,%1\;{sfi|subfic} %0,%0,0\;{aze|addze} %0,%3 ! {srai|srawi} %0,%1,31\;{sf|subfc} %0,%1,%0\;{aze|addze} %0,%3" [(set_attr "length" "12")]) (define_insn "" *************** *** 11292,11337 **** "TARGET_POWER && reload_completed" [(set (match_dup 4) (plus:SI (le:SI (match_dup 1) (match_dup 2)) ! (match_dup 3))) (set (match_dup 0) (compare:CC (match_dup 4) (const_int 0)))] "") (define_insn "" ! [(set (match_operand:CC 5 "cc_reg_operand" "=x,x,?y,?y") (compare:CC (plus:SI (le:SI (match_operand:SI 1 "gpc_reg_operand" "r,r,r,r") (match_operand:SI 2 "reg_or_short_operand" "r,O,r,O")) (match_operand:SI 3 "gpc_reg_operand" "r,r,r,r")) (const_int 0))) ! (set (match_operand:SI 0 "gpc_reg_operand" "=r,r,r,r") ! (plus:SI (le:SI (match_dup 1) (match_dup 2)) (match_dup 3))) ! (clobber (match_scratch:SI 4 "=&r,&r,&r,&r"))] "TARGET_POWER" "@ ! doz %4,%2,%1\;{sfi|subfic} %4,%4,0\;{aze.|addze.} %0,%3 ! {srai|srawi} %4,%1,31\;{sf|subfc} %4,%1,%4\;{aze.|addze.} %0,%3 # #" [(set_attr "type" "compare") (set_attr "length" "12,12,16,16")]) (define_split ! [(set (match_operand:CC 5 "cc_reg_not_cr0_operand" "") (compare:CC (plus:SI (le:SI (match_operand:SI 1 "gpc_reg_operand" "") (match_operand:SI 2 "reg_or_short_operand" "")) (match_operand:SI 3 "gpc_reg_operand" "")) (const_int 0))) (set (match_operand:SI 0 "gpc_reg_operand" "") ! (plus:SI (le:SI (match_dup 1) (match_dup 2)) (match_dup 3))) ! (clobber (match_scratch:SI 4 ""))] "TARGET_POWER && reload_completed" ! [(parallel [(set (match_dup 0) (plus:SI (le:SI (match_dup 1) (match_dup 2)) (match_dup 3))) ! (clobber (match_dup 4))]) ! (set (match_dup 5) (compare:CC (match_dup 0) (const_int 0)))] "") --- 11291,11333 ---- "TARGET_POWER && reload_completed" [(set (match_dup 4) (plus:SI (le:SI (match_dup 1) (match_dup 2)) ! (match_dup 3))) (set (match_dup 0) (compare:CC (match_dup 4) (const_int 0)))] "") (define_insn "" ! [(set (match_operand:CC 4 "cc_reg_operand" "=x,x,?y,?y") (compare:CC (plus:SI (le:SI (match_operand:SI 1 "gpc_reg_operand" "r,r,r,r") (match_operand:SI 2 "reg_or_short_operand" "r,O,r,O")) (match_operand:SI 3 "gpc_reg_operand" "r,r,r,r")) (const_int 0))) ! (set (match_operand:SI 0 "gpc_reg_operand" "=&r,&r,&r,&r") ! (plus:SI (le:SI (match_dup 1) (match_dup 2)) (match_dup 3)))] "TARGET_POWER" "@ ! doz %0,%2,%1\;{sfi|subfic} %0,%0,0\;{aze.|addze.} %0,%3 ! {srai|srawi} %0,%1,31\;{sf|subfc} %0,%1,%0\;{aze.|addze.} %0,%3 # #" [(set_attr "type" "compare") (set_attr "length" "12,12,16,16")]) (define_split ! [(set (match_operand:CC 4 "cc_reg_not_cr0_operand" "") (compare:CC (plus:SI (le:SI (match_operand:SI 1 "gpc_reg_operand" "") (match_operand:SI 2 "reg_or_short_operand" "")) (match_operand:SI 3 "gpc_reg_operand" "")) (const_int 0))) (set (match_operand:SI 0 "gpc_reg_operand" "") ! (plus:SI (le:SI (match_dup 1) (match_dup 2)) (match_dup 3)))] "TARGET_POWER && reload_completed" ! [(set (match_dup 0) (plus:SI (le:SI (match_dup 1) (match_dup 2)) (match_dup 3))) ! (set (match_dup 4) (compare:CC (match_dup 0) (const_int 0)))] "") *************** *** 11481,11517 **** "") (define_insn "" ! [(set (match_operand:CC 5 "cc_reg_operand" "=x,?y") (compare:CC (plus:SI (leu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r") (match_operand:SI 2 "reg_or_short_operand" "rI,rI")) (match_operand:SI 3 "gpc_reg_operand" "r,r")) (const_int 0))) ! (set (match_operand:SI 0 "gpc_reg_operand" "=r,r") ! (plus:SI (leu:SI (match_dup 1) (match_dup 2)) (match_dup 3))) ! (clobber (match_scratch:SI 4 "=&r,&r"))] "! TARGET_POWERPC64" "@ ! {sf%I2|subf%I2c} %4,%1,%2\;{aze.|addze.} %0,%3 #" [(set_attr "type" "compare") (set_attr "length" "8,12")]) (define_split ! [(set (match_operand:CC 5 "cc_reg_not_cr0_operand" "") (compare:CC (plus:SI (leu:SI (match_operand:SI 1 "gpc_reg_operand" "") (match_operand:SI 2 "reg_or_short_operand" "")) (match_operand:SI 3 "gpc_reg_operand" "")) (const_int 0))) (set (match_operand:SI 0 "gpc_reg_operand" "") ! (plus:SI (leu:SI (match_dup 1) (match_dup 2)) (match_dup 3))) ! (clobber (match_scratch:SI 4 ""))] "! TARGET_POWERPC64 && reload_completed" ! [(parallel [(set (match_dup 0) (plus:SI (leu:SI (match_dup 1) (match_dup 2)) (match_dup 3))) ! (clobber (match_dup 4))]) ! (set (match_dup 5) (compare:CC (match_dup 0) (const_int 0)))] "") --- 11477,11510 ---- "") (define_insn "" ! [(set (match_operand:CC 4 "cc_reg_operand" "=x,?y") (compare:CC (plus:SI (leu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r") (match_operand:SI 2 "reg_or_short_operand" "rI,rI")) (match_operand:SI 3 "gpc_reg_operand" "r,r")) (const_int 0))) ! (set (match_operand:SI 0 "gpc_reg_operand" "=&r,&r") ! (plus:SI (leu:SI (match_dup 1) (match_dup 2)) (match_dup 3)))] "! TARGET_POWERPC64" "@ ! {sf%I2|subf%I2c} %0,%1,%2\;{aze.|addze.} %0,%3 #" [(set_attr "type" "compare") (set_attr "length" "8,12")]) (define_split ! [(set (match_operand:CC 4 "cc_reg_not_cr0_operand" "") (compare:CC (plus:SI (leu:SI (match_operand:SI 1 "gpc_reg_operand" "") (match_operand:SI 2 "reg_or_short_operand" "")) (match_operand:SI 3 "gpc_reg_operand" "")) (const_int 0))) (set (match_operand:SI 0 "gpc_reg_operand" "") ! (plus:SI (leu:SI (match_dup 1) (match_dup 2)) (match_dup 3)))] "! TARGET_POWERPC64 && reload_completed" ! [(set (match_dup 0) (plus:SI (leu:SI (match_dup 1) (match_dup 2)) (match_dup 3))) ! (set (match_dup 4) (compare:CC (match_dup 0) (const_int 0)))] "") *************** *** 11525,11538 **** [(set_attr "length" "12")]) (define_insn "" ! [(set (match_operand:SI 0 "gpc_reg_operand" "=r") (and:SI (neg:SI (leu:SI (match_operand:SI 1 "gpc_reg_operand" "r") (match_operand:SI 2 "reg_or_short_operand" "rI"))) ! (match_operand:SI 3 "gpc_reg_operand" "r"))) ! (clobber (match_scratch:SI 4 "=&r"))] "! TARGET_POWERPC64" ! "{sf%I2|subf%I2c} %4,%1,%2\;{sfe|subfe} %4,%4,%4\;andc %0,%3,%4" [(set_attr "length" "12")]) (define_insn "" --- 11518,11530 ---- [(set_attr "length" "12")]) (define_insn "" ! [(set (match_operand:SI 0 "gpc_reg_operand" "=&r") (and:SI (neg:SI (leu:SI (match_operand:SI 1 "gpc_reg_operand" "r") (match_operand:SI 2 "reg_or_short_operand" "rI"))) ! (match_operand:SI 3 "gpc_reg_operand" "r")))] "! TARGET_POWERPC64" ! "{sf%I2|subf%I2c} %0,%1,%2\;{sfe|subfe} %0,%0,%0\;andc %0,%3,%0" [(set_attr "length" "12")]) (define_insn "" *************** *** 11562,11595 **** (clobber (match_scratch:SI 4 ""))] "! TARGET_POWERPC64 && reload_completed" [(set (match_dup 4) ! (and:SI (neg:SI (leu:SI (match_dup 1) ! (match_dup 2))) ! (match_dup 3))) (set (match_dup 0) (compare:CC (match_dup 4) (const_int 0)))] "") (define_insn "" ! [(set (match_operand:CC 5 "cc_reg_operand" "=x,?y") (compare:CC (and:SI (neg:SI (leu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r") (match_operand:SI 2 "reg_or_short_operand" "rI,rI"))) (match_operand:SI 3 "gpc_reg_operand" "r,r")) (const_int 0))) ! (set (match_operand:SI 0 "gpc_reg_operand" "=r,r") ! (and:SI (neg:SI (leu:SI (match_dup 1) (match_dup 2))) (match_dup 3))) ! (clobber (match_scratch:SI 4 "=&r,&r"))] "! TARGET_POWERPC64" "@ ! {sf%I2|subf%I2c} %4,%1,%2\;{sfe|subfe} %4,%4,%4\;andc. %0,%3,%4 #" [(set_attr "type" "compare") (set_attr "length" "12,16")]) (define_split ! [(set (match_operand:CC 5 "cc_reg_not_cr0_operand" "") (compare:CC (and:SI (neg:SI (leu:SI (match_operand:SI 1 "gpc_reg_operand" "") --- 11554,11585 ---- (clobber (match_scratch:SI 4 ""))] "! TARGET_POWERPC64 && reload_completed" [(set (match_dup 4) ! (and:SI (neg:SI (leu:SI (match_dup 1) (match_dup 2))) ! (match_dup 3))) (set (match_dup 0) (compare:CC (match_dup 4) (const_int 0)))] "") (define_insn "" ! [(set (match_operand:CC 4 "cc_reg_operand" "=x,?y") (compare:CC (and:SI (neg:SI (leu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r") (match_operand:SI 2 "reg_or_short_operand" "rI,rI"))) (match_operand:SI 3 "gpc_reg_operand" "r,r")) (const_int 0))) ! (set (match_operand:SI 0 "gpc_reg_operand" "=&r,&r") ! (and:SI (neg:SI (leu:SI (match_dup 1) (match_dup 2))) (match_dup 3)))] "! TARGET_POWERPC64" "@ ! {sf%I2|subf%I2c} %0,%1,%2\;{sfe|subfe} %0,%0,%0\;andc. %0,%3,%0 #" [(set_attr "type" "compare") (set_attr "length" "12,16")]) (define_split ! [(set (match_operand:CC 4 "cc_reg_not_cr0_operand" "") (compare:CC (and:SI (neg:SI (leu:SI (match_operand:SI 1 "gpc_reg_operand" "") *************** *** 11597,11609 **** (match_operand:SI 3 "gpc_reg_operand" "")) (const_int 0))) (set (match_operand:SI 0 "gpc_reg_operand" "") ! (and:SI (neg:SI (leu:SI (match_dup 1) (match_dup 2))) (match_dup 3))) ! (clobber (match_scratch:SI 4 ""))] "! TARGET_POWERPC64 && reload_completed" ! [(parallel [(set (match_dup 0) ! (and:SI (neg:SI (leu:SI (match_dup 1) (match_dup 2))) (match_dup 3))) ! (clobber (match_dup 4))]) ! (set (match_dup 5) (compare:CC (match_dup 0) (const_int 0)))] "") --- 11587,11598 ---- (match_operand:SI 3 "gpc_reg_operand" "")) (const_int 0))) (set (match_operand:SI 0 "gpc_reg_operand" "") ! (and:SI (neg:SI (leu:SI (match_dup 1) (match_dup 2))) (match_dup 3)))] "! TARGET_POWERPC64 && reload_completed" ! [(set (match_dup 0) ! (and:SI (neg:SI (leu:SI (match_dup 1) (match_dup 2))) ! (match_dup 3))) ! (set (match_dup 4) (compare:CC (match_dup 0) (const_int 0)))] "") *************** *** 11648,11660 **** "") (define_insn "" ! [(set (match_operand:SI 0 "gpc_reg_operand" "=r") (plus:SI (lt:SI (match_operand:SI 1 "gpc_reg_operand" "r") (match_operand:SI 2 "reg_or_short_operand" "rI")) ! (match_operand:SI 3 "gpc_reg_operand" "r"))) ! (clobber (match_scratch:SI 4 "=&r"))] "TARGET_POWER" ! "doz%I2 %4,%1,%2\;{ai|addic} %4,%4,-1\;{aze|addze} %0,%3" [(set_attr "length" "12")]) (define_insn "" --- 11637,11648 ---- "") (define_insn "" ! [(set (match_operand:SI 0 "gpc_reg_operand" "=&r") (plus:SI (lt:SI (match_operand:SI 1 "gpc_reg_operand" "r") (match_operand:SI 2 "reg_or_short_operand" "rI")) ! (match_operand:SI 3 "gpc_reg_operand" "r")))] "TARGET_POWER" ! "doz%I2 %0,%1,%2\;{ai|addic} %0,%0,-1\;{aze|addze} %0,%3" [(set_attr "length" "12")]) (define_insn "" *************** *** 11683,11726 **** "TARGET_POWER && reload_completed" [(set (match_dup 4) (plus:SI (lt:SI (match_dup 1) (match_dup 2)) ! (match_dup 3))) (set (match_dup 0) (compare:CC (match_dup 4) (const_int 0)))] "") (define_insn "" ! [(set (match_operand:CC 5 "cc_reg_operand" "=x,?y") (compare:CC (plus:SI (lt:SI (match_operand:SI 1 "gpc_reg_operand" "r,r") (match_operand:SI 2 "reg_or_short_operand" "rI,rI")) (match_operand:SI 3 "gpc_reg_operand" "r,r")) (const_int 0))) ! (set (match_operand:SI 0 "gpc_reg_operand" "=r,r") ! (plus:SI (lt:SI (match_dup 1) (match_dup 2)) (match_dup 3))) ! (clobber (match_scratch:SI 4 "=&r,&r"))] "TARGET_POWER" "@ ! doz%I2 %4,%1,%2\;{ai|addic} %4,%4,-1\;{aze.|addze.} %0,%3 #" [(set_attr "type" "compare") (set_attr "length" "12,16")]) (define_split ! [(set (match_operand:CC 5 "cc_reg_not_cr0_operand" "") (compare:CC (plus:SI (lt:SI (match_operand:SI 1 "gpc_reg_operand" "") (match_operand:SI 2 "reg_or_short_operand" "")) (match_operand:SI 3 "gpc_reg_operand" "")) (const_int 0))) (set (match_operand:SI 0 "gpc_reg_operand" "") ! (plus:SI (lt:SI (match_dup 1) (match_dup 2)) (match_dup 3))) ! (clobber (match_scratch:SI 4 ""))] "TARGET_POWER && reload_completed" ! [(parallel [(set (match_dup 0) (plus:SI (lt:SI (match_dup 1) (match_dup 2)) (match_dup 3))) ! (clobber (match_dup 4))]) ! (set (match_dup 5) (compare:CC (match_dup 0) (const_int 0)))] "") --- 11671,11711 ---- "TARGET_POWER && reload_completed" [(set (match_dup 4) (plus:SI (lt:SI (match_dup 1) (match_dup 2)) ! (match_dup 3))) (set (match_dup 0) (compare:CC (match_dup 4) (const_int 0)))] "") (define_insn "" ! [(set (match_operand:CC 4 "cc_reg_operand" "=x,?y") (compare:CC (plus:SI (lt:SI (match_operand:SI 1 "gpc_reg_operand" "r,r") (match_operand:SI 2 "reg_or_short_operand" "rI,rI")) (match_operand:SI 3 "gpc_reg_operand" "r,r")) (const_int 0))) ! (set (match_operand:SI 0 "gpc_reg_operand" "=&r,&r") ! (plus:SI (lt:SI (match_dup 1) (match_dup 2)) (match_dup 3)))] "TARGET_POWER" "@ ! doz%I2 %0,%1,%2\;{ai|addic} %0,%0,-1\;{aze.|addze.} %0,%3 #" [(set_attr "type" "compare") (set_attr "length" "12,16")]) (define_split ! [(set (match_operand:CC 4 "cc_reg_not_cr0_operand" "") (compare:CC (plus:SI (lt:SI (match_operand:SI 1 "gpc_reg_operand" "") (match_operand:SI 2 "reg_or_short_operand" "")) (match_operand:SI 3 "gpc_reg_operand" "")) (const_int 0))) (set (match_operand:SI 0 "gpc_reg_operand" "") ! (plus:SI (lt:SI (match_dup 1) (match_dup 2)) (match_dup 3)))] "TARGET_POWER && reload_completed" ! [(set (match_dup 0) (plus:SI (lt:SI (match_dup 1) (match_dup 2)) (match_dup 3))) ! (set (match_dup 4) (compare:CC (match_dup 0) (const_int 0)))] "") *************** *** 11815,11860 **** "! TARGET_POWERPC64 && reload_completed" [(set (match_dup 4) (plus:SI (ltu:SI (match_dup 1) (match_dup 2)) ! (match_dup 3))) (set (match_dup 0) (compare:CC (match_dup 4) (const_int 0)))] "") (define_insn "" ! [(set (match_operand:CC 5 "cc_reg_operand" "=x,x,?y,?y") (compare:CC (plus:SI (ltu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r,r,r") (match_operand:SI 2 "reg_or_neg_short_operand" "r,P,r,P")) (match_operand:SI 3 "gpc_reg_operand" "r,r,r,r")) (const_int 0))) ! (set (match_operand:SI 0 "gpc_reg_operand" "=r,r,r,r") ! (plus:SI (ltu:SI (match_dup 1) (match_dup 2)) (match_dup 3))) ! (clobber (match_scratch:SI 4 "=&r,&r,&r,&r"))] "! TARGET_POWERPC64" "@ ! {sf|subfc} %4,%2,%1\;{sfe|subfe} %4,%4,%4\;{sf.|subfc.} %0,%4,%3 ! {ai|addic} %4,%1,%n2\;{sfe|subfe} %4,%4,%4\;{sf.|subfc.} %0,%4,%3 # #" [(set_attr "type" "compare") (set_attr "length" "12,12,16,16")]) (define_split ! [(set (match_operand:CC 5 "cc_reg_not_cr0_operand" "") (compare:CC (plus:SI (ltu:SI (match_operand:SI 1 "gpc_reg_operand" "") (match_operand:SI 2 "reg_or_neg_short_operand" "")) (match_operand:SI 3 "gpc_reg_operand" "")) (const_int 0))) (set (match_operand:SI 0 "gpc_reg_operand" "") ! (plus:SI (ltu:SI (match_dup 1) (match_dup 2)) (match_dup 3))) ! (clobber (match_scratch:SI 4 ""))] "! TARGET_POWERPC64 && reload_completed" ! [(parallel [(set (match_dup 0) (plus:SI (ltu:SI (match_dup 1) (match_dup 2)) (match_dup 3))) ! (clobber (match_dup 4))]) ! (set (match_dup 5) (compare:CC (match_dup 0) (const_int 0)))] "") --- 11800,11842 ---- "! TARGET_POWERPC64 && reload_completed" [(set (match_dup 4) (plus:SI (ltu:SI (match_dup 1) (match_dup 2)) ! (match_dup 3))) (set (match_dup 0) (compare:CC (match_dup 4) (const_int 0)))] "") (define_insn "" ! [(set (match_operand:CC 4 "cc_reg_operand" "=x,x,?y,?y") (compare:CC (plus:SI (ltu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r,r,r") (match_operand:SI 2 "reg_or_neg_short_operand" "r,P,r,P")) (match_operand:SI 3 "gpc_reg_operand" "r,r,r,r")) (const_int 0))) ! (set (match_operand:SI 0 "gpc_reg_operand" "=&r,&r,&r,&r") ! (plus:SI (ltu:SI (match_dup 1) (match_dup 2)) (match_dup 3)))] "! TARGET_POWERPC64" "@ ! {sf|subfc} %0,%2,%1\;{sfe|subfe} %0,%0,%0\;{sf.|subfc.} %0,%0,%3 ! {ai|addic} %0,%1,%n2\;{sfe|subfe} %0,%0,%0\;{sf.|subfc.} %0,%0,%3 # #" [(set_attr "type" "compare") (set_attr "length" "12,12,16,16")]) (define_split ! [(set (match_operand:CC 4 "cc_reg_not_cr0_operand" "") (compare:CC (plus:SI (ltu:SI (match_operand:SI 1 "gpc_reg_operand" "") (match_operand:SI 2 "reg_or_neg_short_operand" "")) (match_operand:SI 3 "gpc_reg_operand" "")) (const_int 0))) (set (match_operand:SI 0 "gpc_reg_operand" "") ! (plus:SI (ltu:SI (match_dup 1) (match_dup 2)) (match_dup 3)))] "! TARGET_POWERPC64 && reload_completed" ! [(set (match_dup 0) (plus:SI (ltu:SI (match_dup 1) (match_dup 2)) (match_dup 3))) ! (set (match_dup 4) (compare:CC (match_dup 0) (const_int 0)))] "") *************** *** 11905,11925 **** (clobber (match_scratch:SI 3 ""))] "TARGET_POWER && reload_completed" [(parallel [(set (match_dup 0) ! (ge:SI (match_dup 1) (match_dup 2))) ! (clobber (match_dup 3))]) (set (match_dup 4) (compare:CC (match_dup 0) (const_int 0)))] "") (define_insn "" ! [(set (match_operand:SI 0 "gpc_reg_operand" "=r") (plus:SI (ge:SI (match_operand:SI 1 "gpc_reg_operand" "r") (match_operand:SI 2 "reg_or_short_operand" "rI")) ! (match_operand:SI 3 "gpc_reg_operand" "r"))) ! (clobber (match_scratch:SI 4 "=&r"))] "TARGET_POWER" ! "doz%I2 %4,%1,%2\;{sfi|subfic} %4,%4,0\;{aze|addze} %0,%3" [(set_attr "length" "12")]) (define_insn "" --- 11887,11906 ---- (clobber (match_scratch:SI 3 ""))] "TARGET_POWER && reload_completed" [(parallel [(set (match_dup 0) ! (ge:SI (match_dup 1) (match_dup 2))) ! (clobber (match_dup 3))]) (set (match_dup 4) (compare:CC (match_dup 0) (const_int 0)))] "") (define_insn "" ! [(set (match_operand:SI 0 "gpc_reg_operand" "=&r") (plus:SI (ge:SI (match_operand:SI 1 "gpc_reg_operand" "r") (match_operand:SI 2 "reg_or_short_operand" "rI")) ! (match_operand:SI 3 "gpc_reg_operand" "r")))] "TARGET_POWER" ! "doz%I2 %0,%1,%2\;{sfi|subfic} %0,%0,0\;{aze|addze} %0,%3" [(set_attr "length" "12")]) (define_insn "" *************** *** 11948,11991 **** "TARGET_POWER && reload_completed" [(set (match_dup 4) (plus:SI (ge:SI (match_dup 1) (match_dup 2)) ! (match_dup 3))) (set (match_dup 0) (compare:CC (match_dup 4) (const_int 0)))] "") (define_insn "" ! [(set (match_operand:CC 5 "cc_reg_operand" "=x,?y") (compare:CC (plus:SI (ge:SI (match_operand:SI 1 "gpc_reg_operand" "r,r") (match_operand:SI 2 "reg_or_short_operand" "rI,rI")) (match_operand:SI 3 "gpc_reg_operand" "r,r")) (const_int 0))) ! (set (match_operand:SI 0 "gpc_reg_operand" "=r,r") ! (plus:SI (ge:SI (match_dup 1) (match_dup 2)) (match_dup 3))) ! (clobber (match_scratch:SI 4 "=&r,&r"))] "TARGET_POWER" "@ ! doz%I2 %4,%1,%2\;{sfi|subfic} %4,%4,0\;{aze.|addze.} %0,%3 #" [(set_attr "type" "compare") (set_attr "length" "12,16")]) (define_split ! [(set (match_operand:CC 5 "cc_reg_not_cr0_operand" "") (compare:CC (plus:SI (ge:SI (match_operand:SI 1 "gpc_reg_operand" "") (match_operand:SI 2 "reg_or_short_operand" "")) (match_operand:SI 3 "gpc_reg_operand" "")) (const_int 0))) (set (match_operand:SI 0 "gpc_reg_operand" "") ! (plus:SI (ge:SI (match_dup 1) (match_dup 2)) (match_dup 3))) ! (clobber (match_scratch:SI 4 ""))] "TARGET_POWER && reload_completed" ! [(parallel [(set (match_dup 0) (plus:SI (ge:SI (match_dup 1) (match_dup 2)) (match_dup 3))) ! (clobber (match_dup 4))]) ! (set (match_dup 5) (compare:CC (match_dup 0) (const_int 0)))] "") --- 11929,11969 ---- "TARGET_POWER && reload_completed" [(set (match_dup 4) (plus:SI (ge:SI (match_dup 1) (match_dup 2)) ! (match_dup 3))) (set (match_dup 0) (compare:CC (match_dup 4) (const_int 0)))] "") (define_insn "" ! [(set (match_operand:CC 4 "cc_reg_operand" "=x,?y") (compare:CC (plus:SI (ge:SI (match_operand:SI 1 "gpc_reg_operand" "r,r") (match_operand:SI 2 "reg_or_short_operand" "rI,rI")) (match_operand:SI 3 "gpc_reg_operand" "r,r")) (const_int 0))) ! (set (match_operand:SI 0 "gpc_reg_operand" "=&r,&r") ! (plus:SI (ge:SI (match_dup 1) (match_dup 2)) (match_dup 3)))] "TARGET_POWER" "@ ! doz%I2 %0,%1,%2\;{sfi|subfic} %0,%0,0\;{aze.|addze.} %0,%3 #" [(set_attr "type" "compare") (set_attr "length" "12,16")]) (define_split ! [(set (match_operand:CC 4 "cc_reg_not_cr0_operand" "") (compare:CC (plus:SI (ge:SI (match_operand:SI 1 "gpc_reg_operand" "") (match_operand:SI 2 "reg_or_short_operand" "")) (match_operand:SI 3 "gpc_reg_operand" "")) (const_int 0))) (set (match_operand:SI 0 "gpc_reg_operand" "") ! (plus:SI (ge:SI (match_dup 1) (match_dup 2)) (match_dup 3)))] "TARGET_POWER && reload_completed" ! [(set (match_dup 0) (plus:SI (ge:SI (match_dup 1) (match_dup 2)) (match_dup 3))) ! (set (match_dup 4) (compare:CC (match_dup 0) (const_int 0)))] "") *************** *** 12130,12168 **** "") (define_insn "" ! [(set (match_operand:CC 5 "cc_reg_operand" "=x,x,?y,?y") (compare:CC (plus:SI (geu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r,r,r") (match_operand:SI 2 "reg_or_neg_short_operand" "r,P,r,P")) (match_operand:SI 3 "gpc_reg_operand" "r,r,r,r")) (const_int 0))) ! (set (match_operand:SI 0 "gpc_reg_operand" "=r,r,r,r") ! (plus:SI (geu:SI (match_dup 1) (match_dup 2)) (match_dup 3))) ! (clobber (match_scratch:SI 4 "=&r,&r,&r,&r"))] "! TARGET_POWERPC64" "@ ! {sf|subfc} %4,%2,%1\;{aze.|addze.} %0,%3 ! {ai|addic} %4,%1,%n2\;{aze.|addze.} %0,%3 # #" [(set_attr "type" "compare") (set_attr "length" "8,8,12,12")]) (define_split ! [(set (match_operand:CC 5 "cc_reg_not_cr0_operand" "") (compare:CC (plus:SI (geu:SI (match_operand:SI 1 "gpc_reg_operand" "") (match_operand:SI 2 "reg_or_neg_short_operand" "")) (match_operand:SI 3 "gpc_reg_operand" "")) (const_int 0))) (set (match_operand:SI 0 "gpc_reg_operand" "") ! (plus:SI (geu:SI (match_dup 1) (match_dup 2)) (match_dup 3))) ! (clobber (match_scratch:SI 4 ""))] "! TARGET_POWERPC64 && reload_completed" ! [(parallel [(set (match_dup 0) (plus:SI (geu:SI (match_dup 1) (match_dup 2)) (match_dup 3))) ! (clobber (match_dup 4))]) ! (set (match_dup 5) (compare:CC (match_dup 0) (const_int 0)))] "") --- 12108,12143 ---- "") (define_insn "" ! [(set (match_operand:CC 4 "cc_reg_operand" "=x,x,?y,?y") (compare:CC (plus:SI (geu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r,r,r") (match_operand:SI 2 "reg_or_neg_short_operand" "r,P,r,P")) (match_operand:SI 3 "gpc_reg_operand" "r,r,r,r")) (const_int 0))) ! (set (match_operand:SI 0 "gpc_reg_operand" "=&r,&r,&r,&r") ! (plus:SI (geu:SI (match_dup 1) (match_dup 2)) (match_dup 3)))] "! TARGET_POWERPC64" "@ ! {sf|subfc} %0,%2,%1\;{aze.|addze.} %0,%3 ! {ai|addic} %0,%1,%n2\;{aze.|addze.} %0,%3 # #" [(set_attr "type" "compare") (set_attr "length" "8,8,12,12")]) (define_split ! [(set (match_operand:CC 4 "cc_reg_not_cr0_operand" "") (compare:CC (plus:SI (geu:SI (match_operand:SI 1 "gpc_reg_operand" "") (match_operand:SI 2 "reg_or_neg_short_operand" "")) (match_operand:SI 3 "gpc_reg_operand" "")) (const_int 0))) (set (match_operand:SI 0 "gpc_reg_operand" "") ! (plus:SI (geu:SI (match_dup 1) (match_dup 2)) (match_dup 3)))] "! TARGET_POWERPC64 && reload_completed" ! [(set (match_dup 0) (plus:SI (geu:SI (match_dup 1) (match_dup 2)) (match_dup 3))) ! (set (match_dup 4) (compare:CC (match_dup 0) (const_int 0)))] "") *************** *** 12178,12193 **** [(set_attr "length" "12")]) (define_insn "" ! [(set (match_operand:SI 0 "gpc_reg_operand" "=r,r") (and:SI (neg:SI (geu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r") (match_operand:SI 2 "reg_or_neg_short_operand" "r,P"))) ! (match_operand:SI 3 "gpc_reg_operand" "r,r"))) ! (clobber (match_scratch:SI 4 "=&r,&r"))] "! TARGET_POWERPC64" "@ ! {sf|subfc} %4,%2,%1\;{sfe|subfe} %4,%4,%4\;andc %0,%3,%4 ! {ai|addic} %4,%1,%n2\;{sfe|subfe} %4,%4,%4\;andc %0,%3,%4" [(set_attr "length" "12")]) (define_insn "" --- 12153,12167 ---- [(set_attr "length" "12")]) (define_insn "" ! [(set (match_operand:SI 0 "gpc_reg_operand" "=&r,&r") (and:SI (neg:SI (geu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r") (match_operand:SI 2 "reg_or_neg_short_operand" "r,P"))) ! (match_operand:SI 3 "gpc_reg_operand" "r,r")))] "! TARGET_POWERPC64" "@ ! {sf|subfc} %0,%2,%1\;{sfe|subfe} %0,%0,%0\;andc %0,%3,%0 ! {ai|addic} %0,%1,%n2\;{sfe|subfe} %0,%0,%0\;andc %0,%3,%0" [(set_attr "length" "12")]) (define_insn "" *************** *** 12219,12254 **** (clobber (match_scratch:SI 4 ""))] "! TARGET_POWERPC64 && reload_completed" [(set (match_dup 4) ! (and:SI (neg:SI (geu:SI (match_dup 1) ! (match_dup 2))) ! (match_dup 3))) (set (match_dup 0) (compare:CC (match_dup 4) (const_int 0)))] "") (define_insn "" ! [(set (match_operand:CC 5 "cc_reg_operand" "=x,x,?y,?y") (compare:CC (and:SI (neg:SI (geu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r,r,r") (match_operand:SI 2 "reg_or_neg_short_operand" "r,P,r,P"))) (match_operand:SI 3 "gpc_reg_operand" "r,r,r,r")) (const_int 0))) ! (set (match_operand:SI 0 "gpc_reg_operand" "=r,r,r,r") ! (and:SI (neg:SI (geu:SI (match_dup 1) (match_dup 2))) (match_dup 3))) ! (clobber (match_scratch:SI 4 "=&r,&r,&r,&r"))] "! TARGET_POWERPC64" "@ ! {sf|subfc} %4,%2,%1\;{sfe|subfe} %4,%4,%4\;andc. %0,%3,%4 ! {ai|addic} %4,%1,%n2\;{sfe|subfe} %4,%4,%4\;andc. %0,%3,%4 # #" [(set_attr "type" "compare") (set_attr "length" "12,12,16,16")]) (define_split ! [(set (match_operand:CC 5 "cc_reg_not_cr0_operand" "") (compare:CC (and:SI (neg:SI (geu:SI (match_operand:SI 1 "gpc_reg_operand" "") --- 12193,12226 ---- (clobber (match_scratch:SI 4 ""))] "! TARGET_POWERPC64 && reload_completed" [(set (match_dup 4) ! (and:SI (neg:SI (geu:SI (match_dup 1) (match_dup 2))) ! (match_dup 3))) (set (match_dup 0) (compare:CC (match_dup 4) (const_int 0)))] "") (define_insn "" ! [(set (match_operand:CC 4 "cc_reg_operand" "=x,x,?y,?y") (compare:CC (and:SI (neg:SI (geu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r,r,r") (match_operand:SI 2 "reg_or_neg_short_operand" "r,P,r,P"))) (match_operand:SI 3 "gpc_reg_operand" "r,r,r,r")) (const_int 0))) ! (set (match_operand:SI 0 "gpc_reg_operand" "=&r,&r,&r,&r") ! (and:SI (neg:SI (geu:SI (match_dup 1) (match_dup 2))) (match_dup 3)))] "! TARGET_POWERPC64" "@ ! {sf|subfc} %0,%2,%1\;{sfe|subfe} %0,%0,%0\;andc. %0,%3,%0 ! {ai|addic} %0,%1,%n2\;{sfe|subfe} %0,%0,%0\;andc. %0,%3,%0 # #" [(set_attr "type" "compare") (set_attr "length" "12,12,16,16")]) (define_split ! [(set (match_operand:CC 4 "cc_reg_not_cr0_operand" "") (compare:CC (and:SI (neg:SI (geu:SI (match_operand:SI 1 "gpc_reg_operand" "") *************** *** 12256,12268 **** (match_operand:SI 3 "gpc_reg_operand" "")) (const_int 0))) (set (match_operand:SI 0 "gpc_reg_operand" "") ! (and:SI (neg:SI (geu:SI (match_dup 1) (match_dup 2))) (match_dup 3))) ! (clobber (match_scratch:SI 4 ""))] "! TARGET_POWERPC64 && reload_completed" ! [(parallel [(set (match_dup 0) (and:SI (neg:SI (geu:SI (match_dup 1) (match_dup 2))) (match_dup 3))) ! (clobber (match_dup 4))]) ! (set (match_dup 5) (compare:CC (match_dup 0) (const_int 0)))] "") --- 12228,12238 ---- (match_operand:SI 3 "gpc_reg_operand" "")) (const_int 0))) (set (match_operand:SI 0 "gpc_reg_operand" "") ! (and:SI (neg:SI (geu:SI (match_dup 1) (match_dup 2))) (match_dup 3)))] "! TARGET_POWERPC64 && reload_completed" ! [(set (match_dup 0) (and:SI (neg:SI (geu:SI (match_dup 1) (match_dup 2))) (match_dup 3))) ! (set (match_dup 4) (compare:CC (match_dup 0) (const_int 0)))] "") *************** *** 12394,12406 **** [(set_attr "length" "12")]) (define_insn "" ! [(set (match_operand:DI 0 "gpc_reg_operand" "=r") (plus:DI (gt:DI (match_operand:DI 1 "gpc_reg_operand" "r") (const_int 0)) ! (match_operand:DI 2 "gpc_reg_operand" "r"))) ! (clobber (match_scratch:DI 3 "=&r"))] "TARGET_POWERPC64" ! "addc %3,%1,%1\;subfe %3,%1,%3\;addze %0,%2" [(set_attr "length" "12")]) (define_insn "" --- 12364,12375 ---- [(set_attr "length" "12")]) (define_insn "" ! [(set (match_operand:DI 0 "gpc_reg_operand" "=&r") (plus:DI (gt:DI (match_operand:DI 1 "gpc_reg_operand" "r") (const_int 0)) ! (match_operand:DI 2 "gpc_reg_operand" "r")))] "TARGET_POWERPC64" ! "addc %0,%1,%1\;subfe %0,%1,%0\;addze %0,%2" [(set_attr "length" "12")]) (define_insn "" *************** *** 12461,12552 **** "TARGET_POWERPC64 && reload_completed" [(set (match_dup 3) (plus:DI (gt:DI (match_dup 1) (const_int 0)) ! (match_dup 2))) (set (match_dup 0) (compare:CC (match_dup 3) (const_int 0)))] "") (define_insn "" ! [(set (match_operand:CC 4 "cc_reg_operand" "=x,?y") (compare:CC (plus:SI (gt:SI (match_operand:SI 1 "gpc_reg_operand" "r,r") (const_int 0)) (match_operand:SI 2 "gpc_reg_operand" "r,r")) (const_int 0))) ! (set (match_operand:SI 0 "gpc_reg_operand" "=r,r") ! (plus:SI (gt:SI (match_dup 1) (const_int 0)) (match_dup 2))) ! (clobber (match_scratch:SI 3 "=&r,&r"))] "! TARGET_POWERPC64" "@ ! {a|addc} %3,%1,%1\;{sfe|subfe} %3,%1,%3\;{aze.|addze.} %0,%2 #" [(set_attr "type" "compare") (set_attr "length" "12,16")]) (define_split ! [(set (match_operand:CC 4 "cc_reg_not_cr0_operand" "") (compare:CC (plus:SI (gt:SI (match_operand:SI 1 "gpc_reg_operand" "") (const_int 0)) (match_operand:SI 2 "gpc_reg_operand" "")) (const_int 0))) (set (match_operand:SI 0 "gpc_reg_operand" "") ! (plus:SI (gt:SI (match_dup 1) (const_int 0)) (match_dup 2))) ! (clobber (match_scratch:SI 3 ""))] "! TARGET_POWERPC64 && reload_completed" ! [(parallel [(set (match_dup 0) (plus:SI (gt:SI (match_dup 1) (const_int 0)) (match_dup 2))) ! (clobber (match_dup 3))]) ! (set (match_dup 4) (compare:CC (match_dup 0) (const_int 0)))] "") (define_insn "" ! [(set (match_operand:CC 4 "cc_reg_operand" "=x,?y") (compare:CC (plus:DI (gt:DI (match_operand:DI 1 "gpc_reg_operand" "r,r") (const_int 0)) (match_operand:DI 2 "gpc_reg_operand" "r,r")) (const_int 0))) ! (set (match_operand:DI 0 "gpc_reg_operand" "=r,r") ! (plus:DI (gt:DI (match_dup 1) (const_int 0)) (match_dup 2))) ! (clobber (match_scratch:DI 3 "=&r,&r"))] "TARGET_POWERPC64" "@ ! addc %3,%1,%1\;subfe %3,%1,%3\;addze. %0,%2 #" [(set_attr "type" "compare") (set_attr "length" "12,16")]) (define_split ! [(set (match_operand:CC 4 "cc_reg_not_cr0_operand" "") (compare:CC (plus:DI (gt:DI (match_operand:DI 1 "gpc_reg_operand" "") (const_int 0)) (match_operand:DI 2 "gpc_reg_operand" "")) (const_int 0))) (set (match_operand:DI 0 "gpc_reg_operand" "") ! (plus:DI (gt:DI (match_dup 1) (const_int 0)) (match_dup 2))) ! (clobber (match_scratch:DI 3 ""))] "TARGET_POWERPC64 && reload_completed" ! [(parallel [(set (match_dup 0) (plus:DI (gt:DI (match_dup 1) (const_int 0)) (match_dup 2))) ! (clobber (match_dup 3))]) ! (set (match_dup 4) (compare:CC (match_dup 0) (const_int 0)))] "") (define_insn "" ! [(set (match_operand:SI 0 "gpc_reg_operand" "=r") (plus:SI (gt:SI (match_operand:SI 1 "gpc_reg_operand" "r") (match_operand:SI 2 "reg_or_short_operand" "r")) ! (match_operand:SI 3 "gpc_reg_operand" "r"))) ! (clobber (match_scratch:SI 4 "=&r"))] "TARGET_POWER" ! "doz %4,%2,%1\;{ai|addic} %4,%4,-1\;{aze|addze} %0,%3" [(set_attr "length" "12")]) (define_insn "" --- 12430,12514 ---- "TARGET_POWERPC64 && reload_completed" [(set (match_dup 3) (plus:DI (gt:DI (match_dup 1) (const_int 0)) ! (match_dup 2))) (set (match_dup 0) (compare:CC (match_dup 3) (const_int 0)))] "") (define_insn "" ! [(set (match_operand:CC 3 "cc_reg_operand" "=x,?y") (compare:CC (plus:SI (gt:SI (match_operand:SI 1 "gpc_reg_operand" "r,r") (const_int 0)) (match_operand:SI 2 "gpc_reg_operand" "r,r")) (const_int 0))) ! (set (match_operand:SI 0 "gpc_reg_operand" "=&r,&r") ! (plus:SI (gt:SI (match_dup 1) (const_int 0)) (match_dup 2)))] "! TARGET_POWERPC64" "@ ! {a|addc} %0,%1,%1\;{sfe|subfe} %0,%1,%0\;{aze.|addze.} %0,%2 #" [(set_attr "type" "compare") (set_attr "length" "12,16")]) (define_split ! [(set (match_operand:CC 3 "cc_reg_not_cr0_operand" "") (compare:CC (plus:SI (gt:SI (match_operand:SI 1 "gpc_reg_operand" "") (const_int 0)) (match_operand:SI 2 "gpc_reg_operand" "")) (const_int 0))) (set (match_operand:SI 0 "gpc_reg_operand" "") ! (plus:SI (gt:SI (match_dup 1) (const_int 0)) (match_dup 2)))] "! TARGET_POWERPC64 && reload_completed" ! [(set (match_dup 0) (plus:SI (gt:SI (match_dup 1) (const_int 0)) (match_dup 2))) ! (set (match_dup 3) (compare:CC (match_dup 0) (const_int 0)))] "") (define_insn "" ! [(set (match_operand:CC 3 "cc_reg_operand" "=x,?y") (compare:CC (plus:DI (gt:DI (match_operand:DI 1 "gpc_reg_operand" "r,r") (const_int 0)) (match_operand:DI 2 "gpc_reg_operand" "r,r")) (const_int 0))) ! (set (match_operand:DI 0 "gpc_reg_operand" "=&r,&r") ! (plus:DI (gt:DI (match_dup 1) (const_int 0)) (match_dup 2)))] "TARGET_POWERPC64" "@ ! addc %0,%1,%1\;subfe %0,%1,%0\;addze. %0,%2 #" [(set_attr "type" "compare") (set_attr "length" "12,16")]) (define_split ! [(set (match_operand:CC 3 "cc_reg_not_cr0_operand" "") (compare:CC (plus:DI (gt:DI (match_operand:DI 1 "gpc_reg_operand" "") (const_int 0)) (match_operand:DI 2 "gpc_reg_operand" "")) (const_int 0))) (set (match_operand:DI 0 "gpc_reg_operand" "") ! (plus:DI (gt:DI (match_dup 1) (const_int 0)) (match_dup 2)))] "TARGET_POWERPC64 && reload_completed" ! [(set (match_dup 0) (plus:DI (gt:DI (match_dup 1) (const_int 0)) (match_dup 2))) ! (set (match_dup 3) (compare:CC (match_dup 0) (const_int 0)))] "") (define_insn "" ! [(set (match_operand:SI 0 "gpc_reg_operand" "=&r") (plus:SI (gt:SI (match_operand:SI 1 "gpc_reg_operand" "r") (match_operand:SI 2 "reg_or_short_operand" "r")) ! (match_operand:SI 3 "gpc_reg_operand" "r")))] "TARGET_POWER" ! "doz %0,%2,%1\;{ai|addic} %0,%0,-1\;{aze|addze} %0,%3" [(set_attr "length" "12")]) (define_insn "" *************** *** 12574,12618 **** (clobber (match_scratch:SI 4 ""))] "TARGET_POWER && reload_completed" [(set (match_dup 4) ! (plus:SI (gt:SI (match_dup 1) (match_dup 2)) ! (match_dup 3))) (set (match_dup 0) (compare:CC (match_dup 4) (const_int 0)))] "") (define_insn "" ! [(set (match_operand:CC 5 "cc_reg_operand" "=x,?y") (compare:CC (plus:SI (gt:SI (match_operand:SI 1 "gpc_reg_operand" "r,r") (match_operand:SI 2 "reg_or_short_operand" "r,r")) (match_operand:SI 3 "gpc_reg_operand" "r,r")) (const_int 0))) ! (set (match_operand:SI 0 "gpc_reg_operand" "=r,r") ! (plus:SI (gt:SI (match_dup 1) (match_dup 2)) (match_dup 3))) ! (clobber (match_scratch:SI 4 "=&r,&r"))] "TARGET_POWER" "@ ! doz %4,%2,%1\;{ai|addic} %4,%4,-1\;{aze.|addze.} %0,%3 #" [(set_attr "type" "compare") (set_attr "length" "12,16")]) (define_split ! [(set (match_operand:CC 5 "cc_reg_not_cr0_operand" "") (compare:CC (plus:SI (gt:SI (match_operand:SI 1 "gpc_reg_operand" "") (match_operand:SI 2 "reg_or_short_operand" "")) (match_operand:SI 3 "gpc_reg_operand" "")) (const_int 0))) (set (match_operand:SI 0 "gpc_reg_operand" "") ! (plus:SI (gt:SI (match_dup 1) (match_dup 2)) (match_dup 3))) ! (clobber (match_scratch:SI 4 ""))] "TARGET_POWER && reload_completed" ! [(parallel [(set (match_dup 0) (plus:SI (gt:SI (match_dup 1) (match_dup 2)) (match_dup 3))) ! (clobber (match_dup 4))]) ! (set (match_dup 5) (compare:CC (match_dup 0) (const_int 0)))] "") --- 12536,12576 ---- (clobber (match_scratch:SI 4 ""))] "TARGET_POWER && reload_completed" [(set (match_dup 4) ! (plus:SI (gt:SI (match_dup 1) (match_dup 2)) (match_dup 3))) (set (match_dup 0) (compare:CC (match_dup 4) (const_int 0)))] "") (define_insn "" ! [(set (match_operand:CC 4 "cc_reg_operand" "=x,?y") (compare:CC (plus:SI (gt:SI (match_operand:SI 1 "gpc_reg_operand" "r,r") (match_operand:SI 2 "reg_or_short_operand" "r,r")) (match_operand:SI 3 "gpc_reg_operand" "r,r")) (const_int 0))) ! (set (match_operand:SI 0 "gpc_reg_operand" "=&r,&r") ! (plus:SI (gt:SI (match_dup 1) (match_dup 2)) (match_dup 3)))] "TARGET_POWER" "@ ! doz %0,%2,%1\;{ai|addic} %0,%0,-1\;{aze.|addze.} %0,%3 #" [(set_attr "type" "compare") (set_attr "length" "12,16")]) (define_split ! [(set (match_operand:CC 4 "cc_reg_not_cr0_operand" "") (compare:CC (plus:SI (gt:SI (match_operand:SI 1 "gpc_reg_operand" "") (match_operand:SI 2 "reg_or_short_operand" "")) (match_operand:SI 3 "gpc_reg_operand" "")) (const_int 0))) (set (match_operand:SI 0 "gpc_reg_operand" "") ! (plus:SI (gt:SI (match_dup 1) (match_dup 2)) (match_dup 3)))] "TARGET_POWER && reload_completed" ! [(set (match_dup 0) (plus:SI (gt:SI (match_dup 1) (match_dup 2)) (match_dup 3))) ! (set (match_dup 4) (compare:CC (match_dup 0) (const_int 0)))] "") *************** *** 12731,12745 **** [(set_attr "length" "8,12")]) (define_insn "" ! [(set (match_operand:DI 0 "gpc_reg_operand" "=r,r") (plus:DI (gtu:DI (match_operand:DI 1 "gpc_reg_operand" "r,r") (match_operand:DI 2 "reg_or_short_operand" "I,rI")) ! (match_operand:DI 3 "reg_or_short_operand" "r,rI"))) ! (clobber (match_scratch:DI 4 "=&r,&r"))] "TARGET_POWERPC64" "@ ! addic %4,%1,%k2\;addze %0,%3 ! subf%I2c %4,%1,%2\;subfe %4,%4,%4\;subf%I3c %0,%4,%3" [(set_attr "length" "8,12")]) (define_insn "" --- 12689,12702 ---- [(set_attr "length" "8,12")]) (define_insn "" ! [(set (match_operand:DI 0 "gpc_reg_operand" "=&r,&r") (plus:DI (gtu:DI (match_operand:DI 1 "gpc_reg_operand" "r,r") (match_operand:DI 2 "reg_or_short_operand" "I,rI")) ! (match_operand:DI 3 "reg_or_short_operand" "r,rI")))] "TARGET_POWERPC64" "@ ! addic %0,%1,%k2\;addze %0,%3 ! subf%I2c %0,%1,%2\;subfe %0,%0,%0\;subf%I3c %0,%0,%3" [(set_attr "length" "8,12")]) (define_insn "" *************** *** 12770,12776 **** "! TARGET_POWERPC64 && reload_completed" [(set (match_dup 4) (plus:SI (gtu:SI (match_dup 1) (match_dup 2)) ! (match_dup 3))) (set (match_dup 0) (compare:CC (match_dup 4) (const_int 0)))] --- 12727,12733 ---- "! TARGET_POWERPC64 && reload_completed" [(set (match_dup 4) (plus:SI (gtu:SI (match_dup 1) (match_dup 2)) ! (match_dup 3))) (set (match_dup 0) (compare:CC (match_dup 4) (const_int 0)))] *************** *** 12811,12887 **** "") (define_insn "" ! [(set (match_operand:CC 5 "cc_reg_operand" "=x,x,?y,?y") (compare:CC (plus:SI (gtu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r,r,r") (match_operand:SI 2 "reg_or_short_operand" "I,r,I,r")) (match_operand:SI 3 "gpc_reg_operand" "r,r,r,r")) (const_int 0))) ! (set (match_operand:SI 0 "gpc_reg_operand" "=r,r,r,r") ! (plus:SI (gtu:SI (match_dup 1) (match_dup 2)) (match_dup 3))) ! (clobber (match_scratch:SI 4 "=&r,&r,&r,&r"))] "! TARGET_POWERPC64" "@ ! {ai|addic} %4,%1,%k2\;{aze.|addze.} %0,%3 ! {sf%I2|subf%I2c} %4,%1,%2\;{sfe|subfe} %4,%4,%4\;{sf.|subfc.} %0,%4,%3 # #" [(set_attr "type" "compare") (set_attr "length" "8,12,12,16")]) (define_split ! [(set (match_operand:CC 5 "cc_reg_not_cr0_operand" "") (compare:CC (plus:SI (gtu:SI (match_operand:SI 1 "gpc_reg_operand" "") (match_operand:SI 2 "reg_or_short_operand" "")) (match_operand:SI 3 "gpc_reg_operand" "")) (const_int 0))) (set (match_operand:SI 0 "gpc_reg_operand" "") ! (plus:SI (gtu:SI (match_dup 1) (match_dup 2)) (match_dup 3))) ! (clobber (match_scratch:SI 4 ""))] "! TARGET_POWERPC64 && reload_completed" ! [(parallel [(set (match_dup 0) (plus:SI (gtu:SI (match_dup 1) (match_dup 2)) (match_dup 3))) ! (clobber (match_dup 4))]) ! (set (match_dup 5) (compare:CC (match_dup 0) (const_int 0)))] "") (define_insn "" ! [(set (match_operand:CC 5 "cc_reg_operand" "=x,x,?y,?y") (compare:CC (plus:DI (gtu:DI (match_operand:DI 1 "gpc_reg_operand" "r,r,r,r") (match_operand:DI 2 "reg_or_short_operand" "I,r,I,r")) (match_operand:DI 3 "gpc_reg_operand" "r,r,r,r")) (const_int 0))) ! (set (match_operand:DI 0 "gpc_reg_operand" "=r,r,r,r") ! (plus:DI (gtu:DI (match_dup 1) (match_dup 2)) (match_dup 3))) ! (clobber (match_scratch:DI 4 "=&r,&r,&r,&r"))] "TARGET_POWERPC64" "@ ! addic %4,%1,%k2\;addze. %0,%3 ! subf%I2c %4,%1,%2\;subfe %4,%4,%4\;subfc. %0,%4,%3 # #" [(set_attr "type" "compare") (set_attr "length" "8,12,12,16")]) (define_split ! [(set (match_operand:CC 5 "cc_reg_not_cr0_operand" "") (compare:CC (plus:DI (gtu:DI (match_operand:DI 1 "gpc_reg_operand" "") (match_operand:DI 2 "reg_or_short_operand" "")) (match_operand:DI 3 "gpc_reg_operand" "")) (const_int 0))) (set (match_operand:DI 0 "gpc_reg_operand" "") ! (plus:DI (gtu:DI (match_dup 1) (match_dup 2)) (match_dup 3))) ! (clobber (match_scratch:DI 4 ""))] "TARGET_POWERPC64 && reload_completed" ! [(parallel [(set (match_dup 0) (plus:DI (gtu:DI (match_dup 1) (match_dup 2)) (match_dup 3))) ! (clobber (match_dup 4))]) ! (set (match_dup 5) (compare:CC (match_dup 0) (const_int 0)))] "") --- 12768,12838 ---- "") (define_insn "" ! [(set (match_operand:CC 4 "cc_reg_operand" "=x,x,?y,?y") (compare:CC (plus:SI (gtu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r,r,r") (match_operand:SI 2 "reg_or_short_operand" "I,r,I,r")) (match_operand:SI 3 "gpc_reg_operand" "r,r,r,r")) (const_int 0))) ! (set (match_operand:SI 0 "gpc_reg_operand" "=&r,&r,&r,&r") ! (plus:SI (gtu:SI (match_dup 1) (match_dup 2)) (match_dup 3)))] "! TARGET_POWERPC64" "@ ! {ai|addic} %0,%1,%k2\;{aze.|addze.} %0,%3 ! {sf%I2|subf%I2c} %0,%1,%2\;{sfe|subfe} %0,%0,%0\;{sf.|subfc.} %0,%0,%3 # #" [(set_attr "type" "compare") (set_attr "length" "8,12,12,16")]) (define_split ! [(set (match_operand:CC 4 "cc_reg_not_cr0_operand" "") (compare:CC (plus:SI (gtu:SI (match_operand:SI 1 "gpc_reg_operand" "") (match_operand:SI 2 "reg_or_short_operand" "")) (match_operand:SI 3 "gpc_reg_operand" "")) (const_int 0))) (set (match_operand:SI 0 "gpc_reg_operand" "") ! (plus:SI (gtu:SI (match_dup 1) (match_dup 2)) (match_dup 3)))] "! TARGET_POWERPC64 && reload_completed" ! [(set (match_dup 0) (plus:SI (gtu:SI (match_dup 1) (match_dup 2)) (match_dup 3))) ! (set (match_dup 4) (compare:CC (match_dup 0) (const_int 0)))] "") (define_insn "" ! [(set (match_operand:CC 4 "cc_reg_operand" "=x,x,?y,?y") (compare:CC (plus:DI (gtu:DI (match_operand:DI 1 "gpc_reg_operand" "r,r,r,r") (match_operand:DI 2 "reg_or_short_operand" "I,r,I,r")) (match_operand:DI 3 "gpc_reg_operand" "r,r,r,r")) (const_int 0))) ! (set (match_operand:DI 0 "gpc_reg_operand" "=&r,&r,&r,&r") ! (plus:DI (gtu:DI (match_dup 1) (match_dup 2)) (match_dup 3)))] "TARGET_POWERPC64" "@ ! addic %0,%1,%k2\;addze. %0,%3 ! subf%I2c %0,%1,%2\;subfe %0,%0,%0\;subfc. %0,%0,%3 # #" [(set_attr "type" "compare") (set_attr "length" "8,12,12,16")]) (define_split ! [(set (match_operand:CC 4 "cc_reg_not_cr0_operand" "") (compare:CC (plus:DI (gtu:DI (match_operand:DI 1 "gpc_reg_operand" "") (match_operand:DI 2 "reg_or_short_operand" "")) (match_operand:DI 3 "gpc_reg_operand" "")) (const_int 0))) (set (match_operand:DI 0 "gpc_reg_operand" "") ! (plus:DI (gtu:DI (match_dup 1) (match_dup 2)) (match_dup 3)))] "TARGET_POWERPC64 && reload_completed" ! [(set (match_dup 0) (plus:DI (gtu:DI (match_dup 1) (match_dup 2)) (match_dup 3))) ! (set (match_dup 4) (compare:CC (match_dup 0) (const_int 0)))] "") diff -Nrc3pad gcc-3.2/gcc/config/rs6000/sysv4.h gcc-3.2.1/gcc/config/rs6000/sysv4.h *** gcc-3.2/gcc/config/rs6000/sysv4.h Thu Aug 8 17:52:40 2002 --- gcc-3.2.1/gcc/config/rs6000/sysv4.h Fri Sep 13 06:53:05 2002 *************** do { \ *** 770,775 **** --- 770,807 ---- ASM_OUTPUT_ALIGNED_LOCAL (FILE, NAME, SIZE, ALIGN); \ } while (0) + /* This is how to output code to push a register on the stack. + It need not be very fast code. + + On the rs6000, we must keep the backchain up to date. In order + to simplify things, always allocate 16 bytes for a push (System V + wants to keep stack aligned to a 16 byte boundary). */ + + #define ASM_OUTPUT_REG_PUSH(FILE, REGNO) \ + do { \ + if (DEFAULT_ABI == ABI_V4) \ + asm_fprintf (FILE, \ + (TARGET_32BIT \ + ? "\t{stu|stwu} %s,-16(%s)\n\t{st|stw} %s,12(%s)\n" \ + : "\tstdu %s,-32(%s)\n\tstd %s,24(%s)\n"), \ + reg_names[1], reg_names[1], reg_names[REGNO], \ + reg_names[1]); \ + } while (0) + + /* This is how to output an insn to pop a register from the stack. + It need not be very fast code. */ + + #define ASM_OUTPUT_REG_POP(FILE, REGNO) \ + do { \ + if (DEFAULT_ABI == ABI_V4) \ + asm_fprintf (FILE, \ + (TARGET_32BIT \ + ? "\t{l|lwz} %s,12(%s)\n\t{ai|addic} %s,%s,16\n" \ + : "\tld %s,24(%s)\n\t{ai|addic} %s,%s,32\n"), \ + reg_names[REGNO], reg_names[1], reg_names[1], \ + reg_names[1]); \ + } while (0) + /* Switch Recognition by gcc.c. Add -G xx support. */ /* Override svr4.h definition. */ diff -Nrc3pad gcc-3.2/gcc/config/s390/s390.md gcc-3.2.1/gcc/config/s390/s390.md *** gcc-3.2/gcc/config/s390/s390.md Tue Jun 11 14:49:17 2002 --- gcc-3.2.1/gcc/config/s390/s390.md Wed Oct 23 10:46:00 2002 *************** *** 957,963 **** ldr\\t%0,%1 ld\\t%0,%1 std\\t%1,%0" ! [(set_attr "op_type" "RR,RXE,RXE,RR,RX,RX") (set_attr "atype" "reg,mem,mem,reg,mem,mem")]) (define_insn "*movdi_31" --- 957,963 ---- ldr\\t%0,%1 ld\\t%0,%1 std\\t%1,%0" ! [(set_attr "op_type" "RRE,RXE,RXE,RR,RX,RX") (set_attr "atype" "reg,mem,mem,reg,mem,mem")]) (define_insn "*movdi_31" *************** *** 1240,1246 **** lgr\\t%0,%1 lg\\t%0,%1 stg\\t%1,%0" ! [(set_attr "op_type" "RR,RX,RX,RR,RXE,RXE") (set_attr "atype" "reg,mem,mem,reg,mem,mem")]) (define_insn "*movdf_31" --- 1240,1246 ---- lgr\\t%0,%1 lg\\t%0,%1 stg\\t%1,%0" ! [(set_attr "op_type" "RR,RX,RX,RRE,RXE,RXE") (set_attr "atype" "reg,mem,mem,reg,mem,mem")]) (define_insn "*movdf_31" *************** *** 2111,2125 **** reg1 = gen_reg_rtx (DImode); } - if (! CONSTANT_P (len)) - len = force_reg (Pmode, len); - /* Load up the address+length pairs. */ emit_move_insn (gen_highpart (Pmode, reg0), addr0); ! emit_move_insn (gen_lowpart (Pmode, reg0), len); emit_move_insn (gen_highpart (Pmode, reg1), addr1); ! emit_move_insn (gen_lowpart (Pmode, reg1), len); /* Compare! */ if (TARGET_64BIT) --- 2111,2122 ---- reg1 = gen_reg_rtx (DImode); } /* Load up the address+length pairs. */ emit_move_insn (gen_highpart (Pmode, reg0), addr0); ! convert_move (gen_lowpart (Pmode, reg0), len, 1); emit_move_insn (gen_highpart (Pmode, reg1), addr1); ! convert_move (gen_lowpart (Pmode, reg1), len, 1); /* Compare! */ if (TARGET_64BIT) *************** *** 3226,3231 **** --- 3223,3241 ---- [(set_attr "op_type" "RR,RI,RX") (set_attr "atype" "reg,reg,mem")]) + (define_insn "*addsi3_inv" + [(set (match_operand:SI 0 "register_operand" "=d,d,d") + (plus:SI (match_operand:SI 1 "general_operand" "%d,K,m") + (match_operand:SI 2 "register_operand" "0,0,0"))) + (clobber (reg:CC 33))] + "" + "@ + ar\\t%0,%1 + ahi\\t%0,%h1 + a\\t%0,%1" + [(set_attr "op_type" "RR,RI,RX") + (set_attr "atype" "reg,reg,mem")]) + (define_insn "*la_31" [(set (match_operand:SI 0 "register_operand" "=d") (match_operand:QI 1 "address_operand" "p"))] *************** *** 5462,5468 **** "@ srlg\\t%0,%1,%c2 srlg\\t%0,%1,0(%2)" ! [(set_attr "op_type" "RS,RS")]) ; ; lshrsi3 instruction pattern(s). --- 5472,5478 ---- "@ srlg\\t%0,%1,%c2 srlg\\t%0,%1,0(%2)" ! [(set_attr "op_type" "RSE,RSE")]) ; ; lshrsi3 instruction pattern(s). diff -Nrc3pad gcc-3.2/gcc/config/sparc/freebsd.h gcc-3.2.1/gcc/config/sparc/freebsd.h *** gcc-3.2/gcc/config/sparc/freebsd.h Mon Apr 8 17:17:18 2002 --- gcc-3.2.1/gcc/config/sparc/freebsd.h Wed Nov 6 21:30:59 2002 *************** You should have received a copy of the G *** 18,28 **** along with GNU CC; see the file COPYING. If not, write to the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ ! /* FreeBSD needs's the platform name (sparc64) defined. */ #undef CPP_CPU64_DEFAULT_SPEC ! #define CPP_CPU64_DEFAULT_SPEC "-D__sparc64__ -D__sparc_v9__" #undef CPP_PREDEFINES #define CPP_PREDEFINES FBSD_CPP_PREDEFINES --- 18,30 ---- along with GNU CC; see the file COPYING. If not, write to the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ ! /* FreeBSD needs the platform name (sparc64) defined. ! Emacs needs to know if the arch is 64 or 32-bits. */ #undef CPP_CPU64_DEFAULT_SPEC ! #define CPP_CPU64_DEFAULT_SPEC "-D__sparc64__ -D__sparc_v9__ -D__arch64__" + /* Because we include sparc/sysv4.h. */ #undef CPP_PREDEFINES #define CPP_PREDEFINES FBSD_CPP_PREDEFINES *************** the Free Software Foundation, 675 Mass A *** 99,104 **** --- 101,131 ---- #undef SPARC_DEFAULT_CMODEL #define SPARC_DEFAULT_CMODEL CM_MEDLOW + #define TRANSFER_FROM_TRAMPOLINE \ + static int need_enable_exec_stack; \ + static void check_enabling(void) __attribute__ ((constructor)); \ + static void check_enabling(void) \ + { \ + extern int sysctlbyname(const char *, void *, size_t *, void *, size_t);\ + int prot = 0; \ + size_t len = sizeof(prot); \ + \ + sysctlbyname ("kern.stackprot", &prot, &len, NULL, 0); \ + if (prot != 7) \ + need_enable_exec_stack = 1; \ + } \ + extern void __enable_execute_stack (void *); \ + void __enable_execute_stack (void *addr) \ + { \ + if (!need_enable_exec_stack) \ + return; \ + else { \ + /* 7 is PROT_READ | PROT_WRITE | PROT_EXEC */ \ + if (mprotect (addr, TRAMPOLINE_SIZE, 7) < 0) \ + perror ("mprotect of trampoline code"); \ + } \ + } + /************************[ Assembler stuff ]********************************/ diff -Nrc3pad gcc-3.2/gcc/config/sparc/linux64.h gcc-3.2.1/gcc/config/sparc/linux64.h *** gcc-3.2/gcc/config/sparc/linux64.h Mon Apr 29 04:09:50 2002 --- gcc-3.2.1/gcc/config/sparc/linux64.h Sat Oct 5 21:32:10 2002 *************** *** 1,5 **** /* Definitions for 64-bit SPARC running Linux-based GNU systems with ELF. ! Copyright 1996, 1997, 1998, 2000 Free Software Foundation, Inc. Contributed by David S. Miller (davem@caip.rutgers.edu) This file is part of GNU CC. --- 1,5 ---- /* Definitions for 64-bit SPARC running Linux-based GNU systems with ELF. ! Copyright 1996, 1997, 1998, 2000, 2002 Free Software Foundation, Inc. Contributed by David S. Miller (davem@caip.rutgers.edu) This file is part of GNU CC. *************** Boston, MA 02111-1307, USA. */ *** 56,93 **** #undef STARTFILE_SPEC ! #define STARTFILE_SPEC32 \ ! "%{!shared: \ ! %{pg:/usr/lib/gcrt1.o%s} %{!pg:%{/usr/lib/p:gcrt1.o%s} %{!p:/usr/lib/crt1.o%s}}}\ ! /usr/lib/crti.o%s %{static:crtbeginT.o%s}\ ! %{!static:%{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}}" ! ! #define STARTFILE_SPEC64 \ "%{!shared: \ ! %{pg:/usr/lib64/gcrt1.o%s} %{!pg:%{p:/usr/lib64/gcrt1.o%s} %{!p:/usr/lib64/crt1.o%s}}}\ ! /usr/lib64/crti.o%s %{static:crtbeginT.o%s}\ %{!static:%{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}}" - #ifdef SPARC_BI_ARCH - - #if DEFAULT_ARCH32_P - #define STARTFILE_SPEC "\ - %{m32:" STARTFILE_SPEC32 "} \ - %{m64:" STARTFILE_SPEC64 "} \ - %{!m32:%{!m64:" STARTFILE_SPEC32 "}}" - #else - #define STARTFILE_SPEC "\ - %{m32:" STARTFILE_SPEC32 "} \ - %{m64:" STARTFILE_SPEC64 "} \ - %{!m32:%{!m64:" STARTFILE_SPEC64 "}}" - #endif - - #else - - #define STARTFILE_SPEC STARTFILE_SPEC64 - - #endif - /* Provide a ENDFILE_SPEC appropriate for GNU/Linux. Here we tack on the GNU/Linux magical crtend.o file (see crtstuff.c) which provides part of the support for getting C++ file-scope static --- 56,67 ---- #undef STARTFILE_SPEC ! #define STARTFILE_SPEC \ "%{!shared: \ ! %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} %{!p:crt1.o%s}}}\ ! crti.o%s %{static:crtbeginT.o%s}\ %{!static:%{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}}" /* Provide a ENDFILE_SPEC appropriate for GNU/Linux. Here we tack on the GNU/Linux magical crtend.o file (see crtstuff.c) which provides part of the support for getting C++ file-scope static *************** Boston, MA 02111-1307, USA. */ *** 96,131 **** #undef ENDFILE_SPEC ! #define ENDFILE_SPEC32 \ ! "%{!shared:crtend.o%s} %{shared:crtendS.o%s} /usr/lib/crtn.o%s" ! ! #define ENDFILE_SPEC64 \ ! "%{!shared:crtend.o%s} %{shared:crtendS.o%s} /usr/lib64/crtn.o%s" ! ! #define ENDFILE_SPEC_COMMON \ ! "%{ffast-math|funsafe-math-optimizations:crtfastmath.o%s}" ! ! #ifdef SPARC_BI_ARCH ! ! #if DEFAULT_ARCH32_P ! #define ENDFILE_SPEC "\ ! %{m32:" ENDFILE_SPEC32 "} \ ! %{m64:" ENDFILE_SPEC64 "} \ ! %{!m32:%{!m64:" ENDFILE_SPEC32 "}} " \ ! ENDFILE_SPEC_COMMON ! #else ! #define ENDFILE_SPEC "\ ! %{m32:" ENDFILE_SPEC32 "} \ ! %{m64:" ENDFILE_SPEC64 "} \ ! %{!m32:%{!m64:" ENDFILE_SPEC64 "}} " \ ! ENDFILE_SPEC_COMMON ! #endif ! ! #else ! ! #define ENDFILE_SPEC ENDFILE_SPEC64 " " ENDFILE_SPEC_COMMON ! ! #endif /* The GNU C++ standard library requires that these macros be defined. */ #undef CPLUSPLUS_CPP_SPEC --- 70,78 ---- #undef ENDFILE_SPEC ! #define ENDFILE_SPEC \ ! "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s\ ! %{ffast-math|funsafe-math-optimizations:crtfastmath.o%s}" /* The GNU C++ standard library requires that these macros be defined. */ #undef CPLUSPLUS_CPP_SPEC diff -Nrc3pad gcc-3.2/gcc/config/sparc/sol2-bi.h gcc-3.2.1/gcc/config/sparc/sol2-bi.h *** gcc-3.2/gcc/config/sparc/sol2-bi.h Mon Apr 22 19:53:42 2002 --- gcc-3.2.1/gcc/config/sparc/sol2-bi.h Sat Oct 5 21:32:10 2002 *************** *** 72,101 **** %{!mcpu*:%(asm_cpu_default)} \ " - #define STARTFILE_SPEC32 "\ - %{ansi:values-Xc.o%s} \ - %{!ansi: \ - %{traditional:values-Xt.o%s} \ - %{!traditional:values-Xa.o%s}}" - - #define STARTFILE_SPEC64 "\ - %{ansi:/usr/lib/sparcv9/values-Xc.o%s} \ - %{!ansi: \ - %{traditional:/usr/lib/sparcv9/values-Xt.o%s} \ - %{!traditional:/usr/lib/sparcv9/values-Xa.o%s}}" - - #if DEFAULT_ARCH32_P - #define STARTFILE_ARCH_SPEC "\ - %{m32:" STARTFILE_SPEC32 "} \ - %{m64:" STARTFILE_SPEC64 "} \ - %{!m32:%{!m64:" STARTFILE_SPEC32 "}}" - #else - #define STARTFILE_ARCH_SPEC "\ - %{m32:" STARTFILE_SPEC32 "} \ - %{m64:" STARTFILE_SPEC64 "} \ - %{!m32:%{!m64:" STARTFILE_SPEC64 "}}" - #endif - #undef STARTFILE_SPEC #define STARTFILE_SPEC "%{!shared: \ %{!symbolic: \ --- 72,77 ---- *************** *** 103,109 **** %{!p: \ %{pg:gcrt1.o%s gmon.o%s} \ %{!pg:crt1.o%s}}}} \ ! crti.o%s " STARTFILE_ARCH_SPEC " \ crtbegin.o%s" #undef CPP_CPU_DEFAULT_SPEC --- 79,88 ---- %{!p: \ %{pg:gcrt1.o%s gmon.o%s} \ %{!pg:crt1.o%s}}}} \ ! crti.o%s \ ! %{ansi:values-Xc.o%s} \ ! %{!ansi: %{traditional:values-Xt.o%s} \ ! %{!traditional:values-Xa.o%s}} \ crtbegin.o%s" #undef CPP_CPU_DEFAULT_SPEC diff -Nrc3pad gcc-3.2/gcc/config/sparc/sparc.c gcc-3.2.1/gcc/config/sparc/sparc.c *** gcc-3.2/gcc/config/sparc/sparc.c Sun May 26 02:42:21 2002 --- gcc-3.2.1/gcc/config/sparc/sparc.c Thu Sep 26 10:20:03 2002 *************** set_extends (insn) *** 8650,8656 **** return INTVAL (op1) >= 0; return (GET_CODE (op1) == REG && sparc_check_64 (op1, insn) == 1); } - case ASHIFT: case LSHIFTRT: return GET_MODE (SET_SRC (pat)) == SImode; /* Positive integers leave the high bits zero. */ --- 8650,8655 ---- diff -Nrc3pad gcc-3.2/gcc/config/sparc/sparc.md gcc-3.2.1/gcc/config/sparc/sparc.md *** gcc-3.2/gcc/config/sparc/sparc.md Sun May 5 21:45:02 2002 --- gcc-3.2.1/gcc/config/sparc/sparc.md Wed Oct 2 03:47:05 2002 *************** *** 2517,2523 **** ; }") ! ;; Be careful, fmovd does not exist when !arch64. ;; We match MEM moves directly when we have correct even ;; numbered registers, but fall into splits otherwise. ;; The constraint ordering here is really important to --- 2517,2523 ---- ; }") ! ;; Be careful, fmovd does not exist when !v9. ;; We match MEM moves directly when we have correct even ;; numbered registers, but fall into splits otherwise. ;; The constraint ordering here is really important to *************** *** 2531,2539 **** (define_insn "*movdi_insn_sp32_v9" [(set (match_operand:DI 0 "nonimmediate_operand" ! "=T,o,T,U,o,r,r,r,?T,?f,?f,?o,?f") (match_operand:DI 1 "input_operand" ! " J,J,U,T,r,o,i,r, f, T, o, f, f"))] "! TARGET_ARCH64 && TARGET_V9 && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)" "@ --- 2531,2539 ---- (define_insn "*movdi_insn_sp32_v9" [(set (match_operand:DI 0 "nonimmediate_operand" ! "=T,o,T,U,o,r,r,r,?T,?f,?f,?o,?f,?e,?e,?W") (match_operand:DI 1 "input_operand" ! " J,J,U,T,r,o,i,r, f, T, o, f, f, e, W, e"))] "! TARGET_ARCH64 && TARGET_V9 && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)" "@ *************** *** 2549,2557 **** ldd\\t%1, %0 # # ! #" ! [(set_attr "type" "store,store,store,load,*,*,*,*,fpstore,fpload,*,*,*") ! (set_attr "length" "*,2,*,*,2,2,2,2,*,*,2,2,2")]) (define_insn "*movdi_insn_sp32" [(set (match_operand:DI 0 "nonimmediate_operand" --- 2549,2561 ---- ldd\\t%1, %0 # # ! # ! fmovd\\t%1, %0 ! ldd\\t%1, %0 ! std\\t%1, %0" ! [(set_attr "type" "store,store,store,load,*,*,*,*,fpstore,fpload,*,*,*,fpmove,fpload,fpstore") ! (set_attr "length" "*,2,*,*,2,2,2,2,*,*,2,2,2,*,*,*") ! (set_attr "fptype" "*,*,*,*,*,*,*,*,*,*,*,*,*,double,*,*")]) (define_insn "*movdi_insn_sp32" [(set (match_operand:DI 0 "nonimmediate_operand" *************** *** 2861,2867 **** (define_split [(set (match_operand:DI 0 "register_operand" "") (match_operand:DI 1 "const_double_operand" ""))] ! "! TARGET_ARCH64 && reload_completed" [(clobber (const_int 0))] " { --- 2865,2878 ---- (define_split [(set (match_operand:DI 0 "register_operand" "") (match_operand:DI 1 "const_double_operand" ""))] ! "reload_completed ! && (! TARGET_V9 ! || (! TARGET_ARCH64 ! && ((GET_CODE (operands[0]) == REG ! && REGNO (operands[0]) < 32) ! || (GET_CODE (operands[0]) == SUBREG ! && GET_CODE (SUBREG_REG (operands[0])) == REG ! && REGNO (SUBREG_REG (operands[0])) < 32))))" [(clobber (const_int 0))] " { diff -Nrc3pad gcc-3.2/gcc/config/sparc/t-linux64 gcc-3.2.1/gcc/config/sparc/t-linux64 *** gcc-3.2/gcc/config/sparc/t-linux64 Fri Jun 21 11:25:58 2002 --- gcc-3.2.1/gcc/config/sparc/t-linux64 Tue Oct 8 21:58:53 2002 *************** *** 1,8 **** ! MULTILIB_OPTIONS = m64/m32 mno-app-regs|mcmodel=medany ! MULTILIB_DIRNAMES = 64 32 alt ! MULTILIB_MATCHES = mcmodel?medany=mcmodel?medmid ! MULTILIB_EXCEPTIONS = m32/mno-app-regs* m32/mcmodel=* ! MULTILIB_EXCLUSIONS = m32/!m64/mno-app-regs m32/!m64/mcmodel=medany LIBGCC = stmp-multilib INSTALL_LIBGCC = install-multilib --- 1,6 ---- ! MULTILIB_OPTIONS = m64/m32 ! MULTILIB_DIRNAMES = 64 32 ! MULTILIB_OSDIRNAMES = ../lib64 ../lib LIBGCC = stmp-multilib INSTALL_LIBGCC = install-multilib *************** INSTALL_LIBGCC = install-multilib *** 10,19 **** EXTRA_MULTILIB_PARTS=crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o \ crtfastmath.o - SHLIB_SLIBDIR_SUFFIXES = 64:64 32: - # Override t-slibgcc-elf-ver to export some libgcc symbols with # the symbol versions that glibc used. # Avoid the t-linux version file. SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver \ $(srcdir)/config/sparc/libgcc-sparc-glibc.ver --- 8,19 ---- EXTRA_MULTILIB_PARTS=crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o \ crtfastmath.o # Override t-slibgcc-elf-ver to export some libgcc symbols with # the symbol versions that glibc used. # Avoid the t-linux version file. SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver \ $(srcdir)/config/sparc/libgcc-sparc-glibc.ver + + CRTSTUFF_T_CFLAGS = `if test x$$($(GCC_FOR_TARGET) $(MULTILIB_CFLAGS) \ + -print-multi-os-directory) \ + = x../lib64; then echo -mcmodel=medany; fi` diff -Nrc3pad gcc-3.2/gcc/config/sparc/t-netbsd64 gcc-3.2.1/gcc/config/sparc/t-netbsd64 *** gcc-3.2/gcc/config/sparc/t-netbsd64 Tue Feb 19 17:43:25 2002 --- gcc-3.2.1/gcc/config/sparc/t-netbsd64 Wed Sep 4 21:34:47 2002 *************** *** 1,6 **** ! MULTILIB_OPTIONS = m32/m64 ! MULTILIB_DIRNAMES = 32 64 ! MULTILIB_MATCHES = ! LIBGCC = stmp-multilib ! INSTALL_LIBGCC = install-multilib --- 1,8 ---- ! # Disable multilib fow now, as NetBSD/sparc64 does not ship with ! # a 32-bit environment. ! #MULTILIB_OPTIONS = m32/m64 ! #MULTILIB_DIRNAMES = 32 64 ! #MULTILIB_MATCHES = ! #LIBGCC = stmp-multilib ! #INSTALL_LIBGCC = install-multilib diff -Nrc3pad gcc-3.2/gcc/config/sparc/t-sol2-64 gcc-3.2.1/gcc/config/sparc/t-sol2-64 *** gcc-3.2/gcc/config/sparc/t-sol2-64 Fri Jun 21 11:25:58 2002 --- gcc-3.2.1/gcc/config/sparc/t-sol2-64 Sat Oct 5 21:32:10 2002 *************** *** 1,11 **** MULTILIB_OPTIONS = m32/m64 MULTILIB_DIRNAMES = sparcv7 sparcv9 MULTILIB_MATCHES = LIBGCC = stmp-multilib INSTALL_LIBGCC = install-multilib EXTRA_MULTILIB_PARTS=crtbegin.o crtend.o gmon.o crt1.o crti.o crtn.o gcrt1.o \ crtfastmath.o - - SHLIB_SLIBDIR_SUFFIXES = sparcv9:/sparcv9 sparcv7: --- 1,10 ---- MULTILIB_OPTIONS = m32/m64 MULTILIB_DIRNAMES = sparcv7 sparcv9 MULTILIB_MATCHES = + MULTILIB_OSDIRNAMES = . sparcv9 LIBGCC = stmp-multilib INSTALL_LIBGCC = install-multilib EXTRA_MULTILIB_PARTS=crtbegin.o crtend.o gmon.o crt1.o crti.o crtn.o gcrt1.o \ crtfastmath.o diff -Nrc3pad gcc-3.2/gcc/config/xtensa/elf.h gcc-3.2.1/gcc/config/xtensa/elf.h *** gcc-3.2/gcc/config/xtensa/elf.h Wed Jan 23 21:03:50 2002 --- gcc-3.2.1/gcc/config/xtensa/elf.h Tue Nov 5 21:33:24 2002 *************** Software Foundation, 59 Temple Place - S *** 58,64 **** #undef ASM_FINAL_SPEC #undef LIB_SPEC ! #define LIB_SPEC "-lc -lsim -lc -lhandlers-sim" #undef STARTFILE_SPEC #define STARTFILE_SPEC "crt1-sim%O%s crti%O%s crtbegin%O%s _vectors%O%s" --- 58,64 ---- #undef ASM_FINAL_SPEC #undef LIB_SPEC ! #define LIB_SPEC "-lc -lsim -lc -lhandlers-sim -lhal" #undef STARTFILE_SPEC #define STARTFILE_SPEC "crt1-sim%O%s crti%O%s crtbegin%O%s _vectors%O%s" diff -Nrc3pad gcc-3.2/gcc/config/xtensa/xtensa-protos.h gcc-3.2.1/gcc/config/xtensa/xtensa-protos.h *** gcc-3.2/gcc/config/xtensa/xtensa-protos.h Fri Jun 28 19:40:31 2002 --- gcc-3.2.1/gcc/config/xtensa/xtensa-protos.h Mon Sep 30 20:34:09 2002 *************** *** 1,5 **** /* Prototypes of target machine for GNU compiler for Xtensa. ! Copyright (C) 2001 Free Software Foundation, Inc. Contributed by Bob Wilson (bwilson@tensilica.com) at Tensilica. This file is part of GCC. --- 1,5 ---- /* Prototypes of target machine for GNU compiler for Xtensa. ! Copyright 2001,2002 Free Software Foundation, Inc. Contributed by Bob Wilson (bwilson@tensilica.com) at Tensilica. This file is part of GCC. *************** extern void xtensa_reorg PARAMS ((rtx)); *** 89,95 **** extern rtx xtensa_return_addr PARAMS ((int, rtx)); extern rtx xtensa_builtin_saveregs PARAMS ((void)); extern enum reg_class xtensa_preferred_reload_class ! PARAMS ((rtx, enum reg_class)); extern enum reg_class xtensa_secondary_reload_class PARAMS ((enum reg_class, enum machine_mode, rtx, int)); extern int a7_overlap_mentioned_p PARAMS ((rtx x)); --- 89,95 ---- extern rtx xtensa_return_addr PARAMS ((int, rtx)); extern rtx xtensa_builtin_saveregs PARAMS ((void)); extern enum reg_class xtensa_preferred_reload_class ! PARAMS ((rtx, enum reg_class, int)); extern enum reg_class xtensa_secondary_reload_class PARAMS ((enum reg_class, enum machine_mode, rtx, int)); extern int a7_overlap_mentioned_p PARAMS ((rtx x)); diff -Nrc3pad gcc-3.2/gcc/config/xtensa/xtensa.c gcc-3.2.1/gcc/config/xtensa/xtensa.c *** gcc-3.2/gcc/config/xtensa/xtensa.c Fri Jun 28 19:40:31 2002 --- gcc-3.2.1/gcc/config/xtensa/xtensa.c Mon Sep 30 20:34:09 2002 *************** *** 1,5 **** /* Subroutines for insn-output.c for Tensilica's Xtensa architecture. ! Copyright (C) 2001 Free Software Foundation, Inc. Contributed by Bob Wilson (bwilson@tensilica.com) at Tensilica. This file is part of GCC. --- 1,5 ---- /* Subroutines for insn-output.c for Tensilica's Xtensa architecture. ! Copyright 2001,2002 Free Software Foundation, Inc. Contributed by Bob Wilson (bwilson@tensilica.com) at Tensilica. This file is part of GCC. *************** const char xtensa_leaf_regs[FIRST_PSEUDO *** 104,113 **** /* Map hard register number to register class */ const enum reg_class xtensa_regno_to_class[FIRST_PSEUDO_REGISTER] = { ! GR_REGS, SP_REG, GR_REGS, GR_REGS, ! GR_REGS, GR_REGS, GR_REGS, GR_REGS, ! GR_REGS, GR_REGS, GR_REGS, GR_REGS, ! GR_REGS, GR_REGS, GR_REGS, GR_REGS, AR_REGS, AR_REGS, BR_REGS, FP_REGS, FP_REGS, FP_REGS, FP_REGS, FP_REGS, FP_REGS, FP_REGS, FP_REGS, --- 104,113 ---- /* Map hard register number to register class */ const enum reg_class xtensa_regno_to_class[FIRST_PSEUDO_REGISTER] = { ! RL_REGS, SP_REG, RL_REGS, RL_REGS, ! RL_REGS, RL_REGS, RL_REGS, GR_REGS, ! RL_REGS, RL_REGS, RL_REGS, RL_REGS, ! RL_REGS, RL_REGS, RL_REGS, RL_REGS, AR_REGS, AR_REGS, BR_REGS, FP_REGS, FP_REGS, FP_REGS, FP_REGS, FP_REGS, FP_REGS, FP_REGS, FP_REGS, *************** xtensa_va_arg (valist, type) *** 2625,2640 **** enum reg_class ! xtensa_preferred_reload_class (x, class) rtx x; enum reg_class class; { ! if (CONSTANT_P (x) && GET_CODE (x) == CONST_DOUBLE) return NO_REGS; ! /* Don't use sp for reloads! */ ! if (class == AR_REGS) ! return GR_REGS; return class; } --- 2625,2646 ---- enum reg_class ! xtensa_preferred_reload_class (x, class, isoutput) rtx x; enum reg_class class; + int isoutput; { ! if (!isoutput && CONSTANT_P (x) && GET_CODE (x) == CONST_DOUBLE) return NO_REGS; ! /* Don't use the stack pointer or hard frame pointer for reloads! ! The hard frame pointer would normally be OK except that it may ! briefly hold an incoming argument in the prologue, and reload ! won't know that it is live because the hard frame pointer is ! treated specially. */ ! ! if (class == AR_REGS || class == GR_REGS) ! return RL_REGS; return class; } *************** xtensa_secondary_reload_class (class, mo *** 2656,2668 **** if (!isoutput) { if (class == FP_REGS && constantpool_mem_p (x)) ! return GR_REGS; } if (ACC_REG_P (regno)) ! return (class == GR_REGS ? NO_REGS : GR_REGS); if (class == ACC_REG) ! return (GP_REG_P (regno) ? NO_REGS : GR_REGS); return NO_REGS; } --- 2662,2674 ---- if (!isoutput) { if (class == FP_REGS && constantpool_mem_p (x)) ! return RL_REGS; } if (ACC_REG_P (regno)) ! return ((class == GR_REGS || class == RL_REGS) ? NO_REGS : RL_REGS); if (class == ACC_REG) ! return (GP_REG_P (regno) ? NO_REGS : RL_REGS); return NO_REGS; } diff -Nrc3pad gcc-3.2/gcc/config/xtensa/xtensa.h gcc-3.2.1/gcc/config/xtensa/xtensa.h *** gcc-3.2/gcc/config/xtensa/xtensa.h Fri Jun 28 19:40:31 2002 --- gcc-3.2.1/gcc/config/xtensa/xtensa.h Mon Sep 30 20:34:09 2002 *************** *** 1,5 **** /* Definitions of Tensilica's Xtensa target machine for GNU compiler. ! Copyright (C) 2001 Free Software Foundation, Inc. Contributed by Bob Wilson (bwilson@tensilica.com) at Tensilica. This file is part of GCC. --- 1,5 ---- /* Definitions of Tensilica's Xtensa target machine for GNU compiler. ! Copyright 2001,2002 Free Software Foundation, Inc. Contributed by Bob Wilson (bwilson@tensilica.com) at Tensilica. This file is part of GCC. *************** enum reg_class *** 570,575 **** --- 570,576 ---- FP_REGS, /* floating point registers */ ACC_REG, /* MAC16 accumulator */ SP_REG, /* sp register (aka a1) */ + RL_REGS, /* preferred reload regs (not sp or fp) */ GR_REGS, /* integer registers except sp */ AR_REGS, /* all integer registers */ ALL_REGS, /* all registers */ *************** enum reg_class *** 590,595 **** --- 591,597 ---- "FP_REGS", \ "ACC_REG", \ "SP_REG", \ + "RL_REGS", \ "GR_REGS", \ "AR_REGS", \ "ALL_REGS" \ *************** enum reg_class *** 605,610 **** --- 607,613 ---- { 0xfff80000, 0x00000007 }, /* floating-point registers */ \ { 0x00000000, 0x00000008 }, /* MAC16 accumulator */ \ { 0x00000002, 0x00000000 }, /* stack pointer register */ \ + { 0x0000ff7d, 0x00000000 }, /* preferred reload registers */ \ { 0x0000fffd, 0x00000000 }, /* general-purpose registers */ \ { 0x0003ffff, 0x00000000 }, /* integer registers */ \ { 0xffffffff, 0x0000000f } /* all registers */ \ *************** extern enum reg_class xtensa_char_to_cla *** 720,729 **** : FALSE) #define PREFERRED_RELOAD_CLASS(X, CLASS) \ ! xtensa_preferred_reload_class (X, CLASS) #define PREFERRED_OUTPUT_RELOAD_CLASS(X, CLASS) \ ! (CLASS) #define SECONDARY_INPUT_RELOAD_CLASS(CLASS, MODE, X) \ xtensa_secondary_reload_class (CLASS, MODE, X, 0) --- 723,732 ---- : FALSE) #define PREFERRED_RELOAD_CLASS(X, CLASS) \ ! xtensa_preferred_reload_class (X, CLASS, 0) #define PREFERRED_OUTPUT_RELOAD_CLASS(X, CLASS) \ ! xtensa_preferred_reload_class (X, CLASS, 1) #define SECONDARY_INPUT_RELOAD_CLASS(CLASS, MODE, X) \ xtensa_secondary_reload_class (CLASS, MODE, X, 0) diff -Nrc3pad gcc-3.2/gcc/config.gcc gcc-3.2.1/gcc/config.gcc *** gcc-3.2/gcc/config.gcc Tue Aug 6 15:20:55 2002 --- gcc-3.2.1/gcc/config.gcc Wed Oct 23 17:28:29 2002 *************** i[34567]86-*-rtems*|i[34567]86-*-rtemsel *** 1405,1411 **** i[34567]86-*-sco3.2v5*) # 80386 running SCO Open Server 5 xm_defines=POSIX install_headers_dir=install-headers-cpio ! tm_file=i386/sco5.h if test x$gas = xyes then tm_file="usegas.h ${tm_file}" --- 1405,1411 ---- i[34567]86-*-sco3.2v5*) # 80386 running SCO Open Server 5 xm_defines=POSIX install_headers_dir=install-headers-cpio ! tm_file="${tm_file} i386/att.h i386/sco5.h" if test x$gas = xyes then tm_file="usegas.h ${tm_file}" diff -Nrc3pad gcc-3.2/gcc/configure gcc-3.2.1/gcc/configure *** gcc-3.2/gcc/configure Sat Jun 29 00:20:11 2002 --- gcc-3.2.1/gcc/configure Fri Sep 6 10:58:48 2002 *************** EOF *** 7578,7619 **** fi ! if test "x$gcc_cv_as_flags64" != xno; then ! echo $ac_n "checking for assembler offsetable %lo() support""... $ac_c" 1>&6 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 ! gcc_cv_as_offsetable_lo10=unknown ! if test "x$gcc_cv_as" != x; then ! # Check if assembler has offsetable %lo() ! echo "or %g1, %lo(ab) + 12, %g1" > conftest.s ! echo "or %g1, %lo(ab + 12), %g1" > conftest1.s ! if $gcc_cv_as $gcc_cv_as_flags64 -o conftest.o conftest.s \ ! > /dev/null 2>&1 && ! $gcc_cv_as $gcc_cv_as_flags64 -o conftest1.o conftest1.s \ ! > /dev/null 2>&1; then ! if cmp conftest.o conftest1.o > /dev/null 2>&1; then ! gcc_cv_as_offsetable_lo10=no ! else ! gcc_cv_as_offsetable_lo10=yes ! fi ! else gcc_cv_as_offsetable_lo10=no fi ! rm -f conftest.s conftest.o conftest1.s conftest1.o fi ! fi echo "$ac_t""$gcc_cv_as_offsetable_lo10" 1>&6 ! if test "x$gcc_cv_as_offsetable_lo10" = xyes; then ! cat >> confdefs.h <<\EOF #define HAVE_AS_OFFSETABLE_LO10 1 EOF - fi fi ;; --- 7578,7617 ---- fi ! echo $ac_n "checking for assembler offsetable %lo() support""... $ac_c" 1>&6 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 ! gcc_cv_as_offsetable_lo10=unknown ! if test "x$gcc_cv_as" != x; then ! # Check if assembler has offsetable %lo() ! echo "or %g1, %lo(ab) + 12, %g1" > conftest.s ! echo "or %g1, %lo(ab + 12), %g1" > conftest1.s ! if $gcc_cv_as -xarch=v9 -o conftest.o conftest.s \ ! > /dev/null 2>&1 && ! $gcc_cv_as -xarch=v9 -o conftest1.o conftest1.s \ ! > /dev/null 2>&1; then ! if cmp conftest.o conftest1.o > /dev/null 2>&1; then gcc_cv_as_offsetable_lo10=no + else + gcc_cv_as_offsetable_lo10=yes fi ! else ! gcc_cv_as_offsetable_lo10=no fi ! rm -f conftest.s conftest.o conftest1.s conftest1.o ! fi ! fi echo "$ac_t""$gcc_cv_as_offsetable_lo10" 1>&6 ! if test "x$gcc_cv_as_offsetable_lo10" = xyes; then ! cat >> confdefs.h <<\EOF #define HAVE_AS_OFFSETABLE_LO10 1 EOF fi ;; diff -Nrc3pad gcc-3.2/gcc/configure.in gcc-3.2.1/gcc/configure.in *** gcc-3.2/gcc/configure.in Sat Jun 29 00:20:11 2002 --- gcc-3.2.1/gcc/configure.in Fri Sep 6 10:58:47 2002 *************** EOF *** 1846,1878 **** [Define if your assembler and linker support unaligned PC relative relocs against hidden symbols.]) fi ! if test "x$gcc_cv_as_flags64" != xno; then ! AC_CACHE_CHECK([for assembler offsetable %lo() support], ! gcc_cv_as_offsetable_lo10, [ ! gcc_cv_as_offsetable_lo10=unknown ! if test "x$gcc_cv_as" != x; then ! # Check if assembler has offsetable %lo() ! echo "or %g1, %lo(ab) + 12, %g1" > conftest.s ! echo "or %g1, %lo(ab + 12), %g1" > conftest1.s ! if $gcc_cv_as $gcc_cv_as_flags64 -o conftest.o conftest.s \ ! > /dev/null 2>&1 && ! $gcc_cv_as $gcc_cv_as_flags64 -o conftest1.o conftest1.s \ ! > /dev/null 2>&1; then ! if cmp conftest.o conftest1.o > /dev/null 2>&1; then ! gcc_cv_as_offsetable_lo10=no ! else ! gcc_cv_as_offsetable_lo10=yes ! fi ! else gcc_cv_as_offsetable_lo10=no fi ! rm -f conftest.s conftest.o conftest1.s conftest1.o fi ! ]) ! if test "x$gcc_cv_as_offsetable_lo10" = xyes; then ! AC_DEFINE(HAVE_AS_OFFSETABLE_LO10, 1, ! [Define if your assembler supports offsetable %lo().]) fi fi ;; --- 1846,1876 ---- [Define if your assembler and linker support unaligned PC relative relocs against hidden symbols.]) fi ! AC_CACHE_CHECK([for assembler offsetable %lo() support], ! gcc_cv_as_offsetable_lo10, [ ! gcc_cv_as_offsetable_lo10=unknown ! if test "x$gcc_cv_as" != x; then ! # Check if assembler has offsetable %lo() ! echo "or %g1, %lo(ab) + 12, %g1" > conftest.s ! echo "or %g1, %lo(ab + 12), %g1" > conftest1.s ! if $gcc_cv_as -xarch=v9 -o conftest.o conftest.s \ ! > /dev/null 2>&1 && ! $gcc_cv_as -xarch=v9 -o conftest1.o conftest1.s \ ! > /dev/null 2>&1; then ! if cmp conftest.o conftest1.o > /dev/null 2>&1; then gcc_cv_as_offsetable_lo10=no + else + gcc_cv_as_offsetable_lo10=yes fi ! else ! gcc_cv_as_offsetable_lo10=no fi ! rm -f conftest.s conftest.o conftest1.s conftest1.o fi + ]) + if test "x$gcc_cv_as_offsetable_lo10" = xyes; then + AC_DEFINE(HAVE_AS_OFFSETABLE_LO10, 1, + [Define if your assembler supports offsetable %lo().]) fi ;; diff -Nrc3pad gcc-3.2/gcc/cppfiles.c gcc-3.2.1/gcc/cppfiles.c *** gcc-3.2/gcc/cppfiles.c Fri Jan 18 13:40:28 2002 --- gcc-3.2.1/gcc/cppfiles.c Thu Aug 15 19:46:35 2002 *************** stack_include_file (pfile, inc) *** 310,318 **** sysp = MAX ((pfile->map ? pfile->map->sysp : 0), (inc->foundhere ? inc->foundhere->sysp : 0)); ! /* For -M, add the file to the dependencies on its first inclusion. */ ! if (CPP_OPTION (pfile, print_deps) > sysp && !inc->include_count) ! deps_add_dep (pfile->deps, inc->name); /* Not in cache? */ if (! inc->buffer) --- 310,321 ---- sysp = MAX ((pfile->map ? pfile->map->sysp : 0), (inc->foundhere ? inc->foundhere->sysp : 0)); ! /* Add the file to the dependencies on its first inclusion. */ ! if (CPP_OPTION (pfile, print_deps) > !!sysp && !inc->include_count) ! { ! if (pfile->buffer || CPP_OPTION (pfile, deps_ignore_main_file) == 0) ! deps_add_dep (pfile->deps, inc->name); ! } /* Not in cache? */ if (! inc->buffer) diff -Nrc3pad gcc-3.2/gcc/cppinit.c gcc-3.2.1/gcc/cppinit.c *** gcc-3.2/gcc/cppinit.c Fri May 24 09:26:48 2002 --- gcc-3.2.1/gcc/cppinit.c Sun Oct 6 08:21:21 2002 *************** static void mark_named_operators PARAMS *** 103,111 **** static void append_include_chain PARAMS ((cpp_reader *, char *, int, int)); static struct search_path * remove_dup_dir PARAMS ((cpp_reader *, struct search_path *)); static struct search_path * remove_dup_dirs PARAMS ((cpp_reader *, ! struct search_path *)); static void merge_include_chains PARAMS ((cpp_reader *)); static bool push_include PARAMS ((cpp_reader *, struct pending_option *)); --- 103,115 ---- static void append_include_chain PARAMS ((cpp_reader *, char *, int, int)); static struct search_path * remove_dup_dir PARAMS ((cpp_reader *, + struct search_path *, + struct search_path **)); + static struct search_path * remove_dup_nonsys_dirs PARAMS ((cpp_reader *, + struct search_path **, struct search_path *)); static struct search_path * remove_dup_dirs PARAMS ((cpp_reader *, ! struct search_path **)); static void merge_include_chains PARAMS ((cpp_reader *)); static bool push_include PARAMS ((cpp_reader *, struct pending_option *)); *************** path_include (pfile, list, path) *** 189,195 **** name[q - p] = 0; } ! append_include_chain (pfile, name, path, 0); /* Advance past this name. */ if (*q == 0) --- 193,199 ---- name[q - p] = 0; } ! append_include_chain (pfile, name, path, path == SYSTEM); /* Advance past this name. */ if (*q == 0) *************** append_include_chain (pfile, dir, path, *** 272,326 **** } /* Handle a duplicated include path. PREV is the link in the chain ! before the duplicate. The duplicate is removed from the chain and ! freed. Returns PREV. */ static struct search_path * ! remove_dup_dir (pfile, prev) cpp_reader *pfile; struct search_path *prev; { ! struct search_path *cur = prev->next; if (CPP_OPTION (pfile, verbose)) fprintf (stderr, _("ignoring duplicate directory \"%s\"\n"), cur->name); - prev->next = cur->next; free ((PTR) cur->name); free (cur); return prev; } /* Remove duplicate directories from a chain. Returns the tail of the chain, or NULL if the chain is empty. This algorithm is quadratic in the number of -I switches, which is acceptable since there aren't usually that many of them. */ static struct search_path * ! remove_dup_dirs (pfile, head) cpp_reader *pfile; ! struct search_path *head; { struct search_path *prev = NULL, *cur, *other; ! for (cur = head; cur; cur = cur->next) { ! for (other = head; other != cur; other = other->next) if (INO_T_EQ (cur->ino, other->ino) && cur->dev == other->dev) { ! if (cur->sysp && !other->sysp) ! { ! cpp_warning (pfile, ! "changing search order for system directory \"%s\"", ! cur->name); ! if (strcmp (cur->name, other->name)) ! cpp_warning (pfile, ! " as it is the same as non-system directory \"%s\"", ! other->name); ! else ! cpp_warning (pfile, ! " as it has already been specified as a non-system directory"); ! } ! cur = remove_dup_dir (pfile, prev); break; } prev = cur; --- 276,373 ---- } /* Handle a duplicated include path. PREV is the link in the chain ! before the duplicate, or NULL if the duplicate is at the head of ! the chain. The duplicate is removed from the chain and freed. ! Returns PREV. */ static struct search_path * ! remove_dup_dir (pfile, prev, head_ptr) cpp_reader *pfile; struct search_path *prev; + struct search_path **head_ptr; { ! struct search_path *cur; ! ! if (prev != NULL) ! { ! cur = prev->next; ! prev->next = cur->next; ! } ! else ! { ! cur = *head_ptr; ! *head_ptr = cur->next; ! } if (CPP_OPTION (pfile, verbose)) fprintf (stderr, _("ignoring duplicate directory \"%s\"\n"), cur->name); free ((PTR) cur->name); free (cur); return prev; } + /* Remove duplicate non-system directories for which there is an equivalent + 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 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) + cpp_reader *pfile; + struct search_path **head_ptr; + struct search_path *end; + { + int sysdir = 0; + struct search_path *prev = NULL, *cur, *other; + + for (cur = *head_ptr; cur; cur = cur->next) + { + if (cur->sysp) + { + sysdir = 1; + for (other = *head_ptr, prev = NULL; + other != end; + other = other ? other->next : *head_ptr) + { + if (!other->sysp + && INO_T_EQ (cur->ino, other->ino) + && cur->dev == other->dev) + { + other = remove_dup_dir (pfile, prev, head_ptr); + if (CPP_OPTION (pfile, verbose)) + fprintf (stderr, + _(" as it is a non-system directory that duplicates a system directory\n")); + } + prev = other; + } + } + } + + if (!sysdir) + for (cur = *head_ptr; cur != end; cur = cur->next) + prev = cur; + + return prev; + } + /* Remove duplicate directories from a chain. Returns the tail of the chain, or NULL if the chain is empty. This algorithm is quadratic in the number of -I switches, which is acceptable since there aren't usually that many of them. */ static struct search_path * ! remove_dup_dirs (pfile, head_ptr) cpp_reader *pfile; ! struct search_path **head_ptr; { struct search_path *prev = NULL, *cur, *other; ! 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) { ! cur = remove_dup_dir (pfile, prev, head_ptr); break; } prev = cur; *************** merge_include_chains (pfile) *** 358,385 **** else brack = systm; ! /* This is a bit tricky. First we drop dupes from the quote-include ! list. Then we drop dupes from the bracket-include list. ! Finally, if qtail and brack are the same directory, we cut out ! brack and move brack up to point to qtail. We can't just merge the lists and then uniquify them because then we may lose directories from the <> search path that should ! be there; consider -Ifoo -Ibar -I- -Ifoo -Iquux. It is however safe to treat -Ibar -Ifoo -I- -Ifoo -Iquux as if written -Ibar -I- -Ifoo -Iquux. */ ! remove_dup_dirs (pfile, brack); ! qtail = remove_dup_dirs (pfile, quote); if (quote) { qtail->next = brack; /* If brack == qtail, remove brack as it's simpler. */ ! if (brack && INO_T_EQ (qtail->ino, brack->ino) && qtail->dev == brack->dev) ! brack = remove_dup_dir (pfile, qtail); } else quote = brack; --- 405,437 ---- else brack = systm; ! /* This is a bit tricky. First we drop non-system dupes of system ! directories from the merged bracket-include list. Next we drop ! dupes from the bracket and quote include lists. Then we drop ! non-system dupes from the merged quote-include list. Finally, ! if qtail and brack are the same directory, we cut out brack and ! move brack up to point to qtail. We can't just merge the lists and then uniquify them because then we may lose directories from the <> search path that should ! be there; consider -Ifoo -Ibar -I- -Ifoo -Iquux. It is however safe to treat -Ibar -Ifoo -I- -Ifoo -Iquux as if written -Ibar -I- -Ifoo -Iquux. */ ! remove_dup_nonsys_dirs (pfile, &brack, systm); ! remove_dup_dirs (pfile, &brack); if (quote) { + qtail = remove_dup_dirs (pfile, "e); qtail->next = brack; + qtail = remove_dup_nonsys_dirs (pfile, "e, brack); + /* If brack == qtail, remove brack as it's simpler. */ ! if (qtail && brack && INO_T_EQ (qtail->ino, brack->ino) && qtail->dev == brack->dev) ! brack = remove_dup_dir (pfile, qtail, "e); } else quote = brack; *************** struct lang_flags *** 396,402 **** char objc; char cplusplus; char extended_numbers; ! char trigraphs; char dollars_in_ident; char cplusplus_comments; char digraphs; --- 448,454 ---- char objc; char cplusplus; char extended_numbers; ! char std; char dollars_in_ident; char cplusplus_comments; char digraphs; *************** struct lang_flags *** 404,410 **** /* ??? Enable $ in identifiers in assembly? */ static const struct lang_flags lang_defaults[] = ! { /* c99 objc c++ xnum trig 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 }, --- 456,462 ---- /* ??? Enable $ in identifiers in assembly? */ static const struct lang_flags lang_defaults[] = ! { /* 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 }, *************** set_lang (pfile, lang) *** 431,437 **** CPP_OPTION (pfile, objc) = l->objc; CPP_OPTION (pfile, cplusplus) = l->cplusplus; CPP_OPTION (pfile, extended_numbers) = l->extended_numbers; ! CPP_OPTION (pfile, trigraphs) = l->trigraphs; CPP_OPTION (pfile, dollars_in_ident) = l->dollars_in_ident; CPP_OPTION (pfile, cplusplus_comments) = l->cplusplus_comments; CPP_OPTION (pfile, digraphs) = l->digraphs; --- 483,490 ---- 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; ! CPP_OPTION (pfile, trigraphs) = l->std; CPP_OPTION (pfile, dollars_in_ident) = l->dollars_in_ident; CPP_OPTION (pfile, cplusplus_comments) = l->cplusplus_comments; CPP_OPTION (pfile, digraphs) = l->digraphs; *************** init_standard_includes (pfile) *** 847,853 **** && !CPP_OPTION (pfile, no_standard_cplusplus_includes))) { /* Does this dir start with the prefix? */ ! if (!memcmp (p->fname, default_prefix, default_len)) { /* Yes; change prefix and add to search list. */ int flen = strlen (p->fname); --- 900,906 ---- && !CPP_OPTION (pfile, no_standard_cplusplus_includes))) { /* Does this dir start with the prefix? */ ! if (!strncmp (p->fname, default_prefix, default_len)) { /* Yes; change prefix and add to search list. */ int flen = strlen (p->fname); *************** parse_option (input) *** 1295,1301 **** md = (mn + mx) / 2; opt_len = cl_options[md].opt_len; ! comp = memcmp (input, cl_options[md].opt_text, opt_len); if (comp > 0) mn = md + 1; --- 1348,1354 ---- md = (mn + mx) / 2; opt_len = cl_options[md].opt_len; ! comp = strncmp (input, cl_options[md].opt_text, opt_len); if (comp > 0) mn = md + 1; *************** parse_option (input) *** 1320,1326 **** for (; mn < (unsigned int) N_OPTS; mn++) { opt_len = cl_options[mn].opt_len; ! if (memcmp (input, cl_options[mn].opt_text, opt_len)) break; if (input[opt_len] == '\0') return mn; --- 1373,1379 ---- for (; mn < (unsigned int) N_OPTS; mn++) { opt_len = cl_options[mn].opt_len; ! if (strncmp (input, cl_options[mn].opt_text, opt_len)) break; if (input[opt_len] == '\0') return mn; *************** init_dependency_output (pfile) *** 1880,1886 **** { spec = getenv ("SUNPRO_DEPENDENCIES"); if (spec) ! CPP_OPTION (pfile, print_deps) = 2; else return; } --- 1933,1942 ---- { spec = getenv ("SUNPRO_DEPENDENCIES"); if (spec) ! { ! CPP_OPTION (pfile, print_deps) = 2; ! CPP_OPTION (pfile, deps_ignore_main_file) = 1; ! } else return; } diff -Nrc3pad gcc-3.2/gcc/cpplib.c gcc-3.2.1/gcc/cpplib.c *** gcc-3.2/gcc/cpplib.c Thu Mar 14 19:24:56 2002 --- gcc-3.2.1/gcc/cpplib.c Sun Oct 6 09:12:19 2002 *************** run_directive (pfile, dir_no, buf, count *** 406,417 **** --- 406,422 ---- { cpp_push_buffer (pfile, (const U_CHAR *) buf, count, /* from_stage3 */ true, 1); + /* Disgusting hack. */ + if (dir_no == T_PRAGMA) + pfile->buffer->inc = pfile->buffer->prev->inc; start_directive (pfile); /* We don't want a leading # to be interpreted as a directive. */ pfile->buffer->saved_flags = 0; pfile->directive = &dtable[dir_no]; (void) (*pfile->directive->handler) (pfile); end_directive (pfile, 1); + if (dir_no == T_PRAGMA) + pfile->buffer->inc = NULL; _cpp_pop_buffer (pfile); } *************** destringize_and_run (pfile, in) *** 1219,1224 **** --- 1224,1232 ---- { const unsigned char *src, *limit; char *dest, *result; + cpp_context saved_context; + cpp_context *saved_cur_context; + unsigned int saved_line; dest = result = alloca (in->len + 1); for (src = in->text, limit = src + in->len; src < limit;) *************** destringize_and_run (pfile, in) *** 1230,1236 **** --- 1238,1277 ---- } *dest = '\0'; + /* FIXME. All this saving is a horrible kludge to handle the case + when we're in a macro expansion. + + A better strategy it to not convert _Pragma to #pragma if doing + preprocessed output, but to just pass it through as-is, unless it + is a CPP pragma in which case is should be processed normally. + When compiling the preprocessed output the _Pragma should be + handled. This will be become necessary when we move to + line-at-a-time lexing since we will be macro-expanding the line + before outputting / compiling it. */ + saved_line = pfile->line; + saved_context = pfile->base_context; + saved_cur_context = pfile->context; + pfile->context = &pfile->base_context; run_directive (pfile, T_PRAGMA, result, dest - result); + pfile->context = saved_cur_context; + pfile->base_context = saved_context; + pfile->line = saved_line; + + /* See above comment. For the moment, we'd like + + token1 _Pragma ("foo") token2 + + to be output as + + token1 + # 7 "file.c" + #pragma foo + # 7 "file.c" + token2 + + Getting the line markers is a little tricky. */ + if (pfile->cb.line_change) + (*pfile->cb.line_change) (pfile, pfile->cur_token, false); } /* Handle the _Pragma operator. */ *************** _cpp_do__Pragma (pfile) *** 1240,1264 **** { const cpp_token *string = get__Pragma_string (pfile); ! if (!string) ! cpp_error (pfile, "_Pragma takes a parenthesized string literal"); else ! { ! /* Ideally, we'd like ! token1 _Pragma ("foo") token2 ! to be output as ! token1 ! # 7 "file.c" ! #pragma foo ! # 7 "file.c" ! token2 ! Getting these correct line markers is a little tricky. */ ! ! unsigned int orig_line = pfile->line; ! destringize_and_run (pfile, &string->val.str); ! pfile->line = orig_line; ! pfile->buffer->saved_flags = BOL; ! } } /* Just ignore #sccs, on systems where we define it at all. */ --- 1281,1290 ---- { const cpp_token *string = get__Pragma_string (pfile); ! if (string) ! destringize_and_run (pfile, &string->val.str); else ! cpp_error (pfile, "_Pragma takes a parenthesized string literal"); } /* Just ignore #sccs, on systems where we define it at all. */ diff -Nrc3pad gcc-3.2/gcc/cpplib.h gcc-3.2.1/gcc/cpplib.h *** gcc-3.2/gcc/cpplib.h Thu Mar 14 19:24:57 2002 --- gcc-3.2.1/gcc/cpplib.h Thu Aug 15 19:46:36 2002 *************** struct cpp_options *** 279,284 **** --- 279,287 ---- /* If true, fopen (deps_file, "a") else fopen (deps_file, "w"). */ unsigned char print_deps_append; + /* If true, no dependency is generated on the main file. */ + unsigned char deps_ignore_main_file; + /* Nonzero means print names of header files (-H). */ unsigned char print_include_names; *************** struct cpp_options *** 335,340 **** --- 338,346 ---- /* Nonzero for the 1999 C Standard, including corrigenda and amendments. */ unsigned char c99; + /* Nonzero if conforming to some particular standard. */ + unsigned char std; + /* Nonzero means give all the error messages the ANSI standard requires. */ unsigned char pedantic; diff -Nrc3pad gcc-3.2/gcc/cppmacro.c gcc-3.2.1/gcc/cppmacro.c *** gcc-3.2/gcc/cppmacro.c Wed May 29 19:26:00 2002 --- gcc-3.2.1/gcc/cppmacro.c Sat Sep 28 00:32:14 2002 *************** stringify_arg (pfile, arg) *** 348,353 **** --- 348,359 ---- } /* Commit the memory, including NUL, and return the token. */ + if ((size_t) (BUFF_LIMIT (pfile->u_buff) - dest) < 1) + { + size_t len_so_far = dest - BUFF_FRONT (pfile->u_buff); + _cpp_extend_buff (pfile, &pfile->u_buff, 1); + dest = BUFF_FRONT (pfile->u_buff) + len_so_far; + } len = dest - BUFF_FRONT (pfile->u_buff); BUFF_FRONT (pfile->u_buff) = dest + 1; return new_string_token (pfile, dest - len, len); *************** collect_args (pfile, node) *** 613,619 **** } if (!error) ! return base_buff; _cpp_release_buff (pfile, base_buff); return NULL; --- 619,638 ---- } if (!error) ! { ! /* GCC has special semantics for , ## b where b is a varargs ! parameter: we remove the comma if b was omitted entirely. ! If b was merely an empty argument, the comma is retained. ! If the macro takes just one (varargs) parameter, then we ! retain the comma only if we are standards conforming. ! ! If FIRST is NULL replace_args () swallows the comma. */ ! if (macro->variadic && (argc < macro->paramc ! || (argc == 1 && args[0].count == 0 ! && !CPP_OPTION (pfile, std)))) ! args[macro->paramc - 1].first = NULL; ! return base_buff; ! } _cpp_release_buff (pfile, base_buff); return NULL; *************** replace_args (pfile, node, args) *** 799,813 **** count = arg->count, from = arg->first; if (dest != first) { - /* GCC has special semantics for , ## b where b is a - varargs parameter: the comma disappears if b was - given no actual arguments (not merely if b is an - empty argument); otherwise the paste flag is removed. */ if (dest[-1]->type == CPP_COMMA && macro->variadic && src->val.arg_no == macro->paramc) { ! if (count == 0) dest--; else paste_flag = dest - 1; --- 818,830 ---- count = arg->count, from = arg->first; if (dest != first) { if (dest[-1]->type == CPP_COMMA && macro->variadic && src->val.arg_no == macro->paramc) { ! /* Swallow a pasted comma if from == NULL, otherwise ! drop the paste flag. */ ! if (from == NULL) dest--; else paste_flag = dest - 1; diff -Nrc3pad gcc-3.2/gcc/dbxout.c gcc-3.2.1/gcc/dbxout.c *** gcc-3.2/gcc/dbxout.c Wed May 1 22:29:25 2002 --- gcc-3.2.1/gcc/dbxout.c Sat Sep 14 00:26:38 2002 *************** dbxout_function_end () *** 396,406 **** --- 396,410 ---- /* By convention, GCC will mark the end of a function with an N_FUN symbol and an empty string. */ + #ifdef DBX_OUTPUT_NFUN + DBX_OUTPUT_NFUN (asmfile, lscope_label_name, current_function_decl); + #else fprintf (asmfile, "%s\"\",%d,0,0,", ASM_STABS_OP, N_FUN); assemble_name (asmfile, lscope_label_name); putc ('-', asmfile); assemble_name (asmfile, XSTR (XEXP (DECL_RTL (current_function_decl), 0), 0)); fprintf (asmfile, "\n"); + #endif } #endif /* DBX_DEBUGGING_INFO */ diff -Nrc3pad gcc-3.2/gcc/doc/c-tree.texi gcc-3.2.1/gcc/doc/c-tree.texi *** gcc-3.2/gcc/doc/c-tree.texi Thu Apr 25 09:34:52 2002 --- gcc-3.2.1/gcc/doc/c-tree.texi Wed Sep 11 16:40:27 2002 *************** Then, if @code{THUNK_VCALL_OFFSET} (an @ *** 1203,1213 **** the adjusted @code{this} pointer must be adjusted again. The complete calculation is given by the following pseudo-code: ! @example this += THUNK_DELTA if (THUNK_VCALL_OFFSET) this += (*((ptrdiff_t **) this))[THUNK_VCALL_OFFSET] ! @end example Finally, the thunk should jump to the location given by @code{DECL_INITIAL}; this will always be an expression for the --- 1203,1213 ---- the adjusted @code{this} pointer must be adjusted again. The complete calculation is given by the following pseudo-code: ! @smallexample this += THUNK_DELTA if (THUNK_VCALL_OFFSET) this += (*((ptrdiff_t **) this))[THUNK_VCALL_OFFSET] ! @end smallexample Finally, the thunk should jump to the location given by @code{DECL_INITIAL}; this will always be an expression for the diff -Nrc3pad gcc-3.2/gcc/doc/compat.texi gcc-3.2.1/gcc/doc/compat.texi *** gcc-3.2/gcc/doc/compat.texi Thu Jan 1 00:00:00 1970 --- gcc-3.2.1/gcc/doc/compat.texi Sat Oct 12 00:01:18 2002 *************** *** 0 **** --- 1,156 ---- + @c Copyright (C) 2002 Free Software Foundation, Inc. + @c This is part of the GCC manual. + @c For copying conditions, see the file gcc.texi. + + @node Compatibility + @chapter Binary Compatibility + @cindex binary compatibility + @cindex ABI + @cindex application binary interface + + Binary compatibility encompasses several related concepts: + + @table @dfn + @item application binary interface (ABI) + The set of runtime conventions followed by all of the tools that deal + with binary representations of a program, including compilers, assemblers, + linkers, and language runtime support. + Some ABIs are formal with a written specification, possibly designed + by multiple interested parties. Others are simply the way things are + actually done by a particular set of tools. + + @item ABI conformance + A compiler conforms to an ABI if it generates code that follows all of + the specifications enumerated by that ABI@. + A library conforms to an ABI if it is implemented according to that ABI@. + An application conforms to an ABI if it is built using tools that conform + to that ABI and does not contain source code that specifically changes + behavior specified by the ABI@. + + @item calling conventions + Calling conventions are a subset of an ABI that specify of how arguments + are passed and function results are returned. + + @item interoperability + Different sets of tools are interoperable if they generate files that + can be used in the same program. The set of tools includes compilers, + assemblers, linkers, libraries, header files, startup files, and debuggers. + Binaries produced by different sets of tools are not interoperable unless + they implement the same ABI@. This applies to different versions of the + same tools as well as tools from different vendors. + + @item intercallability + Whether a function in a binary built by one set of tools can call a + function in a binary built by a different set of tools is a subset + of interoperability. + + @item implementation-defined features + Language standards include lists of implementation-defined features whose + behavior can vary from one implementation to another. Some of these + features are normally covered by a platform's ABI and others are not. + The features that are not covered by an ABI generally affect how a + program behaves, but not intercallability. + + @item compatibility + Conformance to the same ABI and the same behavior of implementation-defined + features are both relevant for compatibility. + @end table + + The application binary interface implemented by a C or C++ compiler + affects code generation and runtime support for: + + @itemize @bullet + @item + size and alignment of data types + @item + layout of structured types + @item + calling conventions + @item + register usage conventions + @item + interfaces for runtime arithmetic support + @item + object file formats + @end itemize + + In addition, the application binary interface implemented by a C++ compiler + affects code generation and runtime support for: + @itemize @bullet + @item + name mangling + @item + exception handling + @item + invoking constructors and destructors + @item + layout, alignment, and padding of classes + @item + layout and alignment of virtual tables + @end itemize + + Some GCC compilation options cause the compiler to generate code that + does not conform to the platform's default ABI@. Other options cause + different program behavior for implementation-defined features that are + not covered by an ABI@. These options are provided for consistency with + other compilers that do not follow the platform's default ABI or the + usual behavior of implementation-defined features for the platform. + Be very careful about using such options. + + Most platforms have a well-defined ABI that covers C code, but ABIs + that cover C++ functionality are not yet common. + + Starting with GCC 3.2, GCC binary conventions for C++ are based on a + written, vendor-neutral C++ ABI that was designed to be specific to + 64-bit Itanium but also includes generic specifications that apply to + any platform. + This C++ ABI is also implemented by other compiler vendors on some + platforms, notably GNU/Linux and BSD systems. + We have tried hard to provide a stable ABI that will be compatible with + future GCC releases, but it is possible that we will encounter problems + that make this difficult. Such problems could include different + interpretations of the C++ ABI by different vendors, bugs in the ABI, or + bugs in the implementation of the ABI in different compilers. + GCC's @code{-Wabi} switch warns when G++ generates code that is + probably not compatible with the C++ ABI@. + + The C++ library used with a C++ compiler includes the Standard C++ + Library, with functionality defined in the C++ Standard, plus language + runtime support. The runtime support is included in a C++ ABI, but there + is no formal ABI for the Standard C++ Library. Two implementations + of that library are interoperable if one follows the de-facto ABI of the + other and if they are both built with the same compiler, or with compilers + that conform to the same ABI for C++ compiler and runtime support. + + When G++ and another C++ compiler conform to the same C++ ABI, but the + implementations of the Standard C++ Library that they normally use do not + follow the same ABI for the Standard C++ Library, object files built with + those compilers can be used in the same program only if they use the same + C++ library. This requires specifying the location of the C++ library + header files when invoking the compiler whose usual library is not being + used. The location of GCC's C++ header files depends on how the GCC + build was configured, but can be seen by using the G++ @option{-v} option. + With default configuration options for G++ 3.2 the compile line for a + different C++ compiler needs to include + + @example + -I@var{gcc_install_directory}/include/c++/3.2 + @end example + + Similarly, compiling code with G++ that must use a C++ library other + than the GNU C++ library requires specifying the location of the header + files for that other library. + + The most straightforward way to link a program to use a particular + C++ library is to use a C++ driver that specifies that C++ library by + default. The @command{g++} driver, for example, tells the linker where + to find GCC's C++ library (@file{libstdc++}) plus the other libraries + and startup files it needs, in the proper order. + + If a program must use a different C++ library and it's not possible + to do the final link using a C++ driver that uses that library by default, + it is necessary to tell @command{g++} the location and name of that + library. It might also be necessary to specify different startup files + and other runtime support libraries, and to suppress the use of GCC's + support libraries with one or more of the options @option{-nostdlib}, + @option{-nostartfiles}, and @option{-nodefaultlibs}. diff -Nrc3pad gcc-3.2/gcc/doc/contrib.texi gcc-3.2.1/gcc/doc/contrib.texi *** gcc-3.2/gcc/doc/contrib.texi Sun May 19 19:59:08 2002 --- gcc-3.2.1/gcc/doc/contrib.texi Tue Nov 12 13:06:12 2002 *************** in this list are accidental. Feel free *** 14,23 **** or some of your contributions are not listed. Please keep this list in alphabetical order. - Some projects operating under the GCC project maintain their own list - of contributors, such as - @uref{http://gcc.gnu.org/libstdc++/,the C++ library}. - @itemize @bullet @item --- 14,19 ---- *************** Analog Devices helped implement the supp *** 25,31 **** and iterators. @item ! John David Anglin for improvements to libstdc++-v3 and the HP-UX port. @item James van Artsdalen wrote the code that makes efficient use of --- 21,28 ---- and iterators. @item ! John David Anglin for threading-related fixes and improvements to ! libstdc++-v3, and the HP-UX port. @item James van Artsdalen wrote the code that makes efficient use of *************** Alasdair Baird for various bugfixes. *** 38,52 **** Gerald Baumgartner added the signature extension to the C++ front end. @item Neil Booth for work on cpplib, lang hooks, debug hooks and other miscellaneous clean-ups. @item Per Bothner for his direction via the steering committee and various improvements to our infrastructure for supporting new languages. Chill ! and Java front end implementations. Initial implementations of ! cpplib, fix-header, config.guess, libio, and past C++ library ! (libg++) maintainer. @item Devon Bowen helped port GCC to the Tahoe. --- 35,69 ---- Gerald Baumgartner added the signature extension to the C++ front end. @item + Godmar Back for his Java improvements and encouragement. + + @item + Scott Bambrough for help porting the Java compiler. + + @item + Jon Beniston for his Win32 port of Java. + + @item + Geoff Berry for his Java object serialization work and various patches. + + @item + Eric Blake for helping to make GCJ and libgcj conform to the + specifications. + + @item + Hans-J. Boehm for his @uref{http://www.hpl.hp.com/personal/Hans_Boehm/gc/,, + garbage collector}, IA-64 libffi port, and other Java work. + + @item Neil Booth for work on cpplib, lang hooks, debug hooks and other miscellaneous clean-ups. @item Per Bothner for his direction via the steering committee and various improvements to our infrastructure for supporting new languages. Chill ! front end implementation. Initial implementations of ! cpplib, fix-header, config.guess, libio, and past C++ library (libg++) ! maintainer. Dreaming up, designing and implementing much of GCJ. @item Devon Bowen helped port GCC to the Tahoe. *************** Christian Bruel for improvements to loca *** 67,97 **** Herman A.J. ten Brugge for various fixes. @item Joe Buck for his direction via the steering committee. @item Craig Burley for leadership of the Fortran effort. @item ! Paolo Carlini for his work on libstdc++-v3. @item John Carr for his alias work, SPARC hacking, infrastructure improvements, previous contributions to the steering committee, loop optimizations, etc. @item ! Steve Chamberlain wrote the support for the Hitachi SH and H8 processors ! and the PicoJava processor. @item Scott Christley for his Objective-C contributions. @item Branko Cibej for more warning contributions. @item ! Nick Clifton for arm, mcore, fr30, v850, m32r work, @option{--help}, and other random ! hacking. @item Ralf Corsepius for SH testing and minor bugfixing. --- 84,138 ---- Herman A.J. ten Brugge for various fixes. @item + Joerg Brunsmann for Java compiler hacking and help with the GCJ FAQ. + + @item Joe Buck for his direction via the steering committee. @item Craig Burley for leadership of the Fortran effort. @item ! Stephan Buys for contributing Doxygen notes for libstdc++. ! ! @item ! Paolo Carlini for libstdc++ work: lots of efficiency improvements to ! the string class, hard detective work on the frustrating localization ! issues, and keeping up with the problem reports. @item John Carr for his alias work, SPARC hacking, infrastructure improvements, previous contributions to the steering committee, loop optimizations, etc. @item ! Steve Chamberlain for support for the Hitachi SH and H8 processors ! and the PicoJava processor, and for GCJ config fixes. ! ! @item ! Glenn Chambers for help with the GCJ FAQ. ! ! @item ! John-Marc Chandonia for various libgcj patches. @item Scott Christley for his Objective-C contributions. @item + Eric Christopher for his Java porting help and clean-ups. + + @item Branko Cibej for more warning contributions. @item ! The @uref{http://www.classpath.org,,GNU Classpath project} ! for all of their merged runtime code. ! ! @item ! Nick Clifton for arm, mcore, fr30, v850, m32r work, @option{--help}, and ! other random hacking. ! ! @item ! Michael Cook for libstdc++ cleanup patches to reduce warnings. @item Ralf Corsepius for SH testing and minor bugfixing. *************** Dario Dariol contributed the four variet *** 111,132 **** that print a copy of their source. @item ! Ulrich Drepper for his work on the C++ runtime libraries, glibc, ! testing of GCC using glibc, ISO C99 support, CFG dumping support, etc. @item Richard Earnshaw for his ongoing work with the ARM@. @item ! David Edelsohn for his direction via the steering committee, ! ongoing work with the RS6000/PowerPC port, and help cleaning up Haifa ! loop changes. @item Paul Eggert for random hacking all over GCC@. @item ! Mark Elbrecht for various DJGPP improvements. @item Ben Elliston for his work to move the Objective-C runtime into its --- 152,202 ---- that print a copy of their source. @item ! Russell Davidson for fstream and stringstream fixes in libstdc++. ! ! @item ! Mo DeJong for GCJ and libgcj bug fixes. ! ! @item ! Gabriel Dos Reis for contributions to g++, contributions and ! maintenance of GCC diagnostics infrastructure, libstdc++-v3, ! including valarray<>, complex<>, maintaining the numerics library ! (including that pesky :-) and keeping up-to-date anything ! to do with numbers. ! ! @item ! Ulrich Drepper for his work on glibc, testing of GCC using glibc, ISO C99 ! support, CFG dumping support, etc., plus support of the C++ runtime ! libraries including for all kinds of C interface issues, contributing and ! maintaining complex<>, sanity checking and disbursement, configuration ! architecture, libio maintenance, and early math work. @item Richard Earnshaw for his ongoing work with the ARM@. @item ! David Edelsohn for his direction via the steering committee, ongoing work ! with the RS6000/PowerPC port, help cleaning up Haifa loop changes, and ! for doing the entire AIX port of libstdc++ with his bare hands. ! ! @item ! Kevin Ediger for the floating point formatting of num_put::do_put in ! libstdc++. ! ! @item ! Phil Edwards for libstdc++ work including configuration hackery, ! documentation maintainer, chief breaker of the web pages, the occasional ! iostream bugfix, and work on shared library symbol versioning. @item Paul Eggert for random hacking all over GCC@. @item ! Mark Elbrecht for various DJGPP improvements, and for libstdc++ ! configuration support for locales and fstream-related fixes. ! ! @item ! Vadim Egorov for libstdc++ fixes in strings, streambufs, and iostreams. @item Ben Elliston for his work to move the Objective-C runtime into its *************** and SPARC work. *** 143,148 **** --- 213,221 ---- Fred Fish for BeOS support and Ada fixes. @item + Ivan Fontes Garcia for the Portugese translation of the GCJ FAQ. + + @item Peter Gerwinski for various bugfixes and the Pascal front end. @item *************** Kaveh Ghazi for his direction via the st *** 150,155 **** --- 223,231 ---- amazing work to make @samp{-W -Wall} useful. @item + John Gilmore for a donation to the FSF earmarked improving GNU Java. + + @item Judy Goldberg for c++ contributions. @item *************** via the steering committee. *** 162,167 **** --- 238,246 ---- Anthony Green for his @option{-Os} contributions and Java front end work. @item + Stu Grossman for gdb hacking, allowing GCJ developers to debug our code. + + @item Michael K. Gschwind contributed the port to the PDP-11. @item *************** Bruno Haible for improvements in the run *** 175,181 **** warnings and assorted bugfixes. @item ! Andrew Haley for his Java work. @item Chris Hanson assisted in making GCC work on HP-UX for the 9000 series 300. --- 254,260 ---- warnings and assorted bugfixes. @item ! Andrew Haley for his amazing Java compiler and library efforts. @item Chris Hanson assisted in making GCC work on HP-UX for the 9000 series 300. *************** Andreas Jaeger for various fixes to the *** 222,228 **** @item Jakub Jelinek for his SPARC work and sibling call optimizations as well ! as lots of bug fixes and test cases. @item Janis Johnson for ia64 testing and fixes and for her quality improvement --- 301,308 ---- @item Jakub Jelinek for his SPARC work and sibling call optimizations as well ! as lots of bug fixes and test cases, and for improving the Java build ! system. @item Janis Johnson for ia64 testing and fixes and for her quality improvement *************** sidetracks. *** 232,248 **** J. Kean Johnston for OpenServer support. @item Klaus Kaempf for his ongoing work to make alpha-vms a viable target. @item David Kashtan of SRI adapted GCC to VMS@. @item Geoffrey Keating for his ongoing work to make the PPC work for GNU/Linux and his automatic regression tester. @item ! Brendan Kehoe for his ongoing work with g++. @item Oliver M. Kellogg of Deutsche Aerospace contributed the port to the --- 312,340 ---- J. Kean Johnston for OpenServer support. @item + Tim Josling for the sample language treelang based originally on Richard + Kenner's "``toy'' language". + + @item + Nicolai Josuttis for additional libstdc++ documentation. + + @item Klaus Kaempf for his ongoing work to make alpha-vms a viable target. @item David Kashtan of SRI adapted GCC to VMS@. @item + Ryszard Kabatek for many, many libstdc++ bugfixes and optimizations of + strings, especially member functions, and for auto_ptr fixes. + + @item Geoffrey Keating for his ongoing work to make the PPC work for GNU/Linux and his automatic regression tester. @item ! Brendan Kehoe for his ongoing work with g++ and for a lot of early work ! in just about every part of libstdc++. @item Oliver M. Kellogg of Deutsche Aerospace contributed the port to the *************** elimination and delay slot scheduling. *** 260,267 **** head maintainer of GCC for several years. @item ! Mumit Khan for various contributions to the cygwin and mingw32 ports and ! maintaining binary releases for Windows hosts. @item Robin Kirkham for cpu32 support. --- 352,360 ---- head maintainer of GCC for several years. @item ! Mumit Khan for various contributions to the Cygwin and Mingw32 ports and ! maintaining binary releases for Windows hosts, and for massive libstdc++ ! porting work to Cygwin/Mingw32. @item Robin Kirkham for cpu32 support. *************** Ted Lemon wrote parts of the RTL reader *** 299,311 **** Kriang Lerdsuwanakij for improvements to demangler and various c++ fixes. @item ! Warren Levy major work on libgcj (Java Runtime Library) and random ! work on the Java front end. @item Alain Lichnewsky ported GCC to the MIPS CPU. @item Robert Lipe for OpenServer support, new testsuites, testing, etc. @item --- 392,408 ---- Kriang Lerdsuwanakij for improvements to demangler and various c++ fixes. @item ! Warren Levy for tremendous work on libgcj (Java Runtime Library) and ! random work on the Java front end. @item Alain Lichnewsky ported GCC to the MIPS CPU. @item + Oskar Liljeblad for hacking on AWT and his many Java bug reports and + patches. + + @item Robert Lipe for OpenServer support, new testsuites, testing, etc. @item *************** runtime libraries. *** 317,323 **** @item Martin von L@"owis for internal consistency checking infrastructure, ! and various C++ improvements including namespace support. @item H.J. Lu for his previous contributions to the steering committee, many x86 --- 414,421 ---- @item Martin von L@"owis for internal consistency checking infrastructure, ! various C++ improvements including namespace support, and tons of ! assistance with libstdc++/compiler merges. @item H.J. Lu for his previous contributions to the steering committee, many x86 *************** Andrew MacLeod for his ongoing work in b *** 331,344 **** various code generation improvements, work on the global optimizer, etc. @item ! Vladimir Makarov for hacking some ugly i960 problems, PowerPC ! hacking improvements to compile-time performance and overall knowledge ! and direction in the area of instruction scheduling. @item Bob Manson for his behind the scenes work on dejagnu. @item Michael Meissner for LRS framework, ia32, m32r, v850, m88k, MIPS, powerpc, haifa, ECOFF debug support, and other assorted hacking. --- 429,458 ---- various code generation improvements, work on the global optimizer, etc. @item ! Vladimir Makarov for hacking some ugly i960 problems, PowerPC hacking ! improvements to compile-time performance, overall knowledge and ! direction in the area of instruction scheduling, and design and ! implementation of the automaton based instruction scheduler. @item Bob Manson for his behind the scenes work on dejagnu. @item + Philip Martin for lots of libstdc++ string and vector iterator fixes and + improvements, and string clean up and testsuites. + + @item + All of the Mauve project + @uref{http://sources.redhat.com/cgi-bin/cvsweb.cgi/~checkout~/mauve/THANKS?rev=1.2&cvsroot=mauve&only_with_tag=HEAD,,contributors}, + for Java test code. + + @item + Bryce McKinlay for numerous GCJ and libgcj fixes and improvements. + + @item + Adam Megacz for his work on the Win32 port of GCJ. + + @item Michael Meissner for LRS framework, ia32, m32r, v850, m88k, MIPS, powerpc, haifa, ECOFF debug support, and other assorted hacking. *************** developers. *** 355,360 **** --- 469,478 ---- Gary Miller ported GCC to Charles River Data Systems machines. @item + Alfred Minarik for libstdc++ string and ios bugfixes, and turning the + entire libstdc++ testsuite namespace-compatible. + + @item Mark Mitchell for his direction via the steering committee, mountains of C++ work, load/store hoisting out of loops, alias analysis improvements, ISO C @code{restrict} support, and serving as release manager for GCC 3.x. *************** maintenance, and his ongoing work to mak *** 369,375 **** @item Jason Molenda for major help in the care and feeding of all the services on the gcc.gnu.org (formerly egcs.cygnus.com) machine---mail, web ! services, ftp services, etc etc. @item Catherine Moore for fixing various ugly problems we have sent her --- 487,494 ---- @item Jason Molenda for major help in the care and feeding of all the services on the gcc.gnu.org (formerly egcs.cygnus.com) machine---mail, web ! services, ftp services, etc etc. Doing all this work on scrap paper and ! the backs of envelopes would have been... difficult. @item Catherine Moore for fixing various ugly problems we have sent her *************** way, including the haifa bug which was k *** 377,382 **** --- 496,504 ---- Linux kernels. @item + Mike Moreton for his various Java patches. + + @item David Mosberger-Tang for various Alpha improvements. @item *************** Joseph S. Myers for his work on the PDP- *** 395,401 **** C99 support, and continuous emphasis on (and contributions to) documentation. @item ! Nathan Myers for his work on libstdc++-v3. @item NeXT, Inc.@: donated the front end that supports the Objective-C --- 517,530 ---- C99 support, and continuous emphasis on (and contributions to) documentation. @item ! Nathan Myers for his work on libstdc++-v3: architecture and authorship ! through the first three snapshots, including implementation of locale ! infrastructure, string, shadow C headers, and the initial project ! documentation (DESIGN, CHECKLIST, and so forth). Later, more work on ! MT-safe string and shadow headers. ! ! @item ! Felix Natter for documentation on porting libstdc++. @item NeXT, Inc.@: donated the front end that supports the Objective-C *************** improvements. *** 415,434 **** @item Alexandre Oliva for various build infrastructure improvements, scripts and ! amazing testing work. @item Melissa O'Neill for various NeXT fixes. @item Rainer Orth for random MIPS work, including improvements to our o32 ! ABI support, improvements to dejagnu's MIPS support, etc. @item Paul Petersen wrote the machine description for the Alliant FX/8. @item ! Alexandre Petit-Bianco for his Java work. @item Matthias Pfaller for major improvements to the NS32k port. --- 544,565 ---- @item Alexandre Oliva for various build infrastructure improvements, scripts and ! amazing testing work, including keeping libtool issues sane and happy. @item Melissa O'Neill for various NeXT fixes. @item Rainer Orth for random MIPS work, including improvements to our o32 ! ABI support, improvements to dejagnu's MIPS support, Java configuration ! clean-ups and porting work, etc. @item Paul Petersen wrote the machine description for the Alliant FX/8. @item ! Alexandre Petit-Bianco for implementing much of the Java compiler and ! continued Java maintainership. @item Matthias Pfaller for major improvements to the NS32k port. *************** Ken Raeburn for various improvements to *** 447,465 **** cleanups in the compiler. @item ! David Reese of Sun Microsystems contributed to the Solaris on PowerPC ! port. @item ! Gabriel Dos Reis for contributions and maintenance of libstdc++-v3, ! including valarray implementation and limits support. @item Joern Rennecke for maintaining the sh port, loop, regmove & reload hacking. @item ! Loren J. Rittle for improvements to libstdc++-v3 and the FreeBSD port. @item Craig Rodrigues for processing tons of bug reports. --- 578,597 ---- cleanups in the compiler. @item ! Rolf W. Rasmussen for hacking on AWT. @item ! David Reese of Sun Microsystems contributed to the Solaris on PowerPC ! port. @item Joern Rennecke for maintaining the sh port, loop, regmove & reload hacking. @item ! Loren J. Rittle for improvements to libstdc++-v3 including the FreeBSD ! port, threading fixes, thread-related configury changes, critical ! threading documentation, and solutions to really tricky I/O problems. @item Craig Rodrigues for processing tons of bug reports. *************** Ken Rose for fixes to our delay slot fil *** 474,485 **** --- 606,624 ---- Paul Rubin wrote most of the preprocessor. @item + Chip Salzenberg for libstdc++ patches and improvements to locales, traits, + Makefiles, libio, libtool hackery, and ``long long'' support. + + @item Juha Sarlin for improvements to the H8 code generator. @item Greg Satz assisted in making GCC work on HP-UX for the 9000 series 300. @item + Bradley Schatz for his work on the GCJ FAQ. + + @item Peter Schauer wrote the code to allow debugging to work on the Alpha. @item *************** work in the reload pass as well a servin *** 491,496 **** --- 630,643 ---- GCC 2.95.3. @item + Peter Schmid for constant testing of libstdc++ -- especially application + testing, going above and beyond what was requested for the release + criteria -- and libstdc++ header file tweaks. + + @item + Jason Schroeder for jcf-dump patches. + + @item Andreas Schwab for his work on the m68k port. @item *************** code which handles the parse tree and RT *** 506,511 **** --- 653,662 ---- folding and help with the original VAX & m68k ports. @item + Kenny Simpson for prompting libstdc++ fixes due to defect reports from + the LWG (thereby keeping us in line with updates from the ISO). + + @item Franz Sirl for his ongoing work with making the PPC port stable for linux. *************** Christopher Smith did the port for Conve *** 519,525 **** Randy Smith finished the Sun FPA support. @item ! Scott Snyder for various fixes. @item Richard Stallman, for writing the original gcc and launching the GNU project. --- 670,680 ---- Randy Smith finished the Sun FPA support. @item ! Scott Snyder for queue, iterator, istream, and string fixes and libstdc++ ! testsuite entries. ! ! @item ! Brad Spencer for contributions to the GLIBCPP_FORCE_NEW technique. @item Richard Stallman, for writing the original gcc and launching the GNU project. *************** Jonathan Stone wrote the machine descrip *** 538,547 **** --- 693,708 ---- Graham Stott for various infrastructure improvements. @item + John Stracke for his Java HTTP protocol fixes. + + @item Mike Stump for his Elxsi port, g++ contributions over the years and more recently his vxworks contributions @item + Jeff Sturm for Java porting help, bug fixes, and encouragement. + + @item Shigeya Suzuki for this fixes for the bsdi platforms. @item *************** Gary Thomas for his ongoing work to make *** 558,565 **** Philipp Thomas for random bugfixes throughout the compiler @item Kresten Krab Thorup wrote the run time support for the Objective-C ! language. @item Michael Tiemann for random bugfixes, the first instruction scheduler, --- 719,729 ---- Philipp Thomas for random bugfixes throughout the compiler @item + Jason Thorpe for thread support in libstdc++ on NetBSD. + + @item Kresten Krab Thorup wrote the run time support for the Objective-C ! language and the fantastic Java bytecode interpreter. @item Michael Tiemann for random bugfixes, the first instruction scheduler, *************** initial C++ support, function integratio *** 567,572 **** --- 731,739 ---- machine description work, delay slot scheduling. @item + Andreas Tobler for his work porting libgcj to Darwin. + + @item Teemu Torma for thread safe exception handling support. @item *************** Leonard Tower wrote parts of the parser, *** 574,589 **** definitions, and of the VAX machine description. @item ! Tom Tromey for internationalization support and his Java work. @item Lassi Tuura for improvements to config.guess to determine HP processor types. @item Todd Vierling for contributions for NetBSD ports. @item Dean Wakerley for converting the install documentation from HTML to texinfo in time for GCC 3.0. --- 741,768 ---- definitions, and of the VAX machine description. @item ! Tom Tromey for internationalization support and for his many Java ! contributions and libgcj maintainership. @item Lassi Tuura for improvements to config.guess to determine HP processor types. @item + Petter Urkedal for libstdc++ CXXFLAGS, math, and algorithms fixes. + + @item + Brent Verner for work with the libstdc++ cshadow files and their + associated configure steps. + + @item Todd Vierling for contributions for NetBSD ports. @item + Jonathan Wakely for contributing libstdc++ Doxygen notes and XHTML + guidance. + + @item Dean Wakerley for converting the install documentation from HTML to texinfo in time for GCC 3.0. *************** in time for GCC 3.0. *** 591,596 **** --- 770,780 ---- Krister Walfridsson for random bugfixes. @item + Stephen M. Webb for time and effort on making libstdc++ shadow files + work with the tricky Solaris 8+ headers, and for pushing the build-time + header tree. + + @item John Wehle for various improvements for the x86 code generator, related infrastructure improvements to help x86 code generation, value range propagation and other work, WE32k port. *************** value range propagation and other work, *** 599,604 **** --- 783,798 ---- Zack Weinberg for major work on cpplib and various other bugfixes. @item + Matt Welsh for help with Linux Threads support in GCJ. + + @item + Urban Widmark for help fixing java.io. + + @item + Mark Wielaard for new Java library code and his work integrating with + Classpath. + + @item Dale Wiles helped port GCC to the Tahoe. @item *************** description for the Tron architecture (s *** 622,627 **** --- 816,824 ---- @item Kevin Zachmann helped ported GCC to the Tahoe. + @item + Gilles Zunino for help porting Java to Irix. + @end itemize *************** testing GCC: *** 630,641 **** --- 827,862 ---- @itemize @bullet @item + Michael Abd-El-Malek + + @item + Thomas Arend + + @item + Bonzo Armstrong + + @item + Steven Ashe + + @item + Chris Baldwin + + @item David Billinghurst @item + Jim Blandy + + @item + Stephane Bortzmeyer + + @item Horst von Brand @item + Frank Braun + + @item Rodney Brown @item *************** Joe Buck *** 645,683 **** --- 866,976 ---- Craig Burley @item + Sidney Cadot + + @item + Bradford Castalia + + @item + Ralph Doncaster + + @item Ulrich Drepper @item David Edelsohn @item + Richard Emberson + + @item + Levente Farkas + + @item + Graham Fawcett + + @item + Robert A. French + + @item + J@"orgen Freyh + + @item + Mark K. Gardner + + @item + Charles-Antoine Gauthier + + @item Yung Shing Gene @item Kaveh Ghazi @item + David Gilbert + + @item + Simon Gornall + + @item + Fred Gray + + @item + John Griffin + + @item + Patrik Hagglund + + @item + Phil Hargett + + @item + Amancio Hasty + + @item + Bryan W. Headley + + @item Kate Hedstrom @item Richard Henderson @item + Kevin B. Hendricks + + @item Manfred Hollstein @item Kamil Iskra @item + Joep Jansen + + @item Christian Joensson @item + David Kidd + + @item + Tobias Kuipers + + @item + Anand Krishnaswamy + + @item Jeff Law @item Robert Lipe @item + llewelly + + @item Damon Love @item *************** Matthias Klose *** 699,725 **** --- 992,1054 ---- Martin Knoblauch @item + Jesse Macnish + + @item David Miller @item Toon Moene @item + Stefan Morrell + + @item + Anon A. Mous + + @item Matthias Mueller @item + Pekka Nikander + + @item Alexandre Oliva @item + Jon Olson + + @item + Magnus Persson + + @item + Chris Pollard + + @item Richard Polton @item David Rees @item + Paul Reilly + + @item + Tom Reilly + + @item Loren J. Rittle @item + Torsten Rueger + + @item + Danny Sadinoff + + @item + Marc Schifer + + @item Peter Schmid @item *************** Vin Shelton *** 732,743 **** --- 1061,1087 ---- Franz Sirl @item + Tim Souder + + @item Mike Stump @item + Adam Sulmicki + + @item + George Talbot + + @item + Gregory Warnes + + @item Carlo Wood @item + David E. Young + + @item And many others @end itemize diff -Nrc3pad gcc-3.2/gcc/doc/cpp.1 gcc-3.2.1/gcc/doc/cpp.1 *** gcc-3.2/gcc/doc/cpp.1 Wed Aug 14 09:36:36 2002 --- gcc-3.2.1/gcc/doc/cpp.1 Tue Nov 19 18:17:14 2002 *************** *** 1,5 **** .\" Automatically generated by Pod::Man version 1.15 ! .\" Wed Aug 14 09:36:35 2002 .\" .\" Standard preamble: .\" ====================================================================== --- 1,5 ---- .\" Automatically generated by Pod::Man version 1.15 ! .\" Tue Nov 19 18:17:13 2002 .\" .\" Standard preamble: .\" ====================================================================== *************** *** 138,144 **** .\" ====================================================================== .\" .IX Title "CPP 1" ! .TH CPP 1 "gcc-3.2" "2002-08-14" "GNU" .UC .SH "NAME" cpp \- The C Preprocessor --- 138,144 ---- .\" ====================================================================== .\" .IX Title "CPP 1" ! .TH CPP 1 "gcc-3.2.1" "2002-11-19" "GNU" .UC .SH "NAME" cpp \- The C Preprocessor *************** with an optional \fB\-MT\fR switch too. *** 782,788 **** This variable is the same as the environment variable \&\fB\s-1DEPENDENCIES_OUTPUT\s0\fR, except that system header files are not ignored, so it implies \fB\-M\fR rather ! than \fB\-MM\fR. .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIgpl\fR\|(7), \fIgfdl\fR\|(7), \fIfsf-funding\fR\|(7), --- 782,789 ---- This variable is the same as the environment variable \&\fB\s-1DEPENDENCIES_OUTPUT\s0\fR, except that system header files are not ignored, so it implies \fB\-M\fR rather ! than \fB\-MM\fR. However, the dependence on the main input file is ! omitted. .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIgpl\fR\|(7), \fIgfdl\fR\|(7), \fIfsf-funding\fR\|(7), diff -Nrc3pad gcc-3.2/gcc/doc/cpp.info gcc-3.2.1/gcc/doc/cpp.info *** gcc-3.2/gcc/doc/cpp.info Wed Aug 14 09:36:32 2002 --- gcc-3.2.1/gcc/doc/cpp.info Tue Nov 19 18:17:11 2002 *************** END-INFO-DIR-ENTRY *** 9,17 ****  Indirect: cpp.info-1: 191 ! cpp.info-2: 49612 ! cpp.info-3: 99320 ! cpp.info-4: 161716  Tag Table: (Indirect) --- 9,18 ----  Indirect: cpp.info-1: 191 ! cpp.info-2: 49827 ! cpp.info-3: 96679 ! cpp.info-4: 142533 ! cpp.info-5: 190064  Tag Table: (Indirect) *************** Node: Header Files21776 *** 25,85 **** Node: Include Syntax23654 Node: Include Operation25156 Node: Search Path27052 ! Node: Once-Only Headers29902 ! Node: Computed Includes31556 ! Node: Wrapper Headers34695 ! Node: System Headers37114 ! Node: Macros39171 ! Node: Object-like Macros40271 ! Node: Function-like Macros43857 ! Node: Macro Arguments45467 ! Node: Stringification49612 ! Node: Concatenation52813 ! Node: Variadic Macros55927 ! Node: Predefined Macros60264 ! Node: Standard Predefined Macros60847 ! Node: Common Predefined Macros66269 ! Node: System-specific Predefined Macros72849 ! Node: C++ Named Operators74861 ! Node: Undefining and Redefining Macros75816 ! Node: Macro Pitfalls77894 ! Node: Misnesting78419 ! Node: Operator Precedence Problems79520 ! Node: Swallowing the Semicolon81375 ! Node: Duplication of Side Effects83387 ! Node: Self-Referential Macros85559 ! Node: Argument Prescan87969 ! Node: Newlines in Arguments91712 ! Node: Conditionals92657 ! Node: Conditional Uses94486 ! Node: Conditional Syntax95839 ! Node: Ifdef96154 ! Node: If99320 ! Node: Defined101733 ! Node: Else103006 ! Node: Elif103567 ! Node: Deleted Code104847 ! Node: Diagnostics106089 ! Node: Line Control107706 ! Node: Pragmas111513 ! Node: Other Directives115781 ! Node: Preprocessor Output116975 ! Node: Traditional Mode120175 ! Node: Implementation Details125754 ! Node: Implementation-defined behavior126376 ! Node: Implementation limits128649 ! Node: Obsolete Features131356 ! Node: Assertions131843 ! Node: Obsolete once-only headers134374 ! Node: Miscellaneous obsolete features136142 ! Node: Differences from previous versions137475 ! Node: Invocation141987 ! Ref: -MF149306 ! Node: Environment Variables161716 ! Ref: DEPENDENCIES_OUTPUT163366 ! Node: GNU Free Documentation License164341 ! Node: Option Index184239 ! Node: Index of Directives187706 ! Node: Concept Index189453  End Tag Table --- 26,86 ---- Node: Include Syntax23654 Node: Include Operation25156 Node: Search Path27052 ! Node: Once-Only Headers30129 ! Node: Computed Includes31783 ! Node: Wrapper Headers34922 ! Node: System Headers37341 ! Node: Macros39386 ! Node: Object-like Macros40486 ! Node: Function-like Macros44072 ! Node: Macro Arguments45682 ! Node: Stringification49827 ! Node: Concatenation53028 ! Node: Variadic Macros56142 ! Node: Predefined Macros60932 ! Node: Standard Predefined Macros61515 ! Node: Common Predefined Macros66794 ! Node: System-specific Predefined Macros73374 ! Node: C++ Named Operators75386 ! Node: Undefining and Redefining Macros76341 ! Node: Macro Pitfalls78419 ! Node: Misnesting78944 ! Node: Operator Precedence Problems80045 ! Node: Swallowing the Semicolon81900 ! Node: Duplication of Side Effects83912 ! Node: Self-Referential Macros86084 ! Node: Argument Prescan88494 ! Node: Newlines in Arguments92237 ! Node: Conditionals93182 ! Node: Conditional Uses95011 ! Node: Conditional Syntax96364 ! Node: Ifdef96679 ! Node: If99845 ! Node: Defined102258 ! Node: Else103531 ! Node: Elif104092 ! Node: Deleted Code105372 ! Node: Diagnostics106614 ! Node: Line Control108231 ! Node: Pragmas112038 ! Node: Other Directives116306 ! Node: Preprocessor Output117500 ! Node: Traditional Mode120700 ! Node: Implementation Details126279 ! Node: Implementation-defined behavior126901 ! Node: Implementation limits129174 ! Node: Obsolete Features131881 ! Node: Assertions132368 ! Node: Obsolete once-only headers134899 ! Node: Miscellaneous obsolete features136667 ! Node: Differences from previous versions138021 ! Node: Invocation142533 ! Ref: -MF149852 ! Node: Environment Variables162262 ! Ref: DEPENDENCIES_OUTPUT163912 ! Node: GNU Free Documentation License164952 ! Node: Option Index184850 ! Node: Index of Directives188317 ! Node: Concept Index190064  End Tag Table diff -Nrc3pad gcc-3.2/gcc/doc/cpp.info-1 gcc-3.2.1/gcc/doc/cpp.info-1 *** gcc-3.2/gcc/doc/cpp.info-1 Wed Aug 14 09:36:32 2002 --- gcc-3.2.1/gcc/doc/cpp.info-1 Tue Nov 19 18:17:11 2002 *************** in use. *** 712,722 **** You can add to this list with the `-IDIR' command line option. All the directories named by `-I' are searched, in left-to-right order, ! _before_ the default directories. You can also prevent GCC from ! searching any of the default directories with the `-nostdinc' option. ! This is useful when you are compiling an operating system kernel or ! some other program that does not use the standard C library facilities, ! or the standard C library itself. GCC looks for headers requested with `#include "FILE"' first in the directory containing the current file, then in the same places it would --- 712,732 ---- You can add to this list with the `-IDIR' command line option. All the directories named by `-I' are searched, in left-to-right order, ! _before_ the default directories. The only exception is when `dir' is ! already searched by default. In this case, the option is ignored and ! the search order for system directories remains unchanged. ! ! Duplicate directories are removed from the quote and bracket search ! chains before the two chains are merged to make the final search chain. ! Thus, it is possible for a directory to occur twice in the final search ! chain if it was specified in both the quote and bracket chains. ! ! You can prevent GCC from searching any of the default directories ! with the `-nostdinc' option. This is useful when you are compiling an ! operating system kernel or some other program that does not use the ! standard C library facilities, or the standard C library itself. `-I' ! options are not ignored as described above when `-nostdinc' is in ! effect. GCC looks for headers requested with `#include "FILE"' first in the directory containing the current file, then in the same places it would *************** if `/usr/include/sys/stat.h' contains `# *** 725,736 **** for `types.h' first in `/usr/include/sys', then in its usual search path. - If you name a search directory with `-IDIR' that is also a system - include directory, the `-I' wins; the directory will be searched - according to the `-I' ordering, and it will not be treated as a system - include directory. GCC will warn you when a system include directory is - hidden in this way. - `#line' (*note Line Control::) does not change GCC's idea of the directory containing the current file. --- 735,740 ---- *************** in that directory will be considered sys *** 948,955 **** All directories named by `-isystem' are searched _after_ all directories named by `-I', no matter what their order was on the command line. If the same directory is named by both `-I' and ! `-isystem', `-I' wins; it is as if the `-isystem' option had never been ! specified at all. GCC warns you when this happens. There is also a directive, `#pragma GCC system_header', which tells GCC to consider the rest of the current include file a system header, --- 952,959 ---- All directories named by `-isystem' are searched _after_ all directories named by `-I', no matter what their order was on the command line. If the same directory is named by both `-I' and ! `-isystem', the `-I' option is ignored. GCC provides an informative ! message when this occurs if `-v' is used. There is also a directive, `#pragma GCC system_header', which tells GCC to consider the rest of the current include file a system header, diff -Nrc3pad gcc-3.2/gcc/doc/cpp.info-2 gcc-3.2.1/gcc/doc/cpp.info-2 *** gcc-3.2/gcc/doc/cpp.info-2 Wed Aug 14 09:36:32 2002 --- gcc-3.2.1/gcc/doc/cpp.info-2 Tue Nov 19 18:17:11 2002 *************** preceding `##' is anything other than a *** 230,235 **** --- 230,243 ---- eprintf ("success!\n") ==> fprintf(stderr, "success!\n"); + The above explanation is ambiguous about the case where the only macro + parameter is a variable arguments parameter, as it is meaningless to + try to distinguish whether no argument at all is an empty argument or a + missing argument. In this case the C99 standard is clear that the + comma must remain, however the existing GCC extension used to swallow + the comma. So CPP retains the comma when conforming to a specific C + standard, and drops it otherwise. + C99 mandates that the only place the identifier `__VA_ARGS__' can appear is in the replacement list of a variadic macro. It may not be used as a macro name, macro argument name, or within a different type *************** with `__FILE__' and `__LINE__', though. *** 355,363 **** processing user files `__STDC__' is always 1. This has been reported to cause problems; for instance, some versions of Solaris provide X Windows headers that expect `__STDC__' to be either ! undefined or 1. You may be able to work around this sort of ! problem by using an `-I' option to cancel treatment of those ! headers as system headers. *Note Invocation::. `__STDC_VERSION__' This macro expands to the C Standard's version number, a long --- 363,369 ---- processing user files `__STDC__' is always 1. This has been reported to cause problems; for instance, some versions of Solaris provide X Windows headers that expect `__STDC__' to be either ! undefined or 1. *Note Invocation::. `__STDC_VERSION__' This macro expands to the C Standard's version number, a long *************** directive": `#if', `#ifdef' or `#ifndef' *** 1139,1213 **** * Else:: * Elif:: -  - File: cpp.info, Node: Ifdef, Next: If, Up: Conditional Syntax - - Ifdef - ----- - - The simplest sort of conditional is - - #ifdef MACRO - - CONTROLLED TEXT - - #endif /* MACRO */ - - This block is called a "conditional group". CONTROLLED TEXT will be - included in the output of the preprocessor if and only if MACRO is - defined. We say that the conditional "succeeds" if MACRO is defined, - "fails" if it is not. - - The CONTROLLED TEXT inside of a conditional can include - preprocessing directives. They are executed only if the conditional - succeeds. You can nest conditional groups inside other conditional - groups, but they must be completely nested. In other words, `#endif' - always matches the nearest `#ifdef' (or `#ifndef', or `#if'). Also, - you cannot start a conditional group in one file and end it in another. - - Even if a conditional fails, the CONTROLLED TEXT inside it is still - run through initial transformations and tokenization. Therefore, it - must all be lexically valid C. Normally the only way this matters is - that all comments and string literals inside a failing conditional group - must still be properly ended. - - The comment following the `#endif' is not required, but it is a good - practice if there is a lot of CONTROLLED TEXT, because it helps people - match the `#endif' to the corresponding `#ifdef'. Older programs - sometimes put MACRO directly after the `#endif' without enclosing it in - a comment. This is invalid code according to the C standard. GNU CPP - accepts it with a warning. It never affects which `#ifndef' the - `#endif' matches. - - Sometimes you wish to use some code if a macro is _not_ defined. - You can do this by writing `#ifndef' instead of `#ifdef'. One common - use of `#ifndef' is to include code only the first time a header file - is included. *Note Once-Only Headers::. - - Macro definitions can vary between compilations for several reasons. - Here are some samples. - - * Some macros are predefined on each kind of machine (*note - System-specific Predefined Macros::). This allows you to provide - code specially tuned for a particular machine. - - * System header files define more macros, associated with the - features they implement. You can test these macros with - conditionals to avoid using a system feature on a machine where it - is not implemented. - - * Macros can be defined or undefined with the `-D' and `-U' command - line options when you compile the program. You can arrange to - compile the same source file into two different programs by - choosing a macro name to specify which program you want, writing - conditionals to test whether or how this macro is defined, and - then controlling the state of the macro with command line options, - perhaps set in the Makefile. *Note Invocation::. - - * Your program might have a special header file (often called - `config.h') that is adjusted when the program is compiled. It can - define or not define macros depending on the features of the - system and the desired capabilities of the program. The - adjustment can be automated by a tool such as `autoconf', or done - by hand. - --- 1145,1147 ---- diff -Nrc3pad gcc-3.2/gcc/doc/cpp.info-3 gcc-3.2.1/gcc/doc/cpp.info-3 *** gcc-3.2/gcc/doc/cpp.info-3 Wed Aug 14 09:36:32 2002 --- gcc-3.2.1/gcc/doc/cpp.info-3 Tue Nov 19 18:17:11 2002 *************** START-INFO-DIR-ENTRY *** 7,12 **** --- 7,84 ---- END-INFO-DIR-ENTRY  + File: cpp.info, Node: Ifdef, Next: If, Up: Conditional Syntax + + Ifdef + ----- + + The simplest sort of conditional is + + #ifdef MACRO + + CONTROLLED TEXT + + #endif /* MACRO */ + + This block is called a "conditional group". CONTROLLED TEXT will be + included in the output of the preprocessor if and only if MACRO is + defined. We say that the conditional "succeeds" if MACRO is defined, + "fails" if it is not. + + The CONTROLLED TEXT inside of a conditional can include + preprocessing directives. They are executed only if the conditional + succeeds. You can nest conditional groups inside other conditional + groups, but they must be completely nested. In other words, `#endif' + always matches the nearest `#ifdef' (or `#ifndef', or `#if'). Also, + you cannot start a conditional group in one file and end it in another. + + Even if a conditional fails, the CONTROLLED TEXT inside it is still + run through initial transformations and tokenization. Therefore, it + must all be lexically valid C. Normally the only way this matters is + that all comments and string literals inside a failing conditional group + must still be properly ended. + + The comment following the `#endif' is not required, but it is a good + practice if there is a lot of CONTROLLED TEXT, because it helps people + match the `#endif' to the corresponding `#ifdef'. Older programs + sometimes put MACRO directly after the `#endif' without enclosing it in + a comment. This is invalid code according to the C standard. GNU CPP + accepts it with a warning. It never affects which `#ifndef' the + `#endif' matches. + + Sometimes you wish to use some code if a macro is _not_ defined. + You can do this by writing `#ifndef' instead of `#ifdef'. One common + use of `#ifndef' is to include code only the first time a header file + is included. *Note Once-Only Headers::. + + Macro definitions can vary between compilations for several reasons. + Here are some samples. + + * Some macros are predefined on each kind of machine (*note + System-specific Predefined Macros::). This allows you to provide + code specially tuned for a particular machine. + + * System header files define more macros, associated with the + features they implement. You can test these macros with + conditionals to avoid using a system feature on a machine where it + is not implemented. + + * Macros can be defined or undefined with the `-D' and `-U' command + line options when you compile the program. You can arrange to + compile the same source file into two different programs by + choosing a macro name to specify which program you want, writing + conditionals to test whether or how this macro is defined, and + then controlling the state of the macro with command line options, + perhaps set in the Makefile. *Note Invocation::. + + * Your program might have a special header file (often called + `config.h') that is adjusted when the program is compiled. It can + define or not define macros depending on the features of the + system and the desired capabilities of the program. The + adjustment can be automated by a tool such as `autoconf', or done + by hand. + +  File: cpp.info, Node: If, Next: Defined, Prev: Ifdef, Up: Conditional Syntax If *************** Miscellaneous obsolete features *** 906,914 **** * Attempting to paste two tokens which together do not form a valid preprocessing token. ! The preprocessor currently warns about this and outputs the two ! tokens adjacently, which is probably the behavior the programmer ! intends. It may not work in future, though. Most of the time, when you get this warning, you will find that `##' is being used superstitiously, to guard against whitespace --- 978,986 ---- * Attempting to paste two tokens which together do not form a valid preprocessing token. ! The preprocessor currently warns about this, and the resulting ! preprocessed output is undefined. The tokens remain distinct if ! the preprocessor is being used directly by the compiler front end. Most of the time, when you get this warning, you will find that `##' is being used superstitiously, to guard against whitespace *************** they generally represent bugs in the sna *** 1028,1520 **** invasive.) -  - File: cpp.info, Node: Invocation, Next: Environment Variables, Prev: Implementation Details, Up: Top - - Invocation - ********** - - 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 on its own. All the - options listed here are also acceptable to the C compiler and have the - same meaning, except that the C compiler has different rules for - specifying the output file. - - *Note:* Whether you use the preprocessor by way of `gcc' or `cpp', - the "compiler driver" is run first. This program's purpose is to - translate your command into invocations of the programs that do the - actual work. Their command line interfaces are similar but not - identical to the documented interface, and may change without notice. - - The C preprocessor expects two file names as arguments, INFILE and - OUTFILE. The preprocessor reads INFILE together with any other files - it specifies with `#include'. All the output generated by the combined - input files is written in OUTFILE. - - Either INFILE or OUTFILE may be `-', which as INFILE means to read - from standard input and as OUTFILE means to write to standard output. - Also, if either file is omitted, it means the same as if `-' had been - specified for that file. - - Unless otherwise noted, or the option ends in `=', all options which - take an argument may have that argument appear either immediately after - the option, or with a space between option and argument: `-Ifoo' and - `-I foo' have the same effect. - - Many options have multi-letter names; therefore multiple - single-letter options may _not_ be grouped: `-dM' is very different from - `-d -M'. - - `-D NAME' - Predefine NAME as a macro, with definition `1'. - - `-D NAME=DEFINITION' - Predefine NAME as a macro, with definition DEFINITION. There are - no restrictions on the contents of DEFINITION, but if you are - invoking the preprocessor from a shell or shell-like program you - may need to use the shell's quoting syntax to protect characters - such as spaces that have a meaning in the shell syntax. - - If you wish to define a function-like macro on the command line, - write its argument list with surrounding parentheses before the - equals sign (if any). Parentheses are meaningful to most shells, - so you will need to quote the option. With `sh' and `csh', - `-D'NAME(ARGS...)=DEFINITION'' works. - - `-D' and `-U' options are processed in the order they are given on - the command line. All `-imacros FILE' and `-include FILE' options - are processed after all `-D' and `-U' options. - - `-U NAME' - Cancel any previous definition of NAME, either built in or - provided with a `-D' option. - - `-undef' - Do not predefine any system-specific macros. The common predefined - macros remain defined. - - `-I DIR' - Add the directory DIR to the list of directories to be searched - for header files. *Note Search Path::. Directories named by `-I' - are searched before the standard system include directories. - - It is dangerous to specify a standard system include directory in - an `-I' option. This defeats the special treatment of system - headers (*note System Headers::) . It can also defeat the repairs - to buggy system headers which GCC makes when it is installed. - - `-o FILE' - Write output to FILE. This is the same as specifying FILE as the - second non-option argument to `cpp'. `gcc' has a different - interpretation of a second non-option argument, so you must use - `-o' to specify the output file. - - `-Wall' - Turns on all optional warnings which are desirable for normal - code. At present this is `-Wcomment' and `-Wtrigraphs'. Note that - many of the preprocessor's warnings are on by default and have no - options to control them. - - `-Wcomment' - `-Wcomments' - Warn whenever a comment-start sequence `/*' appears in a `/*' - comment, or whenever a backslash-newline appears in a `//' comment. - (Both forms have the same effect.) - - `-Wtrigraphs' - Warn if any trigraphs are encountered. This option used to take - effect only if `-trigraphs' was also specified, but now works - independently. Warnings are not given for trigraphs within - comments, as they do not affect the meaning of the program. - - `-Wtraditional' - Warn about certain constructs that behave differently in - traditional and ISO C. Also warn about ISO C constructs that have - no traditional C equivalent, and problematic constructs which - should be avoided. *Note Traditional Mode::. - - `-Wimport' - Warn the first time `#import' is used. - - `-Wundef' - Warn whenever an identifier which is not a macro is encountered in - an `#if' directive, outside of `defined'. Such identifiers are - replaced with zero. - - `-Werror' - Make all warnings into hard errors. Source code which triggers - warnings will be rejected. - - `-Wsystem-headers' - Issue warnings for code in system headers. These are normally - unhelpful in finding bugs in your own code, therefore suppressed. - If you are responsible for the system library, you may want to see - them. - - `-w' - Suppress all warnings, including those which GNU CPP issues by - default. - - `-pedantic' - Issue all the mandatory diagnostics listed in the C standard. - Some of them are left out by default, since they trigger - frequently on harmless code. - - `-pedantic-errors' - Issue all the mandatory diagnostics, and make all mandatory - diagnostics into errors. This includes mandatory diagnostics that - GCC issues without `-pedantic' but treats as warnings. - - `-M' - Instead of outputting the result of preprocessing, output a rule - suitable for `make' describing the dependencies of the main source - file. The preprocessor outputs one `make' rule containing the - object file name for that source file, a colon, and the names of - all the included files, including those coming from `-include' or - `-imacros' command line options. - - Unless specified explicitly (with `-MT' or `-MQ'), the object file - name consists of the basename of the source file with any suffix - replaced with object file suffix. If there are many included - files then the rule is split into several lines using `\'-newline. - The rule has no commands. - - This option does not suppress the preprocessor's debug output, - such as `-dM'. To avoid mixing such debug output with the - dependency rules you should explicitly specify the dependency - output file with `-MF', or use an environment variable like - `DEPENDENCIES_OUTPUT' (*note DEPENDENCIES_OUTPUT::). Debug output - will still be sent to the regular output stream as normal. - - Passing `-M' to the driver implies `-E'. - - `-MM' - Like `-M' but do not mention header files that are found in system - header directories, nor header files that are included, directly - or indirectly, from such a header. - - This implies that the choice of angle brackets or double quotes in - an `#include' directive does not in itself determine whether that - header will appear in `-MM' dependency output. This is a slight - change in semantics from GCC versions 3.0 and earlier. - - `-MF FILE' - When used with `-M' or `-MM', specifies a file to write the - dependencies to. If no `-MF' switch is given the preprocessor - sends the rules to the same place it would have sent preprocessed - output. - - When used with the driver options `-MD' or `-MMD', `-MF' overrides - the default dependency output file. - - `-MG' - When used with `-M' or `-MM', `-MG' says to treat missing header - files as generated files and assume they live in the same - directory as the source file. It suppresses preprocessed output, - as a missing header file is ordinarily an error. - - This feature is used in automatic updating of makefiles. - - `-MP' - This option instructs CPP to add a phony target for each dependency - other than the main file, causing each to depend on nothing. These - dummy rules work around errors `make' gives if you remove header - files without updating the `Makefile' to match. - - This is typical output: - - test.o: test.c test.h - - test.h: - - `-MT TARGET' - Change the target of the rule emitted by dependency generation. By - default CPP takes the name of the main input file, including any - path, deletes any file suffix such as `.c', and appends the - platform's usual object suffix. The result is the target. - - An `-MT' option will set the target to be exactly the string you - specify. If you want multiple targets, you can specify them as a - single argument to `-MT', or use multiple `-MT' options. - - For example, `-MT '$(objpfx)foo.o'' might give - - $(objpfx)foo.o: foo.c - - `-MQ TARGET' - Same as `-MT', but it quotes any characters which are special to - Make. `-MQ '$(objpfx)foo.o'' gives - - $$(objpfx)foo.o: foo.c - - The default target is automatically quoted, as if it were given - with `-MQ'. - - `-MD' - `-MD' is equivalent to `-M -MF FILE', except that `-E' is not - implied. The driver determines FILE based on whether an `-o' - option is given. If it is, the driver uses its argument but with - a suffix of `.d', otherwise it take the basename of the input file - and applies a `.d' suffix. - - If `-MD' is used in conjunction with `-E', any `-o' switch is - understood to specify the dependency output file (but *note - -MF::), but if used without `-E', each `-o' is understood to - specify a target object file. - - Since `-E' is not implied, `-MD' can be used to generate a - dependency output file as a side-effect of the compilation process. - - `-MMD' - Like `-MD' except mention only user header files, not system - -header files. - - `-x c' - `-x c++' - `-x objective-c' - `-x assembler-with-cpp' - Specify the source language: C, C++, Objective-C, or assembly. - This has nothing to do with standards conformance or extensions; - it merely selects which base syntax to expect. If you give none - of these options, cpp will deduce the language from the extension - of the source file: `.c', `.cc', `.m', or `.S'. Some other common - extensions for C++ and assembly are also recognized. If cpp does - not recognize the extension, it will treat the file as C; this is - the most generic mode. - - *Note:* Previous versions of cpp accepted a `-lang' option which - selected both the language and the standards conformance level. - This option has been removed, because it conflicts with the `-l' - option. - - `-std=STANDARD' - `-ansi' - Specify the standard to which the code should conform. Currently - cpp only knows about the standards for C; other language standards - will be added in the future. - - STANDARD may be one of: - `iso9899:1990' - `c89' - The ISO C standard from 1990. `c89' is the customary - shorthand for this version of the standard. - - The `-ansi' option is equivalent to `-std=c89'. - - `iso9899:199409' - The 1990 C standard, as amended in 1994. - - `iso9899:1999' - `c99' - `iso9899:199x' - `c9x' - The revised ISO C standard, published in December 1999. - Before publication, this was known as C9X. - - `gnu89' - The 1990 C standard plus GNU extensions. This is the default. - - `gnu99' - `gnu9x' - The 1999 C standard plus GNU extensions. - - `-I-' - Split the include path. Any directories specified with `-I' - options before `-I-' are searched only for headers requested with - `#include "FILE"'; they are not searched for `#include '. - If additional directories are specified with `-I' options after - the `-I-', those directories are searched for all `#include' - directives. - - In addition, `-I-' inhibits the use of the directory of the current - file directory as the first search directory for `#include "FILE"'. - *Note Search Path::. - - `-nostdinc' - Do not search the standard system directories for header files. - Only the directories you have specified with `-I' options (and the - directory of the current file, if appropriate) are searched. - - `-nostdinc++' - Do not search for header files in the C++-specific standard - directories, but do still search the other standard directories. - (This option is used when building the C++ library.) - - `-include FILE' - Process FILE as if `#include "file"' appeared as the first line of - the primary source file. However, the first directory searched - for FILE is the preprocessor's working directory _instead of_ the - directory containing the main source file. If not found there, it - is searched for in the remainder of the `#include "..."' search - chain as normal. - - If multiple `-include' options are given, the files are included - in the order they appear on the command line. - - `-imacros FILE' - Exactly like `-include', except that any output produced by - scanning FILE is thrown away. Macros it defines remain defined. - This allows you to acquire all the macros from a header without - also processing its declarations. - - All files specified by `-imacros' are processed before all files - specified by `-include'. - - `-idirafter DIR' - Search DIR for header files, but do it _after_ all directories - specified with `-I' and the standard system directories have been - exhausted. DIR is treated as a system include directory. - - `-iprefix PREFIX' - Specify PREFIX as the prefix for subsequent `-iwithprefix' - options. If the prefix represents a directory, you should include - the final `/'. - - `-iwithprefix DIR' - `-iwithprefixbefore DIR' - Append DIR to the prefix specified previously with `-iprefix', and - add the resulting directory to the include search path. - `-iwithprefixbefore' puts it in the same place `-I' would; - `-iwithprefix' puts it where `-idirafter' would. - - Use of these options is discouraged. - - `-isystem DIR' - Search DIR for header files, after all directories specified by - `-I' but before the standard system directories. Mark it as a - system directory, so that it gets the same special treatment as is - applied to the standard system directories. *Note System - Headers::. - - `-fpreprocessed' - Indicate to the preprocessor that the input file has already been - preprocessed. This suppresses things like macro expansion, - trigraph conversion, escaped newline splicing, and processing of - most directives. The preprocessor still recognizes and removes - comments, so that you can pass a file preprocessed with `-C' to - the compiler without problems. In this mode the integrated - preprocessor is little more than a tokenizer for the front ends. - - `-fpreprocessed' is implicit if the input file has one of the - extensions `.i', `.ii' or `.mi'. These are the extensions that - GCC uses for preprocessed files created by `-save-temps'. - - `-ftabstop=WIDTH' - Set the distance between tab stops. This helps the preprocessor - report correct column numbers in warnings or errors, even if tabs - appear on the line. If the value is less than 1 or greater than - 100, the option is ignored. The default is 8. - - `-fno-show-column' - Do not print column numbers in diagnostics. This may be necessary - if diagnostics are being scanned by a program that does not - understand the column numbers, such as `dejagnu'. - - `-A PREDICATE=ANSWER' - Make an assertion with the predicate PREDICATE and answer ANSWER. - This form is preferred to the older form `-A PREDICATE(ANSWER)', - which is still supported, because it does not use shell special - characters. *Note Assertions::. - - `-A -PREDICATE=ANSWER' - Cancel an assertion with the predicate PREDICATE and answer ANSWER. - - `-A-' - Cancel all predefined assertions and all assertions preceding it on - the command line. Also, undefine all predefined macros and all - macros preceding it on the command line. (This is a historical - wart and may change in the future.) - - `-dCHARS' - CHARS is a sequence of one or more of the following characters, - and must not be preceded by a space. Other characters are - interpreted by the compiler proper, or reserved for future - versions of GCC, and so are silently ignored. If you specify - characters whose behavior conflicts, the result is undefined. - - `M' - Instead of the normal output, generate a list of `#define' - directives for all the macros defined during the execution of - the preprocessor, including predefined macros. This gives - you a way of finding out what is predefined in your version - of the preprocessor. Assuming you have no file `foo.h', the - command - - touch foo.h; cpp -dM foo.h - - will show all the predefined macros. - - `D' - Like `M' except in two respects: it does _not_ include the - predefined macros, and it outputs _both_ the `#define' - directives and the result of preprocessing. Both kinds of - output go to the standard output file. - - `N' - Like `D', but emit only the macro names, not their expansions. - - `I' - Output `#include' directives in addition to the result of - preprocessing. - - `-P' - Inhibit generation of linemarkers in the output from the - preprocessor. This might be useful when running the preprocessor - on something that is not C code, and will be sent to a program - which might be confused by the linemarkers. *Note Preprocessor - Output::. - - `-C' - Do not discard comments. All comments are passed through to the - output file, except for comments in processed directives, which - are deleted along with the directive. - - You should be prepared for side effects when using `-C'; it causes - the preprocessor to treat comments as tokens in their own right. - For example, comments appearing at the start of what would be a - directive line have the effect of turning that line into an - ordinary source line, since the first token on the line is no - longer a `#'. - - `-gcc' - Define the macros __GNUC__, __GNUC_MINOR__ and - __GNUC_PATCHLEVEL__. These are defined automatically when you use - `gcc -E'; you can turn them off in that case with `-no-gcc'. - - `-traditional' - Try to imitate the behavior of old-fashioned C, as opposed to ISO - C. *Note Traditional Mode::. - - `-trigraphs' - Process trigraph sequences. *Note Initial processing::. - - `-remap' - Enable special code to work around file systems which only permit - very short file names, such as MS-DOS. - - `-$' - Forbid the use of `$' in identifiers. The C standard allows - implementations to define extra characters that can appear in - identifiers. By default GNU CPP permits `$', a common extension. - - `-h' - `--help' - `--target-help' - Print text describing all the command line options instead of - preprocessing anything. - - `-v' - Verbose mode. Print out GNU CPP's version number at the beginning - of execution, and report the final form of the include path. - - `-H' - Print the name of each header file used, in addition to other - normal activities. Each name is indented to show how deep in the - `#include' stack it is. - - `-version' - `--version' - Print out GNU CPP's version number. With one dash, proceed to - preprocess as normal. With two dashes, exit immediately. - --- 1100,1102 ---- diff -Nrc3pad gcc-3.2/gcc/doc/cpp.info-4 gcc-3.2.1/gcc/doc/cpp.info-4 *** gcc-3.2/gcc/doc/cpp.info-4 Wed Aug 14 09:36:32 2002 --- gcc-3.2.1/gcc/doc/cpp.info-4 Tue Nov 19 18:17:11 2002 *************** START-INFO-DIR-ENTRY *** 7,12 **** --- 7,502 ---- END-INFO-DIR-ENTRY  + File: cpp.info, Node: Invocation, Next: Environment Variables, Prev: Implementation Details, Up: Top + + Invocation + ********** + + 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 on its own. All the + options listed here are also acceptable to the C compiler and have the + same meaning, except that the C compiler has different rules for + specifying the output file. + + *Note:* Whether you use the preprocessor by way of `gcc' or `cpp', + the "compiler driver" is run first. This program's purpose is to + translate your command into invocations of the programs that do the + actual work. Their command line interfaces are similar but not + identical to the documented interface, and may change without notice. + + The C preprocessor expects two file names as arguments, INFILE and + OUTFILE. The preprocessor reads INFILE together with any other files + it specifies with `#include'. All the output generated by the combined + input files is written in OUTFILE. + + Either INFILE or OUTFILE may be `-', which as INFILE means to read + from standard input and as OUTFILE means to write to standard output. + Also, if either file is omitted, it means the same as if `-' had been + specified for that file. + + Unless otherwise noted, or the option ends in `=', all options which + take an argument may have that argument appear either immediately after + the option, or with a space between option and argument: `-Ifoo' and + `-I foo' have the same effect. + + Many options have multi-letter names; therefore multiple + single-letter options may _not_ be grouped: `-dM' is very different from + `-d -M'. + + `-D NAME' + Predefine NAME as a macro, with definition `1'. + + `-D NAME=DEFINITION' + Predefine NAME as a macro, with definition DEFINITION. There are + no restrictions on the contents of DEFINITION, but if you are + invoking the preprocessor from a shell or shell-like program you + may need to use the shell's quoting syntax to protect characters + such as spaces that have a meaning in the shell syntax. + + If you wish to define a function-like macro on the command line, + write its argument list with surrounding parentheses before the + equals sign (if any). Parentheses are meaningful to most shells, + so you will need to quote the option. With `sh' and `csh', + `-D'NAME(ARGS...)=DEFINITION'' works. + + `-D' and `-U' options are processed in the order they are given on + the command line. All `-imacros FILE' and `-include FILE' options + are processed after all `-D' and `-U' options. + + `-U NAME' + Cancel any previous definition of NAME, either built in or + provided with a `-D' option. + + `-undef' + Do not predefine any system-specific macros. The common predefined + macros remain defined. + + `-I DIR' + Add the directory DIR to the list of directories to be searched + for header files. *Note Search Path::. Directories named by `-I' + are searched before the standard system include directories. + + It is dangerous to specify a standard system include directory in + an `-I' option. This defeats the special treatment of system + headers (*note System Headers::) . It can also defeat the repairs + to buggy system headers which GCC makes when it is installed. + + `-o FILE' + Write output to FILE. This is the same as specifying FILE as the + second non-option argument to `cpp'. `gcc' has a different + interpretation of a second non-option argument, so you must use + `-o' to specify the output file. + + `-Wall' + Turns on all optional warnings which are desirable for normal + code. At present this is `-Wcomment' and `-Wtrigraphs'. Note that + many of the preprocessor's warnings are on by default and have no + options to control them. + + `-Wcomment' + `-Wcomments' + Warn whenever a comment-start sequence `/*' appears in a `/*' + comment, or whenever a backslash-newline appears in a `//' comment. + (Both forms have the same effect.) + + `-Wtrigraphs' + Warn if any trigraphs are encountered. This option used to take + effect only if `-trigraphs' was also specified, but now works + independently. Warnings are not given for trigraphs within + comments, as they do not affect the meaning of the program. + + `-Wtraditional' + Warn about certain constructs that behave differently in + traditional and ISO C. Also warn about ISO C constructs that have + no traditional C equivalent, and problematic constructs which + should be avoided. *Note Traditional Mode::. + + `-Wimport' + Warn the first time `#import' is used. + + `-Wundef' + Warn whenever an identifier which is not a macro is encountered in + an `#if' directive, outside of `defined'. Such identifiers are + replaced with zero. + + `-Werror' + Make all warnings into hard errors. Source code which triggers + warnings will be rejected. + + `-Wsystem-headers' + Issue warnings for code in system headers. These are normally + unhelpful in finding bugs in your own code, therefore suppressed. + If you are responsible for the system library, you may want to see + them. + + `-w' + Suppress all warnings, including those which GNU CPP issues by + default. + + `-pedantic' + Issue all the mandatory diagnostics listed in the C standard. + Some of them are left out by default, since they trigger + frequently on harmless code. + + `-pedantic-errors' + Issue all the mandatory diagnostics, and make all mandatory + diagnostics into errors. This includes mandatory diagnostics that + GCC issues without `-pedantic' but treats as warnings. + + `-M' + Instead of outputting the result of preprocessing, output a rule + suitable for `make' describing the dependencies of the main source + file. The preprocessor outputs one `make' rule containing the + object file name for that source file, a colon, and the names of + all the included files, including those coming from `-include' or + `-imacros' command line options. + + Unless specified explicitly (with `-MT' or `-MQ'), the object file + name consists of the basename of the source file with any suffix + replaced with object file suffix. If there are many included + files then the rule is split into several lines using `\'-newline. + The rule has no commands. + + This option does not suppress the preprocessor's debug output, + such as `-dM'. To avoid mixing such debug output with the + dependency rules you should explicitly specify the dependency + output file with `-MF', or use an environment variable like + `DEPENDENCIES_OUTPUT' (*note DEPENDENCIES_OUTPUT::). Debug output + will still be sent to the regular output stream as normal. + + Passing `-M' to the driver implies `-E'. + + `-MM' + Like `-M' but do not mention header files that are found in system + header directories, nor header files that are included, directly + or indirectly, from such a header. + + This implies that the choice of angle brackets or double quotes in + an `#include' directive does not in itself determine whether that + header will appear in `-MM' dependency output. This is a slight + change in semantics from GCC versions 3.0 and earlier. + + `-MF FILE' + When used with `-M' or `-MM', specifies a file to write the + dependencies to. If no `-MF' switch is given the preprocessor + sends the rules to the same place it would have sent preprocessed + output. + + When used with the driver options `-MD' or `-MMD', `-MF' overrides + the default dependency output file. + + `-MG' + When used with `-M' or `-MM', `-MG' says to treat missing header + files as generated files and assume they live in the same + directory as the source file. It suppresses preprocessed output, + as a missing header file is ordinarily an error. + + This feature is used in automatic updating of makefiles. + + `-MP' + This option instructs CPP to add a phony target for each dependency + other than the main file, causing each to depend on nothing. These + dummy rules work around errors `make' gives if you remove header + files without updating the `Makefile' to match. + + This is typical output: + + test.o: test.c test.h + + test.h: + + `-MT TARGET' + Change the target of the rule emitted by dependency generation. By + default CPP takes the name of the main input file, including any + path, deletes any file suffix such as `.c', and appends the + platform's usual object suffix. The result is the target. + + An `-MT' option will set the target to be exactly the string you + specify. If you want multiple targets, you can specify them as a + single argument to `-MT', or use multiple `-MT' options. + + For example, `-MT '$(objpfx)foo.o'' might give + + $(objpfx)foo.o: foo.c + + `-MQ TARGET' + Same as `-MT', but it quotes any characters which are special to + Make. `-MQ '$(objpfx)foo.o'' gives + + $$(objpfx)foo.o: foo.c + + The default target is automatically quoted, as if it were given + with `-MQ'. + + `-MD' + `-MD' is equivalent to `-M -MF FILE', except that `-E' is not + implied. The driver determines FILE based on whether an `-o' + option is given. If it is, the driver uses its argument but with + a suffix of `.d', otherwise it take the basename of the input file + and applies a `.d' suffix. + + If `-MD' is used in conjunction with `-E', any `-o' switch is + understood to specify the dependency output file (but *note + -MF::), but if used without `-E', each `-o' is understood to + specify a target object file. + + Since `-E' is not implied, `-MD' can be used to generate a + dependency output file as a side-effect of the compilation process. + + `-MMD' + Like `-MD' except mention only user header files, not system + -header files. + + `-x c' + `-x c++' + `-x objective-c' + `-x assembler-with-cpp' + Specify the source language: C, C++, Objective-C, or assembly. + This has nothing to do with standards conformance or extensions; + it merely selects which base syntax to expect. If you give none + of these options, cpp will deduce the language from the extension + of the source file: `.c', `.cc', `.m', or `.S'. Some other common + extensions for C++ and assembly are also recognized. If cpp does + not recognize the extension, it will treat the file as C; this is + the most generic mode. + + *Note:* Previous versions of cpp accepted a `-lang' option which + selected both the language and the standards conformance level. + This option has been removed, because it conflicts with the `-l' + option. + + `-std=STANDARD' + `-ansi' + Specify the standard to which the code should conform. Currently + cpp only knows about the standards for C; other language standards + will be added in the future. + + STANDARD may be one of: + `iso9899:1990' + `c89' + The ISO C standard from 1990. `c89' is the customary + shorthand for this version of the standard. + + The `-ansi' option is equivalent to `-std=c89'. + + `iso9899:199409' + The 1990 C standard, as amended in 1994. + + `iso9899:1999' + `c99' + `iso9899:199x' + `c9x' + The revised ISO C standard, published in December 1999. + Before publication, this was known as C9X. + + `gnu89' + The 1990 C standard plus GNU extensions. This is the default. + + `gnu99' + `gnu9x' + The 1999 C standard plus GNU extensions. + + `-I-' + Split the include path. Any directories specified with `-I' + options before `-I-' are searched only for headers requested with + `#include "FILE"'; they are not searched for `#include '. + If additional directories are specified with `-I' options after + the `-I-', those directories are searched for all `#include' + directives. + + In addition, `-I-' inhibits the use of the directory of the current + file directory as the first search directory for `#include "FILE"'. + *Note Search Path::. + + `-nostdinc' + Do not search the standard system directories for header files. + Only the directories you have specified with `-I' options (and the + directory of the current file, if appropriate) are searched. + + `-nostdinc++' + Do not search for header files in the C++-specific standard + directories, but do still search the other standard directories. + (This option is used when building the C++ library.) + + `-include FILE' + Process FILE as if `#include "file"' appeared as the first line of + the primary source file. However, the first directory searched + for FILE is the preprocessor's working directory _instead of_ the + directory containing the main source file. If not found there, it + is searched for in the remainder of the `#include "..."' search + chain as normal. + + If multiple `-include' options are given, the files are included + in the order they appear on the command line. + + `-imacros FILE' + Exactly like `-include', except that any output produced by + scanning FILE is thrown away. Macros it defines remain defined. + This allows you to acquire all the macros from a header without + also processing its declarations. + + All files specified by `-imacros' are processed before all files + specified by `-include'. + + `-idirafter DIR' + Search DIR for header files, but do it _after_ all directories + specified with `-I' and the standard system directories have been + exhausted. DIR is treated as a system include directory. + + `-iprefix PREFIX' + Specify PREFIX as the prefix for subsequent `-iwithprefix' + options. If the prefix represents a directory, you should include + the final `/'. + + `-iwithprefix DIR' + `-iwithprefixbefore DIR' + Append DIR to the prefix specified previously with `-iprefix', and + add the resulting directory to the include search path. + `-iwithprefixbefore' puts it in the same place `-I' would; + `-iwithprefix' puts it where `-idirafter' would. + + Use of these options is discouraged. + + `-isystem DIR' + Search DIR for header files, after all directories specified by + `-I' but before the standard system directories. Mark it as a + system directory, so that it gets the same special treatment as is + applied to the standard system directories. *Note System + Headers::. + + `-fpreprocessed' + Indicate to the preprocessor that the input file has already been + preprocessed. This suppresses things like macro expansion, + trigraph conversion, escaped newline splicing, and processing of + most directives. The preprocessor still recognizes and removes + comments, so that you can pass a file preprocessed with `-C' to + the compiler without problems. In this mode the integrated + preprocessor is little more than a tokenizer for the front ends. + + `-fpreprocessed' is implicit if the input file has one of the + extensions `.i', `.ii' or `.mi'. These are the extensions that + GCC uses for preprocessed files created by `-save-temps'. + + `-ftabstop=WIDTH' + Set the distance between tab stops. This helps the preprocessor + report correct column numbers in warnings or errors, even if tabs + appear on the line. If the value is less than 1 or greater than + 100, the option is ignored. The default is 8. + + `-fno-show-column' + Do not print column numbers in diagnostics. This may be necessary + if diagnostics are being scanned by a program that does not + understand the column numbers, such as `dejagnu'. + + `-A PREDICATE=ANSWER' + Make an assertion with the predicate PREDICATE and answer ANSWER. + This form is preferred to the older form `-A PREDICATE(ANSWER)', + which is still supported, because it does not use shell special + characters. *Note Assertions::. + + `-A -PREDICATE=ANSWER' + Cancel an assertion with the predicate PREDICATE and answer ANSWER. + + `-A-' + Cancel all predefined assertions and all assertions preceding it on + the command line. Also, undefine all predefined macros and all + macros preceding it on the command line. (This is a historical + wart and may change in the future.) + + `-dCHARS' + CHARS is a sequence of one or more of the following characters, + and must not be preceded by a space. Other characters are + interpreted by the compiler proper, or reserved for future + versions of GCC, and so are silently ignored. If you specify + characters whose behavior conflicts, the result is undefined. + + `M' + Instead of the normal output, generate a list of `#define' + directives for all the macros defined during the execution of + the preprocessor, including predefined macros. This gives + you a way of finding out what is predefined in your version + of the preprocessor. Assuming you have no file `foo.h', the + command + + touch foo.h; cpp -dM foo.h + + will show all the predefined macros. + + `D' + Like `M' except in two respects: it does _not_ include the + predefined macros, and it outputs _both_ the `#define' + directives and the result of preprocessing. Both kinds of + output go to the standard output file. + + `N' + Like `D', but emit only the macro names, not their expansions. + + `I' + Output `#include' directives in addition to the result of + preprocessing. + + `-P' + Inhibit generation of linemarkers in the output from the + preprocessor. This might be useful when running the preprocessor + on something that is not C code, and will be sent to a program + which might be confused by the linemarkers. *Note Preprocessor + Output::. + + `-C' + Do not discard comments. All comments are passed through to the + output file, except for comments in processed directives, which + are deleted along with the directive. + + You should be prepared for side effects when using `-C'; it causes + the preprocessor to treat comments as tokens in their own right. + For example, comments appearing at the start of what would be a + directive line have the effect of turning that line into an + ordinary source line, since the first token on the line is no + longer a `#'. + + `-gcc' + Define the macros __GNUC__, __GNUC_MINOR__ and + __GNUC_PATCHLEVEL__. These are defined automatically when you use + `gcc -E'; you can turn them off in that case with `-no-gcc'. + + `-traditional' + Try to imitate the behavior of old-fashioned C, as opposed to ISO + C. *Note Traditional Mode::. + + `-trigraphs' + Process trigraph sequences. *Note Initial processing::. + + `-remap' + Enable special code to work around file systems which only permit + very short file names, such as MS-DOS. + + `-$' + Forbid the use of `$' in identifiers. The C standard allows + implementations to define extra characters that can appear in + identifiers. By default GNU CPP permits `$', a common extension. + + `-h' + `--help' + `--target-help' + Print text describing all the command line options instead of + preprocessing anything. + + `-v' + Verbose mode. Print out GNU CPP's version number at the beginning + of execution, and report the final form of the include path. + + `-H' + Print the name of each header file used, in addition to other + normal activities. Each name is indented to show how deep in the + `#include' stack it is. + + `-version' + `--version' + Print out GNU CPP's version number. With one dash, proceed to + preprocess as normal. With two dashes, exit immediately. + +  File: cpp.info, Node: Environment Variables, Next: GNU Free Documentation License, Prev: Invocation, Up: Top Environment Variables *************** in turn take precedence over the configu *** 64,70 **** This variable is the same as the environment variable `DEPENDENCIES_OUTPUT' (*note DEPENDENCIES_OUTPUT::), except that system header files are not ignored, so it implies `-M' rather ! than `-MM'. *Note Invocation::.  File: cpp.info, Node: GNU Free Documentation License, Next: Option Index, Prev: Environment Variables, Up: Top --- 554,561 ---- This variable is the same as the environment variable `DEPENDENCIES_OUTPUT' (*note DEPENDENCIES_OUTPUT::), except that system header files are not ignored, so it implies `-M' rather ! than `-MM'. However, the dependence on the main input file is ! omitted. *Note Invocation::.  File: cpp.info, Node: GNU Free Documentation License, Next: Option Index, Prev: Environment Variables, Up: Top *************** Index of Directives *** 561,681 **** * OBJC_INCLUDE_PATH: Environment Variables. * SUNPRO_DEPENDENCIES: Environment Variables. -  - File: cpp.info, Node: Concept Index, Prev: Index of Directives, Up: Top - - Concept Index - ************* - - * Menu: - - * # operator: Stringification. - * ## operator: Concatenation. - * _Pragma: Pragmas. - * alternative tokens: Tokenization. - * arguments: Macro Arguments. - * arguments in macro definitions: Macro Arguments. - * assertions: Assertions. - * assertions, cancelling: Assertions. - * backslash-newline: Initial processing. - * block comments: Initial processing. - * C++ named operators: C++ Named Operators. - * character constants: Tokenization. - * character sets: Initial processing. - * command line: Invocation. - * commenting out code: Deleted Code. - * comments: Initial processing. - * common predefined macros: Common Predefined Macros. - * computed includes: Computed Includes. - * concatenation: Concatenation. - * conditional group: Ifdef. - * conditionals: Conditionals. - * continued lines: Initial processing. - * controlling macro: Once-Only Headers. - * defined: Defined. - * dependencies for make as output: Environment Variables. - * dependencies, make: Invocation. - * diagnostic: Diagnostics. - * differences from previous versions: Differences from previous versions. - * digraphs: Tokenization. - * directive line: The preprocessing language. - * directive name: The preprocessing language. - * directives: The preprocessing language. - * empty macro arguments: Macro Arguments. - * environment variables: Environment Variables. - * expansion of arguments: Argument Prescan. - * FDL, GNU Free Documentation License: GNU Free Documentation License. - * function-like macros: Function-like Macros. - * grouping options: Invocation. - * guard macro: Once-Only Headers. - * header file: Header Files. - * header file names: Tokenization. - * identifiers: Tokenization. - * implementation limits: Implementation limits. - * implementation-defined behavior: Implementation-defined behavior. - * including just once: Once-Only Headers. - * invalid token paste: Miscellaneous obsolete features. - * invocation: Invocation. - * iso646.h: C++ Named Operators. - * line comments: Initial processing. - * line control: Line Control. - * line endings: Initial processing. - * linemarkers: Preprocessor Output. - * macro argument expansion: Argument Prescan. - * macros in include: Computed Includes. - * macros with arguments: Macro Arguments. - * macros with variable arguments: Variadic Macros. - * make: Invocation. - * manifest constants: Object-like Macros. - * multi-line string constants: Miscellaneous obsolete features. - * named operators: C++ Named Operators. - * newlines in macro arguments: Newlines in Arguments. - * null directive: Other Directives. - * numbers: Tokenization. - * object-like macro: Object-like Macros. - * options: Invocation. - * options, grouping: Invocation. - * other tokens: Tokenization. - * output format: Preprocessor Output. - * overriding a header file: Wrapper Headers. - * parentheses in macro bodies: Operator Precedence Problems. - * pitfalls of macros: Macro Pitfalls. - * pragma poison: Miscellaneous obsolete features. - * predefined macros: Predefined Macros. - * predefined macros, system-specific: System-specific Predefined Macros. - * predicates: Assertions. - * preprocessing directives: The preprocessing language. - * preprocessing numbers: Tokenization. - * preprocessing tokens: Tokenization. - * prescan of macro arguments: Argument Prescan. - * problems with macros: Macro Pitfalls. - * punctuators: Tokenization. - * redefining macros: Undefining and Redefining Macros. - * repeated inclusion: Once-Only Headers. - * reporting errors: Diagnostics. - * reporting warnings: Diagnostics. - * reserved namespace: System-specific Predefined Macros. - * self-reference: Self-Referential Macros. - * semicolons (after macro calls): Swallowing the Semicolon. - * side effects (in macro arguments): Duplication of Side Effects. - * standard predefined macros.: Standard Predefined Macros. - * string constants: Tokenization. - * string literals: Tokenization. - * stringification: Stringification. - * symbolic constants: Object-like Macros. - * system header files <1>: System Headers. - * system header files: Header Files. - * system-specific predefined macros: System-specific Predefined Macros. - * testing predicates: Assertions. - * token concatenation: Concatenation. - * token pasting: Concatenation. - * tokens: Tokenization. - * trigraphs: Initial processing. - * undefining macros: Undefining and Redefining Macros. - * unsafe macros: Duplication of Side Effects. - * variable number of arguments: Variadic Macros. - * variadic macros: Variadic Macros. - * wrapper #ifndef: Once-Only Headers. - * wrapper headers: Wrapper Headers. - - --- 1052,1054 ---- diff -Nrc3pad gcc-3.2/gcc/doc/cpp.info-5 gcc-3.2.1/gcc/doc/cpp.info-5 *** gcc-3.2/gcc/doc/cpp.info-5 Thu Jan 1 00:00:00 1970 --- gcc-3.2.1/gcc/doc/cpp.info-5 Tue Nov 19 18:17:11 2002 *************** *** 0 **** --- 1,126 ---- + This is doc/cpp.info, produced by makeinfo version 4.2 from + doc/cpp.texi. + + INFO-DIR-SECTION Programming + START-INFO-DIR-ENTRY + * Cpp: (cpp). The GNU C preprocessor. + END-INFO-DIR-ENTRY + +  + File: cpp.info, Node: Concept Index, Prev: Index of Directives, Up: Top + + Concept Index + ************* + + * Menu: + + * # operator: Stringification. + * ## operator: Concatenation. + * _Pragma: Pragmas. + * alternative tokens: Tokenization. + * arguments: Macro Arguments. + * arguments in macro definitions: Macro Arguments. + * assertions: Assertions. + * assertions, cancelling: Assertions. + * backslash-newline: Initial processing. + * block comments: Initial processing. + * C++ named operators: C++ Named Operators. + * character constants: Tokenization. + * character sets: Initial processing. + * command line: Invocation. + * commenting out code: Deleted Code. + * comments: Initial processing. + * common predefined macros: Common Predefined Macros. + * computed includes: Computed Includes. + * concatenation: Concatenation. + * conditional group: Ifdef. + * conditionals: Conditionals. + * continued lines: Initial processing. + * controlling macro: Once-Only Headers. + * defined: Defined. + * dependencies for make as output: Environment Variables. + * dependencies, make: Invocation. + * diagnostic: Diagnostics. + * differences from previous versions: Differences from previous versions. + * digraphs: Tokenization. + * directive line: The preprocessing language. + * directive name: The preprocessing language. + * directives: The preprocessing language. + * empty macro arguments: Macro Arguments. + * environment variables: Environment Variables. + * expansion of arguments: Argument Prescan. + * FDL, GNU Free Documentation License: GNU Free Documentation License. + * function-like macros: Function-like Macros. + * grouping options: Invocation. + * guard macro: Once-Only Headers. + * header file: Header Files. + * header file names: Tokenization. + * identifiers: Tokenization. + * implementation limits: Implementation limits. + * implementation-defined behavior: Implementation-defined behavior. + * including just once: Once-Only Headers. + * invalid token paste: Miscellaneous obsolete features. + * invocation: Invocation. + * iso646.h: C++ Named Operators. + * line comments: Initial processing. + * line control: Line Control. + * line endings: Initial processing. + * linemarkers: Preprocessor Output. + * macro argument expansion: Argument Prescan. + * macros in include: Computed Includes. + * macros with arguments: Macro Arguments. + * macros with variable arguments: Variadic Macros. + * make: Invocation. + * manifest constants: Object-like Macros. + * multi-line string constants: Miscellaneous obsolete features. + * named operators: C++ Named Operators. + * newlines in macro arguments: Newlines in Arguments. + * null directive: Other Directives. + * numbers: Tokenization. + * object-like macro: Object-like Macros. + * options: Invocation. + * options, grouping: Invocation. + * other tokens: Tokenization. + * output format: Preprocessor Output. + * overriding a header file: Wrapper Headers. + * parentheses in macro bodies: Operator Precedence Problems. + * pitfalls of macros: Macro Pitfalls. + * pragma poison: Miscellaneous obsolete features. + * predefined macros: Predefined Macros. + * predefined macros, system-specific: System-specific Predefined Macros. + * predicates: Assertions. + * preprocessing directives: The preprocessing language. + * preprocessing numbers: Tokenization. + * preprocessing tokens: Tokenization. + * prescan of macro arguments: Argument Prescan. + * problems with macros: Macro Pitfalls. + * punctuators: Tokenization. + * redefining macros: Undefining and Redefining Macros. + * repeated inclusion: Once-Only Headers. + * reporting errors: Diagnostics. + * reporting warnings: Diagnostics. + * reserved namespace: System-specific Predefined Macros. + * self-reference: Self-Referential Macros. + * semicolons (after macro calls): Swallowing the Semicolon. + * side effects (in macro arguments): Duplication of Side Effects. + * standard predefined macros.: Standard Predefined Macros. + * string constants: Tokenization. + * string literals: Tokenization. + * stringification: Stringification. + * symbolic constants: Object-like Macros. + * system header files <1>: System Headers. + * system header files: Header Files. + * system-specific predefined macros: System-specific Predefined Macros. + * testing predicates: Assertions. + * token concatenation: Concatenation. + * token pasting: Concatenation. + * tokens: Tokenization. + * trigraphs: Initial processing. + * undefining macros: Undefining and Redefining Macros. + * unsafe macros: Duplication of Side Effects. + * variable number of arguments: Variadic Macros. + * variadic macros: Variadic Macros. + * wrapper #ifndef: Once-Only Headers. + * wrapper headers: Wrapper Headers. + + diff -Nrc3pad gcc-3.2/gcc/doc/cpp.texi gcc-3.2.1/gcc/doc/cpp.texi *** gcc-3.2/gcc/doc/cpp.texi Thu Mar 14 19:24:59 2002 --- gcc-3.2.1/gcc/doc/cpp.texi Sat Oct 5 09:36:28 2002 *************** version of GCC in use. *** 830,840 **** You can add to this list with the @option{-I@var{dir}} command line option. All the directories named by @option{-I} are searched, in ! left-to-right order, @emph{before} the default directories. You can ! also prevent GCC from searching any of the default directories with the ! @option{-nostdinc} option. This is useful when you are compiling an operating system kernel or some other program that does not use the standard C library facilities, or the standard C library itself. GCC looks for headers requested with @code{@w{#include "@var{file}"}} first in the directory containing the current file, then in the same --- 830,851 ---- You can add to this list with the @option{-I@var{dir}} command line option. All the directories named by @option{-I} are searched, in ! left-to-right order, @emph{before} the default directories. The only ! exception is when @file{dir} is already searched by default. In ! this case, the option is ignored and the search order for system ! directories remains unchanged. ! ! Duplicate directories are removed from the quote and bracket search ! chains before the two chains are merged to make the final search chain. ! Thus, it is possible for a directory to occur twice in the final search ! chain if it was specified in both the quote and bracket chains. ! ! You can prevent GCC from searching any of the default directories with ! the @option{-nostdinc} option. This is useful when you are compiling an operating system kernel or some other program that does not use the standard C library facilities, or the standard C library itself. + @option{-I} options are not ignored as described above when + @option{-nostdinc} is in effect. GCC looks for headers requested with @code{@w{#include "@var{file}"}} first in the directory containing the current file, then in the same *************** For example, if @file{/usr/include/sys/s *** 843,854 **** @code{@w{#include "types.h"}}, GCC looks for @file{types.h} first in @file{/usr/include/sys}, then in its usual search path. - If you name a search directory with @option{-I@var{dir}} that is also a - system include directory, the @option{-I} wins; the directory will be - searched according to the @option{-I} ordering, and it will not be - treated as a system include directory. GCC will warn you when a system - include directory is hidden in this way. - @samp{#line} (@pxref{Line Control}) does not change GCC's idea of the directory containing the current file. --- 854,859 ---- *************** found in that directory will be consider *** 1081,1088 **** All directories named by @option{-isystem} are searched @emph{after} all directories named by @option{-I}, no matter what their order was on the command line. If the same directory is named by both @option{-I} and ! @option{-isystem}, @option{-I} wins; it is as if the @option{-isystem} option ! had never been specified at all. GCC warns you when this happens. @findex #pragma GCC system_header There is also a directive, @code{@w{#pragma GCC system_header}}, which --- 1086,1093 ---- All directories named by @option{-isystem} are searched @emph{after} all directories named by @option{-I}, no matter what their order was on the command line. If the same directory is named by both @option{-I} and ! @option{-isystem}, the @option{-I} option is ignored. GCC provides an ! informative message when this occurs if @option{-v} is used. @findex #pragma GCC system_header There is also a directive, @code{@w{#pragma GCC system_header}}, which *************** eprintf ("success!\n") *** 1676,1681 **** --- 1681,1695 ---- @expansion{} fprintf(stderr, "success!\n"); @end example + @noindent + The above explanation is ambiguous about the case where the only macro + parameter is a variable arguments parameter, as it is meaningless to + try to distinguish whether no argument at all is an empty argument or + a missing argument. In this case the C99 standard is clear that the + comma must remain, however the existing GCC extension used to swallow + the comma. So CPP retains the comma when conforming to a specific C + standard, and drops it otherwise. + C99 mandates that the only place the identifier @code{@w{__VA_ARGS__}} can appear is in the replacement list of a variadic macro. It may not be used as a macro name, macro argument name, or within a different type *************** conformance to the C Standard. GNU CPP *** 1806,1814 **** processing system header files, but when processing user files @code{__STDC__} is always 1. This has been reported to cause problems; for instance, some versions of Solaris provide X Windows headers that ! expect @code{__STDC__} to be either undefined or 1. You may be able to ! work around this sort of problem by using an @option{-I} option to ! cancel treatment of those headers as system headers. @xref{Invocation}. @item __STDC_VERSION__ This macro expands to the C Standard's version number, a long integer --- 1820,1826 ---- processing system header files, but when processing user files @code{__STDC__} is always 1. This has been reported to cause problems; for instance, some versions of Solaris provide X Windows headers that ! expect @code{__STDC__} to be either undefined or 1. @xref{Invocation}. @item __STDC_VERSION__ This macro expands to the C Standard's version number, a long integer *************** Here are a few more obsolete features. *** 3724,3732 **** @item Attempting to paste two tokens which together do not form a valid preprocessing token. ! The preprocessor currently warns about this and outputs the two tokens ! adjacently, which is probably the behavior the programmer intends. It ! may not work in future, though. Most of the time, when you get this warning, you will find that @samp{##} is being used superstitiously, to guard against whitespace appearing --- 3736,3744 ---- @item Attempting to paste two tokens which together do not form a valid preprocessing token. ! The preprocessor currently warns about this, and the resulting ! preprocessed output is undefined. The tokens remain distinct if the ! preprocessor is being used directly by the compiler front end. Most of the time, when you get this warning, you will find that @samp{##} is being used superstitiously, to guard against whitespace appearing diff -Nrc3pad gcc-3.2/gcc/doc/cppenv.texi gcc-3.2.1/gcc/doc/cppenv.texi *** gcc-3.2/gcc/doc/cppenv.texi Mon Mar 11 19:59:58 2002 --- gcc-3.2.1/gcc/doc/cppenv.texi Thu Aug 15 19:46:42 2002 *************** with an optional @option{-MT} switch too *** 66,72 **** This variable is the same as the environment variable @env{DEPENDENCIES_OUTPUT} (@pxref{DEPENDENCIES_OUTPUT}), except that system header files are not ignored, so it implies @option{-M} rather ! than @option{-MM}. @ifset cppmanual @xref{Invocation}. @end ifset --- 66,73 ---- This variable is the same as the environment variable @env{DEPENDENCIES_OUTPUT} (@pxref{DEPENDENCIES_OUTPUT}), except that system header files are not ignored, so it implies @option{-M} rather ! than @option{-MM}. However, the dependence on the main input file is ! omitted. @ifset cppmanual @xref{Invocation}. @end ifset diff -Nrc3pad gcc-3.2/gcc/doc/cppopts.texi gcc-3.2.1/gcc/doc/cppopts.texi *** gcc-3.2/gcc/doc/cppopts.texi Mon Mar 11 19:59:58 2002 --- gcc-3.2.1/gcc/doc/cppopts.texi Wed Sep 11 16:40:27 2002 *************** standard-conforming modes it converts th *** 541,550 **** The nine trigraphs and their replacements are ! @example Trigraph: ??( ??) ??< ??> ??= ??/ ??' ??! ??- Replacement: [ ] @{ @} # \ ^ | ~ ! @end example @end ifclear @item -remap --- 541,550 ---- The nine trigraphs and their replacements are ! @smallexample Trigraph: ??( ??) ??< ??> ??= ??/ ??' ??! ??- Replacement: [ ] @{ @} # \ ^ | ~ ! @end smallexample @end ifclear @item -remap diff -Nrc3pad gcc-3.2/gcc/doc/extend.texi gcc-3.2.1/gcc/doc/extend.texi *** gcc-3.2/gcc/doc/extend.texi Thu Apr 11 21:36:04 2002 --- gcc-3.2.1/gcc/doc/extend.texi Wed Oct 9 21:31:00 2002 *************** extensions, accepted by GCC in C89 mode *** 385,391 **** * Labels as Values:: Getting pointers to labels, and computed gotos. * Nested Functions:: As in Algol and Pascal, lexical scoping of functions. * Constructing Calls:: Dispatching a call to another function. - * Naming Types:: Giving a name to the type of some expression. * Typeof:: @code{typeof}: referring to the type of an expression. * Lvalues:: Using @samp{?:}, @samp{,} and casts in lvalues. * Conditionals:: Omitting the middle operand of a @samp{?:} expression. --- 385,390 ---- *************** the value of an enumeration constant, th *** 495,502 **** the initial value of a static variable. If you don't know the type of the operand, you can still do this, but you ! must use @code{typeof} (@pxref{Typeof}) or type naming (@pxref{Naming ! Types}). Statement expressions are not supported fully in G++, and their fate there is unclear. (It is possible that they will become fully supported --- 494,500 ---- the initial value of a static variable. If you don't know the type of the operand, you can still do this, but you ! must use @code{typeof} (@pxref{Typeof}). Statement expressions are not supported fully in G++, and their fate there is unclear. (It is possible that they will become fully supported *************** GCC implements taking the address of a n *** 739,745 **** called @dfn{trampolines}. A paper describing them is available as @noindent ! @uref{http://people.debian.org/~karlheg/Usenix88-lexic.pdf}. A nested function can jump to a label inherited from a containing function, provided the label was explicitly declared in the containing --- 737,743 ---- called @dfn{trampolines}. A paper describing them is available as @noindent ! @uref{http://people.debian.org/~aaronl/Usenix88-lexic.pdf}. A nested function can jump to a label inherited from a containing function, provided the label was explicitly declared in the containing *************** the containing function. You should spe *** 845,873 **** returned by @code{__builtin_apply}. @end deftypefn - @node Naming Types - @section Naming an Expression's Type - @cindex naming types - - You can give a name to the type of an expression using a @code{typedef} - declaration with an initializer. Here is how to define @var{name} as a - type name for the type of @var{exp}: - - @example - typedef @var{name} = @var{exp}; - @end example - - This is useful in conjunction with the statements-within-expressions - feature. Here is how the two together can be used to define a safe - ``maximum'' macro that operates on any arithmetic type: - - @example - #define max(a,b) \ - (@{typedef _ta = (a), _tb = (b); \ - _ta _a = (a); _tb _b = (b); \ - _a > _b ? _a : _b; @}) - @end example - @cindex underscores in variables in macros @cindex @samp{_} in variables in macros @cindex local variables in macros --- 843,848 ---- *************** A @code{typeof}-construct can be used an *** 919,924 **** --- 894,914 ---- used. For example, you can use it in a declaration, in a cast, or inside of @code{sizeof} or @code{typeof}. + @code{typeof} is often useful in conjunction with the + statements-within-expressions feature. Here is how the two together can + be used to define a safe ``maximum'' macro that operates on any + arithmetic type and evaluates each of its arguments exactly once: + + @example + #define max(a,b) \ + (@{ typeof (a) _a = (a); \ + typeof (b) _b = (b); \ + _a > _b ? _a : _b; @}) + @end example + + @noindent + Some more examples of the use of @code{typeof}: + @itemize @bullet @item This declares @code{y} with the type of what @code{x} points to. *************** Thus, @code{array (pointer (char), 4)} i *** 968,973 **** --- 958,983 ---- pointers to @code{char}. @end itemize + @emph{Compatibility Note:} In addition to @code{typeof}, GCC 2 supported + a more limited extension which permitted one to write + + @example + typedef @var{T} = @var{expr}; + @end example + + @noindent + with the effect of declaring @var{T} to have the type of the expression + @var{expr}. This extension does not work with GCC 3 (versions between + 3.0 and 3.2 will crash; 3.2.1 and later give an error). Code which + relies on it should be rewritten to use @code{typeof}: + + @example + typedef typeof(@var{expr}) @var{T}; + @end example + + @noindent + This will work with all versions of GCC@. + @node Lvalues @section Generalized Lvalues @cindex compound expressions as lvalues *************** variable number of arguments much as a f *** 1396,1404 **** defining the macro is similar to that of a function. Here is an example: ! @example #define debug(format, ...) fprintf (stderr, format, __VA_ARGS__) ! @end example Here @samp{@dots{}} is a @dfn{variable argument}. In the invocation of such a macro, it represents the zero or more tokens until the closing --- 1406,1414 ---- defining the macro is similar to that of a function. Here is an example: ! @smallexample #define debug(format, ...) fprintf (stderr, format, __VA_ARGS__) ! @end smallexample Here @samp{@dots{}} is a @dfn{variable argument}. In the invocation of such a macro, it represents the zero or more tokens until the closing *************** string. *** 1437,1445 **** To help solve this problem, CPP behaves specially for variable arguments used with the token paste operator, @samp{##}. If instead you write ! @example #define debug(format, ...) fprintf (stderr, format, ## __VA_ARGS__) ! @end example and if the variable arguments are omitted or empty, the @samp{##} operator causes the preprocessor to remove the comma before it. If you --- 1447,1455 ---- To help solve this problem, CPP behaves specially for variable arguments used with the token paste operator, @samp{##}. If instead you write ! @smallexample #define debug(format, ...) fprintf (stderr, format, ## __VA_ARGS__) ! @end smallexample and if the variable arguments are omitted or empty, the @samp{##} operator causes the preprocessor to remove the comma before it. If you *************** nested subobject to initialize; the list *** 1749,1757 **** subobject corresponding to the closest surrounding brace pair. For example, with the @samp{struct point} declaration above: ! @example struct point ptarray[10] = @{ [2].y = yv2, [2].x = xv2, [0].x = xv0 @}; ! @end example @noindent If the same field is initialized multiple times, it will have value from --- 1759,1767 ---- subobject corresponding to the closest surrounding brace pair. For example, with the @samp{struct point} declaration above: ! @smallexample struct point ptarray[10] = @{ [2].y = yv2, [2].x = xv2, [0].x = xv0 @}; ! @end smallexample @noindent If the same field is initialized multiple times, it will have value from *************** the minimum value of variables @var{i} a *** 6170,6181 **** However, side effects in @code{X} or @code{Y} may cause unintended behavior. For example, @code{MIN (i++, j++)} will fail, incrementing ! the smaller counter twice. A GNU C extension allows you to write safe ! macros that avoid this kind of problem (@pxref{Naming Types,,Naming an ! Expression's Type}). However, writing @code{MIN} and @code{MAX} as ! macros also forces you to use function-call notation for a ! fundamental arithmetic operation. Using GNU C++ extensions, you can ! write @w{@samp{int min = i ?} are built into the compiler, they properly handle expressions with side-effects; @w{@samp{int min = i++ ?} are built into the compiler, they properly handle expressions with side-effects; @w{@samp{int min = i++ _b ? _a : _b; }) - The reason for using names that start with underscores for the local variables is to avoid conflicts with variable names that occur within the expressions that are substituted for `a' and `b'. Eventually we --- 308,313 ---- *************** declare variables whose scopes start onl *** 287,293 **** this will be a more reliable way to prevent such conflicts.  ! File: gcc.info, Node: Typeof, Next: Lvalues, Prev: Naming Types, Up: C Extensions Referring to a Type with `typeof' ================================= --- 316,322 ---- this will be a more reliable way to prevent such conflicts.  ! File: gcc.info, Node: Typeof, Next: Lvalues, Prev: Constructing Calls, Up: C Extensions Referring to a Type with `typeof' ================================= *************** Keywords::. *** 318,323 **** --- 347,364 ---- used. For example, you can use it in a declaration, in a cast, or inside of `sizeof' or `typeof'. + `typeof' is often useful in conjunction with the + statements-within-expressions feature. Here is how the two together can + be used to define a safe "maximum" macro that operates on any + arithmetic type and evaluates each of its arguments exactly once: + + #define max(a,b) \ + ({ typeof (a) _a = (a); \ + typeof (b) _b = (b); \ + _a > _b ? _a : _b; }) + + Some more examples of the use of `typeof': + * This declares `y' with the type of what `x' points to. typeof (*x) y; *************** inside of `sizeof' or `typeof'. *** 347,352 **** --- 388,407 ---- Thus, `array (pointer (char), 4)' is the type of arrays of 4 pointers to `char'. + _Compatibility Note:_ In addition to `typeof', GCC 2 supported a + more limited extension which permitted one to write + + typedef T = EXPR; + + with the effect of declaring T to have the type of the expression EXPR. + This extension does not work with GCC 3 (versions between 3.0 and 3.2 + will crash; 3.2.1 and later give an error). Code which relies on it + should be rewritten to use `typeof': + + typedef typeof(EXPR) T; + + This will work with all versions of GCC. +  File: gcc.info, Node: Lvalues, Next: Conditionals, Prev: Typeof, Up: C Extensions diff -Nrc3pad gcc-3.2/gcc/doc/gcc.info-17 gcc-3.2.1/gcc/doc/gcc.info-17 *** gcc-3.2/gcc/doc/gcc.info-17 Wed Aug 14 09:36:33 2002 --- gcc-3.2.1/gcc/doc/gcc.info-17 Tue Nov 19 18:17:12 2002 *************** value of variables I and J. *** 232,242 **** However, side effects in `X' or `Y' may cause unintended behavior. For example, `MIN (i++, j++)' will fail, incrementing the smaller ! counter twice. A GNU C extension allows you to write safe macros that ! avoid this kind of problem (*note Naming an Expression's Type: Naming ! Types.). However, writing `MIN' and `MAX' as macros also forces you to ! use function-call notation for a fundamental arithmetic operation. ! Using GNU C++ extensions, you can write `int min = i ?' are built into the compiler, they properly handle expressions with side-effects; `int min = i++ ?' are built into the compiler, they properly handle expressions with side-effects; `int min = i++ ' on systems with ISO C headers) and not to - declare `time' if the system header files declare it, or failing - that to use `time_t' as the return type of `time'. - - * When compiling functions that return `float', PCC converts it to a - double. GCC actually returns a `float'. If you are concerned - with PCC compatibility, you should declare your functions to return - `double'; you might as well say what you mean. - - * When compiling functions that return structures or unions, GCC - output code normally uses a method different from that used on most - versions of Unix. As a result, code compiled with GCC cannot call - a structure-returning function compiled with PCC, and vice versa. - - The method used by GCC is as follows: a structure or union which is - 1, 2, 4 or 8 bytes long is returned like a scalar. A structure or - union with any other size is stored into an address supplied by - the caller (usually in a special, fixed register, but on some - machines it is passed on the stack). The machine-description - macros `STRUCT_VALUE' and `STRUCT_INCOMING_VALUE' tell GCC where - to pass this address. - - By contrast, PCC on most target machines returns structures and - unions of any size by copying the data into an area of static - storage, and then returning the address of that storage as if it - were a pointer value. The caller must copy the data from that - memory area to the place where the value is wanted. GCC does not - use this method because it is slower and nonreentrant. - - On some newer machines, PCC uses a reentrant convention for all - structure and union returning. GCC on most of these machines uses - a compatible convention when returning structures and unions in - memory, but still returns small structures and unions in registers. - - You can tell GCC to use a compatible convention for all structure - and union returning with the option `-fpcc-struct-return'. - - * GCC complains about program fragments such as `0x74ae-0x4000' - which appear to be two hexadecimal constants separated by the minus - operator. Actually, this string is a single "preprocessing token". - Each such token must correspond to one token in C. Since this - does not, GCC prints an error message. Although it may appear - obvious that what is meant is an operator and two values, the ISO - C standard specifically requires that this be treated as erroneous. - - A "preprocessing token" is a "preprocessing number" if it begins - with a digit and is followed by letters, underscores, digits, - periods and `e+', `e-', `E+', `E-', `p+', `p-', `P+', or `P-' - character sequences. (In strict C89 mode, the sequences `p+', - `p-', `P+' and `P-' cannot appear in preprocessing numbers.) - - To make the above program fragment valid, place whitespace in - front of the minus sign. This whitespace will end the - preprocessing number. - -  - File: gcc.info, Node: Fixed Headers, Next: Standard Libraries, Prev: Incompatibilities, Up: Trouble - - Fixed Header Files - ================== - - GCC needs to install corrected versions of some system header files. - This is because most target systems have some header files that won't - work with GCC unless they are changed. Some have bugs, some are - incompatible with ISO C, and some depend on special features of other - compilers. - - Installing GCC automatically creates and installs the fixed header - files, by running a program called `fixincludes' (or for certain - targets an alternative such as `fixinc.svr4'). Normally, you don't - need to pay attention to this. But there are cases where it doesn't do - the right thing automatically. - - * If you update the system's header files, such as by installing a - new system version, the fixed header files of GCC are not - automatically updated. The easiest way to update them is to - reinstall GCC. (If you want to be clever, look in the makefile - and you can find a shortcut.) - - * On some systems, in particular SunOS 4, header file directories - contain machine-specific symbolic links in certain places. This - makes it possible to share most of the header files among hosts - running the same version of SunOS 4 on different machine models. - - The programs that fix the header files do not understand this - special way of using symbolic links; therefore, the directory of - fixed header files is good only for the machine model used to - build it. - - In SunOS 4, only programs that look inside the kernel will notice - the difference between machine models. Therefore, for most - purposes, you need not be concerned about this. - - It is possible to make separate sets of fixed header files for the - different machine models, and arrange a structure of symbolic - links so as to use the proper set, but you'll have to do this by - hand. - - * On Lynxos, GCC by default does not fix the header files. This is - because bugs in the shell cause the `fixincludes' script to fail. - - This means you will encounter problems due to bugs in the system - header files. It may be no comfort that they aren't GCC's fault, - but it does mean that there's nothing for us to do about them. - -  - File: gcc.info, Node: Standard Libraries, Next: Disappointments, Prev: Fixed Headers, Up: Trouble - - Standard Libraries - ================== - - GCC by itself attempts to be a conforming freestanding - implementation. *Note Language Standards Supported by GCC: Standards, - for details of what this means. Beyond the library facilities required - of such an implementation, the rest of the C library is supplied by the - vendor of the operating system. If that C library doesn't conform to - the C standards, then your programs might get warnings (especially when - using `-Wall') that you don't expect. - - For example, the `sprintf' function on SunOS 4.1.3 returns `char *' - while the C standard says that `sprintf' returns an `int'. The - `fixincludes' program could make the prototype for this function match - the Standard, but that would be wrong, since the function will still - return `char *'. - - If you need a Standard compliant library, then you need to find one, - as GCC does not provide one. The GNU C library (called `glibc') - provides ISO C, POSIX, BSD, SystemV and X/Open compatibility for - GNU/Linux and HURD-based GNU systems; no recent version of it supports - other systems, though some very old versions did. Version 2.2 of the - GNU C library includes nearly complete C99 support. You could also ask - your operating system vendor if newer libraries are available. - --- 983,985 ---- diff -Nrc3pad gcc-3.2/gcc/doc/gcc.info-19 gcc-3.2.1/gcc/doc/gcc.info-19 *** gcc-3.2/gcc/doc/gcc.info-19 Wed Aug 14 09:36:33 2002 --- gcc-3.2.1/gcc/doc/gcc.info-19 Tue Nov 19 18:17:12 2002 *************** software. Copies published by the Free *** 33,38 **** --- 33,334 ---- funds for GNU development.  + File: gcc.info, Node: Incompatibilities, Next: Fixed Headers, Prev: External Bugs, Up: Trouble + + Incompatibilities of GCC + ======================== + + There are several noteworthy incompatibilities between GNU C and K&R + (non-ISO) versions of C. The `-traditional' option eliminates many of + these incompatibilities, _but not all_, by telling GCC to behave like a + K&R C compiler. + + * GCC normally makes string constants read-only. If several + identical-looking string constants are used, GCC stores only one + copy of the string. + + One consequence is that you cannot call `mktemp' with a string + constant argument. The function `mktemp' always alters the string + its argument points to. + + Another consequence is that `sscanf' does not work on some systems + when passed a string constant as its format control string or + input. This is because `sscanf' incorrectly tries to write into + the string constant. Likewise `fscanf' and `scanf'. + + The best solution to these problems is to change the program to use + `char'-array variables with initialization strings for these + purposes instead of string constants. But if this is not possible, + you can use the `-fwritable-strings' flag, which directs GCC to + handle string constants the same way most C compilers do. + `-traditional' also has this effect, among others. + + * `-2147483648' is positive. + + This is because 2147483648 cannot fit in the type `int', so + (following the ISO C rules) its data type is `unsigned long int'. + Negating this value yields 2147483648 again. + + * GCC does not substitute macro arguments when they appear inside of + string constants. For example, the following macro in GCC + + #define foo(a) "a" + + will produce output `"a"' regardless of what the argument A is. + + The `-traditional' option directs GCC to handle such cases (among + others) in the old-fashioned (non-ISO) fashion. + + * When you use `setjmp' and `longjmp', the only automatic variables + guaranteed to remain valid are those declared `volatile'. This is + a consequence of automatic register allocation. Consider this + function: + + jmp_buf j; + + foo () + { + int a, b; + + a = fun1 (); + if (setjmp (j)) + return a; + + a = fun2 (); + /* `longjmp (j)' may occur in `fun3'. */ + return a + fun3 (); + } + + Here `a' may or may not be restored to its first value when the + `longjmp' occurs. If `a' is allocated in a register, then its + first value is restored; otherwise, it keeps the last value stored + in it. + + If you use the `-W' option with the `-O' option, you will get a + warning when GCC thinks such a problem might be possible. + + The `-traditional' option directs GCC to put variables in the + stack by default, rather than in registers, in functions that call + `setjmp'. This results in the behavior found in traditional C + compilers. + + * Programs that use preprocessing directives in the middle of macro + arguments do not work with GCC. For example, a program like this + will not work: + + foobar ( + #define luser + hack) + + ISO C does not permit such a construct. It would make sense to + support it when `-traditional' is used, but it is too much work to + implement. + + * K&R compilers allow comments to cross over an inclusion boundary + (i.e. started in an include file and ended in the including file). + I think this would be quite ugly and can't imagine it could be + needed. + + * Declarations of external variables and functions within a block + apply only to the block containing the declaration. In other + words, they have the same scope as any other declaration in the + same place. + + In some other C compilers, a `extern' declaration affects all the + rest of the file even if it happens within a block. + + The `-traditional' option directs GCC to treat all `extern' + declarations as global, like traditional compilers. + + * In traditional C, you can combine `long', etc., with a typedef + name, as shown here: + + typedef int foo; + typedef long foo bar; + + In ISO C, this is not allowed: `long' and other type modifiers + require an explicit `int'. Because this criterion is expressed by + Bison grammar rules rather than C code, the `-traditional' flag + cannot alter it. + + * PCC allows typedef names to be used as function parameters. The + difficulty described immediately above applies here too. + + * When in `-traditional' mode, GCC allows the following erroneous + pair of declarations to appear together in a given scope: + + typedef int foo; + typedef foo foo; + + * GCC treats all characters of identifiers as significant, even when + in `-traditional' mode. According to K&R-1 (2.2), "No more than + the first eight characters are significant, although more may be + used.". Also according to K&R-1 (2.2), "An identifier is a + sequence of letters and digits; the first character must be a + letter. The underscore _ counts as a letter.", but GCC also + allows dollar signs in identifiers. + + * PCC allows whitespace in the middle of compound assignment + operators such as `+='. GCC, following the ISO standard, does not + allow this. The difficulty described immediately above applies + here too. + + * GCC complains about unterminated character constants inside of + preprocessing conditionals that fail. Some programs have English + comments enclosed in conditionals that are guaranteed to fail; if + these comments contain apostrophes, GCC will probably report an + error. For example, this code would produce an error: + + #if 0 + You can't expect this to work. + #endif + + The best solution to such a problem is to put the text into an + actual C comment delimited by `/*...*/'. However, `-traditional' + suppresses these error messages. + + * Many user programs contain the declaration `long time ();'. In the + past, the system header files on many systems did not actually + declare `time', so it did not matter what type your program + declared it to return. But in systems with ISO C headers, `time' + is declared to return `time_t', and if that is not the same as + `long', then `long time ();' is erroneous. + + The solution is to change your program to use appropriate system + headers (`' on systems with ISO C headers) and not to + declare `time' if the system header files declare it, or failing + that to use `time_t' as the return type of `time'. + + * When compiling functions that return `float', PCC converts it to a + double. GCC actually returns a `float'. If you are concerned + with PCC compatibility, you should declare your functions to return + `double'; you might as well say what you mean. + + * When compiling functions that return structures or unions, GCC + output code normally uses a method different from that used on most + versions of Unix. As a result, code compiled with GCC cannot call + a structure-returning function compiled with PCC, and vice versa. + + The method used by GCC is as follows: a structure or union which is + 1, 2, 4 or 8 bytes long is returned like a scalar. A structure or + union with any other size is stored into an address supplied by + the caller (usually in a special, fixed register, but on some + machines it is passed on the stack). The machine-description + macros `STRUCT_VALUE' and `STRUCT_INCOMING_VALUE' tell GCC where + to pass this address. + + By contrast, PCC on most target machines returns structures and + unions of any size by copying the data into an area of static + storage, and then returning the address of that storage as if it + were a pointer value. The caller must copy the data from that + memory area to the place where the value is wanted. GCC does not + use this method because it is slower and nonreentrant. + + On some newer machines, PCC uses a reentrant convention for all + structure and union returning. GCC on most of these machines uses + a compatible convention when returning structures and unions in + memory, but still returns small structures and unions in registers. + + You can tell GCC to use a compatible convention for all structure + and union returning with the option `-fpcc-struct-return'. + + * GCC complains about program fragments such as `0x74ae-0x4000' + which appear to be two hexadecimal constants separated by the minus + operator. Actually, this string is a single "preprocessing token". + Each such token must correspond to one token in C. Since this + does not, GCC prints an error message. Although it may appear + obvious that what is meant is an operator and two values, the ISO + C standard specifically requires that this be treated as erroneous. + + A "preprocessing token" is a "preprocessing number" if it begins + with a digit and is followed by letters, underscores, digits, + periods and `e+', `e-', `E+', `E-', `p+', `p-', `P+', or `P-' + character sequences. (In strict C89 mode, the sequences `p+', + `p-', `P+' and `P-' cannot appear in preprocessing numbers.) + + To make the above program fragment valid, place whitespace in + front of the minus sign. This whitespace will end the + preprocessing number. + +  + File: gcc.info, Node: Fixed Headers, Next: Standard Libraries, Prev: Incompatibilities, Up: Trouble + + Fixed Header Files + ================== + + GCC needs to install corrected versions of some system header files. + This is because most target systems have some header files that won't + work with GCC unless they are changed. Some have bugs, some are + incompatible with ISO C, and some depend on special features of other + compilers. + + Installing GCC automatically creates and installs the fixed header + files, by running a program called `fixincludes' (or for certain + targets an alternative such as `fixinc.svr4'). Normally, you don't + need to pay attention to this. But there are cases where it doesn't do + the right thing automatically. + + * If you update the system's header files, such as by installing a + new system version, the fixed header files of GCC are not + automatically updated. The easiest way to update them is to + reinstall GCC. (If you want to be clever, look in the makefile + and you can find a shortcut.) + + * On some systems, in particular SunOS 4, header file directories + contain machine-specific symbolic links in certain places. This + makes it possible to share most of the header files among hosts + running the same version of SunOS 4 on different machine models. + + The programs that fix the header files do not understand this + special way of using symbolic links; therefore, the directory of + fixed header files is good only for the machine model used to + build it. + + In SunOS 4, only programs that look inside the kernel will notice + the difference between machine models. Therefore, for most + purposes, you need not be concerned about this. + + It is possible to make separate sets of fixed header files for the + different machine models, and arrange a structure of symbolic + links so as to use the proper set, but you'll have to do this by + hand. + + * On Lynxos, GCC by default does not fix the header files. This is + because bugs in the shell cause the `fixincludes' script to fail. + + This means you will encounter problems due to bugs in the system + header files. It may be no comfort that they aren't GCC's fault, + but it does mean that there's nothing for us to do about them. + +  + File: gcc.info, Node: Standard Libraries, Next: Disappointments, Prev: Fixed Headers, Up: Trouble + + Standard Libraries + ================== + + GCC by itself attempts to be a conforming freestanding + implementation. *Note Language Standards Supported by GCC: Standards, + for details of what this means. Beyond the library facilities required + of such an implementation, the rest of the C library is supplied by the + vendor of the operating system. If that C library doesn't conform to + the C standards, then your programs might get warnings (especially when + using `-Wall') that you don't expect. + + For example, the `sprintf' function on SunOS 4.1.3 returns `char *' + while the C standard says that `sprintf' returns an `int'. The + `fixincludes' program could make the prototype for this function match + the Standard, but that would be wrong, since the function will still + return `char *'. + + If you need a Standard compliant library, then you need to find one, + as GCC does not provide one. The GNU C library (called `glibc') + provides ISO C, POSIX, BSD, SystemV and X/Open compatibility for + GNU/Linux and HURD-based GNU systems; no recent version of it supports + other systems, though some very old versions did. Version 2.2 of the + GNU C library includes nearly complete C99 support. You could also ask + your operating system vendor if newer libraries are available. + +  File: gcc.info, Node: Disappointments, Next: C++ Misunderstandings, Prev: Standard Libraries, Up: Trouble Disappointments and Misunderstandings *************** address given above. *** 721,1136 **** Please read `http://gcc.gnu.org/bugs.html' for additional and/or more up-to-date bug reporting instructions before you post a bug report. -  - File: gcc.info, Node: Bug Reporting, Next: gccbug, Prev: Bug Lists, Up: Bugs - - How to Report Bugs - ================== - - The fundamental principle of reporting bugs usefully is this: - *report all the facts*. If you are not sure whether to state a fact or - leave it out, state it! - - Often people omit facts because they think they know what causes the - problem and they conclude that some details don't matter. Thus, you - might assume that the name of the variable you use in an example does - not matter. Well, probably it doesn't, but one cannot be sure. - Perhaps the bug is a stray memory reference which happens to fetch from - the location where that name is stored in memory; perhaps, if the name - were different, the contents of that location would fool the compiler - into doing the right thing despite the bug. Play it safe and give a - specific, complete example. That is the easiest thing for you to do, - and the most helpful. - - Keep in mind that the purpose of a bug report is to enable someone to - fix the bug if it is not known. It isn't very important what happens if - the bug is already known. Therefore, always write your bug reports on - the assumption that the bug is not known. - - Sometimes people give a few sketchy facts and ask, "Does this ring a - bell?" This cannot help us fix a bug, so it is basically useless. We - respond by asking for enough details to enable us to investigate. You - might as well expedite matters by sending them to begin with. - - Try to make your bug report self-contained. If we have to ask you - for more information, it is best if you include all the previous - information in your response, as well as the information that was - missing. - - Please report each bug in a separate message. This makes it easier - for us to track which bugs have been fixed and to forward your bugs - reports to the appropriate maintainer. - - To enable someone to investigate the bug, you should include all - these things: - - * The version of GCC. You can get this by running it with the `-v' - option. - - Without this, we won't know whether there is any point in looking - for the bug in the current version of GCC. - - * A complete input file that will reproduce the bug. If the bug is - in the C preprocessor, send a source file and any header files - that it requires. If the bug is in the compiler proper (`cc1'), - send the preprocessor output generated by adding `-save-temps' to - the compilation command (*note Debugging Options::). When you do - this, use the same `-I', `-D' or `-U' options that you used in - actual compilation. Then send the INPUT.i or INPUT.ii files - generated. - - A single statement is not enough of an example. In order to - compile it, it must be embedded in a complete file of compiler - input; and the bug might depend on the details of how this is done. - - Without a real example one can compile, all anyone can do about - your bug report is wish you luck. It would be futile to try to - guess how to provoke the bug. For example, bugs in register - allocation and reloading frequently depend on every little detail - of the function they happen in. - - Even if the input file that fails comes from a GNU program, you - should still send the complete test case. Don't ask the GCC - maintainers to do the extra work of obtaining the program in - question--they are all overworked as it is. Also, the problem may - depend on what is in the header files on your system; it is - unreliable for the GCC maintainers to try the problem with the - header files available to them. By sending CPP output, you can - eliminate this source of uncertainty and save us a certain - percentage of wild goose chases. - - * The command arguments you gave GCC to compile that example and - observe the bug. For example, did you use `-O'? To guarantee you - won't omit something important, list all the options. - - If we were to try to guess the arguments, we would probably guess - wrong and then we would not encounter the bug. - - * The type of machine you are using, and the operating system name - and version number. - - * The operands you gave to the `configure' command when you installed - the compiler. - - * A complete list of any modifications you have made to the compiler - source. (We don't promise to investigate the bug unless it - happens in an unmodified compiler. But if you've made - modifications and don't tell us, then you are sending us on a wild - goose chase.) - - Be precise about these changes. A description in English is not - enough--send a context diff for them. - - Adding files of your own (such as a machine description for a - machine we don't support) is a modification of the compiler source. - - * Details of any other deviations from the standard procedure for - installing GCC. - - * A description of what behavior you observe that you believe is - incorrect. For example, "The compiler gets a fatal signal," or, - "The assembler instruction at line 208 in the output is incorrect." - - Of course, if the bug is that the compiler gets a fatal signal, - then one can't miss it. But if the bug is incorrect output, the - maintainer might not notice unless it is glaringly wrong. None of - us has time to study all the assembler code from a 50-line C - program just on the chance that one instruction might be wrong. - We need _you_ to do this part! - - Even if the problem you experience is a fatal signal, you should - still say so explicitly. Suppose something strange is going on, - such as, your copy of the compiler is out of synch, or you have - encountered a bug in the C library on your system. (This has - happened!) Your copy might crash and the copy here would not. If - you said to expect a crash, then when the compiler here fails to - crash, we would know that the bug was not happening. If you don't - say to expect a crash, then we would not know whether the bug was - happening. We would not be able to draw any conclusion from our - observations. - - If the problem is a diagnostic when compiling GCC with some other - compiler, say whether it is a warning or an error. - - Often the observed symptom is incorrect output when your program - is run. Sad to say, this is not enough information unless the - program is short and simple. None of us has time to study a large - program to figure out how it would work if compiled correctly, - much less which line of it was compiled wrong. So you will have - to do that. Tell us which source line it is, and what incorrect - result happens when that line is executed. A person who - understands the program can find this as easily as finding a bug - in the program itself. - - * If you send examples of assembler code output from GCC, please use - `-g' when you make them. The debugging information includes - source line numbers which are essential for correlating the output - with the input. - - * If you wish to mention something in the GCC source, refer to it by - context, not by line number. - - The line numbers in the development sources don't match those in - your sources. Your line numbers would convey no useful - information to the maintainers. - - * Additional information from a debugger might enable someone to - find a problem on a machine which he does not have available. - However, you need to think when you collect this information if - you want it to have any chance of being useful. - - For example, many people send just a backtrace, but that is never - useful by itself. A simple backtrace with arguments conveys little - about GCC because the compiler is largely data-driven; the same - functions are called over and over for different RTL insns, doing - different things depending on the details of the insn. - - Most of the arguments listed in the backtrace are useless because - they are pointers to RTL list structure. The numeric values of the - pointers, which the debugger prints in the backtrace, have no - significance whatever; all that matters is the contents of the - objects they point to (and most of the contents are other such - pointers). - - In addition, most compiler passes consist of one or more loops that - scan the RTL insn sequence. The most vital piece of information - about such a loop--which insn it has reached--is usually in a - local variable, not in an argument. - - What you need to provide in addition to a backtrace are the values - of the local variables for several stack frames up. When a local - variable or an argument is an RTX, first print its value and then - use the GDB command `pr' to print the RTL expression that it points - to. (If GDB doesn't run on your machine, use your debugger to call - the function `debug_rtx' with the RTX as an argument.) In - general, whenever a variable is a pointer, its value is no use - without the data it points to. - - Here are some things that are not necessary: - - * A description of the envelope of the bug. - - Often people who encounter a bug spend a lot of time investigating - which changes to the input file will make the bug go away and which - changes will not affect it. - - This is often time consuming and not very useful, because the way - we will find the bug is by running a single example under the - debugger with breakpoints, not by pure deduction from a series of - examples. You might as well save your time for something else. - - Of course, if you can find a simpler example to report _instead_ of - the original one, that is a convenience. Errors in the output - will be easier to spot, running under the debugger will take less - time, etc. Most GCC bugs involve just one function, so the most - straightforward way to simplify an example is to delete all the - function definitions except the one where the bug occurs. Those - earlier in the file may be replaced by external declarations if - the crucial function depends on them. (Exception: inline - functions may affect compilation of functions defined later in the - file.) - - However, simplification is not vital; if you don't want to do this, - report the bug anyway and send the entire test case you used. - - * In particular, some people insert conditionals `#ifdef BUG' around - a statement which, if removed, makes the bug not happen. These - are just clutter; we won't pay any attention to them anyway. - Besides, you should send us cpp output, and that can't have - conditionals. - - * A patch for the bug. - - A patch for the bug is useful if it is a good one. But don't omit - the necessary information, such as the test case, on the - assumption that a patch is all we need. We might see problems - with your patch and decide to fix the problem another way, or we - might not understand it at all. - - Sometimes with a program as complicated as GCC it is very hard to - construct an example that will make the program follow a certain - path through the code. If you don't send the example, we won't be - able to construct one, so we won't be able to verify that the bug - is fixed. - - And if we can't understand what bug you are trying to fix, or why - your patch should be an improvement, we won't install it. A test - case will help us to understand. - - See `http://gcc.gnu.org/contribute.html' for guidelines on how to - make it easy for us to understand and install your patches. - - * A guess about what the bug is or what it depends on. - - Such guesses are usually wrong. Even I can't guess right about - such things without first using the debugger to find the facts. - - * A core dump file. - - We have no way of examining a core dump for your type of machine - unless we have an identical system--and if we do have one, we - should be able to reproduce the crash ourselves. - -  - File: gcc.info, Node: gccbug, Prev: Bug Reporting, Up: Bugs - - The gccbug script - ================= - - To simplify creation of bug reports, and to allow better tracking of - reports, we use the GNATS bug tracking system. Part of that system is - the `gccbug' script. This is a Unix shell script, so you need a shell - to run it. It is normally installed in the same directory where `gcc' - is installed. - - The gccbug script is derived from send-pr, *note Creating new - Problem Reports: (send-pr)using send-pr.. When invoked, it starts a - text editor so you can fill out the various fields of the report. When - the you quit the editor, the report is automatically send to the bug - reporting address. - - A number of fields in this bug report form are specific to GCC, and - are explained at `http://gcc.gnu.org/gnats.html'. - -  - File: gcc.info, Node: Service, Next: Contributing, Prev: Bugs, Up: Top - - How To Get Help with GCC - ************************ - - If you need help installing, using or changing GCC, there are two - ways to find it: - - * Send a message to a suitable network mailing list. First try - (for help installing or using GCC), and if - that brings no response, try . For help changing - GCC, ask . If you think you have found a bug in - GCC, please report it following the instructions at *note Bug - Reporting::. - - * Look in the service directory for someone who might help you for a - fee. The service directory is found at - `http://www.gnu.org/prep/service.html'. - -  - File: gcc.info, Node: Contributing, Next: VMS, Prev: Service, Up: Top - - Contributing to GCC Development - ******************************* - - If you would like to help pretest GCC releases to assure they work - well, our current development sources are available by CVS (see - `http://gcc.gnu.org/cvs.html'). Source and binary snapshots are also - available for FTP; see `http://gcc.gnu.org/snapshots.html'. - - If you would like to work on improvements to GCC, please read the - advice at these URLs: - - `http://gcc.gnu.org/contribute.html' - `http://gcc.gnu.org/contributewhy.html' - - for information on how to make useful contributions and avoid - duplication of effort. Suggested projects are listed at - `http://gcc.gnu.org/projects/'. - -  - File: gcc.info, Node: VMS, Next: Funding, Prev: Contributing, Up: Top - - Using GCC on VMS - **************** - - Here is how to use GCC on VMS. - - * Menu: - - * Include Files and VMS:: Where the preprocessor looks for the include files. - * Global Declarations:: How to do globaldef, globalref and globalvalue with - GCC. - * VMS Misc:: Misc information. - -  - File: gcc.info, Node: Include Files and VMS, Next: Global Declarations, Up: VMS - - Include Files and VMS - ===================== - - Due to the differences between the filesystems of Unix and VMS, GCC - attempts to translate file names in `#include' into names that VMS will - understand. The basic strategy is to prepend a prefix to the - specification of the include file, convert the whole filename to a VMS - filename, and then try to open the file. GCC tries various prefixes - one by one until one of them succeeds: - - 1. The first prefix is the `GNU_CC_INCLUDE:' logical name: this is - where GNU C header files are traditionally stored. If you wish to - store header files in non-standard locations, then you can assign - the logical `GNU_CC_INCLUDE' to be a search list, where each - element of the list is suitable for use with a rooted logical. - - 2. The next prefix tried is `SYS$SYSROOT:[SYSLIB.]'. This is where - VAX-C header files are traditionally stored. - - 3. If the include file specification by itself is a valid VMS - filename, the preprocessor then uses this name with no prefix in - an attempt to open the include file. - - 4. If the file specification is not a valid VMS filename (i.e. does - not contain a device or a directory specifier, and contains a `/' - character), the preprocessor tries to convert it from Unix syntax - to VMS syntax. - - Conversion works like this: the first directory name becomes a - device, and the rest of the directories are converted into - VMS-format directory names. For example, the name `X11/foobar.h' - is translated to `X11:[000000]foobar.h' or `X11:foobar.h', - whichever one can be opened. This strategy allows you to assign a - logical name to point to the actual location of the header files. - - 5. If none of these strategies succeeds, the `#include' fails. - - Include directives of the form: - - #include foobar - - are a common source of incompatibility between VAX-C and GCC. VAX-C - treats this much like a standard `#include ' directive. That - is incompatible with the ISO C behavior implemented by GCC: to expand - the name `foobar' as a macro. Macro expansion should eventually yield - one of the two standard formats for `#include': - - #include "FILE" - #include - - If you have this problem, the best solution is to modify the source - to convert the `#include' directives to one of the two standard forms. - That will work with either compiler. If you want a quick and dirty fix, - define the file names as macros with the proper expansion, like this: - - #define stdio - - This will work, as long as the name doesn't conflict with anything else - in the program. - - Another source of incompatibility is that VAX-C assumes that: - - #include "foobar" - - is actually asking for the file `foobar.h'. GCC does not make this - assumption, and instead takes what you ask for literally; it tries to - read the file `foobar'. The best way to avoid this problem is to - always specify the desired file extension in your include directives. - - GCC for VMS is distributed with a set of include files that is - sufficient to compile most general purpose programs. Even though the - GCC distribution does not contain header files to define constants and - structures for some VMS system-specific functions, there is no reason - why you cannot use GCC with any of these functions. You first may have - to generate or create header files, either by using the public domain - utility `UNSDL' (which can be found on a DECUS tape), or by extracting - the relevant modules from one of the system macro libraries, and using - an editor to construct a C header file. - - A `#include' file name cannot contain a DECNET node name. The - preprocessor reports an I/O error if you attempt to use a node name, - whether explicitly, or implicitly via a logical name. - --- 1017,1019 ---- diff -Nrc3pad gcc-3.2/gcc/doc/gcc.info-2 gcc-3.2.1/gcc/doc/gcc.info-2 *** gcc-3.2/gcc/doc/gcc.info-2 Wed Aug 14 09:36:33 2002 --- gcc-3.2.1/gcc/doc/gcc.info-2 Tue Nov 19 18:17:12 2002 *************** from C, such as C++ and Objective-C) tha *** 335,345 **** single precision, use this option. This option has no effect when compiling with ISO or GNU C conventions (the default). - `-fshort-wchar' - Override the underlying type for `wchar_t' to be `short unsigned - int' instead of the default for the target. This option is useful - for building programs to run under WINE. -  File: gcc.info, Node: C++ Dialect Options, Next: Objective-C Dialect Options, Prev: C Dialect Options, Up: Invoking GCC --- 335,340 ---- *************** have meanings only for C++ programs: *** 559,564 **** --- 554,601 ---- that these functions will have linkage like inline functions; they just won't be inlined by default. + `-Wabi (C++ only)' + Warn when G++ generates code that is probably not compatible with + the vendor-neutral C++ ABI. Although an effort has been made to + warn about all such cases, there are probably some cases that are + not warned about, even though G++ is generating incompatible code. + There may also be cases where warnings are emitted even though + the code that is generated will be compatible. + + You should rewrite your code to avoid these warnings if you are + concerned about the fact that code generated by G++ may not be + binary compatible with code generated by other compilers. + + The known incompatibilites at this point include: + + * Incorrect handling of tail-padding for bit-fields. G++ may + attempt to pack data into the same byte as a base class. For + example: + + struct A { virtual void f(); int f1 : 1; }; + struct B : public A { int f2 : 1; }; + + In this case, G++ will place `B::f2' into the same byte + as`A::f1'; other compilers will not. You can avoid this + problem by explicitly padding `A' so that its size is a + multiple of the byte size on your platform; that will cause + G++ and other compilers to layout `B' identically. + + * Incorrect handling of tail-padding for virtual bases. G++ + does not use tail padding when laying out virtual bases. For + example: + + struct A { virtual void f(); char c1; }; + struct B { B(); char c2; }; + struct C : public A, public virtual B {}; + + In this case, G++ will not place `B' into the tail-padding for + `A'; other compilers will. You can avoid this problem by + explicitly padding `A' so that its size is a multiple of its + alignment (ignoring virtual base classes); that will cause + G++ and other compilers to layout `C' identically. + + `-Wctor-dtor-privacy (C++ only)' Warn when a class seems unusable, because all the constructors or destructors in a class are private and the class has no friends or diff -Nrc3pad gcc-3.2/gcc/doc/gcc.info-20 gcc-3.2.1/gcc/doc/gcc.info-20 *** gcc-3.2/gcc/doc/gcc.info-20 Wed Aug 14 09:36:33 2002 --- gcc-3.2.1/gcc/doc/gcc.info-20 Tue Nov 19 18:17:12 2002 *************** software. Copies published by the Free *** 33,38 **** --- 33,451 ---- funds for GNU development.  + File: gcc.info, Node: Bug Reporting, Next: gccbug, Prev: Bug Lists, Up: Bugs + + How to Report Bugs + ================== + + The fundamental principle of reporting bugs usefully is this: + *report all the facts*. If you are not sure whether to state a fact or + leave it out, state it! + + Often people omit facts because they think they know what causes the + problem and they conclude that some details don't matter. Thus, you + might assume that the name of the variable you use in an example does + not matter. Well, probably it doesn't, but one cannot be sure. + Perhaps the bug is a stray memory reference which happens to fetch from + the location where that name is stored in memory; perhaps, if the name + were different, the contents of that location would fool the compiler + into doing the right thing despite the bug. Play it safe and give a + specific, complete example. That is the easiest thing for you to do, + and the most helpful. + + Keep in mind that the purpose of a bug report is to enable someone to + fix the bug if it is not known. It isn't very important what happens if + the bug is already known. Therefore, always write your bug reports on + the assumption that the bug is not known. + + Sometimes people give a few sketchy facts and ask, "Does this ring a + bell?" This cannot help us fix a bug, so it is basically useless. We + respond by asking for enough details to enable us to investigate. You + might as well expedite matters by sending them to begin with. + + Try to make your bug report self-contained. If we have to ask you + for more information, it is best if you include all the previous + information in your response, as well as the information that was + missing. + + Please report each bug in a separate message. This makes it easier + for us to track which bugs have been fixed and to forward your bugs + reports to the appropriate maintainer. + + To enable someone to investigate the bug, you should include all + these things: + + * The version of GCC. You can get this by running it with the `-v' + option. + + Without this, we won't know whether there is any point in looking + for the bug in the current version of GCC. + + * A complete input file that will reproduce the bug. If the bug is + in the C preprocessor, send a source file and any header files + that it requires. If the bug is in the compiler proper (`cc1'), + send the preprocessor output generated by adding `-save-temps' to + the compilation command (*note Debugging Options::). When you do + this, use the same `-I', `-D' or `-U' options that you used in + actual compilation. Then send the INPUT.i or INPUT.ii files + generated. + + A single statement is not enough of an example. In order to + compile it, it must be embedded in a complete file of compiler + input; and the bug might depend on the details of how this is done. + + Without a real example one can compile, all anyone can do about + your bug report is wish you luck. It would be futile to try to + guess how to provoke the bug. For example, bugs in register + allocation and reloading frequently depend on every little detail + of the function they happen in. + + Even if the input file that fails comes from a GNU program, you + should still send the complete test case. Don't ask the GCC + maintainers to do the extra work of obtaining the program in + question--they are all overworked as it is. Also, the problem may + depend on what is in the header files on your system; it is + unreliable for the GCC maintainers to try the problem with the + header files available to them. By sending CPP output, you can + eliminate this source of uncertainty and save us a certain + percentage of wild goose chases. + + * The command arguments you gave GCC to compile that example and + observe the bug. For example, did you use `-O'? To guarantee you + won't omit something important, list all the options. + + If we were to try to guess the arguments, we would probably guess + wrong and then we would not encounter the bug. + + * The type of machine you are using, and the operating system name + and version number. + + * The operands you gave to the `configure' command when you installed + the compiler. + + * A complete list of any modifications you have made to the compiler + source. (We don't promise to investigate the bug unless it + happens in an unmodified compiler. But if you've made + modifications and don't tell us, then you are sending us on a wild + goose chase.) + + Be precise about these changes. A description in English is not + enough--send a context diff for them. + + Adding files of your own (such as a machine description for a + machine we don't support) is a modification of the compiler source. + + * Details of any other deviations from the standard procedure for + installing GCC. + + * A description of what behavior you observe that you believe is + incorrect. For example, "The compiler gets a fatal signal," or, + "The assembler instruction at line 208 in the output is incorrect." + + Of course, if the bug is that the compiler gets a fatal signal, + then one can't miss it. But if the bug is incorrect output, the + maintainer might not notice unless it is glaringly wrong. None of + us has time to study all the assembler code from a 50-line C + program just on the chance that one instruction might be wrong. + We need _you_ to do this part! + + Even if the problem you experience is a fatal signal, you should + still say so explicitly. Suppose something strange is going on, + such as, your copy of the compiler is out of synch, or you have + encountered a bug in the C library on your system. (This has + happened!) Your copy might crash and the copy here would not. If + you said to expect a crash, then when the compiler here fails to + crash, we would know that the bug was not happening. If you don't + say to expect a crash, then we would not know whether the bug was + happening. We would not be able to draw any conclusion from our + observations. + + If the problem is a diagnostic when compiling GCC with some other + compiler, say whether it is a warning or an error. + + Often the observed symptom is incorrect output when your program + is run. Sad to say, this is not enough information unless the + program is short and simple. None of us has time to study a large + program to figure out how it would work if compiled correctly, + much less which line of it was compiled wrong. So you will have + to do that. Tell us which source line it is, and what incorrect + result happens when that line is executed. A person who + understands the program can find this as easily as finding a bug + in the program itself. + + * If you send examples of assembler code output from GCC, please use + `-g' when you make them. The debugging information includes + source line numbers which are essential for correlating the output + with the input. + + * If you wish to mention something in the GCC source, refer to it by + context, not by line number. + + The line numbers in the development sources don't match those in + your sources. Your line numbers would convey no useful + information to the maintainers. + + * Additional information from a debugger might enable someone to + find a problem on a machine which he does not have available. + However, you need to think when you collect this information if + you want it to have any chance of being useful. + + For example, many people send just a backtrace, but that is never + useful by itself. A simple backtrace with arguments conveys little + about GCC because the compiler is largely data-driven; the same + functions are called over and over for different RTL insns, doing + different things depending on the details of the insn. + + Most of the arguments listed in the backtrace are useless because + they are pointers to RTL list structure. The numeric values of the + pointers, which the debugger prints in the backtrace, have no + significance whatever; all that matters is the contents of the + objects they point to (and most of the contents are other such + pointers). + + In addition, most compiler passes consist of one or more loops that + scan the RTL insn sequence. The most vital piece of information + about such a loop--which insn it has reached--is usually in a + local variable, not in an argument. + + What you need to provide in addition to a backtrace are the values + of the local variables for several stack frames up. When a local + variable or an argument is an RTX, first print its value and then + use the GDB command `pr' to print the RTL expression that it points + to. (If GDB doesn't run on your machine, use your debugger to call + the function `debug_rtx' with the RTX as an argument.) In + general, whenever a variable is a pointer, its value is no use + without the data it points to. + + Here are some things that are not necessary: + + * A description of the envelope of the bug. + + Often people who encounter a bug spend a lot of time investigating + which changes to the input file will make the bug go away and which + changes will not affect it. + + This is often time consuming and not very useful, because the way + we will find the bug is by running a single example under the + debugger with breakpoints, not by pure deduction from a series of + examples. You might as well save your time for something else. + + Of course, if you can find a simpler example to report _instead_ of + the original one, that is a convenience. Errors in the output + will be easier to spot, running under the debugger will take less + time, etc. Most GCC bugs involve just one function, so the most + straightforward way to simplify an example is to delete all the + function definitions except the one where the bug occurs. Those + earlier in the file may be replaced by external declarations if + the crucial function depends on them. (Exception: inline + functions may affect compilation of functions defined later in the + file.) + + However, simplification is not vital; if you don't want to do this, + report the bug anyway and send the entire test case you used. + + * In particular, some people insert conditionals `#ifdef BUG' around + a statement which, if removed, makes the bug not happen. These + are just clutter; we won't pay any attention to them anyway. + Besides, you should send us cpp output, and that can't have + conditionals. + + * A patch for the bug. + + A patch for the bug is useful if it is a good one. But don't omit + the necessary information, such as the test case, on the + assumption that a patch is all we need. We might see problems + with your patch and decide to fix the problem another way, or we + might not understand it at all. + + Sometimes with a program as complicated as GCC it is very hard to + construct an example that will make the program follow a certain + path through the code. If you don't send the example, we won't be + able to construct one, so we won't be able to verify that the bug + is fixed. + + And if we can't understand what bug you are trying to fix, or why + your patch should be an improvement, we won't install it. A test + case will help us to understand. + + See `http://gcc.gnu.org/contribute.html' for guidelines on how to + make it easy for us to understand and install your patches. + + * A guess about what the bug is or what it depends on. + + Such guesses are usually wrong. Even I can't guess right about + such things without first using the debugger to find the facts. + + * A core dump file. + + We have no way of examining a core dump for your type of machine + unless we have an identical system--and if we do have one, we + should be able to reproduce the crash ourselves. + +  + File: gcc.info, Node: gccbug, Prev: Bug Reporting, Up: Bugs + + The gccbug script + ================= + + To simplify creation of bug reports, and to allow better tracking of + reports, we use the GNATS bug tracking system. Part of that system is + the `gccbug' script. This is a Unix shell script, so you need a shell + to run it. It is normally installed in the same directory where `gcc' + is installed. + + The gccbug script is derived from send-pr, *note Creating new + Problem Reports: (send-pr)using send-pr.. When invoked, it starts a + text editor so you can fill out the various fields of the report. When + the you quit the editor, the report is automatically send to the bug + reporting address. + + A number of fields in this bug report form are specific to GCC, and + are explained at `http://gcc.gnu.org/gnats.html'. + +  + File: gcc.info, Node: Service, Next: Contributing, Prev: Bugs, Up: Top + + How To Get Help with GCC + ************************ + + If you need help installing, using or changing GCC, there are two + ways to find it: + + * Send a message to a suitable network mailing list. First try + (for help installing or using GCC), and if + that brings no response, try . For help changing + GCC, ask . If you think you have found a bug in + GCC, please report it following the instructions at *note Bug + Reporting::. + + * Look in the service directory for someone who might help you for a + fee. The service directory is found at + `http://www.gnu.org/prep/service.html'. + +  + File: gcc.info, Node: Contributing, Next: VMS, Prev: Service, Up: Top + + Contributing to GCC Development + ******************************* + + If you would like to help pretest GCC releases to assure they work + well, our current development sources are available by CVS (see + `http://gcc.gnu.org/cvs.html'). Source and binary snapshots are also + available for FTP; see `http://gcc.gnu.org/snapshots.html'. + + If you would like to work on improvements to GCC, please read the + advice at these URLs: + + `http://gcc.gnu.org/contribute.html' + `http://gcc.gnu.org/contributewhy.html' + + for information on how to make useful contributions and avoid + duplication of effort. Suggested projects are listed at + `http://gcc.gnu.org/projects/'. + +  + File: gcc.info, Node: VMS, Next: Funding, Prev: Contributing, Up: Top + + Using GCC on VMS + **************** + + Here is how to use GCC on VMS. + + * Menu: + + * Include Files and VMS:: Where the preprocessor looks for the include files. + * Global Declarations:: How to do globaldef, globalref and globalvalue with + GCC. + * VMS Misc:: Misc information. + +  + File: gcc.info, Node: Include Files and VMS, Next: Global Declarations, Up: VMS + + Include Files and VMS + ===================== + + Due to the differences between the filesystems of Unix and VMS, GCC + attempts to translate file names in `#include' into names that VMS will + understand. The basic strategy is to prepend a prefix to the + specification of the include file, convert the whole filename to a VMS + filename, and then try to open the file. GCC tries various prefixes + one by one until one of them succeeds: + + 1. The first prefix is the `GNU_CC_INCLUDE:' logical name: this is + where GNU C header files are traditionally stored. If you wish to + store header files in non-standard locations, then you can assign + the logical `GNU_CC_INCLUDE' to be a search list, where each + element of the list is suitable for use with a rooted logical. + + 2. The next prefix tried is `SYS$SYSROOT:[SYSLIB.]'. This is where + VAX-C header files are traditionally stored. + + 3. If the include file specification by itself is a valid VMS + filename, the preprocessor then uses this name with no prefix in + an attempt to open the include file. + + 4. If the file specification is not a valid VMS filename (i.e. does + not contain a device or a directory specifier, and contains a `/' + character), the preprocessor tries to convert it from Unix syntax + to VMS syntax. + + Conversion works like this: the first directory name becomes a + device, and the rest of the directories are converted into + VMS-format directory names. For example, the name `X11/foobar.h' + is translated to `X11:[000000]foobar.h' or `X11:foobar.h', + whichever one can be opened. This strategy allows you to assign a + logical name to point to the actual location of the header files. + + 5. If none of these strategies succeeds, the `#include' fails. + + Include directives of the form: + + #include foobar + + are a common source of incompatibility between VAX-C and GCC. VAX-C + treats this much like a standard `#include ' directive. That + is incompatible with the ISO C behavior implemented by GCC: to expand + the name `foobar' as a macro. Macro expansion should eventually yield + one of the two standard formats for `#include': + + #include "FILE" + #include + + If you have this problem, the best solution is to modify the source + to convert the `#include' directives to one of the two standard forms. + That will work with either compiler. If you want a quick and dirty fix, + define the file names as macros with the proper expansion, like this: + + #define stdio + + This will work, as long as the name doesn't conflict with anything else + in the program. + + Another source of incompatibility is that VAX-C assumes that: + + #include "foobar" + + is actually asking for the file `foobar.h'. GCC does not make this + assumption, and instead takes what you ask for literally; it tries to + read the file `foobar'. The best way to avoid this problem is to + always specify the desired file extension in your include directives. + + GCC for VMS is distributed with a set of include files that is + sufficient to compile most general purpose programs. Even though the + GCC distribution does not contain header files to define constants and + structures for some VMS system-specific functions, there is no reason + why you cannot use GCC with any of these functions. You first may have + to generate or create header files, either by using the public domain + utility `UNSDL' (which can be found on a DECUS tape), or by extracting + the relevant modules from one of the system macro libraries, and using + an editor to construct a C header file. + + A `#include' file name cannot contain a DECNET node name. The + preprocessor reports an I/O error if you attempt to use a node name, + whether explicitly, or implicitly via a logical name. + +  File: gcc.info, Node: Global Declarations, Next: VMS Misc, Prev: Include Files and VMS, Up: VMS Global Declarations and VMS diff -Nrc3pad gcc-3.2/gcc/doc/gcc.info-21 gcc-3.2.1/gcc/doc/gcc.info-21 *** gcc-3.2/gcc/doc/gcc.info-21 Wed Aug 14 09:36:33 2002 --- gcc-3.2.1/gcc/doc/gcc.info-21 Tue Nov 19 18:17:12 2002 *************** been. Any omissions in this list are ac *** 430,444 **** contributions are not listed. Please keep this list in alphabetical order. - Some projects operating under the GCC project maintain their own list - of contributors, such as the C++ library - (http://gcc.gnu.org/libstdc++/). - * Analog Devices helped implement the support for complex data types and iterators. ! * John David Anglin for improvements to libstdc++-v3 and the HP-UX ! port. * James van Artsdalen wrote the code that makes efficient use of the Intel 80387 register stack. --- 430,440 ---- contributions are not listed. Please keep this list in alphabetical order. * Analog Devices helped implement the support for complex data types and iterators. ! * John David Anglin for threading-related fixes and improvements to ! libstdc++-v3, and the HP-UX port. * James van Artsdalen wrote the code that makes efficient use of the Intel 80387 register stack. *************** of contributors, such as the C++ library *** 448,461 **** * Gerald Baumgartner added the signature extension to the C++ front end. * Neil Booth for work on cpplib, lang hooks, debug hooks and other miscellaneous clean-ups. * Per Bothner for his direction via the steering committee and various improvements to our infrastructure for supporting new ! languages. Chill and Java front end implementations. Initial implementations of cpplib, fix-header, config.guess, libio, and ! past C++ library (libg++) maintainer. * Devon Bowen helped port GCC to the Tahoe. --- 444,473 ---- * Gerald Baumgartner added the signature extension to the C++ front end. + * Godmar Back for his Java improvements and encouragement. + + * Scott Bambrough for help porting the Java compiler. + + * Jon Beniston for his Win32 port of Java. + + * Geoff Berry for his Java object serialization work and various + patches. + + * Eric Blake for helping to make GCJ and libgcj conform to the + specifications. + + * Hans-J. Boehm for his garbage collector, IA-64 libffi port, and + other Java work. + * Neil Booth for work on cpplib, lang hooks, debug hooks and other miscellaneous clean-ups. * Per Bothner for his direction via the steering committee and various improvements to our infrastructure for supporting new ! languages. Chill front end implementation. Initial implementations of cpplib, fix-header, config.guess, libio, and ! past C++ library (libg++) maintainer. Dreaming up, designing and ! implementing much of GCJ. * Devon Bowen helped port GCC to the Tahoe. *************** of contributors, such as the C++ library *** 469,494 **** * Herman A.J. ten Brugge for various fixes. * Joe Buck for his direction via the steering committee. * Craig Burley for leadership of the Fortran effort. ! * Paolo Carlini for his work on libstdc++-v3. * John Carr for his alias work, SPARC hacking, infrastructure improvements, previous contributions to the steering committee, loop optimizations, etc. ! * Steve Chamberlain wrote the support for the Hitachi SH and H8 ! processors and the PicoJava processor. * Scott Christley for his Objective-C contributions. * Branko Cibej for more warning contributions. * Nick Clifton for arm, mcore, fr30, v850, m32r work, `--help', and other random hacking. * Ralf Corsepius for SH testing and minor bugfixing. * Stan Cox for care and feeding of the x86 port and lots of behind --- 481,523 ---- * Herman A.J. ten Brugge for various fixes. + * Joerg Brunsmann for Java compiler hacking and help with the GCJ + FAQ. + * Joe Buck for his direction via the steering committee. * Craig Burley for leadership of the Fortran effort. ! * Stephan Buys for contributing Doxygen notes for libstdc++. ! ! * Paolo Carlini for libstdc++ work: lots of efficiency improvements ! to the string class, hard detective work on the frustrating ! localization issues, and keeping up with the problem reports. * John Carr for his alias work, SPARC hacking, infrastructure improvements, previous contributions to the steering committee, loop optimizations, etc. ! * Steve Chamberlain for support for the Hitachi SH and H8 processors ! and the PicoJava processor, and for GCJ config fixes. ! ! * Glenn Chambers for help with the GCJ FAQ. ! ! * John-Marc Chandonia for various libgcj patches. * Scott Christley for his Objective-C contributions. + * Eric Christopher for his Java porting help and clean-ups. + * Branko Cibej for more warning contributions. + * The GNU Classpath project for all of their merged runtime code. + * Nick Clifton for arm, mcore, fr30, v850, m32r work, `--help', and other random hacking. + * Michael Cook for libstdc++ cleanup patches to reduce warnings. + * Ralf Corsepius for SH testing and minor bugfixing. * Stan Cox for care and feeding of the x86 port and lots of behind *************** of contributors, such as the C++ library *** 501,519 **** * Dario Dariol contributed the four varieties of sample programs that print a copy of their source. ! * Ulrich Drepper for his work on the C++ runtime libraries, glibc, ! testing of GCC using glibc, ISO C99 support, CFG dumping support, ! etc. * Richard Earnshaw for his ongoing work with the ARM. * David Edelsohn for his direction via the steering committee, ! ongoing work with the RS6000/PowerPC port, and help cleaning up ! Haifa loop changes. * Paul Eggert for random hacking all over GCC. ! * Mark Elbrecht for various DJGPP improvements. * Ben Elliston for his work to move the Objective-C runtime into its own subdirectory and for his work on autoconf. --- 530,574 ---- * Dario Dariol contributed the four varieties of sample programs that print a copy of their source. ! * Russell Davidson for fstream and stringstream fixes in libstdc++. ! ! * Mo DeJong for GCJ and libgcj bug fixes. ! ! * Gabriel Dos Reis for contributions to g++, contributions and ! maintenance of GCC diagnostics infrastructure, libstdc++-v3, ! including valarray<>, complex<>, maintaining the numerics library ! (including that pesky :-) and keeping up-to-date anything ! to do with numbers. ! ! * Ulrich Drepper for his work on glibc, testing of GCC using glibc, ! ISO C99 support, CFG dumping support, etc., plus support of the ! C++ runtime libraries including for all kinds of C interface ! issues, contributing and maintaining complex<>, sanity checking ! and disbursement, configuration architecture, libio maintenance, ! and early math work. * Richard Earnshaw for his ongoing work with the ARM. * David Edelsohn for his direction via the steering committee, ! ongoing work with the RS6000/PowerPC port, help cleaning up Haifa ! loop changes, and for doing the entire AIX port of libstdc++ with ! his bare hands. ! ! * Kevin Ediger for the floating point formatting of num_put::do_put ! in libstdc++. ! ! * Phil Edwards for libstdc++ work including configuration hackery, ! documentation maintainer, chief breaker of the web pages, the ! occasional iostream bugfix, and work on shared library symbol ! versioning. * Paul Eggert for random hacking all over GCC. ! * Mark Elbrecht for various DJGPP improvements, and for libstdc++ ! configuration support for locales and fstream-related fixes. ! ! * Vadim Egorov for libstdc++ fixes in strings, streambufs, and ! iostreams. * Ben Elliston for his work to move the Objective-C runtime into its own subdirectory and for his work on autoconf. *************** of contributors, such as the C++ library *** 525,535 **** --- 580,595 ---- * Fred Fish for BeOS support and Ada fixes. + * Ivan Fontes Garcia for the Portugese translation of the GCJ FAQ. + * Peter Gerwinski for various bugfixes and the Pascal front end. * Kaveh Ghazi for his direction via the steering committee and amazing work to make `-W -Wall' useful. + * John Gilmore for a donation to the FSF earmarked improving GNU + Java. + * Judy Goldberg for c++ contributions. * Torbjorn Granlund for various fixes and the c-torture testsuite, *************** of contributors, such as the C++ library *** 539,544 **** --- 599,607 ---- * Anthony Green for his `-Os' contributions and Java front end work. + * Stu Grossman for gdb hacking, allowing GCJ developers to debug our + code. + * Michael K. Gschwind contributed the port to the PDP-11. * Ron Guilmette implemented the `protoize' and `unprotoize' tools, *************** of contributors, such as the C++ library *** 549,555 **** * Bruno Haible for improvements in the runtime overhead for EH, new warnings and assorted bugfixes. ! * Andrew Haley for his Java work. * Chris Hanson assisted in making GCC work on HP-UX for the 9000 series 300. --- 612,618 ---- * Bruno Haible for improvements in the runtime overhead for EH, new warnings and assorted bugfixes. ! * Andrew Haley for his amazing Java compiler and library efforts. * Chris Hanson assisted in making GCC work on HP-UX for the 9000 series 300. *************** of contributors, such as the C++ library *** 584,605 **** * Andreas Jaeger for various fixes to the MIPS port * Jakub Jelinek for his SPARC work and sibling call optimizations as ! well as lots of bug fixes and test cases. * Janis Johnson for ia64 testing and fixes and for her quality improvement sidetracks. * J. Kean Johnston for OpenServer support. * Klaus Kaempf for his ongoing work to make alpha-vms a viable target. * David Kashtan of SRI adapted GCC to VMS. * Geoffrey Keating for his ongoing work to make the PPC work for GNU/Linux and his automatic regression tester. ! * Brendan Kehoe for his ongoing work with g++. * Oliver M. Kellogg of Deutsche Aerospace contributed the port to the MIL-STD-1750A. --- 647,679 ---- * Andreas Jaeger for various fixes to the MIPS port * Jakub Jelinek for his SPARC work and sibling call optimizations as ! well as lots of bug fixes and test cases, and for improving the ! Java build system. * Janis Johnson for ia64 testing and fixes and for her quality improvement sidetracks. * J. Kean Johnston for OpenServer support. + * Tim Josling for the sample language treelang based originally on + Richard Kenner's ""toy" language". + + * Nicolai Josuttis for additional libstdc++ documentation. + * Klaus Kaempf for his ongoing work to make alpha-vms a viable target. * David Kashtan of SRI adapted GCC to VMS. + * Ryszard Kabatek for many, many libstdc++ bugfixes and + optimizations of strings, especially member functions, and for + auto_ptr fixes. + * Geoffrey Keating for his ongoing work to make the PPC work for GNU/Linux and his automatic regression tester. ! * Brendan Kehoe for his ongoing work with g++ and for a lot of early ! work in just about every part of libstdc++. * Oliver M. Kellogg of Deutsche Aerospace contributed the port to the MIL-STD-1750A. *************** of contributors, such as the C++ library *** 615,622 **** scheduling. Richard Kenner was also the head maintainer of GCC for several years. ! * Mumit Khan for various contributions to the cygwin and mingw32 ! ports and maintaining binary releases for Windows hosts. * Robin Kirkham for cpu32 support. --- 689,697 ---- scheduling. Richard Kenner was also the head maintainer of GCC for several years. ! * Mumit Khan for various contributions to the Cygwin and Mingw32 ! ports and maintaining binary releases for Windows hosts, and for ! massive libstdc++ porting work to Cygwin/Mingw32. * Robin Kirkham for cpu32 support. *************** of contributors, such as the C++ library *** 646,656 **** * Kriang Lerdsuwanakij for improvements to demangler and various c++ fixes. ! * Warren Levy major work on libgcj (Java Runtime Library) and random ! work on the Java front end. * Alain Lichnewsky ported GCC to the MIPS CPU. * Robert Lipe for OpenServer support, new testsuites, testing, etc. * Weiwen Liu for testing and various bugfixes. --- 721,734 ---- * Kriang Lerdsuwanakij for improvements to demangler and various c++ fixes. ! * Warren Levy for tremendous work on libgcj (Java Runtime Library) ! and random work on the Java front end. * Alain Lichnewsky ported GCC to the MIPS CPU. + * Oskar Liljeblad for hacking on AWT and his many Java bug reports + and patches. + * Robert Lipe for OpenServer support, new testsuites, testing, etc. * Weiwen Liu for testing and various bugfixes. *************** of contributors, such as the C++ library *** 659,665 **** runtime libraries. * Martin von Lo"wis for internal consistency checking infrastructure, ! and various C++ improvements including namespace support. * H.J. Lu for his previous contributions to the steering committee, many x86 bug reports, prototype patches, and keeping the GNU/Linux --- 737,744 ---- runtime libraries. * Martin von Lo"wis for internal consistency checking infrastructure, ! various C++ improvements including namespace support, and tons of ! assistance with libstdc++/compiler merges. * H.J. Lu for his previous contributions to the steering committee, many x86 bug reports, prototype patches, and keeping the GNU/Linux *************** of contributors, such as the C++ library *** 672,682 **** optimizer, etc. * Vladimir Makarov for hacking some ugly i960 problems, PowerPC ! hacking improvements to compile-time performance and overall ! knowledge and direction in the area of instruction scheduling. * Bob Manson for his behind the scenes work on dejagnu. * Michael Meissner for LRS framework, ia32, m32r, v850, m88k, MIPS, powerpc, haifa, ECOFF debug support, and other assorted hacking. --- 751,772 ---- optimizer, etc. * Vladimir Makarov for hacking some ugly i960 problems, PowerPC ! hacking improvements to compile-time performance, overall ! knowledge and direction in the area of instruction scheduling, and ! design and implementation of the automaton based instruction ! scheduler. * Bob Manson for his behind the scenes work on dejagnu. + * Philip Martin for lots of libstdc++ string and vector iterator + fixes and improvements, and string clean up and testsuites. + + * All of the Mauve project contributors, for Java test code. + + * Bryce McKinlay for numerous GCJ and libgcj fixes and improvements. + + * Adam Megacz for his work on the Win32 port of GCJ. + * Michael Meissner for LRS framework, ia32, m32r, v850, m88k, MIPS, powerpc, haifa, ECOFF debug support, and other assorted hacking. *************** of contributors, such as the C++ library *** 689,694 **** --- 779,787 ---- * Gary Miller ported GCC to Charles River Data Systems machines. + * Alfred Minarik for libstdc++ string and ios bugfixes, and turning + the entire libstdc++ testsuite namespace-compatible. + * Mark Mitchell for his direction via the steering committee, mountains of C++ work, load/store hoisting out of loops, alias analysis improvements, ISO C `restrict' support, and serving as *************** of contributors, such as the C++ library *** 701,712 **** * Jason Molenda for major help in the care and feeding of all the services on the gcc.gnu.org (formerly egcs.cygnus.com) ! machine--mail, web services, ftp services, etc etc. * Catherine Moore for fixing various ugly problems we have sent her way, including the haifa bug which was killing the Alpha & PowerPC Linux kernels. * David Mosberger-Tang for various Alpha improvements. * Stephen Moshier contributed the floating point emulator that --- 794,809 ---- * Jason Molenda for major help in the care and feeding of all the services on the gcc.gnu.org (formerly egcs.cygnus.com) ! machine--mail, web services, ftp services, etc etc. Doing all ! this work on scrap paper and the backs of envelopes would have ! been... difficult. * Catherine Moore for fixing various ugly problems we have sent her way, including the haifa bug which was killing the Alpha & PowerPC Linux kernels. + * Mike Moreton for his various Java patches. + * David Mosberger-Tang for various Alpha improvements. * Stephen Moshier contributed the floating point emulator that *************** of contributors, such as the C++ library *** 721,727 **** and ISO C99 support, and continuous emphasis on (and contributions to) documentation. ! * Nathan Myers for his work on libstdc++-v3. * NeXT, Inc. donated the front end that supports the Objective-C language. --- 818,830 ---- and ISO C99 support, and continuous emphasis on (and contributions to) documentation. ! * Nathan Myers for his work on libstdc++-v3: architecture and ! authorship through the first three snapshots, including ! implementation of locale infrastructure, string, shadow C headers, ! and the initial project documentation (DESIGN, CHECKLIST, and so ! forth). Later, more work on MT-safe string and shadow headers. ! ! * Felix Natter for documentation on porting libstdc++. * NeXT, Inc. donated the front end that supports the Objective-C language. *************** of contributors, such as the C++ library *** 737,752 **** related infrastructure improvements. * Alexandre Oliva for various build infrastructure improvements, ! scripts and amazing testing work. * Melissa O'Neill for various NeXT fixes. * Rainer Orth for random MIPS work, including improvements to our o32 ! ABI support, improvements to dejagnu's MIPS support, etc. * Paul Petersen wrote the machine description for the Alliant FX/8. ! * Alexandre Petit-Bianco for his Java work. * Matthias Pfaller for major improvements to the NS32k port. --- 840,858 ---- related infrastructure improvements. * Alexandre Oliva for various build infrastructure improvements, ! scripts and amazing testing work, including keeping libtool issues ! sane and happy. * Melissa O'Neill for various NeXT fixes. * Rainer Orth for random MIPS work, including improvements to our o32 ! ABI support, improvements to dejagnu's MIPS support, Java ! configuration clean-ups and porting work, etc. * Paul Petersen wrote the machine description for the Alliant FX/8. ! * Alexandre Petit-Bianco for implementing much of the Java compiler ! and continued Java maintainership. * Matthias Pfaller for major improvements to the NS32k port. *************** of contributors, such as the C++ library *** 760,776 **** * Ken Raeburn for various improvements to checker, MIPS ports and various cleanups in the compiler. * David Reese of Sun Microsystems contributed to the Solaris on PowerPC port. - * Gabriel Dos Reis for contributions and maintenance of libstdc++-v3, - including valarray implementation and limits support. - * Joern Rennecke for maintaining the sh port, loop, regmove & reload hacking. ! * Loren J. Rittle for improvements to libstdc++-v3 and the FreeBSD ! port. * Craig Rodrigues for processing tons of bug reports. --- 866,883 ---- * Ken Raeburn for various improvements to checker, MIPS ports and various cleanups in the compiler. + * Rolf W. Rasmussen for hacking on AWT. + * David Reese of Sun Microsystems contributed to the Solaris on PowerPC port. * Joern Rennecke for maintaining the sh port, loop, regmove & reload hacking. ! * Loren J. Rittle for improvements to libstdc++-v3 including the ! FreeBSD port, threading fixes, thread-related configury changes, ! critical threading documentation, and solutions to really tricky ! I/O problems. * Craig Rodrigues for processing tons of bug reports. *************** of contributors, such as the C++ library *** 780,790 **** --- 887,902 ---- * Paul Rubin wrote most of the preprocessor. + * Chip Salzenberg for libstdc++ patches and improvements to locales, + traits, Makefiles, libio, libtool hackery, and "long long" support. + * Juha Sarlin for improvements to the H8 code generator. * Greg Satz assisted in making GCC work on HP-UX for the 9000 series 300. + * Bradley Schatz for his work on the GCJ FAQ. + * Peter Schauer wrote the code to allow debugging to work on the Alpha. *************** of contributors, such as the C++ library *** 794,799 **** --- 906,917 ---- work in the reload pass as well a serving as release manager for GCC 2.95.3. + * Peter Schmid for constant testing of libstdc++ - especially + application testing, going above and beyond what was requested for + the release criteria - and libstdc++ header file tweaks. + + * Jason Schroeder for jcf-dump patches. + * Andreas Schwab for his work on the m68k port. * Joel Sherrill for his direction via the steering committee, RTEMS *************** of contributors, such as the C++ library *** 805,810 **** --- 923,932 ---- some code which handles the parse tree and RTL data structures, constant folding and help with the original VAX & m68k ports. + * Kenny Simpson for prompting libstdc++ fixes due to defect reports + from the LWG (thereby keeping us in line with updates from the + ISO). + * Franz Sirl for his ongoing work with making the PPC port stable for linux. *************** of contributors, such as the C++ library *** 814,820 **** * Randy Smith finished the Sun FPA support. ! * Scott Snyder for various fixes. * Richard Stallman, for writing the original gcc and launching the GNU project. --- 936,945 ---- * Randy Smith finished the Sun FPA support. ! * Scott Snyder for queue, iterator, istream, and string fixes and ! libstdc++ testsuite entries. ! ! * Brad Spencer for contributions to the GLIBCPP_FORCE_NEW technique. * Richard Stallman, for writing the original gcc and launching the GNU project. *************** of contributors, such as the C++ library *** 829,837 **** --- 954,966 ---- * Graham Stott for various infrastructure improvements. + * John Stracke for his Java HTTP protocol fixes. + * Mike Stump for his Elxsi port, g++ contributions over the years and more recently his vxworks contributions + * Jeff Sturm for Java porting help, bug fixes, and encouragement. + * Shigeya Suzuki for this fixes for the bsdi platforms. * Ian Lance Taylor for his mips16 work, general configury hacking, *************** of contributors, such as the C++ library *** 844,879 **** * Philipp Thomas for random bugfixes throughout the compiler * Kresten Krab Thorup wrote the run time support for the Objective-C ! language. * Michael Tiemann for random bugfixes, the first instruction scheduler, initial C++ support, function integration, NS32k, SPARC and M88k machine description work, delay slot scheduling. * Teemu Torma for thread safe exception handling support. * Leonard Tower wrote parts of the parser, RTL generator, and RTL definitions, and of the VAX machine description. ! * Tom Tromey for internationalization support and his Java work. * Lassi Tuura for improvements to config.guess to determine HP processor types. * Todd Vierling for contributions for NetBSD ports. * Dean Wakerley for converting the install documentation from HTML to texinfo in time for GCC 3.0. * Krister Walfridsson for random bugfixes. * John Wehle for various improvements for the x86 code generator, related infrastructure improvements to help x86 code generation, value range propagation and other work, WE32k port. * Zack Weinberg for major work on cpplib and various other bugfixes. * Dale Wiles helped port GCC to the Tahoe. * Bob Wilson from Tensilica, Inc. for the Xtensa port. --- 973,1032 ---- * Philipp Thomas for random bugfixes throughout the compiler + * Jason Thorpe for thread support in libstdc++ on NetBSD. + * Kresten Krab Thorup wrote the run time support for the Objective-C ! language and the fantastic Java bytecode interpreter. * Michael Tiemann for random bugfixes, the first instruction scheduler, initial C++ support, function integration, NS32k, SPARC and M88k machine description work, delay slot scheduling. + * Andreas Tobler for his work porting libgcj to Darwin. + * Teemu Torma for thread safe exception handling support. * Leonard Tower wrote parts of the parser, RTL generator, and RTL definitions, and of the VAX machine description. ! * Tom Tromey for internationalization support and for his many Java ! contributions and libgcj maintainership. * Lassi Tuura for improvements to config.guess to determine HP processor types. + * Petter Urkedal for libstdc++ CXXFLAGS, math, and algorithms fixes. + + * Brent Verner for work with the libstdc++ cshadow files and their + associated configure steps. + * Todd Vierling for contributions for NetBSD ports. + * Jonathan Wakely for contributing libstdc++ Doxygen notes and XHTML + guidance. + * Dean Wakerley for converting the install documentation from HTML to texinfo in time for GCC 3.0. * Krister Walfridsson for random bugfixes. + * Stephen M. Webb for time and effort on making libstdc++ shadow + files work with the tricky Solaris 8+ headers, and for pushing the + build-time header tree. + * John Wehle for various improvements for the x86 code generator, related infrastructure improvements to help x86 code generation, value range propagation and other work, WE32k port. * Zack Weinberg for major work on cpplib and various other bugfixes. + * Matt Welsh for help with Linux Threads support in GCJ. + + * Urban Widmark for help fixing java.io. + + * Mark Wielaard for new Java library code and his work integrating + with Classpath. + * Dale Wiles helped port GCC to the Tahoe. * Bob Wilson from Tensilica, Inc. for the Xtensa port. *************** of contributors, such as the C++ library *** 891,932 **** --- 1044,1151 ---- * Kevin Zachmann helped ported GCC to the Tahoe. + * Gilles Zunino for help porting Java to Irix. + We'd also like to thank the folks who have contributed time and energy in testing GCC: + * Michael Abd-El-Malek + + * Thomas Arend + + * Bonzo Armstrong + + * Steven Ashe + + * Chris Baldwin + * David Billinghurst + * Jim Blandy + + * Stephane Bortzmeyer + * Horst von Brand + * Frank Braun + * Rodney Brown * Joe Buck * Craig Burley + * Sidney Cadot + + * Bradford Castalia + + * Ralph Doncaster + * Ulrich Drepper * David Edelsohn + * Richard Emberson + + * Levente Farkas + + * Graham Fawcett + + * Robert A. French + + * Jo"rgen Freyh + + * Mark K. Gardner + + * Charles-Antoine Gauthier + * Yung Shing Gene * Kaveh Ghazi + * David Gilbert + + * Simon Gornall + + * Fred Gray + + * John Griffin + + * Patrik Hagglund + + * Phil Hargett + + * Amancio Hasty + + * Bryan W. Headley + * Kate Hedstrom * Richard Henderson + * Kevin B. Hendricks + * Manfred Hollstein * Kamil Iskra + * Joep Jansen + * Christian Joensson + * David Kidd + + * Tobias Kuipers + + * Anand Krishnaswamy + * Jeff Law * Robert Lipe + * llewelly + * Damon Love * Dave Love *************** energy in testing GCC: *** 941,960 **** --- 1160,1203 ---- * Martin Knoblauch + * Jesse Macnish + * David Miller * Toon Moene + * Stefan Morrell + + * Anon A. Mous + * Matthias Mueller + * Pekka Nikander + * Alexandre Oliva + * Jon Olson + + * Magnus Persson + + * Chris Pollard + * Richard Polton * David Rees + * Paul Reilly + + * Tom Reilly + * Loren J. Rittle + * Torsten Rueger + + * Danny Sadinoff + + * Marc Schifer + * Peter Schmid * David Schuler *************** energy in testing GCC: *** 963,972 **** --- 1206,1225 ---- * Franz Sirl + * Tim Souder + * Mike Stump + * Adam Sulmicki + + * George Talbot + + * Gregory Warnes + * Carlo Wood + * David E. Young + * And many others And finally we'd like to thank everyone who uses the compiler, diff -Nrc3pad gcc-3.2/gcc/doc/gcc.info-22 gcc-3.2.1/gcc/doc/gcc.info-22 *** gcc-3.2/gcc/doc/gcc.info-22 Wed Aug 14 09:36:33 2002 --- gcc-3.2.1/gcc/doc/gcc.info-22 Tue Nov 19 18:17:12 2002 *************** look up both forms. *** 126,131 **** --- 126,132 ---- * fargument-alias: Code Gen Options. * fargument-noalias: Code Gen Options. * fargument-noalias-global: Code Gen Options. + * fbounds-check: Optimize Options. * fbranch-probabilities: Optimize Options. * fcall-saved <1>: Interoperation. * fcall-saved: Code Gen Options. *************** look up both forms. *** 183,188 **** --- 184,190 ---- * fnext-runtime: Objective-C Dialect Options. * fno-access-control: C++ Dialect Options. * fno-asm: C Dialect Options. + * fno-branch-count-reg: Optimize Options. * fno-builtin <1>: Other Builtins. * fno-builtin: C Dialect Options. * fno-common <1>: Variable Attributes. *************** look up both forms. *** 214,219 **** --- 216,223 ---- * fno-peephole: Optimize Options. * fno-peephole2: Optimize Options. * fno-rtti: C++ Dialect Options. + * fno-sched-interblock: Optimize Options. + * fno-sched-spec: Optimize Options. * fno-show-column: Preprocessor Options. * fno-signed-bitfields: C Dialect Options. * fno-stack-limit: Code Gen Options. *************** look up both forms. *** 243,248 **** --- 247,255 ---- * frepo: C++ Dialect Options. * frerun-cse-after-loop: Optimize Options. * frerun-loop-opt: Optimize Options. + * fsched-spec-load: Optimize Options. + * fsched-spec-load-dangerous: Optimize Options. + * fsched-verbose: Debugging Options. * fschedule-insns: Optimize Options. * fschedule-insns2: Optimize Options. * fshared-data: Code Gen Options. *************** look up both forms. *** 250,256 **** * fshort-enums <1>: Non-bugs. * fshort-enums <2>: Type Attributes. * fshort-enums: Code Gen Options. ! * fshort-wchar: C Dialect Options. * fsigned-bitfields <1>: Non-bugs. * fsigned-bitfields: C Dialect Options. * fsigned-char: C Dialect Options. --- 257,263 ---- * fshort-enums <1>: Non-bugs. * fshort-enums <2>: Type Attributes. * fshort-enums: Code Gen Options. ! * fshort-wchar: Code Gen Options. * fsigned-bitfields <1>: Non-bugs. * fsigned-bitfields: C Dialect Options. * fsigned-char: C Dialect Options. *************** look up both forms. *** 478,486 **** --- 485,497 ---- * mcheck-zero-division: M88K Options. * mcix: DEC Alpha Options. * mcmodel=embmedany: SPARC Options. + * mcmodel=kernel: i386 and x86-64 Options. + * mcmodel=large: i386 and x86-64 Options. * mcmodel=medany: SPARC Options. + * mcmodel=medium: i386 and x86-64 Options. * mcmodel=medlow: SPARC Options. * mcmodel=medmid: SPARC Options. + * mcmodel=small: i386 and x86-64 Options. * mcode-align: Intel 960 Options. * mcode-model=large: M32R/D Options. * mcode-model=medium: M32R/D Options. *************** look up both forms. *** 1103,1114 **** * V: Target Options. * v <1>: Preprocessor Options. * v: Overall Options. ! * version: Preprocessor Options. * W: Incompatibilities. * w: Preprocessor Options. * W: Warning Options. * w: Warning Options. * Wa: Assembler Options. * Waggregate-return: Warning Options. * Wall <1>: Standard Libraries. * Wall <2>: Preprocessor Options. --- 1114,1127 ---- * V: Target Options. * v <1>: Preprocessor Options. * v: Overall Options. ! * version <1>: Preprocessor Options. ! * version: Overall Options. * W: Incompatibilities. * w: Preprocessor Options. * W: Warning Options. * w: Warning Options. * Wa: Assembler Options. + * Wabi: C++ Dialect Options. * Waggregate-return: Warning Options. * Wall <1>: Standard Libraries. * Wall <2>: Preprocessor Options. diff -Nrc3pad gcc-3.2/gcc/doc/gcc.info-23 gcc-3.2.1/gcc/doc/gcc.info-23 *** gcc-3.2/gcc/doc/gcc.info-23 Wed Aug 14 09:36:33 2002 --- gcc-3.2.1/gcc/doc/gcc.info-23 Tue Nov 19 18:17:12 2002 *************** Index *** 74,80 **** * ?: side effect: Conditionals. * \a: C Dialect Options. * \x: C Dialect Options. ! * _ in variables in macros: Naming Types. * __builtin_apply: Constructing Calls. * __builtin_apply_args: Constructing Calls. * __builtin_choose_expr: Other Builtins. --- 74,80 ---- * ?: side effect: Conditionals. * \a: C Dialect Options. * \x: C Dialect Options. ! * _ in variables in macros: Constructing Calls. * __builtin_apply: Constructing Calls. * __builtin_apply_args: Constructing Calls. * __builtin_choose_expr: Other Builtins. *************** Index *** 102,107 **** --- 102,108 ---- * _Complex keyword: Complex. * _Exit: Other Builtins. * _exit: Other Builtins. + * ABI: Compatibility. * abort: Other Builtins. * abs: Other Builtins. * accessing volatiles: Volatiles. *************** Index *** 128,133 **** --- 129,135 ---- * ANSI support: C Dialect Options. * ANSI X3.159-1989: Standards. * apostrophes: Incompatibilities. + * application binary interface: Compatibility. * ARC Options: ARC Options. * arguments in frame (88k): M88K Options. * ARM [Annotated C++ Reference Manual]: Backwards Compatibility. *************** Index *** 150,155 **** --- 152,158 ---- * backtrace for bug reports: Bug Reporting. * Backwards Compatibility: Backwards Compatibility. * bcmp: Other Builtins. + * binary compatibility: Compatibility. * bit shift overflow (88k): M88K Options. * bound pointer to member function: Bound member functions. * bug criteria: Bug Criteria. *************** Index *** 433,439 **** * llabs: Other Builtins. * load address instruction: Simple Constraints. * local labels: Local Labels. ! * local variables in macros: Naming Types. * local variables, specifying registers: Local Reg Vars. * locale: Environment Variables. * locale definition: Environment Variables. --- 436,442 ---- * llabs: Other Builtins. * load address instruction: Simple Constraints. * local labels: Local Labels. ! * local variables in macros: Constructing Calls. * local variables, specifying registers: Local Reg Vars. * locale: Environment Variables. * locale definition: Environment Variables. *************** Index *** 454,460 **** * macros containing asm: Extended Asm. * macros, inline alternative: Inline. * macros, local labels: Local Labels. ! * macros, local variables in: Naming Types. * macros, statements in expressions: Statement Exprs. * macros, types of arguments: Typeof. * main and the exit status: VMS Misc. --- 457,463 ---- * macros containing asm: Extended Asm. * macros, inline alternative: Inline. * macros, local labels: Local Labels. ! * macros, local variables in: Constructing Calls. * macros, statements in expressions: Statement Exprs. * macros, types of arguments: Typeof. * main and the exit status: VMS Misc. *************** Index *** 490,496 **** * name augmentation: VMS Misc. * names used in assembler code: Asm Labels. * naming convention, implementation headers: C++ Interface. - * naming types: Naming Types. * nested functions: Nested Functions. * newlines (escaped): Escaped Newlines. * no_instrument_function function attribute: Function Attributes. --- 493,498 ---- *************** Index *** 689,695 **** * Ultrix calling convention: Interoperation. * undefined behavior: Bug Criteria. * undefined function value: Bug Criteria. ! * underscores in variables in macros: Naming Types. * underscores, avoiding (88k): M88K Options. * union: Unnamed Fields. * union, casting to a: Cast to Union. --- 691,697 ---- * Ultrix calling convention: Interoperation. * undefined behavior: Bug Criteria. * undefined function value: Bug Criteria. ! * underscores in variables in macros: Constructing Calls. * underscores, avoiding (88k): M88K Options. * union: Unnamed Fields. * union, casting to a: Cast to Union. *************** Index *** 711,717 **** * variable-length array scope: Variable Length. * variable-length arrays: Variable Length. * variables in specified registers: Explicit Reg Vars. ! * variables, local, in macros: Naming Types. * variadic macros: Variadic Macros. * VAX calling convention: Interoperation. * VAX options: VAX Options. --- 713,719 ---- * variable-length array scope: Variable Length. * variable-length arrays: Variable Length. * variables in specified registers: Explicit Reg Vars. ! * variables, local, in macros: Constructing Calls. * variadic macros: Variadic Macros. * VAX calling convention: Interoperation. * VAX options: VAX Options. diff -Nrc3pad gcc-3.2/gcc/doc/gcc.info-4 gcc-3.2.1/gcc/doc/gcc.info-4 *** gcc-3.2/gcc/doc/gcc.info-4 Wed Aug 14 09:36:33 2002 --- gcc-3.2.1/gcc/doc/gcc.info-4 Tue Nov 19 18:17:12 2002 *************** your program or GCC: *** 203,221 **** Optimize Options.). The other use of `-fprofile-arcs' is for use with `gcov', when it ! is used with the `-ftest-coverage' option. GCC supports two ! methods of determining code coverage: the options that support ! `gcov', and options `-a' and `-ax', which write information to ! text files. The options that support `gcov' do not need to ! instrument every arc in the program, so a program compiled with ! them runs faster than a program compiled with `-a', which adds ! instrumentation code to every basic block in the program. The ! tradeoff: since `gcov' does not have execution counts for all ! branches, it must start with the execution counts for the ! instrumented branches, and then iterate over the program flow ! graph until the entire graph has been solved. Hence, `gcov' runs ! a little more slowly than a program which uses information from ! `-a' and `-ax'. With `-fprofile-arcs', for each function of your program GCC creates a program flow graph, then finds a spanning tree for the --- 203,209 ---- Optimize Options.). The other use of `-fprofile-arcs' is for use with `gcov', when it ! is used with the `-ftest-coverage' option. With `-fprofile-arcs', for each function of your program GCC creates a program flow graph, then finds a spanning tree for the *************** your program or GCC: *** 226,236 **** the block; otherwise, a new basic block must be created to hold the instrumentation code. - This option makes it possible to estimate branch probabilities and - to calculate basic block execution counts. In general, basic block - execution counts as provided by `-a' do not give enough - information to estimate all branch probabilities. - `-ftest-coverage' Create data files for the `gcov' code-coverage utility (*note `gcov': a GCC Test Coverage Program: Gcov.). The data file names --- 214,219 ---- *************** your program or GCC: *** 455,460 **** --- 438,458 ---- `inlined' Dump after function inlining, to `FILE.inlined'. + `-fsched-verbose=N' + On targets that use instruction scheduling, this option controls + the amount of debugging output the scheduler prints. This + information is written to standard error, unless `-dS' or `-dR' is + specified, in which case it is output to the usual dump listing + file, `.sched' or `.sched2' respectively. However for N greater + than nine, the output is always printed to standard error. + + For N greater than zero, `-fsched-verbose' outputs the same + information as `-dRS'. For N greater than one, it also output + basic block probabilities, detailed ready list information and + unit/insn info. For N greater than two, it includes RTL at abort + point, control-flow and regions info. And for N over four, + `-fsched-verbose' also includes dependence info. + `-fpretend-float' When running a cross-compiler, pretend that the target machine uses the same floating point format as the host machine. This *************** other form by either removing `no-' or a *** 728,733 **** --- 726,739 ---- variable to have distinct location, so using this option will result in non-conforming behavior. + `-fno-branch-count-reg' + Do not use "decrement and branch" instructions on a count register, + but instead generate a sequence of instructions that decrement a + register, compare it against zero, then branch based upon the + result. This option is only meaningful on architectures that + support such instructions, which include x86, PowerPC, IA-64 and + S/390. + `-fno-function-cse' Do not put function addresses in registers; make each instruction that calls a constant function contain the function's address *************** other form by either removing `no-' or a *** 788,793 **** --- 794,806 ---- The default is `-ftrapping-math'. + `-fbounds-check' + For front-ends that support it, generate additional code to check + that indices used to access arrays are within the declared range. + This is currenly only supported by the Java and Fortran 77 + front-ends, where this option defaults to true and false + respectively. + The following options control specific optimizations. The `-O2' option turns on all of these optimizations except `-funroll-loops' and `-funroll-all-loops'. On most machines, the `-O' option turns on the *************** control them. *** 900,905 **** --- 913,938 ---- number of registers and where memory load instructions take more than one cycle. + `-fno-sched-interblock' + Don't schedule instructions across basic blocks. This is normally + enabled by default when scheduling before register allocation, i.e. + with `-fschedule-insns' or at `-O2' or higher. + + `-fno-sched-spec' + Don't allow speculative motion of non-load instructions. This is + normally enabled by default when scheduling before register + allocation, i.e. with `-fschedule-insns' or at `-O2' or higher. + + `-fsched-spec-load' + Allow speculative motion of some load instructions. This only + makes sense when scheduling before register allocation, i.e. with + `-fschedule-insns' or at `-O2' or higher. + + `-fsched-spec-load-dangerous' + Allow speculative motion of more load instructions. This only + makes sense when scheduling before register allocation, i.e. with + `-fschedule-insns' or at `-O2' or higher. + `-ffunction-sections' `-fdata-sections' Place each function or data item into its own section in the output diff -Nrc3pad gcc-3.2/gcc/doc/gcc.info-5 gcc-3.2.1/gcc/doc/gcc.info-5 *** gcc-3.2/gcc/doc/gcc.info-5 Wed Aug 14 09:36:33 2002 --- gcc-3.2.1/gcc/doc/gcc.info-5 Tue Nov 19 18:17:12 2002 *************** libraries and for parts of the compiler: *** 726,740 **** system directories come after. If a standard system include directory, or a directory specified ! with `-isystem', is also specified with `-I', it will be searched ! only in the position requested by `-I'. Also, it will not be ! considered a system include directory. If that directory really ! does contain system headers, there is a good chance that they will ! break. For instance, if GCC's installation procedure edited the ! headers in `/usr/include' to fix bugs, `-I/usr/include' will cause ! the original, buggy headers to be found instead of the corrected ! ones. GCC will issue a warning when a system include directory is ! hidden in this way. `-I-' Any directories you specify with `-I' options before the `-I-' --- 726,739 ---- system directories come after. If a standard system include directory, or a directory specified ! with `-isystem', is also specified with `-I', the `-I' option will ! be ignored. The directory will still be searched but as a system ! directory at its normal position in the system include chain. ! This is to ensure that GCC's procedure to fix buggy system headers ! and the ordering for the include_next directive are not ! inadvertantly changed. If you really need to change the search ! order for system directories, use the `-nostdinc' and/or ! `-isystem' options. `-I-' Any directories you specify with `-I' options before the `-I-' diff -Nrc3pad gcc-3.2/gcc/doc/gcc.info-8 gcc-3.2.1/gcc/doc/gcc.info-8 *** gcc-3.2/gcc/doc/gcc.info-8 Wed Aug 14 09:36:33 2002 --- gcc-3.2.1/gcc/doc/gcc.info-8 Tue Nov 19 18:17:12 2002 *************** computers: *** 560,565 **** --- 560,568 ---- *Note X86 Built-in Functions::, for details of the functions enabled and disabled by these switches. + To have SSE/SSE2 instructions generated automatically from + floating-point code, see `-mfpmath=sse'. + `-mpush-args' `-mno-push-args' Use PUSH operations to store outgoing parameters. This method is *************** x86-64 processors in 64-bit environments *** 622,627 **** --- 625,653 ---- without adjusting the stack pointer. The flag `-mno-red-zone' disables this red zone. + `-mcmodel=small' + Generate code for the small code model: the program and its + symbols must be linked in the lower 2 GB of the address space. + Pointers are 64 bits. Programs can be statically or dynamically + linked. This is the default code model. + + `-mcmodel=kernel' + Generate code for the kernel code model. The kernel runs in the + negative 2 GB of the address space. This model has to be used for + Linux kernel code. + + `-mcmodel=medium' + Generate code for the medium model: The program is linked in the + lower 2 GB of the address space but symbols can be located + anywhere in the address space. Programs can be statically or + dynamically linked, but building of shared libraries are not + supported with the medium model. + + `-mcmodel=large' + Generate code for the large model: This model makes no assumptions + about addresses and sizes of sections. Currently GCC does not + implement this model. +  File: gcc.info, Node: HPPA Options, Next: Intel 960 Options, Prev: i386 and x86-64 Options, Up: Submodel Options diff -Nrc3pad gcc-3.2/gcc/doc/gcc.texi gcc-3.2.1/gcc/doc/gcc.texi *** gcc-3.2/gcc/doc/gcc.texi Sat Apr 20 20:44:36 2002 --- gcc-3.2.1/gcc/doc/gcc.texi Wed Sep 11 16:40:28 2002 *************** Introduction, gccint, GNU Compiler Colle *** 164,169 **** --- 164,170 ---- * C Extensions:: GNU extensions to the C language family. * C++ Extensions:: GNU extensions to the C++ language. * Objective-C:: GNU Objective-C runtime features. + * Compatibility:: Binary Compatibility * Gcov:: gcov: a GCC test coverage program. * Trouble:: If you have trouble using GCC. * Bugs:: How, why and where to report bugs. *************** Introduction, gccint, GNU Compiler Colle *** 188,193 **** --- 189,195 ---- @include invoke.texi @include extend.texi @include objc.texi + @include compat.texi @include gcov.texi @include trouble.texi @include bugreport.texi diff -Nrc3pad gcc-3.2/gcc/doc/gccint.info gcc-3.2.1/gcc/doc/gccint.info *** gcc-3.2/gcc/doc/gccint.info Wed Aug 14 09:36:33 2002 --- gcc-3.2.1/gcc/doc/gccint.info Tue Nov 19 18:17:12 2002 *************** funds for GNU development. *** 36,62 **** Indirect: gccint.info-1: 1250 gccint.info-2: 48413 ! gccint.info-3: 91053 ! gccint.info-4: 127284 ! gccint.info-5: 172740 ! gccint.info-6: 222159 ! gccint.info-7: 261135 ! gccint.info-8: 301808 ! gccint.info-9: 342914 ! gccint.info-10: 359504 ! gccint.info-11: 406156 ! gccint.info-12: 453308 ! gccint.info-13: 488376 ! gccint.info-14: 537491 ! gccint.info-15: 586555 ! gccint.info-16: 634602 ! gccint.info-17: 675306 ! gccint.info-18: 723210 ! gccint.info-19: 768286 ! gccint.info-20: 815474 ! gccint.info-21: 864910 ! gccint.info-22: 907171 ! gccint.info-23: 926778  Tag Table: (Indirect) --- 36,62 ---- Indirect: gccint.info-1: 1250 gccint.info-2: 48413 ! gccint.info-3: 92033 ! gccint.info-4: 128264 ! gccint.info-5: 173720 ! gccint.info-6: 223139 ! gccint.info-7: 262115 ! gccint.info-8: 302788 ! gccint.info-9: 343894 ! gccint.info-10: 360484 ! gccint.info-11: 407136 ! gccint.info-12: 454288 ! gccint.info-13: 489356 ! gccint.info-14: 538471 ! gccint.info-15: 587535 ! gccint.info-16: 635582 ! gccint.info-17: 676286 ! gccint.info-18: 724190 ! gccint.info-19: 769266 ! gccint.info-20: 816628 ! gccint.info-21: 866064 ! gccint.info-22: 908325 ! gccint.info-23: 935056  Tag Table: (Indirect) *************** Node: Front End Directory41548 *** 87,242 **** Node: Front End Config46059 Node: Back End48413 Node: Test Suites51426 ! Node: Test Idioms51879 ! Node: C Tests54747 ! Node: Passes57472 ! Node: Trees81150 ! Node: Deficiencies83879 ! Node: Tree overview84112 ! Node: Macros and Functions88250 ! Node: Identifiers88387 ! Node: Containers89906 ! Node: Types91053 ! Node: Scopes103778 ! Node: Namespaces104537 ! Node: Classes107344 ! Node: Declarations111945 ! Node: Functions118002 ! Node: Function Basics120535 ! Node: Function Bodies127284 ! Node: Attributes141188 ! Node: Expression trees142424 ! Node: RTL166815 ! Node: RTL Objects168849 ! Node: RTL Classes172740 ! Node: Accessors177301 ! Node: Flags179684 ! Node: Machine Modes194589 ! Node: Constants203322 ! Node: Regs and Memory209288 ! Node: Arithmetic222159 ! Node: Comparisons228818 ! Node: Bit-Fields232941 ! Node: Vector Operations234362 ! Node: Conversions236139 ! Node: RTL Declarations239449 ! Node: Side Effects240261 ! Node: Incdec256054 ! Node: Assembler259610 ! Node: Insns261135 ! Node: Calls285933 ! Node: Sharing288530 ! Node: Reading RTL291634 ! Node: Machine Desc292620 ! Node: Overview294899 ! Node: Patterns296941 ! Node: Example300374 ! Node: RTL Template301808 ! Node: Output Template314275 ! Node: Output Statement318260 ! Node: Constraints322234 ! Node: Simple Constraints323168 ! Node: Multi-Alternative335532 ! Node: Class Preferences338370 ! Node: Modifiers339253 ! Node: Machine Constraints342914 ! Node: Standard Names359504 ! Ref: prologue instruction pattern398887 ! Ref: epilogue instruction pattern399380 ! Node: Pattern Ordering402108 ! Node: Dependent Patterns403338 ! Node: Jump Patterns406156 ! Node: Looping Patterns411906 ! Node: Insn Canonicalizations416512 ! Node: Expander Definitions420013 ! Node: Insn Splitting428148 ! Node: Including Patterns437766 ! Node: Peephole Definitions439544 ! Node: define_peephole440794 ! Node: define_peephole2447143 ! Node: Insn Attributes450207 ! Node: Defining Attributes451293 ! Node: Expressions453308 ! Node: Tagging Insns459900 ! Node: Attr Example464265 ! Node: Insn Lengths466644 ! Node: Constant Attributes469906 ! Node: Delay Slots471069 ! Node: Function Units474283 ! Node: Conditional Execution479956 ! Node: Constant Definitions482815 ! Node: Target Macros484396 ! Node: Target Structure487085 ! Node: Driver488376 ! Node: Run-time Target507709 ! Node: Per-Function Data515199 ! Node: Storage Layout518463 ! Node: Type Layout537491 ! Node: Escape Sequences547843 ! Node: Registers548758 ! Node: Register Basics549681 ! Node: Allocation Order555285 ! Node: Values in Registers556701 ! Node: Leaf Functions561536 ! Node: Stack Registers564325 ! Node: Register Classes565125 ! Node: Stack and Calling586059 ! Node: Frame Layout586555 ! Node: Exception Handling593420 ! Node: Stack Checking597922 ! Node: Frame Registers601479 ! Node: Elimination606930 ! Node: Stack Arguments610903 ! Node: Register Arguments618492 ! Node: Scalar Return630361 ! Node: Aggregate Return634602 ! Node: Caller Saves638319 ! Node: Function Entry639859 ! Node: Profiling651948 ! Node: Tail Calls654280 ! Node: Varargs654871 ! Node: Trampolines662549 ! Node: Library Calls669784 ! Node: Addressing Modes675306 ! Node: Condition Code686583 ! Node: Costs693909 ! Node: Scheduling705668 ! Node: Sections711184 ! Node: PIC719339 ! Node: Assembler Format722140 ! Node: File Framework723210 ! Node: Data Output728070 ! Node: Uninitialized Data735943 ! Node: Label Output741343 ! Node: Initialization756136 ! Node: Macros for Initialization762117 ! Node: Instruction Output768286 ! Node: Dispatch Tables777326 ! Node: Exception Region Output779881 ! Node: Alignment Output783234 ! Node: Debugging Info787106 ! Node: All Debuggers787770 ! Node: DBX Options790653 ! Node: DBX Hooks796028 ! Node: File Names and DBX799677 ! Node: SDB and DWARF801653 ! Node: VMS Debug805094 ! Node: Cross-compilation805642 ! Node: Mode Switching812221 ! Node: Target Attributes815474 ! Node: Misc819311 ! Node: Host Config847792 ! Node: Fragments853828 ! Node: Target Fragment854971 ! Node: Host Fragment859466 ! Node: Collect2860902 ! Node: Header Dirs863459 ! Node: Funding864910 ! Node: GNU Project867416 ! Node: Copying868070 ! Node: GNU Free Documentation License887284 ! Node: Contributors907171 ! Node: Option Index924978 ! Node: Index926778  End Tag Table --- 87,243 ---- Node: Front End Config46059 Node: Back End48413 Node: Test Suites51426 ! Node: Test Idioms51926 ! Node: C Tests54794 ! Node: libgcj Tests57540 ! Node: Passes58452 ! Node: Trees82130 ! Node: Deficiencies84859 ! Node: Tree overview85092 ! Node: Macros and Functions89230 ! Node: Identifiers89367 ! Node: Containers90886 ! Node: Types92033 ! Node: Scopes104758 ! Node: Namespaces105517 ! Node: Classes108324 ! Node: Declarations112925 ! Node: Functions118982 ! Node: Function Basics121515 ! Node: Function Bodies128264 ! Node: Attributes142168 ! Node: Expression trees143404 ! Node: RTL167795 ! Node: RTL Objects169829 ! Node: RTL Classes173720 ! Node: Accessors178281 ! Node: Flags180664 ! Node: Machine Modes195569 ! Node: Constants204302 ! Node: Regs and Memory210268 ! Node: Arithmetic223139 ! Node: Comparisons229798 ! Node: Bit-Fields233921 ! Node: Vector Operations235342 ! Node: Conversions237119 ! Node: RTL Declarations240429 ! Node: Side Effects241241 ! Node: Incdec257034 ! Node: Assembler260590 ! Node: Insns262115 ! Node: Calls286913 ! Node: Sharing289510 ! Node: Reading RTL292614 ! Node: Machine Desc293600 ! Node: Overview295879 ! Node: Patterns297921 ! Node: Example301354 ! Node: RTL Template302788 ! Node: Output Template315255 ! Node: Output Statement319240 ! Node: Constraints323214 ! Node: Simple Constraints324148 ! Node: Multi-Alternative336512 ! Node: Class Preferences339350 ! Node: Modifiers340233 ! Node: Machine Constraints343894 ! Node: Standard Names360484 ! Ref: prologue instruction pattern399867 ! Ref: epilogue instruction pattern400360 ! Node: Pattern Ordering403088 ! Node: Dependent Patterns404318 ! Node: Jump Patterns407136 ! Node: Looping Patterns412886 ! Node: Insn Canonicalizations417492 ! Node: Expander Definitions420993 ! Node: Insn Splitting429128 ! Node: Including Patterns438746 ! Node: Peephole Definitions440524 ! Node: define_peephole441774 ! Node: define_peephole2448123 ! Node: Insn Attributes451187 ! Node: Defining Attributes452273 ! Node: Expressions454288 ! Node: Tagging Insns460880 ! Node: Attr Example465245 ! Node: Insn Lengths467624 ! Node: Constant Attributes470886 ! Node: Delay Slots472049 ! Node: Function Units475263 ! Node: Conditional Execution480936 ! Node: Constant Definitions483795 ! Node: Target Macros485376 ! Node: Target Structure488065 ! Node: Driver489356 ! Node: Run-time Target508689 ! Node: Per-Function Data516179 ! Node: Storage Layout519443 ! Node: Type Layout538471 ! Node: Escape Sequences548823 ! Node: Registers549738 ! Node: Register Basics550661 ! Node: Allocation Order556265 ! Node: Values in Registers557681 ! Node: Leaf Functions562516 ! Node: Stack Registers565305 ! Node: Register Classes566105 ! Node: Stack and Calling587039 ! Node: Frame Layout587535 ! Node: Exception Handling594400 ! Node: Stack Checking598902 ! Node: Frame Registers602459 ! Node: Elimination607910 ! Node: Stack Arguments611883 ! Node: Register Arguments619472 ! Node: Scalar Return631341 ! Node: Aggregate Return635582 ! Node: Caller Saves639299 ! Node: Function Entry640839 ! Node: Profiling652928 ! Node: Tail Calls655260 ! Node: Varargs655851 ! Node: Trampolines663529 ! Node: Library Calls670764 ! Node: Addressing Modes676286 ! Node: Condition Code687563 ! Node: Costs694889 ! Node: Scheduling706648 ! Node: Sections712164 ! Node: PIC720319 ! Node: Assembler Format723120 ! Node: File Framework724190 ! Node: Data Output729050 ! Node: Uninitialized Data736923 ! Node: Label Output742323 ! Node: Initialization757116 ! Node: Macros for Initialization763097 ! Node: Instruction Output769266 ! Node: Dispatch Tables778306 ! Node: Exception Region Output780861 ! Node: Alignment Output784214 ! Node: Debugging Info788086 ! Node: All Debuggers788750 ! Node: DBX Options791633 ! Node: DBX Hooks797008 ! Node: File Names and DBX800831 ! Node: SDB and DWARF802807 ! Node: VMS Debug806248 ! Node: Cross-compilation806796 ! Node: Mode Switching813375 ! Node: Target Attributes816628 ! Node: Misc820465 ! Node: Host Config848946 ! Node: Fragments854982 ! Node: Target Fragment856125 ! Node: Host Fragment860620 ! Node: Collect2862056 ! Node: Header Dirs864613 ! Node: Funding866064 ! Node: GNU Project868570 ! Node: Copying869224 ! Node: GNU Free Documentation License888438 ! Node: Contributors908325 ! Node: Option Index933256 ! Node: Index935056  End Tag Table diff -Nrc3pad gcc-3.2/gcc/doc/gccint.info-19 gcc-3.2.1/gcc/doc/gccint.info-19 *** gcc-3.2/gcc/doc/gccint.info-19 Wed Aug 14 09:36:33 2002 --- gcc-3.2.1/gcc/doc/gccint.info-19 Tue Nov 19 18:17:12 2002 *************** Open-Ended Hooks for DBX Format *** 664,669 **** --- 664,673 ---- `DBX_OUTPUT_RBRAC (STREAM, NAME)' Like `DBX_OUTPUT_LBRAC', but for the end of a scope level. + `DBX_OUTPUT_NFUN (STREAM, LSCOPE_LABEL, DECL)' + Define this macro if the target machine requires special handling + to output an `N_FUN' entry for the function DECL. + `DBX_OUTPUT_ENUM (STREAM, TYPE)' Define this macro if the target machine requires special handling to output an enumeration type. The definition should be a C diff -Nrc3pad gcc-3.2/gcc/doc/gccint.info-2 gcc-3.2.1/gcc/doc/gccint.info-2 *** gcc-3.2/gcc/doc/gccint.info-2 Wed Aug 14 09:36:33 2002 --- gcc-3.2.1/gcc/doc/gccint.info-2 Tue Nov 19 18:17:12 2002 *************** FIXME: document the others. *** 116,121 **** --- 116,122 ---- * Test Idioms:: Idioms used in test suite code. * C Tests:: The C language test suites. + * libgcj Tests:: The Java library test suites.  File: gccint.info, Node: Test Idioms, Next: C Tests, Up: Test Suites *************** on all targets). *** 185,191 **** FIXME: discuss non-C test suites here.  ! File: gccint.info, Node: C Tests, Prev: Test Idioms, Up: Test Suites C Language Test Suites ---------------------- --- 186,192 ---- FIXME: discuss non-C test suites here.  ! File: gccint.info, Node: C Tests, Next: libgcj Tests, Prev: Test Idioms, Up: Test Suites C Language Test Suites ---------------------- *************** C Language Test Suites *** 259,264 **** --- 260,287 ---- test cases and magic comments more.  + File: gccint.info, Node: libgcj Tests, Prev: C Tests, Up: Test Suites + + The Java library test suites. + ----------------------------- + + Runtime tests are executed via `make check' from the `testsuite' + directory of the libjava hierarchy in the build tree. Additional + runtime tests can be checked into this testsuite. + + Regression testing of the core packages in libgcj is also covered by + the Mauve test suite. The Mauve Project develops tests for the Java + Class Libraries. These tests are run as part of libgcj testing by + specifying the location of the Mauve tree when invoking `make', as in + `make MAUVEDIR=~/mauve check'. + + The Jacks project provides a test suite for Java compilers that can + be used to test changes that affect the GCJ front end. There is no + automated mechanism to run the Jacks suite as part of GCJ testing. + + We encourage developers to contribute test cases to Mauve and Jacks. + +  File: gccint.info, Node: Passes, Next: Trees, Prev: Source Tree, Up: Top Passes and Files of the Compiler diff -Nrc3pad gcc-3.2/gcc/doc/gccint.info-22 gcc-3.2.1/gcc/doc/gccint.info-22 *** gcc-3.2/gcc/doc/gccint.info-22 Wed Aug 14 09:36:33 2002 --- gcc-3.2.1/gcc/doc/gccint.info-22 Tue Nov 19 18:17:12 2002 *************** been. Any omissions in this list are ac *** 45,59 **** contributions are not listed. Please keep this list in alphabetical order. - Some projects operating under the GCC project maintain their own list - of contributors, such as the C++ library - (http://gcc.gnu.org/libstdc++/). - * Analog Devices helped implement the support for complex data types and iterators. ! * John David Anglin for improvements to libstdc++-v3 and the HP-UX ! port. * James van Artsdalen wrote the code that makes efficient use of the Intel 80387 register stack. --- 45,55 ---- contributions are not listed. Please keep this list in alphabetical order. * Analog Devices helped implement the support for complex data types and iterators. ! * John David Anglin for threading-related fixes and improvements to ! libstdc++-v3, and the HP-UX port. * James van Artsdalen wrote the code that makes efficient use of the Intel 80387 register stack. *************** of contributors, such as the C++ library *** 63,76 **** * Gerald Baumgartner added the signature extension to the C++ front end. * Neil Booth for work on cpplib, lang hooks, debug hooks and other miscellaneous clean-ups. * Per Bothner for his direction via the steering committee and various improvements to our infrastructure for supporting new ! languages. Chill and Java front end implementations. Initial implementations of cpplib, fix-header, config.guess, libio, and ! past C++ library (libg++) maintainer. * Devon Bowen helped port GCC to the Tahoe. --- 59,88 ---- * Gerald Baumgartner added the signature extension to the C++ front end. + * Godmar Back for his Java improvements and encouragement. + + * Scott Bambrough for help porting the Java compiler. + + * Jon Beniston for his Win32 port of Java. + + * Geoff Berry for his Java object serialization work and various + patches. + + * Eric Blake for helping to make GCJ and libgcj conform to the + specifications. + + * Hans-J. Boehm for his garbage collector, IA-64 libffi port, and + other Java work. + * Neil Booth for work on cpplib, lang hooks, debug hooks and other miscellaneous clean-ups. * Per Bothner for his direction via the steering committee and various improvements to our infrastructure for supporting new ! languages. Chill front end implementation. Initial implementations of cpplib, fix-header, config.guess, libio, and ! past C++ library (libg++) maintainer. Dreaming up, designing and ! implementing much of GCJ. * Devon Bowen helped port GCC to the Tahoe. *************** of contributors, such as the C++ library *** 84,109 **** * Herman A.J. ten Brugge for various fixes. * Joe Buck for his direction via the steering committee. * Craig Burley for leadership of the Fortran effort. ! * Paolo Carlini for his work on libstdc++-v3. * John Carr for his alias work, SPARC hacking, infrastructure improvements, previous contributions to the steering committee, loop optimizations, etc. ! * Steve Chamberlain wrote the support for the Hitachi SH and H8 ! processors and the PicoJava processor. * Scott Christley for his Objective-C contributions. * Branko Cibej for more warning contributions. * Nick Clifton for arm, mcore, fr30, v850, m32r work, `--help', and other random hacking. * Ralf Corsepius for SH testing and minor bugfixing. * Stan Cox for care and feeding of the x86 port and lots of behind --- 96,138 ---- * Herman A.J. ten Brugge for various fixes. + * Joerg Brunsmann for Java compiler hacking and help with the GCJ + FAQ. + * Joe Buck for his direction via the steering committee. * Craig Burley for leadership of the Fortran effort. ! * Stephan Buys for contributing Doxygen notes for libstdc++. ! ! * Paolo Carlini for libstdc++ work: lots of efficiency improvements ! to the string class, hard detective work on the frustrating ! localization issues, and keeping up with the problem reports. * John Carr for his alias work, SPARC hacking, infrastructure improvements, previous contributions to the steering committee, loop optimizations, etc. ! * Steve Chamberlain for support for the Hitachi SH and H8 processors ! and the PicoJava processor, and for GCJ config fixes. ! ! * Glenn Chambers for help with the GCJ FAQ. ! ! * John-Marc Chandonia for various libgcj patches. * Scott Christley for his Objective-C contributions. + * Eric Christopher for his Java porting help and clean-ups. + * Branko Cibej for more warning contributions. + * The GNU Classpath project for all of their merged runtime code. + * Nick Clifton for arm, mcore, fr30, v850, m32r work, `--help', and other random hacking. + * Michael Cook for libstdc++ cleanup patches to reduce warnings. + * Ralf Corsepius for SH testing and minor bugfixing. * Stan Cox for care and feeding of the x86 port and lots of behind *************** of contributors, such as the C++ library *** 116,134 **** * Dario Dariol contributed the four varieties of sample programs that print a copy of their source. ! * Ulrich Drepper for his work on the C++ runtime libraries, glibc, ! testing of GCC using glibc, ISO C99 support, CFG dumping support, ! etc. * Richard Earnshaw for his ongoing work with the ARM. * David Edelsohn for his direction via the steering committee, ! ongoing work with the RS6000/PowerPC port, and help cleaning up ! Haifa loop changes. * Paul Eggert for random hacking all over GCC. ! * Mark Elbrecht for various DJGPP improvements. * Ben Elliston for his work to move the Objective-C runtime into its own subdirectory and for his work on autoconf. --- 145,189 ---- * Dario Dariol contributed the four varieties of sample programs that print a copy of their source. ! * Russell Davidson for fstream and stringstream fixes in libstdc++. ! ! * Mo DeJong for GCJ and libgcj bug fixes. ! ! * Gabriel Dos Reis for contributions to g++, contributions and ! maintenance of GCC diagnostics infrastructure, libstdc++-v3, ! including valarray<>, complex<>, maintaining the numerics library ! (including that pesky :-) and keeping up-to-date anything ! to do with numbers. ! ! * Ulrich Drepper for his work on glibc, testing of GCC using glibc, ! ISO C99 support, CFG dumping support, etc., plus support of the ! C++ runtime libraries including for all kinds of C interface ! issues, contributing and maintaining complex<>, sanity checking ! and disbursement, configuration architecture, libio maintenance, ! and early math work. * Richard Earnshaw for his ongoing work with the ARM. * David Edelsohn for his direction via the steering committee, ! ongoing work with the RS6000/PowerPC port, help cleaning up Haifa ! loop changes, and for doing the entire AIX port of libstdc++ with ! his bare hands. ! ! * Kevin Ediger for the floating point formatting of num_put::do_put ! in libstdc++. ! ! * Phil Edwards for libstdc++ work including configuration hackery, ! documentation maintainer, chief breaker of the web pages, the ! occasional iostream bugfix, and work on shared library symbol ! versioning. * Paul Eggert for random hacking all over GCC. ! * Mark Elbrecht for various DJGPP improvements, and for libstdc++ ! configuration support for locales and fstream-related fixes. ! ! * Vadim Egorov for libstdc++ fixes in strings, streambufs, and ! iostreams. * Ben Elliston for his work to move the Objective-C runtime into its own subdirectory and for his work on autoconf. *************** of contributors, such as the C++ library *** 140,150 **** --- 195,210 ---- * Fred Fish for BeOS support and Ada fixes. + * Ivan Fontes Garcia for the Portugese translation of the GCJ FAQ. + * Peter Gerwinski for various bugfixes and the Pascal front end. * Kaveh Ghazi for his direction via the steering committee and amazing work to make `-W -Wall' useful. + * John Gilmore for a donation to the FSF earmarked improving GNU + Java. + * Judy Goldberg for c++ contributions. * Torbjorn Granlund for various fixes and the c-torture testsuite, *************** of contributors, such as the C++ library *** 154,159 **** --- 214,222 ---- * Anthony Green for his `-Os' contributions and Java front end work. + * Stu Grossman for gdb hacking, allowing GCJ developers to debug our + code. + * Michael K. Gschwind contributed the port to the PDP-11. * Ron Guilmette implemented the `protoize' and `unprotoize' tools, *************** of contributors, such as the C++ library *** 164,170 **** * Bruno Haible for improvements in the runtime overhead for EH, new warnings and assorted bugfixes. ! * Andrew Haley for his Java work. * Chris Hanson assisted in making GCC work on HP-UX for the 9000 series 300. --- 227,233 ---- * Bruno Haible for improvements in the runtime overhead for EH, new warnings and assorted bugfixes. ! * Andrew Haley for his amazing Java compiler and library efforts. * Chris Hanson assisted in making GCC work on HP-UX for the 9000 series 300. *************** of contributors, such as the C++ library *** 199,220 **** * Andreas Jaeger for various fixes to the MIPS port * Jakub Jelinek for his SPARC work and sibling call optimizations as ! well as lots of bug fixes and test cases. * Janis Johnson for ia64 testing and fixes and for her quality improvement sidetracks. * J. Kean Johnston for OpenServer support. * Klaus Kaempf for his ongoing work to make alpha-vms a viable target. * David Kashtan of SRI adapted GCC to VMS. * Geoffrey Keating for his ongoing work to make the PPC work for GNU/Linux and his automatic regression tester. ! * Brendan Kehoe for his ongoing work with g++. * Oliver M. Kellogg of Deutsche Aerospace contributed the port to the MIL-STD-1750A. --- 262,294 ---- * Andreas Jaeger for various fixes to the MIPS port * Jakub Jelinek for his SPARC work and sibling call optimizations as ! well as lots of bug fixes and test cases, and for improving the ! Java build system. * Janis Johnson for ia64 testing and fixes and for her quality improvement sidetracks. * J. Kean Johnston for OpenServer support. + * Tim Josling for the sample language treelang based originally on + Richard Kenner's ""toy" language". + + * Nicolai Josuttis for additional libstdc++ documentation. + * Klaus Kaempf for his ongoing work to make alpha-vms a viable target. * David Kashtan of SRI adapted GCC to VMS. + * Ryszard Kabatek for many, many libstdc++ bugfixes and + optimizations of strings, especially member functions, and for + auto_ptr fixes. + * Geoffrey Keating for his ongoing work to make the PPC work for GNU/Linux and his automatic regression tester. ! * Brendan Kehoe for his ongoing work with g++ and for a lot of early ! work in just about every part of libstdc++. * Oliver M. Kellogg of Deutsche Aerospace contributed the port to the MIL-STD-1750A. *************** of contributors, such as the C++ library *** 230,237 **** scheduling. Richard Kenner was also the head maintainer of GCC for several years. ! * Mumit Khan for various contributions to the cygwin and mingw32 ! ports and maintaining binary releases for Windows hosts. * Robin Kirkham for cpu32 support. --- 304,312 ---- scheduling. Richard Kenner was also the head maintainer of GCC for several years. ! * Mumit Khan for various contributions to the Cygwin and Mingw32 ! ports and maintaining binary releases for Windows hosts, and for ! massive libstdc++ porting work to Cygwin/Mingw32. * Robin Kirkham for cpu32 support. *************** of contributors, such as the C++ library *** 261,271 **** * Kriang Lerdsuwanakij for improvements to demangler and various c++ fixes. ! * Warren Levy major work on libgcj (Java Runtime Library) and random ! work on the Java front end. * Alain Lichnewsky ported GCC to the MIPS CPU. * Robert Lipe for OpenServer support, new testsuites, testing, etc. * Weiwen Liu for testing and various bugfixes. --- 336,349 ---- * Kriang Lerdsuwanakij for improvements to demangler and various c++ fixes. ! * Warren Levy for tremendous work on libgcj (Java Runtime Library) ! and random work on the Java front end. * Alain Lichnewsky ported GCC to the MIPS CPU. + * Oskar Liljeblad for hacking on AWT and his many Java bug reports + and patches. + * Robert Lipe for OpenServer support, new testsuites, testing, etc. * Weiwen Liu for testing and various bugfixes. *************** of contributors, such as the C++ library *** 274,280 **** runtime libraries. * Martin von Lo"wis for internal consistency checking infrastructure, ! and various C++ improvements including namespace support. * H.J. Lu for his previous contributions to the steering committee, many x86 bug reports, prototype patches, and keeping the GNU/Linux --- 352,359 ---- runtime libraries. * Martin von Lo"wis for internal consistency checking infrastructure, ! various C++ improvements including namespace support, and tons of ! assistance with libstdc++/compiler merges. * H.J. Lu for his previous contributions to the steering committee, many x86 bug reports, prototype patches, and keeping the GNU/Linux *************** of contributors, such as the C++ library *** 287,297 **** optimizer, etc. * Vladimir Makarov for hacking some ugly i960 problems, PowerPC ! hacking improvements to compile-time performance and overall ! knowledge and direction in the area of instruction scheduling. * Bob Manson for his behind the scenes work on dejagnu. * Michael Meissner for LRS framework, ia32, m32r, v850, m88k, MIPS, powerpc, haifa, ECOFF debug support, and other assorted hacking. --- 366,387 ---- optimizer, etc. * Vladimir Makarov for hacking some ugly i960 problems, PowerPC ! hacking improvements to compile-time performance, overall ! knowledge and direction in the area of instruction scheduling, and ! design and implementation of the automaton based instruction ! scheduler. * Bob Manson for his behind the scenes work on dejagnu. + * Philip Martin for lots of libstdc++ string and vector iterator + fixes and improvements, and string clean up and testsuites. + + * All of the Mauve project contributors, for Java test code. + + * Bryce McKinlay for numerous GCJ and libgcj fixes and improvements. + + * Adam Megacz for his work on the Win32 port of GCJ. + * Michael Meissner for LRS framework, ia32, m32r, v850, m88k, MIPS, powerpc, haifa, ECOFF debug support, and other assorted hacking. *************** of contributors, such as the C++ library *** 304,309 **** --- 394,402 ---- * Gary Miller ported GCC to Charles River Data Systems machines. + * Alfred Minarik for libstdc++ string and ios bugfixes, and turning + the entire libstdc++ testsuite namespace-compatible. + * Mark Mitchell for his direction via the steering committee, mountains of C++ work, load/store hoisting out of loops, alias analysis improvements, ISO C `restrict' support, and serving as *************** of contributors, such as the C++ library *** 316,327 **** * Jason Molenda for major help in the care and feeding of all the services on the gcc.gnu.org (formerly egcs.cygnus.com) ! machine--mail, web services, ftp services, etc etc. * Catherine Moore for fixing various ugly problems we have sent her way, including the haifa bug which was killing the Alpha & PowerPC Linux kernels. * David Mosberger-Tang for various Alpha improvements. * Stephen Moshier contributed the floating point emulator that --- 409,424 ---- * Jason Molenda for major help in the care and feeding of all the services on the gcc.gnu.org (formerly egcs.cygnus.com) ! machine--mail, web services, ftp services, etc etc. Doing all ! this work on scrap paper and the backs of envelopes would have ! been... difficult. * Catherine Moore for fixing various ugly problems we have sent her way, including the haifa bug which was killing the Alpha & PowerPC Linux kernels. + * Mike Moreton for his various Java patches. + * David Mosberger-Tang for various Alpha improvements. * Stephen Moshier contributed the floating point emulator that *************** of contributors, such as the C++ library *** 336,342 **** and ISO C99 support, and continuous emphasis on (and contributions to) documentation. ! * Nathan Myers for his work on libstdc++-v3. * NeXT, Inc. donated the front end that supports the Objective-C language. --- 433,445 ---- and ISO C99 support, and continuous emphasis on (and contributions to) documentation. ! * Nathan Myers for his work on libstdc++-v3: architecture and ! authorship through the first three snapshots, including ! implementation of locale infrastructure, string, shadow C headers, ! and the initial project documentation (DESIGN, CHECKLIST, and so ! forth). Later, more work on MT-safe string and shadow headers. ! ! * Felix Natter for documentation on porting libstdc++. * NeXT, Inc. donated the front end that supports the Objective-C language. *************** of contributors, such as the C++ library *** 352,367 **** related infrastructure improvements. * Alexandre Oliva for various build infrastructure improvements, ! scripts and amazing testing work. * Melissa O'Neill for various NeXT fixes. * Rainer Orth for random MIPS work, including improvements to our o32 ! ABI support, improvements to dejagnu's MIPS support, etc. * Paul Petersen wrote the machine description for the Alliant FX/8. ! * Alexandre Petit-Bianco for his Java work. * Matthias Pfaller for major improvements to the NS32k port. --- 455,473 ---- related infrastructure improvements. * Alexandre Oliva for various build infrastructure improvements, ! scripts and amazing testing work, including keeping libtool issues ! sane and happy. * Melissa O'Neill for various NeXT fixes. * Rainer Orth for random MIPS work, including improvements to our o32 ! ABI support, improvements to dejagnu's MIPS support, Java ! configuration clean-ups and porting work, etc. * Paul Petersen wrote the machine description for the Alliant FX/8. ! * Alexandre Petit-Bianco for implementing much of the Java compiler ! and continued Java maintainership. * Matthias Pfaller for major improvements to the NS32k port. *************** of contributors, such as the C++ library *** 375,391 **** * Ken Raeburn for various improvements to checker, MIPS ports and various cleanups in the compiler. * David Reese of Sun Microsystems contributed to the Solaris on PowerPC port. - * Gabriel Dos Reis for contributions and maintenance of libstdc++-v3, - including valarray implementation and limits support. - * Joern Rennecke for maintaining the sh port, loop, regmove & reload hacking. ! * Loren J. Rittle for improvements to libstdc++-v3 and the FreeBSD ! port. * Craig Rodrigues for processing tons of bug reports. --- 481,498 ---- * Ken Raeburn for various improvements to checker, MIPS ports and various cleanups in the compiler. + * Rolf W. Rasmussen for hacking on AWT. + * David Reese of Sun Microsystems contributed to the Solaris on PowerPC port. * Joern Rennecke for maintaining the sh port, loop, regmove & reload hacking. ! * Loren J. Rittle for improvements to libstdc++-v3 including the ! FreeBSD port, threading fixes, thread-related configury changes, ! critical threading documentation, and solutions to really tricky ! I/O problems. * Craig Rodrigues for processing tons of bug reports. *************** of contributors, such as the C++ library *** 395,405 **** --- 502,517 ---- * Paul Rubin wrote most of the preprocessor. + * Chip Salzenberg for libstdc++ patches and improvements to locales, + traits, Makefiles, libio, libtool hackery, and "long long" support. + * Juha Sarlin for improvements to the H8 code generator. * Greg Satz assisted in making GCC work on HP-UX for the 9000 series 300. + * Bradley Schatz for his work on the GCJ FAQ. + * Peter Schauer wrote the code to allow debugging to work on the Alpha. *************** of contributors, such as the C++ library *** 409,414 **** --- 521,532 ---- work in the reload pass as well a serving as release manager for GCC 2.95.3. + * Peter Schmid for constant testing of libstdc++ - especially + application testing, going above and beyond what was requested for + the release criteria - and libstdc++ header file tweaks. + + * Jason Schroeder for jcf-dump patches. + * Andreas Schwab for his work on the m68k port. * Joel Sherrill for his direction via the steering committee, RTEMS *************** of contributors, such as the C++ library *** 420,425 **** --- 538,547 ---- some code which handles the parse tree and RTL data structures, constant folding and help with the original VAX & m68k ports. + * Kenny Simpson for prompting libstdc++ fixes due to defect reports + from the LWG (thereby keeping us in line with updates from the + ISO). + * Franz Sirl for his ongoing work with making the PPC port stable for linux. *************** of contributors, such as the C++ library *** 429,435 **** * Randy Smith finished the Sun FPA support. ! * Scott Snyder for various fixes. * Richard Stallman, for writing the original gcc and launching the GNU project. --- 551,560 ---- * Randy Smith finished the Sun FPA support. ! * Scott Snyder for queue, iterator, istream, and string fixes and ! libstdc++ testsuite entries. ! ! * Brad Spencer for contributions to the GLIBCPP_FORCE_NEW technique. * Richard Stallman, for writing the original gcc and launching the GNU project. *************** of contributors, such as the C++ library *** 444,452 **** --- 569,581 ---- * Graham Stott for various infrastructure improvements. + * John Stracke for his Java HTTP protocol fixes. + * Mike Stump for his Elxsi port, g++ contributions over the years and more recently his vxworks contributions + * Jeff Sturm for Java porting help, bug fixes, and encouragement. + * Shigeya Suzuki for this fixes for the bsdi platforms. * Ian Lance Taylor for his mips16 work, general configury hacking, *************** of contributors, such as the C++ library *** 459,494 **** * Philipp Thomas for random bugfixes throughout the compiler * Kresten Krab Thorup wrote the run time support for the Objective-C ! language. * Michael Tiemann for random bugfixes, the first instruction scheduler, initial C++ support, function integration, NS32k, SPARC and M88k machine description work, delay slot scheduling. * Teemu Torma for thread safe exception handling support. * Leonard Tower wrote parts of the parser, RTL generator, and RTL definitions, and of the VAX machine description. ! * Tom Tromey for internationalization support and his Java work. * Lassi Tuura for improvements to config.guess to determine HP processor types. * Todd Vierling for contributions for NetBSD ports. * Dean Wakerley for converting the install documentation from HTML to texinfo in time for GCC 3.0. * Krister Walfridsson for random bugfixes. * John Wehle for various improvements for the x86 code generator, related infrastructure improvements to help x86 code generation, value range propagation and other work, WE32k port. * Zack Weinberg for major work on cpplib and various other bugfixes. * Dale Wiles helped port GCC to the Tahoe. * Bob Wilson from Tensilica, Inc. for the Xtensa port. --- 588,647 ---- * Philipp Thomas for random bugfixes throughout the compiler + * Jason Thorpe for thread support in libstdc++ on NetBSD. + * Kresten Krab Thorup wrote the run time support for the Objective-C ! language and the fantastic Java bytecode interpreter. * Michael Tiemann for random bugfixes, the first instruction scheduler, initial C++ support, function integration, NS32k, SPARC and M88k machine description work, delay slot scheduling. + * Andreas Tobler for his work porting libgcj to Darwin. + * Teemu Torma for thread safe exception handling support. * Leonard Tower wrote parts of the parser, RTL generator, and RTL definitions, and of the VAX machine description. ! * Tom Tromey for internationalization support and for his many Java ! contributions and libgcj maintainership. * Lassi Tuura for improvements to config.guess to determine HP processor types. + * Petter Urkedal for libstdc++ CXXFLAGS, math, and algorithms fixes. + + * Brent Verner for work with the libstdc++ cshadow files and their + associated configure steps. + * Todd Vierling for contributions for NetBSD ports. + * Jonathan Wakely for contributing libstdc++ Doxygen notes and XHTML + guidance. + * Dean Wakerley for converting the install documentation from HTML to texinfo in time for GCC 3.0. * Krister Walfridsson for random bugfixes. + * Stephen M. Webb for time and effort on making libstdc++ shadow + files work with the tricky Solaris 8+ headers, and for pushing the + build-time header tree. + * John Wehle for various improvements for the x86 code generator, related infrastructure improvements to help x86 code generation, value range propagation and other work, WE32k port. * Zack Weinberg for major work on cpplib and various other bugfixes. + * Matt Welsh for help with Linux Threads support in GCJ. + + * Urban Widmark for help fixing java.io. + + * Mark Wielaard for new Java library code and his work integrating + with Classpath. + * Dale Wiles helped port GCC to the Tahoe. * Bob Wilson from Tensilica, Inc. for the Xtensa port. *************** of contributors, such as the C++ library *** 506,547 **** --- 659,766 ---- * Kevin Zachmann helped ported GCC to the Tahoe. + * Gilles Zunino for help porting Java to Irix. + We'd also like to thank the folks who have contributed time and energy in testing GCC: + * Michael Abd-El-Malek + + * Thomas Arend + + * Bonzo Armstrong + + * Steven Ashe + + * Chris Baldwin + * David Billinghurst + * Jim Blandy + + * Stephane Bortzmeyer + * Horst von Brand + * Frank Braun + * Rodney Brown * Joe Buck * Craig Burley + * Sidney Cadot + + * Bradford Castalia + + * Ralph Doncaster + * Ulrich Drepper * David Edelsohn + * Richard Emberson + + * Levente Farkas + + * Graham Fawcett + + * Robert A. French + + * Jo"rgen Freyh + + * Mark K. Gardner + + * Charles-Antoine Gauthier + * Yung Shing Gene * Kaveh Ghazi + * David Gilbert + + * Simon Gornall + + * Fred Gray + + * John Griffin + + * Patrik Hagglund + + * Phil Hargett + + * Amancio Hasty + + * Bryan W. Headley + * Kate Hedstrom * Richard Henderson + * Kevin B. Hendricks + * Manfred Hollstein * Kamil Iskra + * Joep Jansen + * Christian Joensson + * David Kidd + + * Tobias Kuipers + + * Anand Krishnaswamy + * Jeff Law * Robert Lipe + * llewelly + * Damon Love * Dave Love *************** energy in testing GCC: *** 556,575 **** --- 775,818 ---- * Martin Knoblauch + * Jesse Macnish + * David Miller * Toon Moene + * Stefan Morrell + + * Anon A. Mous + * Matthias Mueller + * Pekka Nikander + * Alexandre Oliva + * Jon Olson + + * Magnus Persson + + * Chris Pollard + * Richard Polton * David Rees + * Paul Reilly + + * Tom Reilly + * Loren J. Rittle + * Torsten Rueger + + * Danny Sadinoff + + * Marc Schifer + * Peter Schmid * David Schuler *************** energy in testing GCC: *** 578,587 **** --- 821,840 ---- * Franz Sirl + * Tim Souder + * Mike Stump + * Adam Sulmicki + + * George Talbot + + * Gregory Warnes + * Carlo Wood + * David E. Young + * And many others And finally we'd like to thank everyone who uses the compiler, diff -Nrc3pad gcc-3.2/gcc/doc/gccint.info-23 gcc-3.2.1/gcc/doc/gccint.info-23 *** gcc-3.2/gcc/doc/gccint.info-23 Wed Aug 14 09:36:33 2002 --- gcc-3.2.1/gcc/doc/gccint.info-23 Tue Nov 19 18:17:12 2002 *************** Index *** 495,500 **** --- 495,501 ---- * DBX_OUTPUT_MAIN_SOURCE_DIRECTORY: File Names and DBX. * DBX_OUTPUT_MAIN_SOURCE_FILE_END: File Names and DBX. * DBX_OUTPUT_MAIN_SOURCE_FILENAME: File Names and DBX. + * DBX_OUTPUT_NFUN: DBX Hooks. * DBX_OUTPUT_RBRAC: DBX Hooks. * DBX_OUTPUT_SOURCE_FILENAME: File Names and DBX. * DBX_OUTPUT_STANDARD_TYPES: DBX Hooks. diff -Nrc3pad gcc-3.2/gcc/doc/gcov.1 gcc-3.2.1/gcc/doc/gcov.1 *** gcc-3.2/gcc/doc/gcov.1 Wed Aug 14 09:36:35 2002 --- gcc-3.2.1/gcc/doc/gcov.1 Tue Nov 19 18:17:13 2002 *************** *** 1,5 **** .\" Automatically generated by Pod::Man version 1.15 ! .\" Wed Aug 14 09:36:35 2002 .\" .\" Standard preamble: .\" ====================================================================== --- 1,5 ---- .\" Automatically generated by Pod::Man version 1.15 ! .\" Tue Nov 19 18:17:13 2002 .\" .\" Standard preamble: .\" ====================================================================== *************** *** 138,144 **** .\" ====================================================================== .\" .IX Title "GCOV 1" ! .TH GCOV 1 "gcc-3.2" "2002-08-14" "GNU" .UC .SH "NAME" gcov \- coverage testing tool --- 138,144 ---- .\" ====================================================================== .\" .IX Title "GCOV 1" ! .TH GCOV 1 "gcc-3.2.1" "2002-11-19" "GNU" .UC .SH "NAME" gcov \- coverage testing tool diff -Nrc3pad gcc-3.2/gcc/doc/gfdl.7 gcc-3.2.1/gcc/doc/gfdl.7 *** gcc-3.2/gcc/doc/gfdl.7 Wed Aug 14 09:36:41 2002 --- gcc-3.2.1/gcc/doc/gfdl.7 Tue Nov 19 18:17:19 2002 *************** *** 1,5 **** .\" Automatically generated by Pod::Man version 1.15 ! .\" Wed Aug 14 09:36:41 2002 .\" .\" Standard preamble: .\" ====================================================================== --- 1,5 ---- .\" Automatically generated by Pod::Man version 1.15 ! .\" Tue Nov 19 18:17:19 2002 .\" .\" Standard preamble: .\" ====================================================================== *************** *** 138,144 **** .\" ====================================================================== .\" .IX Title "gfdl 7" ! .TH gfdl 7 "gcc-3.2" "2002-08-14" "GNU" .UC .SH "NAME" gfdl \- \s-1GNU\s0 Free Documentation License --- 138,144 ---- .\" ====================================================================== .\" .IX Title "gfdl 7" ! .TH gfdl 7 "gcc-3.2.1" "2002-11-19" "GNU" .UC .SH "NAME" gfdl \- \s-1GNU\s0 Free Documentation License diff -Nrc3pad gcc-3.2/gcc/doc/gpl.7 gcc-3.2.1/gcc/doc/gpl.7 *** gcc-3.2/gcc/doc/gpl.7 Wed Aug 14 09:36:41 2002 --- gcc-3.2.1/gcc/doc/gpl.7 Tue Nov 19 18:17:19 2002 *************** *** 1,5 **** .\" Automatically generated by Pod::Man version 1.15 ! .\" Wed Aug 14 09:36:41 2002 .\" .\" Standard preamble: .\" ====================================================================== --- 1,5 ---- .\" Automatically generated by Pod::Man version 1.15 ! .\" Tue Nov 19 18:17:19 2002 .\" .\" Standard preamble: .\" ====================================================================== *************** *** 138,144 **** .\" ====================================================================== .\" .IX Title "gpl 7" ! .TH gpl 7 "gcc-3.2" "2002-08-14" "GNU" .UC .SH "NAME" gpl \- \s-1GNU\s0 General Public License --- 138,144 ---- .\" ====================================================================== .\" .IX Title "gpl 7" ! .TH gpl 7 "gcc-3.2.1" "2002-11-19" "GNU" .UC .SH "NAME" gpl \- \s-1GNU\s0 General Public License diff -Nrc3pad gcc-3.2/gcc/doc/install.texi gcc-3.2.1/gcc/doc/install.texi *** gcc-3.2/gcc/doc/install.texi Mon Aug 5 03:40:02 2002 --- gcc-3.2.1/gcc/doc/install.texi Wed Nov 13 21:17:09 2002 *************** not yet been merged into the main part o *** 191,197 **** @end ifhtml @html !


    @end html @ifhtml --- 191,197 ---- @end ifhtml @html !


    @end html @ifhtml *************** components of the binutils you intend to *** 245,251 **** @file{opcodes}, @dots{}) to the directory containing the GCC sources. @html !


    @end html @ifhtml --- 245,251 ---- @file{opcodes}, @dots{}) to the directory containing the GCC sources. @html !


    @end html @ifhtml *************** subdirectory of @var{objdir} or vice ver *** 355,361 **** These additional options control where certain parts of the distribution are installed. Normally you should not need to use these options. @table @code - @item --exec-prefix=@var{dirname} Specify the toplevel installation directory for architecture-dependent files. The default is @file{@var{prefix}}. --- 355,360 ---- *************** complex conversion patterns. As a basic *** 422,430 **** @var{suffix}) are prepended (appended) before further transformations can happen with a special transformation script @var{pattern}. ! As currently implemented, this options only take effect for native builds; cross compiler binaries' names are not transformed even when a ! transformation is explicitly asked for by one of this options. For native builds, some of the installed programs are also installed with the target alias in front of their name, as in --- 421,429 ---- @var{suffix}) are prepended (appended) before further transformations can happen with a special transformation script @var{pattern}. ! As currently implemented, these options only take effect for native builds; cross compiler binaries' names are not transformed even when a ! transformation is explicitly asked for by one of these options. For native builds, some of the installed programs are also installed with the target alias in front of their name, as in *************** any in that directory---are not part of *** 460,471 **** programs---perhaps many others. (GCC installs its own header files in another directory which is based on the @option{--prefix} value.) @strong{Do not} specify @file{/usr} as the @option{--with-local-prefix}! The directory you use for @option{--with-local-prefix} @strong{must not} contain any of the system's standard header files. If it did contain them, certain programs would be miscompiled (including GNU Emacs, on certain targets), because this would override and nullify the header ! file corrections made by the @code{fixincludes} script. Indications are that people who use this option use it based on mistaken ideas of what it is for. People use it as if it specified where to --- 459,507 ---- programs---perhaps many others. (GCC installs its own header files in another directory which is based on the @option{--prefix} value.) + Both the local-prefix include directory and the GCC-prefix include + directory are part of GCC's "system include" directories. Although these + two directories are not fixed, they need to be searched in the proper + order for the correct processing of the include_next directive. The + local-prefix include directory is searched before the GCC-prefix + include directory. Another characteristic of system include directories + is that pedantic warnings are turned off for headers in these directories. + + Some autoconf macros add @option{-I @var{directory}} options to the + compiler command line, to ensure that directories containing installed + packages' headers are searched. When @var{directory} is one of GCC's + system include directories, GCC will ignore the option so that system + directories continue to be processed in the correct order. This + may result in a search order different from what was specified but the + directory will still be searched. + + GCC automatically searches for ordinary libraries using + @env{GCC_EXEC_PREFIX}. Thus, when the same installation prefix is + used for both GCC and packages, GCC will automatically search for + both headers and libraries. This provides a configuration that is + easy to use. GCC behaves in a manner similar to that when it is + installed as a system compiler in @file{/usr}. + + Sites that need to install multiple versions of GCC may not want to + use the above simple configuration. It is possible to use the + @option{--program-prefix}, @option{--program-suffix} and + @option{--program-transform-name} options to install multiple versions + into a single directory, but it may be simpler to use different prefixes + and the @option{--with-local-prefix} option to specify the location of the + site-specific files for each version. It will then be necessary for + users to specify explicitly the location of local site libraries + (e.g., with @env{LIBRARY_PATH}). + + The same value can be used for both @option{--with-local-prefix} and + @option{--prefix} provided it is not @file{/usr}. This can be used + to avoid the default search of @file{/usr/local/include}. + @strong{Do not} specify @file{/usr} as the @option{--with-local-prefix}! The directory you use for @option{--with-local-prefix} @strong{must not} contain any of the system's standard header files. If it did contain them, certain programs would be miscompiled (including GNU Emacs, on certain targets), because this would override and nullify the header ! file corrections made by the @command{fixincludes} script. Indications are that people who use this option use it based on mistaken ideas of what it is for. People use it as if it specified where to *************** configured with @option{--with-gnu-as}.) *** 503,517 **** assembler installed on your system, you may want to use this option in connection with @option{--with-as=@var{pathname}}. ! The systems where it makes a difference whether you use the GNU assembler are ! @samp{hppa1.0-@var{any}-@var{any}}, @samp{hppa1.1-@var{any}-@var{any}}, ! @samp{i386-@var{any}-sysv}, @samp{i386-@var{any}-isc}, ! @samp{i860-@var{any}-bsd}, @samp{m68k-bull-sysv}, ! @samp{m68k-hp-hpux}, @samp{m68k-sony-bsd}, ! @samp{m68k-altos-sysv}, @samp{m68000-hp-hpux}, ! @samp{m68000-att-sysv}, @samp{@var{any}-lynx-lynxos}, ! and @samp{mips-@var{any}}. ! On any other system, @option{--with-gnu-as} has no effect. On the systems listed above (except for the HP-PA, for ISC on the 386, and for @samp{mips-sgi-irix5.*}), if you use the GNU assembler, --- 539,563 ---- assembler installed on your system, you may want to use this option in connection with @option{--with-as=@var{pathname}}. ! The following systems are the only ones where it makes a difference ! whether you use the GNU assembler. On any other system, ! @option{--with-gnu-as} has no effect. ! ! @itemize bullet ! @item @samp{hppa1.0-@var{any}-@var{any}} ! @item @samp{hppa1.1-@var{any}-@var{any}} ! @item @samp{i386-@var{any}-sysv} ! @item @samp{i386-@var{any}-isc} ! @item @samp{i860-@var{any}-bsd} ! @item @samp{m68k-bull-sysv} ! @item @samp{m68k-hp-hpux} ! @item @samp{m68k-sony-bsd} ! @item @samp{m68k-altos-sysv} ! @item @samp{m68000-hp-hpux} ! @item @samp{m68000-att-sysv} ! @item @samp{@var{any}-lynx-lynxos} ! @item @samp{mips-@var{any}} ! @end itemize On the systems listed above (except for the HP-PA, for ISC on the 386, and for @samp{mips-sgi-irix5.*}), if you use the GNU assembler, *************** predefined set of them. *** 588,594 **** Some targets provide finer-grained control over which multilibs are built (e.g., @option{--disable-softfloat}): @table @code - @item arc-*-elf* biendian. --- 634,639 ---- *************** Some options which only apply to buildin *** 816,825 **** @item --with-headers=@var{dir} Specifies a directory which has target include files. ! @emph{This options is required} when building a cross compiler, if @file{@var{prefix}/@var{target}/sys-include} doesn't pre-exist. These include files will be copied into the @file{gcc} install directory. ! Fixincludes will be run on these files to make them compatible with GCC. @item --with-libs=``@var{dir1} @var{dir2} @dots{} @var{dirN}'' Specifies a list of directories which contain the target runtime --- 861,870 ---- @item --with-headers=@var{dir} Specifies a directory which has target include files. ! @emph{This option is required} when building a cross compiler, if @file{@var{prefix}/@var{target}/sys-include} doesn't pre-exist. These include files will be copied into the @file{gcc} install directory. ! @command{fixincludes} will be run on these files to make them compatible with GCC. @item --with-libs=``@var{dir1} @var{dir2} @dots{} @var{dirN}'' Specifies a list of directories which contain the target runtime *************** Note that each @option{--enable} option *** 837,843 **** corresponding @option{--without} option. @html !


    @end html @ifhtml --- 882,888 ---- corresponding @option{--without} option. @html !


    @end html @ifhtml *************** because you have previously configured t *** 887,893 **** directory. Make sure you have done all the necessary preparations. If you build GCC on a BSD system using a directory stored in an old System ! V file system, problems may occur in running @code{fixincludes} if the System V file system doesn't support symbolic links. These problems result in a failure to fix the declaration of @code{size_t} in @file{sys/types.h}. If you find that @code{size_t} is a signed type and --- 932,938 ---- directory. Make sure you have done all the necessary preparations. If you build GCC on a BSD system using a directory stored in an old System ! V file system, problems may occur in running @command{fixincludes} if the System V file system doesn't support symbolic links. These problems result in a failure to fix the declaration of @code{size_t} in @file{sys/types.h}. If you find that @code{size_t} is a signed type and *************** bootstrap} except that object files from *** 939,952 **** stage2 of the 3-stage bootstrap of the compiler are deleted as soon as they are no longer needed. - If you want to save additional space during the bootstrap and in the final installation as well, you can build the compiler binaries ! without debugging information with @samp{make CFLAGS='-O' LIBCFLAGS='-g ! -O2' LIBCXXFLAGS='-g -O2 -fno-implicit-templates' bootstrap}. This will save roughly 40% of disk space both for the bootstrap and the final installation. (Libraries will still contain debugging information.) If you wish to use non-default GCC flags when compiling the stage2 and stage3 compilers, set @code{BOOT_CFLAGS} on the command line when doing @samp{make bootstrap}. Non-default optimization flags are less well --- 984,1000 ---- stage2 of the 3-stage bootstrap of the compiler are deleted as soon as they are no longer needed. If you want to save additional space during the bootstrap and in the final installation as well, you can build the compiler binaries ! without debugging information as in the following example. This will save roughly 40% of disk space both for the bootstrap and the final installation. (Libraries will still contain debugging information.) + @example + make CFLAGS='-O' LIBCFLAGS='-g -O2' \ + LIBCXXFLAGS='-g -O2 -fno-implicit-templates' bootstrap + @end example + If you wish to use non-default GCC flags when compiling the stage2 and stage3 compilers, set @code{BOOT_CFLAGS} on the command line when doing @samp{make bootstrap}. Non-default optimization flags are less well *************** used to disable building the Ada front e *** 1042,1050 **** Additional build tools (such as @command{gnatmake}) or a working GNAT run-time library installation are usually @emph{not} required. However, ! if you want to boostrap the compiler using a minimal version of GNAT, you have to issue the following commands before invoking @samp{make ! boostrap} (this assumes that you start with an unmodified and consistent source distribution): @example --- 1090,1098 ---- Additional build tools (such as @command{gnatmake}) or a working GNAT run-time library installation are usually @emph{not} required. However, ! if you want to bootstrap the compiler using a minimal version of GNAT, you have to issue the following commands before invoking @samp{make ! bootstrap} (this assumes that you start with an unmodified and consistent source distribution): @example *************** Currently, when compiling the Ada front *** 1076,1082 **** build feature described in the previous section. @html !


    @end html @ifhtml --- 1124,1130 ---- build feature described in the previous section. @html !


    @end html @ifhtml *************** To get a list of the possible @file{*.ex *** 1180,1185 **** --- 1228,1244 ---- output of @samp{make check} into a file and look at the @samp{Running @dots{} .exp} lines. + To run only the tests for a library, run @samp{make check} from the + the library's testsuite in a subdirectory of the object directory: + @file{libstdc++-v3/testsuite} or @file{libcgj/testsuite}. + + @section Additional testing for Java Class Libraries + + The @uref{http://sources.redhat.com/mauve/,,Mauve Project} provides + a suite of tests for the Java Class Libraries. This suite can be run + as part of libgcj testing by specifying the location of the Mauve tree + when invoking @samp{make}, as in @samp{make MAUVEDIR=~/mauve check}. + @section How to interpret test results After the testsuite has run you'll find various @file{*.sum} and @file{*.log} *************** few failing testcases are possible even *** 1234,1240 **** should look here first if you think your results are unreasonable. @html !


    @end html @ifhtml --- 1293,1299 ---- should look here first if you think your results are unreasonable. @html !


    @end html @ifhtml *************** parts of the compiler in @file{@var{libd *** 1272,1281 **** info format in @file{@var{infodir}} (normally @file{@var{prefix}/info}). If you built a released version of GCC using @samp{make bootstrap} then please ! quickly review the build status page for ! @uref{http://gcc.gnu.org/gcc-3.1/buildstat.html,,3.1}, ! @uref{http://gcc.gnu.org/gcc-3.0/buildstat.html,,3.0}, or ! @uref{http://gcc.gnu.org/gcc-2.95/buildstat.html,,2.95}. If your system is not listed for the version of GCC that you built, send a note to @email{gcc@@gcc.gnu.org} indicating --- 1331,1338 ---- info format in @file{@var{infodir}} (normally @file{@var{prefix}/info}). If you built a released version of GCC using @samp{make bootstrap} then please ! quickly review the build status page for your release, available from ! @uref{http://gcc.gnu.org/buildstat.html}. If your system is not listed for the version of GCC that you built, send a note to @email{gcc@@gcc.gnu.org} indicating *************** Free Software Foundation}, though such m *** 1348,1354 **** recent version of GCC@. @html !


    @end html @ifhtml --- 1405,1411 ---- recent version of GCC@. @html !


    @end html @ifhtml *************** contact their makers. *** 1382,1388 **** AIX: @itemize @item ! @uref{http://freeware.bull.net,,Bull's Freeware and Shareware Archive for AIX}; @item @uref{http://aixpdslib.seas.ucla.edu,,UCLA Software Library for AIX}. --- 1439,1445 ---- AIX: @itemize @item ! @uref{http://www.bullfreeware.com,,Bull's Freeware and Shareware Archive for AIX}; @item @uref{http://aixpdslib.seas.ucla.edu,,UCLA Software Library for AIX}. *************** bootstrapping the compiler. An updated *** 1444,1450 **** works. @html !


    @end html @ifhtml --- 1501,1507 ---- works. @html !


    @end html @ifhtml *************** GNU Compiler Collection on your machine. *** 1683,1689 **** @html !


    @end html @heading @anchor{1750a-*-*}1750a-*-* MIL-STD-1750A processors. This target is obsoleted in GCC 3.1. --- 1740,1746 ---- @html !
    @end html @heading @anchor{1750a-*-*}1750a-*-* MIL-STD-1750A processors. This target is obsoleted in GCC 3.1. *************** The 1750A's ``Load/Store Upper/Lower Byt *** 1724,1731 **** GCC@. @html !

    !
    @end html @heading @anchor{a29k}a29k AMD Am29k-family processors. These are normally used in embedded --- 1781,1787 ---- GCC@. @html !
    @end html @heading @anchor{a29k}a29k AMD Am29k-family processors. These are normally used in embedded *************** You may need to make a variant of the fi *** 1739,1753 **** particular configuration. @html !

    !
    @end html @heading @anchor{a29k-*-bsd}a29k-*-bsd AMD Am29050 used in a system running a variant of BSD Unix. @html !

    !
    @end html @heading @anchor{alpha*-*-*}alpha*-*-* --- 1795,1807 ---- particular configuration. @html !
    @end html @heading @anchor{a29k-*-bsd}a29k-*-bsd AMD Am29050 used in a system running a variant of BSD Unix. @html !
    @end html @heading @anchor{alpha*-*-*}alpha*-*-* *************** debugging information, not the least of *** 1762,1769 **** shared libraries. @html !

    !
    @end html @heading @anchor{alpha*-dec-osf*}alpha*-dec-osf* Systems using processors that implement the DEC Alpha architecture and --- 1816,1822 ---- shared libraries. @html !
    @end html @heading @anchor{alpha*-dec-osf*}alpha*-dec-osf* Systems using processors that implement the DEC Alpha architecture and *************** Tru64 UNIX) operating system, for exampl *** 1773,1778 **** --- 1826,1838 ---- Support for versions before @code{alpha*-dec-osf4} is obsoleted in GCC 3.1. (These are the versions which identify themselves as DEC OSF/1.) + In Digital Unix V4.0, virtual memory exhausted bootstrap failures + may be fixed by configuring with @option{--with-gc=simple}, + reconfiguring Kernel Virtual Memory and Swap parameters + per the @command{/usr/sbin/sys_check} Tuning Suggestions, + or applying the patch in + @uref{http://gcc.gnu.org/ml/gcc/2002-08/msg00822.html}. + In Tru64 UNIX V5.1, Compaq introduced a new assembler that does not currently (2001-06-13) work with @command{mips-tfile}. As a workaround, we need to use the old assembler, invoked via the barely documented *************** DBX@. DEC is now aware of this problem *** 1839,1846 **** provide a fix shortly. @html !

    !
    @end html @heading @anchor{alphaev5-cray-unicosmk*}alphaev5-cray-unicosmk* Cray T3E systems running Unicos/Mk. --- 1899,1905 ---- provide a fix shortly. @html !
    @end html @heading @anchor{alphaev5-cray-unicosmk*}alphaev5-cray-unicosmk* Cray T3E systems running Unicos/Mk. *************** need to tell GCC where to find the assem *** 1856,1863 **** simplest way to do so is by providing @option{--with-as} and @option{--with-ld} to @file{configure}, e.g.@: ! @samp{configure --with-as=/opt/ctl/bin/cam --with-ld=/opt/ctl/bin/cld ! --enable-languages=c} The comparison test during @samp{make bootstrap} fails on Unicos/Mk because the assembler inserts timestamps into object files. You should --- 1915,1924 ---- simplest way to do so is by providing @option{--with-as} and @option{--with-ld} to @file{configure}, e.g.@: ! @example ! configure --with-as=/opt/ctl/bin/cam --with-ld=/opt/ctl/bin/cld \ ! --enable-languages=c ! @end example The comparison test during @samp{make bootstrap} fails on Unicos/Mk because the assembler inserts timestamps into object files. You should *************** be able to work around this by doing @sa *** 1865,1880 **** failure. @html !

    !
    @end html @heading @anchor{arc-*-elf}arc-*-elf Argonaut ARC processor. This configuration is intended for embedded systems. @html !

    !
    @end html @heading @anchor{arm-*-aout}arm-*-aout Advanced RISC Machines ARM-family processors. These are often used in --- 1926,1939 ---- failure. @html !
    @end html @heading @anchor{arc-*-elf}arc-*-elf Argonaut ARC processor. This configuration is intended for embedded systems. @html !
    @end html @heading @anchor{arm-*-aout}arm-*-aout Advanced RISC Machines ARM-family processors. These are often used in *************** You may need to make a variant of the fi *** 1886,1908 **** configuration. @html !

    !
    @end html @heading @anchor{arm-*-elf}arm-*-elf This configuration is intended for embedded systems. @html !

    !
    @end html @heading @anchor{arm*-*-linux-gnu}arm*-*-linux-gnu We require GNU binutils 2.10 or newer. @html !

    !
    @end html @heading @anchor{arm-*-riscix}arm-*-riscix The ARM2 or ARM3 processor running RISC iX, Acorn's port of BSD Unix. --- 1945,1964 ---- configuration. @html !
    @end html @heading @anchor{arm-*-elf}arm-*-elf This configuration is intended for embedded systems. @html !
    @end html @heading @anchor{arm*-*-linux-gnu}arm*-*-linux-gnu We require GNU binutils 2.10 or newer. @html !
    @end html @heading @anchor{arm-*-riscix}arm-*-riscix The ARM2 or ARM3 processor running RISC iX, Acorn's port of BSD Unix. *************** debugging, pass @option{--with-gnu-as} t *** 1919,1926 **** You will need to install GNU @command{sed} before you can run configure. @html !

    !
    @end html @heading @anchor{avr}avr --- 1975,1981 ---- You will need to install GNU @command{sed} before you can run configure. @html !
    @end html @heading @anchor{avr}avr *************** The following error: *** 1957,1964 **** indicates that you should upgrade to a newer version of the binutils. @html !

    !
    @end html @heading @anchor{c4x}c4x --- 2012,2018 ---- indicates that you should upgrade to a newer version of the binutils. @html !
    @end html @heading @anchor{c4x}c4x *************** can also be obtained from: *** 1988,1995 **** @end itemize @html !

    !
    @end html @heading @anchor{cris}CRIS --- 2042,2048 ---- @end itemize @html !
    @end html @heading @anchor{cris}CRIS *************** information about this platform is avail *** 2027,2034 **** @uref{http://developer.axis.com/}. @html !

    !
    @end html @heading @anchor{dos}DOS --- 2080,2086 ---- @uref{http://developer.axis.com/}. @html !
    @end html @heading @anchor{dos}DOS *************** compilation package DJGPP, which include *** 2040,2054 **** and includes all the necessary compilation tools and libraries. @html !

    !
    @end html @heading @anchor{dsp16xx}dsp16xx A port to the AT&T DSP1610 family of processors. @html !

    !
    @end html @heading @anchor{*-*-freebsd*}*-*-freebsd* --- 2092,2104 ---- and includes all the necessary compilation tools and libraries. @html !
    @end html @heading @anchor{dsp16xx}dsp16xx A port to the AT&T DSP1610 family of processors. @html !
    @end html @heading @anchor{*-*-freebsd*}*-*-freebsd* *************** results on FreeBSD 3.0, 3.4, 4.0, 4.2, 4 *** 2078,2092 **** In principle, @option{--enable-threads} is now compatible with @option{--enable-libgcj} on FreeBSD@. However, it has only been built ! and tested on i386-*-freebsd4.5 and alpha-*-freebsd5.0. The static library may be incorrectly built (symbols are missing at link time). There is a rare timing-based startup hang (probably involves an assupmtion about the thread library). Multi-threaded boehm-gc (required for libjava) exposes severe threaded signal-handling bugs on FreeBSD before 4.5-RELEASE. The alpha port may not fully bootstrap without some manual ! intervention: gcjh will crash with a floating-point exception while generating @file{java/lang/Double.h} (just copy the version built on ! i386-*-freebsd* and rerun the top-level gmake with no arguments and it should properly complete the bootstrap). Other CPU architectures supported by FreeBSD will require additional configuration tuning in, at the very least, both boehm-gc and libffi. --- 2128,2144 ---- In principle, @option{--enable-threads} is now compatible with @option{--enable-libgcj} on FreeBSD@. However, it has only been built ! and tested on @samp{i386-*-freebsd4.5} and @samp{alpha-*-freebsd5.0}. ! The static library may be incorrectly built (symbols are missing at link time). There is a rare timing-based startup hang (probably involves an assupmtion about the thread library). Multi-threaded boehm-gc (required for libjava) exposes severe threaded signal-handling bugs on FreeBSD before 4.5-RELEASE. The alpha port may not fully bootstrap without some manual ! intervention: @command{gcjh} will crash with a floating-point exception while generating @file{java/lang/Double.h} (just copy the version built on ! @samp{i386-*-freebsd*} and rerun the top-level @command{gmake} with no ! arguments and it should properly complete the bootstrap). Other CPU architectures supported by FreeBSD will require additional configuration tuning in, at the very least, both boehm-gc and libffi. *************** the very least, both boehm-gc and libffi *** 2094,2101 **** Shared @file{libgcc_s.so} is now built and installed by default. @html !

    !
    @end html @heading @anchor{elxsi-elxsi-bsd}elxsi-elxsi-bsd The Elxsi's C compiler has known limitations that prevent it from --- 2146,2152 ---- Shared @file{libgcc_s.so} is now built and installed by default. @html !
    @end html @heading @anchor{elxsi-elxsi-bsd}elxsi-elxsi-bsd The Elxsi's C compiler has known limitations that prevent it from *************** compiling GCC@. Please contact @email{m *** 2104,2111 **** Support for this processor is obsoleted in GCC 3.1. @html !

    !
    @end html @heading @anchor{h8300-hms}h8300-hms Hitachi H8/300 series of processors. --- 2155,2161 ---- Support for this processor is obsoleted in GCC 3.1. @html !
    @end html @heading @anchor{h8300-hms}h8300-hms Hitachi H8/300 series of processors. *************** first three arguments in function calls *** 2118,2131 **** longer a multiple of 2 bytes. @html !

    !
    @end html @heading @anchor{hppa*-hp-hpux*}hppa*-hp-hpux* We @emph{highly} recommend using gas/binutils 2.8 or newer on all hppa platforms; you may encounter a variety of problems when using the HP ! assembler. Specifically, @option{-g} does not work on HP-UX (since that system uses a peculiar debugging format which GCC does not know about), unless you --- 2168,2181 ---- longer a multiple of 2 bytes. @html !
    @end html @heading @anchor{hppa*-hp-hpux*}hppa*-hp-hpux* We @emph{highly} recommend using gas/binutils 2.8 or newer on all hppa platforms; you may encounter a variety of problems when using the HP ! assembler. The HP assembler does not work with the @samp{hppa64-hp-hpux11*} ! port. Specifically, @option{-g} does not work on HP-UX (since that system uses a peculiar debugging format which GCC does not know about), unless you *************** use GAS and GDB and configure GCC with t *** 2133,2147 **** @uref{./configure.html#with-gnu-as,,@option{--with-gnu-as}} and @option{--with-as=@dots{}} options. ! If you wish to use pa-risc 2.0 architecture support, you must use either ! the HP assembler, gas/binutils 2.11 or a recent @uref{ftp://sources.redhat.com/pub/binutils/snapshots,,snapshot of gas}. More specific information to @samp{hppa*-hp-hpux*} targets follows. @html !

    !
    @end html @heading @anchor{hppa*-hp-hpux9}hppa*-hp-hpux9 --- 2183,2197 ---- @uref{./configure.html#with-gnu-as,,@option{--with-gnu-as}} and @option{--with-as=@dots{}} options. ! If you wish to use the pa-risc 2.0 architecture support with a 32-bit ! runtime, you must use either the HP assembler, gas/binutils 2.11 or newer, ! or a recent @uref{ftp://sources.redhat.com/pub/binutils/snapshots,,snapshot of gas}. More specific information to @samp{hppa*-hp-hpux*} targets follows. @html !
    @end html @heading @anchor{hppa*-hp-hpux9}hppa*-hp-hpux9 *************** and @env{SHELL} to @file{/bin/ksh} in yo *** 2157,2164 **** @html !

    !
    @end html @heading @anchor{hppa*-hp-hpux10}hppa*-hp-hpux10 --- 2207,2213 ---- @html !
    @end html @heading @anchor{hppa*-hp-hpux10}hppa*-hp-hpux10 *************** bootstrap}. *** 2189,2219 **** @html !

    !
    @end html @heading @anchor{hppa*-hp-hpux11}hppa*-hp-hpux11 ! GCC 3.0 and up support HP-UX 11. You must use GNU binutils 2.11 or above on ! this platform. Thread support is not currently implemented for this ! platform, so @option{--enable-threads} does not work. ! See @uref{http://gcc.gnu.org/ml/gcc-prs/2002-01/msg00551.html} ! and @uref{http://gcc.gnu.org/ml/gcc-bugs/2002-01/msg00663.html}. GCC 2.95.x is not supported under HP-UX 11 and cannot be used to compile GCC 3.0 and up. Refer to @uref{binaries.html,,binaries} for information about obtaining precompiled GCC binaries for HP-UX. @html !

    !
    @end html @heading @anchor{i370-*-*}i370-*-* This port is very preliminary and has many known bugs. We hope to have a higher-quality port for this machine soon. @html !

    !
    @end html @heading @anchor{*-*-linux-gnu}*-*-linux-gnu --- 2238,2290 ---- @html !
    @end html @heading @anchor{hppa*-hp-hpux11}hppa*-hp-hpux11 ! GCC 3.0 and up support HP-UX 11. On 64-bit capable systems, there ! are two distinct ports. The @samp{hppa2.0w-hp-hpux11*} port generates ! code for the 32-bit pa-risc runtime architecture. It uses the HP ! linker and is currently the default selected by config.guess. The ! optional @samp{hppa64-hp-hpux11*} port generates 64-bit code for the ! pa-risc 2.0 architecture. It must be explicitly selected using the ! @samp{--host=hppa64-hp-hpux11*} configure option. Different prefixes ! must be used if both ports are to be installed on the same system. ! ! You must use GNU binutils 2.11 or above with the 32-bit port. Thread ! support is not currently implemented, so @option{--enable-threads} does ! not work. See: ! ! @itemize ! @item @uref{http://gcc.gnu.org/ml/gcc-prs/2002-01/msg00551.html} ! @item @uref{http://gcc.gnu.org/ml/gcc-bugs/2002-01/msg00663.html}. ! @end itemize ! GCC 2.95.x is not supported under HP-UX 11 and cannot be used to compile GCC 3.0 and up. Refer to @uref{binaries.html,,binaries} for information about obtaining precompiled GCC binaries for HP-UX. + GNU binutils 2.13 or later is recommended with the 64-bit port. + The HP assembler is not supported. It is @emph{highly} recommended + that the GNU linker be used as well. Either binutils must be built + prior to gcc, or a binary distribution of gcc or binutils must be + obtained for the initial builds. When starting with a HP compiler, + it is preferable to use the ANSI compiler as the bundled compiler + only supports traditional C. Bootstrapping with the bundled compiler + is tested infrequently and problems often arise because of the subtle + differences in semantics between traditional and ISO C. There also + have been problems reported with various binary distributions. This + port still is undergoing significant development. + @html !
    @end html @heading @anchor{i370-*-*}i370-*-* This port is very preliminary and has many known bugs. We hope to have a higher-quality port for this machine soon. @html !
    @end html @heading @anchor{*-*-linux-gnu}*-*-linux-gnu *************** The patch @uref{glibc-2.2.patch,,glibc-2 *** 2223,2229 **** applied in the GCC source tree, fixes the compatibility problems. @html -

    @end html @html --- 2294,2299 ---- *************** glibc 2.2.4 whether patches for GCC 3.0 *** 2240,2247 **** 2.2.3 with GCC 3.0, just do not try to recompile it. @html !

    !
    @end html @heading @anchor{ix86-*-linux*oldld}i?86-*-linux*oldld Use this configuration to generate @file{a.out} binaries on Linux-based --- 2310,2316 ---- 2.2.3 with GCC 3.0, just do not try to recompile it. @html !
    @end html @heading @anchor{ix86-*-linux*oldld}i?86-*-linux*oldld Use this configuration to generate @file{a.out} binaries on Linux-based *************** installed. *** 2251,2258 **** This configuration is obsoleted in GCC 3.1. @html !

    !
    @end html @heading @anchor{ix86-*-linux*aout}i?86-*-linux*aout Use this configuration to generate @file{a.out} binaries on Linux-based --- 2320,2326 ---- This configuration is obsoleted in GCC 3.1. @html !
    @end html @heading @anchor{ix86-*-linux*aout}i?86-*-linux*aout Use this configuration to generate @file{a.out} binaries on Linux-based *************** GNU systems. This configuration is bein *** 2260,2267 **** gas/binutils version 2.5.2 or later. @html !

    !
    @end html @heading @anchor{ix86-*-linux*}i?86-*-linux* --- 2328,2334 ---- gas/binutils version 2.5.2 or later. @html !
    @end html @heading @anchor{ix86-*-linux*}i?86-*-linux* *************** possible you have a hardware problem. F *** 2272,2294 **** found on @uref{http://www.bitwizard.nl/sig11/,,www.bitwizard.nl}. @html !

    !
    @end html @heading @anchor{ix86-*-sco}i?86-*-sco Compilation with RCC is recommended. Also, it may be a good idea to link with GNU malloc instead of the malloc that comes with the system. @html !

    !
    @end html @heading @anchor{ix86-*-sco3.2v4}i?86-*-sco3.2v4 Use this configuration for SCO release 3.2 version 4. @html !

    !
    @end html @heading @anchor{ix86-*-sco3.2v5*}i?86-*-sco3.2v5* Use this for the SCO OpenServer Release 5 family of operating systems. --- 2339,2358 ---- found on @uref{http://www.bitwizard.nl/sig11/,,www.bitwizard.nl}. @html !
    @end html @heading @anchor{ix86-*-sco}i?86-*-sco Compilation with RCC is recommended. Also, it may be a good idea to link with GNU malloc instead of the malloc that comes with the system. @html !
    @end html @heading @anchor{ix86-*-sco3.2v4}i?86-*-sco3.2v4 Use this configuration for SCO release 3.2 version 4. @html !
    @end html @heading @anchor{ix86-*-sco3.2v5*}i?86-*-sco3.2v5* Use this for the SCO OpenServer Release 5 family of operating systems. *************** engineering and will hopefully be addres *** 2363,2370 **** @html !

    !
    @end html @heading @anchor{ix86-*-udk}i?86-*-udk --- 2427,2433 ---- @html !
    @end html @heading @anchor{ix86-*-udk}i?86-*-udk *************** from the right place) while making the t *** 2383,2390 **** building a cross compiler. The easiest way to do this is with a configure command like this: ! @samp{CC=/udk/usr/ccs/bin/cc @var{/your/path/to}/gcc/configure ! --host=i686-pc-udk --target=i686-pc-udk --program-prefix=udk-} @emph{You should substitute @samp{i686} in the above command with the appropriate processor for your host.} --- 2446,2455 ---- building a cross compiler. The easiest way to do this is with a configure command like this: ! @example ! CC=/udk/usr/ccs/bin/cc @var{/your/path/to}/gcc/configure \ ! --host=i686-pc-udk --target=i686-pc-udk --program-prefix=udk- ! @end example @emph{You should substitute @samp{i686} in the above command with the appropriate processor for your host.} *************** have installed. *** 2398,2405 **** @html !

    !
    @end html @heading @anchor{ix86-*-isc}i?86-*-isc This configuration is obsoleted in GCC 3.1. --- 2463,2469 ---- @html !
    @end html @heading @anchor{ix86-*-isc}i?86-*-isc This configuration is obsoleted in GCC 3.1. *************** In ISC version 4.1, @command{sed} core d *** 2411,2418 **** @file{deduced.h}. Use the version of @command{sed} from version 4.0. @html !

    !
    @end html @heading @anchor{ix86-ibm-aix}i?86-ibm-aix This configuration is obsoleted in GCC 3.1. --- 2475,2481 ---- @file{deduced.h}. Use the version of @command{sed} from version 4.0. @html !
    @end html @heading @anchor{ix86-ibm-aix}i?86-ibm-aix This configuration is obsoleted in GCC 3.1. *************** You need to use GAS version 2.1 or later *** 2421,2428 **** GNU binutils version 2.2 or later. @html !

    !
    @end html @heading @anchor{ix86-sequent-bsd}i?86-sequent-bsd This configuration is obsoleted in GCC 3.1. --- 2484,2490 ---- GNU binutils version 2.2 or later. @html !
    @end html @heading @anchor{ix86-sequent-bsd}i?86-sequent-bsd This configuration is obsoleted in GCC 3.1. *************** This configuration is obsoleted in GCC 3 *** 2430,2437 **** Go to the Berkeley universe before compiling. @html !

    !
    @end html @heading @anchor{ix86-sequent-ptx1*}i?86-sequent-ptx1*, i?86-sequent-ptx2*, i?86-sequent-sysv3* This configuration is obsoleted in GCC 3.1. --- 2492,2498 ---- Go to the Berkeley universe before compiling. @html !
    @end html @heading @anchor{ix86-sequent-ptx1*}i?86-sequent-ptx1*, i?86-sequent-ptx2*, i?86-sequent-sysv3* This configuration is obsoleted in GCC 3.1. *************** If you encounter this problem, upgrade y *** 2443,2450 **** use @command{bash} (the GNU shell) to run @code{fixproto}. @html !

    !
    @end html @heading @anchor{i860-intel-osf*}i860-intel-osf* All support for the i860 processor is obsoleted in GCC 3.1. --- 2504,2510 ---- use @command{bash} (the GNU shell) to run @code{fixproto}. @html !
    @end html @heading @anchor{i860-intel-osf*}i860-intel-osf* All support for the i860 processor is obsoleted in GCC 3.1. *************** insert the line *** 2488,2495 **** These problems don't exist in operating system version 1.1. @html !

    !
    @end html @heading @anchor{ia64-*-linux}ia64-*-linux IA-64 processor (also known as IPF, or Itanium Processor Family) --- 2548,2554 ---- These problems don't exist in operating system version 1.1. @html !
    @end html @heading @anchor{ia64-*-linux}ia64-*-linux IA-64 processor (also known as IPF, or Itanium Processor Family) *************** GCC 3.0.2 is believed to be fully ABI co *** 2513,2520 **** ABI changes are expected. @html !

    !
    @end html @heading @anchor{*-lynx-lynxos}*-lynx-lynxos LynxOS 2.2 and earlier comes with GCC 1.x already installed as --- 2572,2578 ---- ABI changes are expected. @html !
    @end html @heading @anchor{*-lynx-lynxos}*-lynx-lynxos LynxOS 2.2 and earlier comes with GCC 1.x already installed as *************** COFF format object files and executables *** 2525,2532 **** installed tools, which produce @file{a.out} format executables. @html !

    !
    @end html @heading @anchor{*-ibm-aix*}*-ibm-aix* --- 2583,2589 ---- installed tools, which produce @file{a.out} format executables. @html !
    @end html @heading @anchor{*-ibm-aix*}*-ibm-aix* *************** interoperate with GCC@. *** 2554,2559 **** --- 2611,2645 ---- Building @file{libstdc++.a} requires a fix for a AIX Assembler bug APAR IY26685 (AIX 4.3) or APAR IY25528 (AIX 5.1). + @samp{libstdc++} in GCC 3.2 increments the major version number of the + shared object and GCC installation places the @file{libstdc++.a} + shared library in a common location which will overwrite the GCC 3.1 + version of the shared library. Applications either need to be + re-linked against the new shared library or the GCC 3.1 version of the + @samp{libstdc++} shared object needs to be available to the AIX + runtime loader. The GCC 3.1 @samp{libstdc++.so.4} shared object can + be installed for runtime dynamic loading using the following steps to + set the @samp{F_LOADONLY} flag in the shared object for @emph{each} + multilib @file{libstdc++.a} installed: + + Extract the shared object from each the GCC 3.1 @file{libstdc++.a} + archive: + @example + % ar -x libstdc++.a libstdc++.so.4 + @end example + + Enable the @samp{F_LOADONLY} flag so that the shared object will be + available for runtime dynamic loading, but not linking: + @example + % strip -e libstdc++.so.4 + @end example + + Archive the runtime-only shared object in the GCC 3.2 + @file{libstdc++.a} archive: + @example + % ar -q libstdc++.a libstdc++.so.4 + @end example + Linking executables and shared libraries may produce warnings of duplicate symbols. The assembly files generated by GCC for AIX always have included multiple symbol definitions for certain global variable *************** A default can be specified with the @opt *** 2606,2621 **** switch and using the configure option @option{--with-cpu-@var{cpu_type}}. @html !

    !
    @end html @heading @anchor{m32r-*-elf}m32r-*-elf Mitsubishi M32R processor. This configuration is intended for embedded systems. @html !

    !
    @end html @heading @anchor{m68000-hp-bsd}m68000-hp-bsd HP 9000 series 200 running BSD@. Note that the C compiler that comes --- 2692,2705 ---- switch and using the configure option @option{--with-cpu-@var{cpu_type}}. @html !
    @end html @heading @anchor{m32r-*-elf}m32r-*-elf Mitsubishi M32R processor. This configuration is intended for embedded systems. @html !
    @end html @heading @anchor{m68000-hp-bsd}m68000-hp-bsd HP 9000 series 200 running BSD@. Note that the C compiler that comes *************** with this system cannot compile GCC; con *** 2623,2646 **** to get binaries of GCC for bootstrapping. @html !

    !
    @end html @heading @anchor{m6811-elf}m6811-elf Motorola 68HC11 family micro controllers. These are used in embedded applications. There are no standard Unix configurations. @html !

    !
    @end html @heading @anchor{m6812-elf}m6812-elf Motorola 68HC12 family micro controllers. These are used in embedded applications. There are no standard Unix configurations. @html !

    !
    @end html @heading @anchor{m68k-altos}m68k-altos Altos 3068. This configuration is obsoleted in GCC 3.1. --- 2707,2727 ---- to get binaries of GCC for bootstrapping. @html !
    @end html @heading @anchor{m6811-elf}m6811-elf Motorola 68HC11 family micro controllers. These are used in embedded applications. There are no standard Unix configurations. @html !
    @end html @heading @anchor{m6812-elf}m6812-elf Motorola 68HC12 family micro controllers. These are used in embedded applications. There are no standard Unix configurations. @html !
    @end html @heading @anchor{m68k-altos}m68k-altos Altos 3068. This configuration is obsoleted in GCC 3.1. *************** You must use the GNU assembler, linker a *** 2649,2656 **** Also, you must fix a kernel bug. @html !

    !
    @end html @heading @anchor{m68k-apple-aux}m68k-apple-aux Apple Macintosh running A/UX@. --- 2730,2736 ---- Also, you must fix a kernel bug. @html !
    @end html @heading @anchor{m68k-apple-aux}m68k-apple-aux Apple Macintosh running A/UX@. *************** You will also a patched version of @file *** 2669,2676 **** raises some of the arbitrary limits found in the original. @html !

    !
    @end html @heading @anchor{m68k-att-sysv}m68k-att-sysv AT&T 3b1, a.k.a.@: 7300 PC@. This version of GCC cannot --- 2749,2755 ---- raises some of the arbitrary limits found in the original. @html !
    @end html @heading @anchor{m68k-att-sysv}m68k-att-sysv AT&T 3b1, a.k.a.@: 7300 PC@. This version of GCC cannot *************** bootstrap. Binaries are available from *** 2680,2687 **** @uref{ftp://archive.cis.ohio-state.edu/pub/att7300/}. @html !

    !
    @end html @heading @anchor{m68k-bull-sysv}m68k-bull-sysv Bull DPX/2 series 200 and 300 with BOS-2.00.45 up to BOS-2.01. --- 2759,2765 ---- @uref{ftp://archive.cis.ohio-state.edu/pub/att7300/}. @html !
    @end html @heading @anchor{m68k-bull-sysv}m68k-bull-sysv Bull DPX/2 series 200 and 300 with BOS-2.00.45 up to BOS-2.01. *************** assembler or for availability of the DPX *** 2696,2703 **** @email{F.Pierresteguy@@frcl.bull.fr}. @html !

    !
    @end html @heading @anchor{m68k-crds-unos}m68k-crds-unos Use @samp{configure unos} for building on Unos. --- 2774,2780 ---- @email{F.Pierresteguy@@frcl.bull.fr}. @html !
    @end html @heading @anchor{m68k-crds-unos}m68k-crds-unos Use @samp{configure unos} for building on Unos. *************** If linking @file{cc1} fails, try putting *** 2736,2743 **** and linking from that library. @html !

    !
    @end html @heading @anchor{m68k-hp-hpux}m68k-hp-hpux HP 9000 series 300 or 400 running HP-UX@. HP-UX version 8.0 has a bug in --- 2813,2819 ---- and linking from that library. @html !
    @end html @heading @anchor{m68k-hp-hpux}m68k-hp-hpux HP 9000 series 300 or 400 running HP-UX@. HP-UX version 8.0 has a bug in *************** to look like: *** 2795,2802 **** @html !

    !
    @end html @heading @anchor{m68k-*-nextstep*}m68k-*-nextstep* These configurations are obsoleted in GCC 3.1. --- 2871,2877 ---- @html !
    @end html @heading @anchor{m68k-*-nextstep*}m68k-*-nextstep* These configurations are obsoleted in GCC 3.1. *************** for this sequence to work. *** 2846,2853 **** @end example @html !

    !
    @end html @heading @anchor{m68k-ncr-*}m68k-ncr-* On the Tower models 4@var{n}0 and 6@var{n}0, by default a process is not --- 2921,2927 ---- @end example @html !
    @end html @heading @anchor{m68k-ncr-*}m68k-ncr-* On the Tower models 4@var{n}0 and 6@var{n}0, by default a process is not *************** MAXUMEM = 4096 *** 2863,2870 **** @html !

    !
    @end html @heading @anchor{m68k-sun}m68k-sun Sun 3. We do not provide a configuration file to use the Sun FPA by --- 2937,2943 ---- @html !
    @end html @heading @anchor{m68k-sun}m68k-sun Sun 3. We do not provide a configuration file to use the Sun FPA by *************** default, because programs that establish *** 2872,2879 **** point traps inherently cannot work with the FPA@. @html !

    !
    @end html @heading @anchor{m68k-sun-sunos4.1.1}m68k-sun-sunos4.1.1 --- 2945,2951 ---- point traps inherently cannot work with the FPA@. @html !
    @end html @heading @anchor{m68k-sun-sunos4.1.1}m68k-sun-sunos4.1.1 *************** It is reported that you may need the GNU *** 2881,2888 **** @html !

    !
    @end html @heading @anchor{m88k-*-svr3}m88k-*-svr3 Motorola m88k running the AT&T/Unisoft/Motorola V.3 reference port. --- 2953,2959 ---- @html !
    @end html @heading @anchor{m88k-*-svr3}m88k-*-svr3 Motorola m88k running the AT&T/Unisoft/Motorola V.3 reference port. *************** It is best, however, to use an older ver *** 2900,2907 **** if you have one. @html !

    !
    @end html @heading @anchor{m88k-*-dgux}m88k-*-dgux Motorola m88k running DG/UX@. --- 2971,2977 ---- if you have one. @html !
    @end html @heading @anchor{m88k-*-dgux}m88k-*-dgux Motorola m88k running DG/UX@. *************** If you do not specify a configuration na *** 2920,2927 **** configuration based on the current software development environment. @html !

    !
    @end html @heading @anchor{m88k-tektronix-sysv3}m88k-tektronix-sysv3 Tektronix XD88 running UTekV 3.2e. --- 2990,2996 ---- configuration based on the current software development environment. @html !
    @end html @heading @anchor{m88k-tektronix-sysv3}m88k-tektronix-sysv3 Tektronix XD88 running UTekV 3.2e. *************** Otherwise you may have trouble getting c *** 2936,2943 **** between stages. @html !

    !
    @end html @heading @anchor{mips-*-*}mips-*-* If you use the 1.31 version of the MIPS assembler (such as was shipped --- 3005,3011 ---- between stages. @html !
    @end html @heading @anchor{mips-*-*}mips-*-* If you use the 1.31 version of the MIPS assembler (such as was shipped *************** If you override the @code{CC} make varia *** 2990,2997 **** compilers, you may need to add @option{-Wf,-XNg1500 -Olimit 3000}. @html !

    !
    @end html @heading @anchor{mips-dec-*}mips-dec-* These configurations are obsoleted in GCC 3.1. --- 3058,3064 ---- compilers, you may need to add @option{-Wf,-XNg1500 -Olimit 3000}. @html !
    @end html @heading @anchor{mips-dec-*}mips-dec-* These configurations are obsoleted in GCC 3.1. *************** If you override the @code{CC} make varia *** 3024,3031 **** compilers, you may need to add @option{-Wf,-XNg1500 -Olimit 3000}. @html !

    !
    @end html @heading @anchor{mips-mips-riscos*}mips-mips-riscos* These configurations are obsoleted in GCC 3.1. --- 3091,3097 ---- compilers, you may need to add @option{-Wf,-XNg1500 -Olimit 3000}. @html !
    @end html @heading @anchor{mips-mips-riscos*}mips-mips-riscos* These configurations are obsoleted in GCC 3.1. *************** BSD 4.3 configuration for RISC-OS, revis *** 3055,3062 **** System V.4 configuration for RISC-OS, revision @var{rev}. @html !

    !
    @end html @item mips-mips-riscos@var{rev}sysv System V.3 configuration for RISC-OS, revision @var{rev}. --- 3121,3127 ---- System V.4 configuration for RISC-OS, revision @var{rev}. @html !
    @end html @item mips-mips-riscos@var{rev}sysv System V.3 configuration for RISC-OS, revision @var{rev}. *************** RISC-OS revision 4 to RISC-OS revision 5 *** 3068,3075 **** avoiding a linker bug. @html !

    !
    @end html @heading @anchor{mips-sgi-irix4}mips-sgi-irix4 This configuration is obsoleted in GCC 3.1. --- 3133,3139 ---- avoiding a linker bug. @html !
    @end html @heading @anchor{mips-sgi-irix4}mips-sgi-irix4 This configuration is obsoleted in GCC 3.1. *************** ignored. *** 3101,3108 **** @end example @html !

    !
    @end html @heading @anchor{mips-sgi-irix5}mips-sgi-irix5 --- 3165,3171 ---- @end example @html !
    @end html @heading @anchor{mips-sgi-irix5}mips-sgi-irix5 *************** however, you may have success with @comm *** 3147,3154 **** not have GNU @command{make} available. @html !

    !
    @end html @heading @anchor{mips-sgi-irix6}mips-sgi-irix6 --- 3210,3216 ---- not have GNU @command{make} available. @html !
    @end html @heading @anchor{mips-sgi-irix6}mips-sgi-irix6 *************** See @uref{http://freeware.sgi.com/,,http *** 3247,3254 **** information about using GCC on IRIX platforms. @html !

    !
    @end html @heading @anchor{mips-sony-sysv}mips-sony-sysv Sony MIPS NEWS@. This configuration is obsoleted in GCC 3.1. --- 3309,3315 ---- information about using GCC on IRIX platforms. @html !
    @end html @heading @anchor{mips-sony-sysv}mips-sony-sysv Sony MIPS NEWS@. This configuration is obsoleted in GCC 3.1. *************** COFF)@. In particular, the linker does *** 3258,3265 **** GCC when shared libraries are linked in. @html !

    !
    @end html @heading @anchor{ns32k-encore}ns32k-encore This configuration is obsoleted in GCC 3.1. --- 3319,3325 ---- GCC when shared libraries are linked in. @html !
    @end html @heading @anchor{ns32k-encore}ns32k-encore This configuration is obsoleted in GCC 3.1. *************** This configuration is obsoleted in GCC 3 *** 3267,3274 **** Encore ns32000 system. Encore systems are supported only under BSD@. @html !

    !
    @end html @heading @anchor{ns32k-*-genix}ns32k-*-genix National Semiconductor ns32000 system. This configuration is obsoleted --- 3327,3333 ---- Encore ns32000 system. Encore systems are supported only under BSD@. @html !
    @end html @heading @anchor{ns32k-*-genix}ns32k-*-genix National Semiconductor ns32000 system. This configuration is obsoleted *************** Genix has bugs in @code{alloca} and @cod *** 3278,3285 **** compiled versions of these from GNU Emacs. @html !

    !
    @end html @heading @anchor{ns32k-sequent}ns32k-sequent This configuration is obsoleted in GCC 3.1. --- 3337,3343 ---- compiled versions of these from GNU Emacs. @html !
    @end html @heading @anchor{ns32k-sequent}ns32k-sequent This configuration is obsoleted in GCC 3.1. *************** This configuration is obsoleted in GCC 3 *** 3287,3294 **** Go to the Berkeley universe before compiling. @html !

    !
    @end html @heading @anchor{ns32k-utek}ns32k-utek UTEK ns32000 system (``merlin''). This configuration is obsoleted in --- 3345,3351 ---- Go to the Berkeley universe before compiling. @html !
    @end html @heading @anchor{ns32k-utek}ns32k-utek UTEK ns32000 system (``merlin''). This configuration is obsoleted in *************** The C compiler that comes with this syst *** 3299,3306 **** @html !

    !
    @end html @heading @anchor{powerpc*-*-*}powerpc-*-* --- 3356,3362 ---- @html !
    @end html @heading @anchor{powerpc*-*-*}powerpc-*-* *************** You can specify a default version for th *** 3308,3315 **** switch by using the configure option @option{--with-cpu-@var{cpu_type}}. @html !

    !
    @end html @heading @anchor{powerpc-*-darwin*}powerpc-*-darwin* PowerPC running Darwin (Mac OS X kernel). --- 3364,3370 ---- switch by using the configure option @option{--with-cpu-@var{cpu_type}}. @html !
    @end html @heading @anchor{powerpc-*-darwin*}powerpc-*-darwin* PowerPC running Darwin (Mac OS X kernel). *************** binaries are available at *** 3323,3329 **** registration required). Versions of the assembler prior to ``cctools-364'' cannot handle the ! 4-argument form of rlwinm and related mask-using instructions. Darwin 1.3 (Mac OS X 10.0) uses cctools-353 for instance. To get cctools-364, check out @file{cctools} with tag @samp{Apple-364}, build it, and install the assembler as @file{usr/bin/as}. See --- 3378,3384 ---- registration required). Versions of the assembler prior to ``cctools-364'' cannot handle the ! 4-argument form of @code{rlwinm} and related mask-using instructions. Darwin 1.3 (Mac OS X 10.0) uses cctools-353 for instance. To get cctools-364, check out @file{cctools} with tag @samp{Apple-364}, build it, and install the assembler as @file{usr/bin/as}. See *************** number of extensions not available in a *** 3342,3366 **** extensions are generally specific to Mac programming. @html !

    !
    @end html @heading @anchor{powerpc-*-elf}powerpc-*-elf, powerpc-*-sysv4 PowerPC system in big endian mode, running System V.4. @html !

    !
    @end html @heading @anchor{powerpc-*-linux-gnu*}powerpc-*-linux-gnu* You will need ! @uref{ftp://ftp.kernel.org/pub/linux/devel/binutils,,binutils 2.12.90.0.7} or newer for a working GCC@. @html !

    !
    @end html @heading @anchor{powerpc-*-netbsd*}powerpc-*-netbsd* PowerPC system in big endian mode running NetBSD@. To build the --- 3397,3418 ---- extensions are generally specific to Mac programming. @html !
    @end html @heading @anchor{powerpc-*-elf}powerpc-*-elf, powerpc-*-sysv4 PowerPC system in big endian mode, running System V.4. @html !
    @end html @heading @anchor{powerpc-*-linux-gnu*}powerpc-*-linux-gnu* You will need ! @uref{ftp://ftp.kernel.org/pub/linux/devel/binutils,,binutils 2.13.90.0.10} or newer for a working GCC@. @html !
    @end html @heading @anchor{powerpc-*-netbsd*}powerpc-*-netbsd* PowerPC system in big endian mode running NetBSD@. To build the *************** documentation you will need Texinfo vers *** 3368,3427 **** Texinfo version 3.12). @html !

    !
    @end html @heading @anchor{powerpc-*-eabiaix}powerpc-*-eabiaix Embedded PowerPC system in big endian mode with @option{-mcall-aix} selected as the default. @html !

    !
    @end html @heading @anchor{powerpc-*-eabisim}powerpc-*-eabisim Embedded PowerPC system in big endian mode for use in running under the PSIM simulator. @html !

    !
    @end html @heading @anchor{powerpc-*-eabi}powerpc-*-eabi Embedded PowerPC system in big endian mode. @html !

    !
    @end html @heading @anchor{powerpcle-*-elf}powerpcle-*-elf, powerpcle-*-sysv4 PowerPC system in little endian mode, running System V.4. @html !

    !
    @end html @heading @anchor{powerpcle-*-eabisim}powerpcle-*-eabisim Embedded PowerPC system in little endian mode for use in running under the PSIM simulator. @html !

    !
    @end html @heading @anchor{powerpcle-*-eabi}powerpcle-*-eabi Embedded PowerPC system in little endian mode. @html !

    !
    @end html @heading @anchor{powerpcle-*-winnt}powerpcle-*-winnt, powerpcle-*-pe PowerPC system in little endian mode running Windows NT@. @html !

    !
    @end html @heading @anchor{romp-*-aos}romp-*-aos, romp-*-mach These configurations are obsoleted in GCC 3.1. --- 3420,3471 ---- Texinfo version 3.12). @html !
    @end html @heading @anchor{powerpc-*-eabiaix}powerpc-*-eabiaix Embedded PowerPC system in big endian mode with @option{-mcall-aix} selected as the default. @html !
    @end html @heading @anchor{powerpc-*-eabisim}powerpc-*-eabisim Embedded PowerPC system in big endian mode for use in running under the PSIM simulator. @html !
    @end html @heading @anchor{powerpc-*-eabi}powerpc-*-eabi Embedded PowerPC system in big endian mode. @html !
    @end html @heading @anchor{powerpcle-*-elf}powerpcle-*-elf, powerpcle-*-sysv4 PowerPC system in little endian mode, running System V.4. @html !
    @end html @heading @anchor{powerpcle-*-eabisim}powerpcle-*-eabisim Embedded PowerPC system in little endian mode for use in running under the PSIM simulator. @html !
    @end html @heading @anchor{powerpcle-*-eabi}powerpcle-*-eabi Embedded PowerPC system in little endian mode. @html !
    @end html @heading @anchor{powerpcle-*-winnt}powerpcle-*-winnt, powerpcle-*-pe PowerPC system in little endian mode running Windows NT@. @html !
    @end html @heading @anchor{romp-*-aos}romp-*-aos, romp-*-mach These configurations are obsoleted in GCC 3.1. *************** floating-point constants and can be safe *** 3434,3455 **** is correct. @html !

    !
    @end html @heading @anchor{s390-*-linux*}s390-*-linux* S/390 system running Linux for S/390@. @html !

    !
    @end html @heading @anchor{s390x-*-linux*}s390x-*-linux* zSeries system (64-bit) running Linux for zSeries@. @html !

    !
    @end html @c Please use Solaris 2 to refer to all release of Solaris, starting @c with 2.0 until 2.6, 7, and 8. Solaris 1 was a marketing name for --- 3478,3496 ---- is correct. @html !
    @end html @heading @anchor{s390-*-linux*}s390-*-linux* S/390 system running Linux for S/390@. @html !
    @end html @heading @anchor{s390x-*-linux*}s390x-*-linux* zSeries system (64-bit) running Linux for zSeries@. @html !
    @end html @c Please use Solaris 2 to refer to all release of Solaris, starting @c with 2.0 until 2.6, 7, and 8. Solaris 1 was a marketing name for *************** There are patches for Solaris 2.6 (10563 *** 3502,3509 **** 108653-22 for Intel) that fix this bug. @html !

    !
    @end html @heading @anchor{sparc-sun-solaris2*}sparc-sun-solaris2* --- 3543,3549 ---- 108653-22 for Intel) that fix this bug. @html !
    @end html @heading @anchor{sparc-sun-solaris2*}sparc-sun-solaris2* *************** information. *** 3515,3522 **** Sun @command{as} 4.x is broken in that it cannot cope with long symbol names. A typical error message might look similar to the following: ! @samp{/usr/ccs/bin/as: "/var/tmp/ccMsw135.s", line 11041: ! error: can't compute value of an expression involving an external symbol.} This is Sun bug 4237974. This is fixed with patch 108908-02 for Solaris 2.6 and has been fixed in later (5.x) versions of the assembler, --- 3555,3564 ---- Sun @command{as} 4.x is broken in that it cannot cope with long symbol names. A typical error message might look similar to the following: ! @smallexample ! /usr/ccs/bin/as: "/var/tmp/ccMsw135.s", line 11041: error: ! can't compute value of an expression involving an external symbol. ! @end smallexample This is Sun bug 4237974. This is fixed with patch 108908-02 for Solaris 2.6 and has been fixed in later (5.x) versions of the assembler, *************** that supports only 32-bit binaries, one *** 3536,3543 **** 64-bit target libraries. @html !

    !
    @end html @heading @anchor{sparc-sun-solaris2.7}sparc-sun-solaris2.7 --- 3578,3584 ---- 64-bit target libraries. @html !
    @end html @heading @anchor{sparc-sun-solaris2.7}sparc-sun-solaris2.7 *************** the Solaris 7 Recommended Patch Cluster. *** 3579,3585 **** @html

    !


    @end html @heading @anchor{sparc-sun-sunos4*}sparc-sun-sunos4* --- 3620,3626 ---- @html

    !


    @end html @heading @anchor{sparc-sun-sunos4*}sparc-sun-sunos4* *************** be due to a bug in @command{sh}. You ca *** 3598,3605 **** @command{make}. @html !

    !
    @end html @heading @anchor{sparc-unknown-linux-gnulibc1}sparc-unknown-linux-gnulibc1 --- 3639,3645 ---- @command{make}. @html !
    @end html @heading @anchor{sparc-unknown-linux-gnulibc1}sparc-unknown-linux-gnulibc1 *************** for this platform, too. *** 3609,3616 **** @html !

    !
    @end html @heading @anchor{sparc-*-linux*}sparc-*-linux* --- 3649,3655 ---- @html !
    @end html @heading @anchor{sparc-*-linux*}sparc-*-linux* *************** releases mishandled unaligned relocation *** 3620,3627 **** @html !

    !
    @end html @heading @anchor{sparc64-*-*}sparc64-*-* --- 3659,3665 ---- @html !
    @end html @heading @anchor{sparc64-*-*}sparc64-*-* *************** invocation with an environment that caus *** 3632,3639 **** recognize (via @samp{uname -a}) the system as @samp{sparc-*-*} instead. @html !

    !
    @end html @heading @anchor{sparcv9-*-solaris2*}sparcv9-*-solaris2* --- 3670,3676 ---- recognize (via @samp{uname -a}) the system as @samp{sparc-*-*} instead. @html !
    @end html @heading @anchor{sparcv9-*-solaris2*}sparcv9-*-solaris2* *************** step in order to bootstrap this target w *** 3648,3655 **** specifies the v9 architecture to the Sun linker and assembler. @html !

    !
    @end html @heading @anchor{#*-*-sysv*}*-*-sysv* On System V release 3, you may get this error message --- 3685,3691 ---- specifies the v9 architecture to the Sun linker and assembler. @html !
    @end html @heading @anchor{#*-*-sysv*}*-*-sysv* On System V release 3, you may get this error message *************** On a System V release 4 system, make sur *** 3683,3698 **** @file{/usr/ucb} uses libraries which have bugs. @html !

    !
    @end html @heading @anchor{vax-dec-ultrix}vax-dec-ultrix Don't try compiling with VAX C (@code{vcc}). It produces incorrect code in some cases (for example, when @code{alloca} is used). @html !

    !
    @end html @heading @anchor{we32k-*-*}we32k-*-* These computers are also known as the 3b2, 3b5, 3b20 and other similar --- 3719,3732 ---- @file{/usr/ucb} uses libraries which have bugs. @html !
    @end html @heading @anchor{vax-dec-ultrix}vax-dec-ultrix Don't try compiling with VAX C (@code{vcc}). It produces incorrect code in some cases (for example, when @code{alloca} is used). @html !
    @end html @heading @anchor{we32k-*-*}we32k-*-* These computers are also known as the 3b2, 3b5, 3b20 and other similar *************** You may need to raise the ULIMIT setting *** 3730,3737 **** as the file @file{cc1plus} is larger than one megabyte. @html !

    !
    @end html @heading @anchor{xtensa-*-elf}xtensa-*-elf --- 3764,3770 ---- as the file @file{cc1plus} is larger than one megabyte. @html !
    @end html @heading @anchor{xtensa-*-elf}xtensa-*-elf *************** downloaded files include a customized co *** 3749,3756 **** which you can use to replace the default header file. @html !

    !
    @end html @heading @anchor{xtensa-*-linux*}xtensa-*-linux* --- 3782,3788 ---- which you can use to replace the default header file. @html !
    @end html @heading @anchor{xtensa-*-linux*}xtensa-*-linux* *************** respects, this target is the same as the *** 3762,3769 **** @uref{#xtensa-*-elf,,@samp{xtensa-*-elf}} target. @html !

    !
    @end html @heading @anchor{windows}Microsoft Windows (32-bit) --- 3794,3800 ---- @uref{#xtensa-*-elf,,@samp{xtensa-*-elf}} target. @html !
    @end html @heading @anchor{windows}Microsoft Windows (32-bit) *************** Current (as of early 2001) snapshots of *** 3774,3781 **** without modification. @html !

    !
    @end html @heading @anchor{os2}OS/2 --- 3805,3811 ---- without modification. @html !
    @end html @heading @anchor{os2}OS/2 *************** An older copy of GCC 2.8.1 is included w *** 3788,3795 **** ftp://ftp.leo.org/pub/comp/os/os2/leo/devtools/emx+gcc/}. @html !

    !
    @end html @heading @anchor{older}Older systems --- 3818,3824 ---- ftp://ftp.leo.org/pub/comp/os/os2/leo/devtools/emx+gcc/}. @html !
    @end html @heading @anchor{older}Older systems *************** about GCC on such systems (which may no *** 3839,3846 **** current GCC) is to be found in the GCC texinfo manual. @html !

    !
    @end html @heading @anchor{elf_targets}all ELF targets (SVR4, Solaris 2, etc.) --- 3868,3874 ---- current GCC) is to be found in the GCC texinfo manual. @html !
    @end html @heading @anchor{elf_targets}all ELF targets (SVR4, Solaris 2, etc.) *************** automatically. *** 3851,3858 **** @html !

    !

    @end html @ifhtml --- 3879,3885 ---- @html !


    @end html @ifhtml *************** automatically. *** 3864,3871 **** @ifset oldhtml @include install-old.texi @html !

    !

    @end html @ifhtml --- 3891,3897 ---- @ifset oldhtml @include install-old.texi @html !


    @end html @ifhtml *************** automatically. *** 3877,3884 **** @ifset gfdlhtml @include fdl.texi @html !

    !

    @end html @ifhtml --- 3903,3909 ---- @ifset gfdlhtml @include fdl.texi @html !


    @end html @ifhtml diff -Nrc3pad gcc-3.2/gcc/doc/invoke.texi gcc-3.2.1/gcc/doc/invoke.texi *** gcc-3.2/gcc/doc/invoke.texi Thu May 16 10:55:55 2002 --- gcc-3.2.1/gcc/doc/invoke.texi Tue Oct 29 16:35:04 2002 *************** in the following sections. *** 157,163 **** @xref{Overall Options,,Options Controlling the Kind of Output}. @gccoptlist{ -c -S -E -o @var{file} -pipe -pass-exit-codes -x @var{language} @gol ! -v -### --target-help --help} @item C Language Options @xref{C Dialect Options,,Options Controlling C Dialect}. --- 157,163 ---- @xref{Overall Options,,Options Controlling the Kind of Output}. @gccoptlist{ -c -S -E -o @var{file} -pipe -pass-exit-codes -x @var{language} @gol ! -v -### --help --target-help --version} @item C Language Options @xref{C Dialect Options,,Options Controlling C Dialect}. *************** in the following sections. *** 169,175 **** -fallow-single-precision -fcond-mismatch @gol -fsigned-bitfields -fsigned-char @gol -funsigned-bitfields -funsigned-char @gol ! -fwritable-strings -fshort-wchar} @item C++ Language Options @xref{C++ Dialect Options,,Options Controlling C++ Dialect}. --- 169,175 ---- -fallow-single-precision -fcond-mismatch @gol -fsigned-bitfields -fsigned-char @gol -funsigned-bitfields -funsigned-char @gol ! -fwritable-strings} @item C++ Language Options @xref{C++ Dialect Options,,Options Controlling C++ Dialect}. *************** in the following sections. *** 187,193 **** -fno-optional-diags -fpermissive @gol -frepo -fno-rtti -fstats -ftemplate-depth-@var{n} @gol -fuse-cxa-atexit -fvtable-gc -fno-weak -nostdinc++ @gol ! -fno-default-inline -Wctor-dtor-privacy @gol -Wnon-virtual-dtor -Wreorder @gol -Weffc++ -Wno-deprecated @gol -Wno-non-template-friend -Wold-style-cast @gol --- 187,193 ---- -fno-optional-diags -fpermissive @gol -frepo -fno-rtti -fstats -ftemplate-depth-@var{n} @gol -fuse-cxa-atexit -fvtable-gc -fno-weak -nostdinc++ @gol ! -fno-default-inline -Wabi -Wctor-dtor-privacy @gol -Wnon-virtual-dtor -Wreorder @gol -Weffc++ -Wno-deprecated @gol -Wno-non-template-friend -Wold-style-cast @gol *************** in the following sections. *** 211,217 **** @xref{Warning Options,,Options to Request or Suppress Warnings}. @gccoptlist{ -fsyntax-only -pedantic -pedantic-errors @gol ! -w -W -Wall -Waggregate-return @gol -Wcast-align -Wcast-qual -Wchar-subscripts -Wcomment @gol -Wconversion -Wno-deprecated-declarations @gol -Wdisabled-optimization -Wdiv-by-zero -Werror @gol --- 211,217 ---- @xref{Warning Options,,Options to Request or Suppress Warnings}. @gccoptlist{ -fsyntax-only -pedantic -pedantic-errors @gol ! -w -W -Wall -Waggregate-return @gol -Wcast-align -Wcast-qual -Wchar-subscripts -Wcomment @gol -Wconversion -Wno-deprecated-declarations @gol -Wdisabled-optimization -Wdiv-by-zero -Werror @gol *************** in the following sections. *** 222,228 **** -Werror-implicit-function-declaration @gol -Wimport -Winline @gol -Wlarger-than-@var{len} -Wlong-long @gol ! -Wmain -Wmissing-braces -Wmissing-declarations @gol -Wmissing-format-attribute -Wmissing-noreturn @gol -Wmultichar -Wno-format-extra-args -Wno-format-y2k @gol -Wno-import -Wpacked -Wpadded @gol --- 222,228 ---- -Werror-implicit-function-declaration @gol -Wimport -Winline @gol -Wlarger-than-@var{len} -Wlong-long @gol ! -Wmain -Wmissing-braces @gol -Wmissing-format-attribute -Wmissing-noreturn @gol -Wmultichar -Wno-format-extra-args -Wno-format-y2k @gol -Wno-import -Wpacked -Wpadded @gol *************** in the following sections. *** 236,242 **** @item C-only Warning Options @gccoptlist{ ! -Wbad-function-cast -Wmissing-prototypes -Wnested-externs @gol -Wstrict-prototypes -Wtraditional} @item Debugging Options --- 236,243 ---- @item C-only Warning Options @gccoptlist{ ! -Wbad-function-cast -Wmissing-declarations @gol ! -Wmissing-prototypes -Wnested-externs @gol -Wstrict-prototypes -Wtraditional} @item Debugging Options *************** in the following sections. *** 248,254 **** -fdump-tree-original@r{[}-@var{n}@r{]} -fdump-tree-optimized@r{[}-@var{n}@r{]} @gol -fdump-tree-inlined@r{[}-@var{n}@r{]} @gol -fmem-report -fpretend-float @gol ! -fprofile-arcs -ftest-coverage -ftime-report @gol -g -g@var{level} -gcoff -gdwarf -gdwarf-1 -gdwarf-1+ -gdwarf-2 @gol -ggdb -gstabs -gstabs+ -gvms -gxcoff -gxcoff+ @gol -p -pg -print-file-name=@var{library} -print-libgcc-file-name @gol --- 249,256 ---- -fdump-tree-original@r{[}-@var{n}@r{]} -fdump-tree-optimized@r{[}-@var{n}@r{]} @gol -fdump-tree-inlined@r{[}-@var{n}@r{]} @gol -fmem-report -fpretend-float @gol ! -fprofile-arcs -fsched-verbose=@var{n} @gol ! -ftest-coverage -ftime-report @gol -g -g@var{level} -gcoff -gdwarf -gdwarf-1 -gdwarf-1+ -gdwarf-2 @gol -ggdb -gstabs -gstabs+ -gvms -gxcoff -gxcoff+ @gol -p -pg -print-file-name=@var{library} -print-libgcc-file-name @gol *************** in the following sections. *** 261,266 **** --- 263,269 ---- @gccoptlist{ -falign-functions=@var{n} -falign-jumps=@var{n} @gol -falign-labels=@var{n} -falign-loops=@var{n} @gol + -fbounds-check @gol -fbranch-probabilities -fcaller-saves -fcprop-registers @gol -fcse-follow-jumps -fcse-skip-blocks -fdata-sections @gol -fdelayed-branch -fdelete-null-pointer-checks @gol *************** in the following sections. *** 269,275 **** -fgcse -fgcse-lm -fgcse-sm @gol -finline-functions -finline-limit=@var{n} -fkeep-inline-functions @gol -fkeep-static-consts -fmerge-constants -fmerge-all-constants @gol ! -fmove-all-movables -fno-default-inline -fno-defer-pop @gol -fno-function-cse -fno-guess-branch-probability @gol -fno-inline -fno-math-errno -fno-peephole -fno-peephole2 @gol -funsafe-math-optimizations -fno-trapping-math @gol --- 272,279 ---- -fgcse -fgcse-lm -fgcse-sm @gol -finline-functions -finline-limit=@var{n} -fkeep-inline-functions @gol -fkeep-static-consts -fmerge-constants -fmerge-all-constants @gol ! -fmove-all-movables -fno-branch-count-reg @gol ! -fno-default-inline -fno-defer-pop @gol -fno-function-cse -fno-guess-branch-probability @gol -fno-inline -fno-math-errno -fno-peephole -fno-peephole2 @gol -funsafe-math-optimizations -fno-trapping-math @gol *************** in the following sections. *** 278,286 **** -freduce-all-givs -fregmove -frename-registers @gol -frerun-cse-after-loop -frerun-loop-opt @gol -fschedule-insns -fschedule-insns2 @gol -fsingle-precision-constant -fssa -fssa-ccp -fssa-dce @gol ! -fstrength-reduce -fstrict-aliasing -fthread-jumps -ftrapv @gol ! -funroll-all-loops -funroll-loops @gol --param @var{name}=@var{value} -O -O0 -O1 -O2 -O3 -Os} --- 282,292 ---- -freduce-all-givs -fregmove -frename-registers @gol -frerun-cse-after-loop -frerun-loop-opt @gol -fschedule-insns -fschedule-insns2 @gol + -fno-sched-interblock -fno-sched-spec @gol + -fsched-spec-load -fsched-spec-load-dangerous @gol -fsingle-precision-constant -fssa -fssa-ccp -fssa-dce @gol ! -fstrength-reduce -fstrict-aliasing -fthread-jumps @gol ! -ftrapv -funroll-all-loops -funroll-loops @gol --param @var{name}=@var{value} -O -O0 -O1 -O2 -O3 -Os} *************** in the following sections. *** 444,450 **** -mno-relocatable -mrelocatable-lib -mno-relocatable-lib @gol -mtoc -mno-toc -mlittle -mlittle-endian -mbig -mbig-endian @gol -mcall-aix -mcall-sysv -mcall-netbsd @gol ! -maix-struct-return -msvr4-struct-return -mabi=altivec -mabi=no-altivec @gol -mprototype -mno-prototype @gol -msim -mmvme -mads -myellowknife -memb -msdata @gol --- 450,456 ---- -mno-relocatable -mrelocatable-lib -mno-relocatable-lib @gol -mtoc -mno-toc -mlittle -mlittle-endian -mbig -mbig-endian @gol -mcall-aix -mcall-sysv -mcall-netbsd @gol ! -maix-struct-return -msvr4-struct-return @gol -mabi=altivec -mabi=no-altivec @gol -mprototype -mno-prototype @gol -msim -mmvme -mads -myellowknife -memb -msdata @gol *************** in the following sections. *** 481,491 **** -mno-fp-ret-in-387 -msoft-float -msvr3-shlib @gol -mno-wide-multiply -mrtd -malign-double @gol -mpreferred-stack-boundary=@var{num} @gol ! -mmmx -msse -msse2 -msse-math -m3dnow @gol -mthreads -mno-align-stringops -minline-all-stringops @gol -mpush-args -maccumulate-outgoing-args -m128bit-long-double @gol -m96bit-long-double -mregparm=@var{num} -momit-leaf-frame-pointer @gol -mno-red-zone@gol -m32 -m64} @emph{HPPA Options} --- 487,498 ---- -mno-fp-ret-in-387 -msoft-float -msvr3-shlib @gol -mno-wide-multiply -mrtd -malign-double @gol -mpreferred-stack-boundary=@var{num} @gol ! -mmmx -msse -msse2 -m3dnow @gol -mthreads -mno-align-stringops -minline-all-stringops @gol -mpush-args -maccumulate-outgoing-args -m128bit-long-double @gol -m96bit-long-double -mregparm=@var{num} -momit-leaf-frame-pointer @gol -mno-red-zone@gol + -mcmodel=@var{code-model} @gol -m32 -m64} @emph{HPPA Options} *************** in the following sections. *** 609,616 **** @emph{D30V Options} @gccoptlist{ ! -mextmem -mextmemory -monchip -mno-asm-optimize -masm-optimize @gol ! -mbranch-cost=@var{n} -mcond-exec=@var{n}} @emph{S/390 and zSeries Options} @gccoptlist{ --- 616,623 ---- @emph{D30V Options} @gccoptlist{ ! -mextmem -mextmemory -monchip -mno-asm-optimize @gol ! -masm-optimize -mbranch-cost=@var{n} -mcond-exec=@var{n}} @emph{S/390 and zSeries Options} @gccoptlist{ *************** in the following sections. *** 669,675 **** -fno-common -fno-ident -fno-gnu-linker @gol -fpcc-struct-return -fpic -fPIC @gol -freg-struct-return -fshared-data -fshort-enums @gol ! -fshort-double -fvolatile @gol -fvolatile-global -fvolatile-static @gol -fverbose-asm -fpack-struct -fstack-check @gol -fstack-limit-register=@var{reg} -fstack-limit-symbol=@var{sym} @gol --- 676,682 ---- -fno-common -fno-ident -fno-gnu-linker @gol -fpcc-struct-return -fpic -fPIC @gol -freg-struct-return -fshared-data -fshort-enums @gol ! -fshort-double -fshort-wchar -fvolatile @gol -fvolatile-global -fvolatile-static @gol -fverbose-asm -fpack-struct -fstack-check @gol -fstack-limit-register=@var{reg} -fstack-limit-symbol=@var{sym} @gol *************** be displayed. *** 914,919 **** --- 921,930 ---- @opindex target-help Print (on the standard output) a description of target specific command line options for each tool. + + @item --version + @opindex version + Display the version number and copyrights of the invoked GCC. @end table @node Invoking G++ *************** than double precision. If you must use *** 1296,1307 **** to use single precision operations when the operands are single precision, use this option. This option has no effect when compiling with ISO or GNU C conventions (the default). - - @item -fshort-wchar - @opindex fshort-wchar - Override the underlying type for @samp{wchar_t} to be @samp{short - unsigned int} instead of the default for the target. This option is - useful for building programs to run under WINE@. @end table @node C++ Dialect Options --- 1307,1312 ---- *************** Do not assume @samp{inline} for function *** 1550,1555 **** --- 1555,1612 ---- functions will have linkage like inline functions; they just won't be inlined by default. + @item -Wabi @r{(C++ only)} + @opindex Wabi + Warn when G++ generates code that is probably not compatible with the + vendor-neutral C++ ABI. Although an effort has been made to warn about + all such cases, there are probably some cases that are not warned about, + even though G++ is generating incompatible code. There may also be + cases where warnings are emitted even though the code that is generated + will be compatible. + + You should rewrite your code to avoid these warnings if you are + concerned about the fact that code generated by G++ may not be binary + compatible with code generated by other compilers. + + The known incompatibilites at this point include: + + @itemize @bullet + + @item + Incorrect handling of tail-padding for bit-fields. G++ may attempt to + pack data into the same byte as a base class. For example: + + @smallexample + struct A @{ virtual void f(); int f1 : 1; @}; + struct B : public A @{ int f2 : 1; @}; + @end smallexample + + @noindent + In this case, G++ will place @code{B::f2} into the same byte + as@code{A::f1}; other compilers will not. You can avoid this problem + by explicitly padding @code{A} so that its size is a multiple of the + byte size on your platform; that will cause G++ and other compilers to + layout @code{B} identically. + + @item + Incorrect handling of tail-padding for virtual bases. G++ does not use + tail padding when laying out virtual bases. For example: + + @smallexample + struct A @{ virtual void f(); char c1; @}; + struct B @{ B(); char c2; @}; + struct C : public A, public virtual B @{@}; + @end smallexample + + @noindent + In this case, G++ will not place @code{B} into the tail-padding for + @code{A}; other compilers will. You can avoid this problem by + explicitly padding @code{A} so that its size is a multiple of its + alignment (ignoring virtual base classes); that will cause G++ and other + compilers to layout @code{C} identically. + + @end itemize + @item -Wctor-dtor-privacy @r{(C++ only)} @opindex Wctor-dtor-privacy Warn when a class seems unusable, because all the constructors or *************** optimization and code generation options *** 2876,2893 **** Control Optimization}). The other use of @option{-fprofile-arcs} is for use with @code{gcov}, ! when it is used with the @option{-ftest-coverage} option. GCC ! supports two methods of determining code coverage: the options that ! support @code{gcov}, and options @option{-a} and @option{-ax}, which ! write information to text files. The options that support @code{gcov} ! do not need to instrument every arc in the program, so a program compiled ! with them runs faster than a program compiled with @option{-a}, which ! adds instrumentation code to every basic block in the program. The ! tradeoff: since @code{gcov} does not have execution counts for all ! branches, it must start with the execution counts for the instrumented ! branches, and then iterate over the program flow graph until the entire ! graph has been solved. Hence, @code{gcov} runs a little more slowly than ! a program which uses information from @option{-a} and @option{-ax}. With @option{-fprofile-arcs}, for each function of your program GCC creates a program flow graph, then finds a spanning tree for the graph. --- 2933,2939 ---- Control Optimization}). The other use of @option{-fprofile-arcs} is for use with @code{gcov}, ! when it is used with the @option{-ftest-coverage} option. With @option{-fprofile-arcs}, for each function of your program GCC creates a program flow graph, then finds a spanning tree for the graph. *************** executed. When an arc is the only exit *** 2897,2907 **** instrumentation code can be added to the block; otherwise, a new basic block must be created to hold the instrumentation code. - This option makes it possible to estimate branch probabilities and to - calculate basic block execution counts. In general, basic block - execution counts as provided by @option{-a} do not give enough - information to estimate all branch probabilities. - @need 2000 @item -ftest-coverage @opindex ftest-coverage --- 2943,2948 ---- *************** Dump after all tree based optimization, *** 3133,3138 **** --- 3174,3196 ---- Dump after function inlining, to @file{@var{file}.inlined}. @end table + @item -fsched-verbose=@var{n} + @opindex fsched-verbose + On targets that use instruction scheduling, this option controls the + amount of debugging output the scheduler prints. This information is + written to standard error, unless @option{-dS} or @option{-dR} is + specified, in which case it is output to the usual dump + listing file, @file{.sched} or @file{.sched2} respectively. However + for @var{n} greater than nine, the output is always printed to standard + error. + + For @var{n} greater than zero, @option{-fsched-verbose} outputs the + same information as @option{-dRS}. For @var{n} greater than one, it + also output basic block probabilities, detailed ready list information + and unit/insn info. For @var{n} greater than two, it includes RTL + at abort point, control-flow and regions info. And for @var{n} over + four, @option{-fsched-verbose} also includes dependence info. + @item -fpretend-float @opindex fpretend-float When running a cross-compiler, pretend that the target machine uses the *************** types. Languages like C or C++ require *** 3437,3442 **** --- 3495,3508 ---- have distinct location, so using this option will result in non-conforming behavior. + @item -fno-branch-count-reg + @opindex fno-branch-count-reg + Do not use ``decrement and branch'' instructions on a count register, + but instead generate a sequence of instructions that decrement a + register, compare it against zero, then branch based upon the result. + This option is only meaningful on architectures that support such + instructions, which include x86, PowerPC, IA-64 and S/390. + @item -fno-function-cse @opindex fno-function-cse Do not put function addresses in registers; make each instruction that *************** an exact implementation of IEEE or ISO r *** 3499,3504 **** --- 3565,3578 ---- math functions. The default is @option{-ftrapping-math}. + + @item -fbounds-check + @opindex fbounds-check + For front-ends that support it, generate additional code to check that + indices used to access arrays are within the declared range. This is + currenly only supported by the Java and Fortran 77 front-ends, where + this option defaults to true and false respectively. + @end table The following options control specific optimizations. The @option{-O2} *************** instruction scheduling after register al *** 3626,3631 **** --- 3700,3729 ---- especially useful on machines with a relatively small number of registers and where memory load instructions take more than one cycle. + @item -fno-sched-interblock + @opindex fno-sched-interblock + Don't schedule instructions across basic blocks. This is normally + enabled by default when scheduling before register allocation, i.e.@: + with @option{-fschedule-insns} or at @option{-O2} or higher. + + @item -fno-sched-spec + @opindex fno-sched-spec + Don't allow speculative motion of non-load instructions. This is normally + enabled by default when scheduling before register allocation, i.e.@: + with @option{-fschedule-insns} or at @option{-O2} or higher. + + @item -fsched-spec-load + @opindex fsched-spec-load + Allow speculative motion of some load instructions. This only makes + sense when scheduling before register allocation, i.e.@: with + @option{-fschedule-insns} or at @option{-O2} or higher. + + @item -fsched-spec-load-dangerous + @opindex fsched-spec-load-dangerous + Allow speculative motion of more load instructions. This only makes + sense when scheduling before register allocation, i.e.@: with + @option{-fschedule-insns} or at @option{-O2} or higher. + @item -ffunction-sections @itemx -fdata-sections @opindex ffunction-sections *************** one @option{-I} option, the directories *** 4199,4213 **** order; the standard system directories come after. If a standard system include directory, or a directory specified with ! @option{-isystem}, is also specified with @option{-I}, it will be ! searched only in the position requested by @option{-I}. Also, it will ! not be considered a system include directory. If that directory really ! does contain system headers, there is a good chance that they will ! break. For instance, if GCC's installation procedure edited the headers ! in @file{/usr/include} to fix bugs, @samp{-I/usr/include} will cause the ! original, buggy headers to be found instead of the corrected ones. GCC ! will issue a warning when a system include directory is hidden in this ! way. @item -I- @opindex I- --- 4297,4309 ---- order; the standard system directories come after. If a standard system include directory, or a directory specified with ! @option{-isystem}, is also specified with @option{-I}, the @option{-I} ! option will be ignored. The directory will still be searched but as a ! system directory at its normal position in the system include chain. ! This is to ensure that GCC's procedure to fix buggy system headers and ! the ordering for the include_next directive are not inadvertantly changed. ! If you really need to change the search order for system directories, ! use the @option{-nostdinc} and/or @option{-isystem} options. @item -I- @opindex I- *************** direct access to the MMX, SSE and 3Dnow *** 7530,7535 **** --- 7626,7634 ---- @xref{X86 Built-in Functions}, for details of the functions enabled and disabled by these switches. + To have SSE/SSE2 instructions generated automatically from floating-point code, + see @option{-mfpmath=sse}. + @item -mpush-args @itemx -mno-push-args @opindex mpush-args *************** by the x86-64 ABI, it is a 128-byte area *** 7598,7603 **** --- 7697,7728 ---- stack pointer that will not be modified by signal or interrupt handlers and therefore can be used for temporary data without adjusting the stack pointer. The flag @option{-mno-red-zone} disables this red zone. + + @item -mcmodel=small + @opindex mcmodel=small + Generate code for the small code model: the program and its symbols must + be linked in the lower 2 GB of the address space. Pointers are 64 bits. + Programs can be statically or dynamically linked. This is the default + code model. + + @item -mcmodel=kernel + @opindex mcmodel=kernel + Generate code for the kernel code model. The kernel runs in the + negative 2 GB of the address space. + This model has to be used for Linux kernel code. + + @item -mcmodel=medium + @opindex mcmodel=medium + Generate code for the medium model: The program is linked in the lower 2 + GB of the address space but symbols can be located anywhere in the + address space. Programs can be statically or dynamically linked, but + building of shared libraries are not supported with the medium model. + + @item -mcmodel=large + @opindex mcmodel=large + Generate code for the large model: This model makes no assumptions + about addresses and sizes of sections. Currently GCC does not implement + this model. @end table @node HPPA Options *************** unwinding from asynchronous events (such *** 9637,9643 **** Return ``short'' @code{struct} and @code{union} values in memory like longer ones, rather than in registers. This convention is less efficient, but it has the advantage of allowing intercallability between ! GCC-compiled files and files compiled with other compilers. The precise convention for returning structures in memory depends on the target configuration macros. --- 9762,9769 ---- Return ``short'' @code{struct} and @code{union} values in memory like longer ones, rather than in registers. This convention is less efficient, but it has the advantage of allowing intercallability between ! GCC-compiled files and files compiled with other compilers, particularly ! the Portable C Compiler (pcc). The precise convention for returning structures in memory depends on the target configuration macros. *************** on the target configuration macros. *** 9645,9650 **** --- 9771,9781 ---- Short structures and unions are those whose size and alignment match that of some integer type. + @strong{Warning:} code compiled with the @option{-fpcc-struct-return} + switch is not binary compatible with code compiled with the + @option{-freg-struct-return} switch. + Use it to conform to a non-default application binary interface. + @item -freg-struct-return @opindex freg-struct-return Return @code{struct} and @code{union} values in registers when possible. *************** defaults to @option{-fpcc-struct-return} *** 9658,9673 **** --- 9789,9827 ---- the principal compiler. In those cases, we can choose the standard, and we chose the more efficient register return alternative. + @strong{Warning:} code compiled with the @option{-freg-struct-return} + switch is not binary compatible with code compiled with the + @option{-fpcc-struct-return} switch. + Use it to conform to a non-default application binary interface. + @item -fshort-enums @opindex fshort-enums Allocate to an @code{enum} type only as many bytes as it needs for the declared range of possible values. Specifically, the @code{enum} type will be equivalent to the smallest integer type which has enough room. + @strong{Warning:} the @option{-fshort-enums} switch causes GCC to generate + code that is not binary compatible with code generated without that switch. + Use it to conform to a non-default application binary interface. + @item -fshort-double @opindex fshort-double Use the same size for @code{double} as for @code{float}. + @strong{Warning:} the @option{-fshort-double} switch causes GCC to generate + code that is not binary compatible with code generated without that switch. + Use it to conform to a non-default application binary interface. + + @item -fshort-wchar + @opindex fshort-wchar + Override the underlying type for @samp{wchar_t} to be @samp{short + unsigned int} instead of the default for the target. This option is + useful for building programs to run under WINE@. + + @strong{Warning:} the @option{-fshort-wchar} switch causes GCC to generate + code that is not binary compatible with code generated without that switch. + Use it to conform to a non-default application binary interface. + @item -fshared-data @opindex fshared-data Requests that the data and non-@code{const} variables of this *************** three-way choice. *** 9809,9817 **** @item -fpack-struct @opindex fpack-struct ! Pack all structure members together without holes. Usually you would ! not want to use this option, since it makes the code suboptimal, and ! the offsets of structure members won't agree with system libraries. @item -finstrument-functions @opindex finstrument-functions --- 9963,9974 ---- @item -fpack-struct @opindex fpack-struct ! Pack all structure members together without holes. ! ! @strong{Warning:} the @option{-fpack-struct} switch causes GCC to generate ! code that is not binary compatible with code generated without that switch. ! Additionally, it makes the code suboptimial. ! Use it to conform to a non-default application binary interface. @item -finstrument-functions @opindex finstrument-functions *************** This option and its counterpart, @option *** 9908,9915 **** change the way C symbols are represented in the object file. One use is to help link with legacy assembly code. ! Be warned that you should know what you are doing when invoking this ! option, and that not all targets provide complete support for it. @end table @c man end --- 10065,10074 ---- change the way C symbols are represented in the object file. One use is to help link with legacy assembly code. ! @strong{Warning:} the @option{-fleading-underscore} switch causes GCC to ! generate code that is not binary compatible with code generated without that ! switch. Use it to conform to a non-default application binary interface. ! Not all targets provide complete support for this switch. @end table @c man end diff -Nrc3pad gcc-3.2/gcc/doc/makefile.texi gcc-3.2.1/gcc/doc/makefile.texi *** gcc-3.2/gcc/doc/makefile.texi Thu Jan 10 16:04:23 2002 --- gcc-3.2.1/gcc/doc/makefile.texi Wed Sep 11 16:40:28 2002 *************** You can specify specific tests by settin *** 48,56 **** of the @file{.exp} file, optionally followed by (for some tests) an equals and a file wildcard, like: ! @example make check-gcc RUNTESTFLAGS="execute.exp=19980413-*" ! @end example Note that running the testsuite may require additional tools be installed, such as TCL or dejagnu. --- 48,56 ---- of the @file{.exp} file, optionally followed by (for some tests) an equals and a file wildcard, like: ! @smallexample make check-gcc RUNTESTFLAGS="execute.exp=19980413-*" ! @end smallexample Note that running the testsuite may require additional tools be installed, such as TCL or dejagnu. diff -Nrc3pad gcc-3.2/gcc/doc/rtl.texi gcc-3.2.1/gcc/doc/rtl.texi *** gcc-3.2/gcc/doc/rtl.texi Sat Feb 23 12:59:08 2002 --- gcc-3.2.1/gcc/doc/rtl.texi Wed Sep 11 16:40:28 2002 *************** An hypothetical example might be a patte *** 2316,2326 **** either wrap around or use saturating addition depending on the value of a special control register: ! @example (parallel [(set (reg:SI 2) (unspec:SI [(reg:SI 3) (reg:SI 4)] 0)) (use (reg:SI 1))]) ! @end example @noindent --- 2316,2326 ---- either wrap around or use saturating addition depending on the value of a special control register: ! @smallexample (parallel [(set (reg:SI 2) (unspec:SI [(reg:SI 3) (reg:SI 4)] 0)) (use (reg:SI 1))]) ! @end smallexample @noindent *************** where @var{z} is an index register and @ *** 2552,2561 **** Here is an example of its use: ! @example (mem:SF (post_modify:SI (reg:SI 42) (plus (reg:SI 42) (reg:SI 48)))) ! @end example This says to modify pseudo register 42 by adding the contents of pseudo register 48 to it, after the use of what ever 42 points to. --- 2552,2561 ---- Here is an example of its use: ! @smallexample (mem:SF (post_modify:SI (reg:SI 42) (plus (reg:SI 42) (reg:SI 48)))) ! @end smallexample This says to modify pseudo register 42 by adding the contents of pseudo register 48 to it, after the use of what ever 42 points to. diff -Nrc3pad gcc-3.2/gcc/doc/sourcebuild.texi gcc-3.2.1/gcc/doc/sourcebuild.texi *** gcc-3.2/gcc/doc/sourcebuild.texi Mon Apr 15 18:59:52 2002 --- gcc-3.2.1/gcc/doc/sourcebuild.texi Wed Nov 13 21:17:09 2002 *************** here; FIXME: document the others. *** 738,743 **** --- 738,744 ---- @menu * Test Idioms:: Idioms used in test suite code. * C Tests:: The C language test suites. + * libgcj Tests:: The Java library test suites. @end menu @node Test Idioms *************** shouldn't. *** 870,872 **** --- 871,893 ---- FIXME: merge in @file{testsuite/README.gcc} and discuss the format of test cases and magic comments more. + + @node libgcj Tests + @subsection The Java library test suites. + + Runtime tests are executed via @samp{make check} from the @samp{testsuite} + directory of the libjava hierarchy in the build tree. Additional runtime + tests can be checked into this testsuite. + + Regression testing of the core packages in libgcj is also covered by the + Mauve test suite. The @uref{http://sources.redhat.com/mauve/,,Mauve Project} + develops tests for the Java Class Libraries. These tests are run as part + of libgcj testing by specifying the location of the Mauve tree when invoking + @samp{make}, as in @samp{make MAUVEDIR=~/mauve check}. + + The @uref{http://oss.software.ibm.com/developerworks/opensource/jacks/,, + Jacks} project provides a test suite for Java compilers that can be used + to test changes that affect the GCJ front end. There is no automated + mechanism to run the Jacks suite as part of GCJ testing. + + We encourage developers to contribute test cases to Mauve and Jacks. diff -Nrc3pad gcc-3.2/gcc/doc/standards.texi gcc-3.2.1/gcc/doc/standards.texi *** gcc-3.2/gcc/doc/standards.texi Mon Apr 15 18:59:52 2002 --- gcc-3.2.1/gcc/doc/standards.texi Wed Sep 11 16:40:28 2002 *************** information concerning the history of C *** 168,178 **** There is no formal written standard for Objective-C@. The most authoritative manual is ``Object-Oriented Programming and the ! Objective-C Language'', available at a number of web sites; ! @uref{http://developer.apple.com/techpubs/macosx/Cocoa/ObjectiveC/} has a ! recent version, while @uref{http://www.toodarkpark.org/computers/objc/} ! is an older example. @uref{http://www.gnustep.org} includes useful ! information as well. @xref{Top, GNAT Reference Manual, About This Guide, gnat_rm, GNAT Reference Manual}, for information on standard --- 168,186 ---- There is no formal written standard for Objective-C@. The most authoritative manual is ``Object-Oriented Programming and the ! Objective-C Language'', available at a number of web sites ! ! @itemize ! @item ! @uref{http://developer.apple.com/techpubs/macosx/Cocoa/ObjectiveC/} ! is a recent version ! @item ! @uref{http://www.toodarkpark.org/computers/objc/} ! is an older example ! @item ! @uref{http://www.gnustep.org} ! has additional useful information ! @end itemize @xref{Top, GNAT Reference Manual, About This Guide, gnat_rm, GNAT Reference Manual}, for information on standard diff -Nrc3pad gcc-3.2/gcc/doc/tm.texi gcc-3.2.1/gcc/doc/tm.texi *** gcc-3.2/gcc/doc/tm.texi Wed Aug 7 18:10:57 2002 --- gcc-3.2.1/gcc/doc/tm.texi Sat Sep 14 00:26:38 2002 *************** such as one option that enables many opt *** 156,166 **** multilibs. Example nonsensical definition, where @code{-malt-abi}, @code{-EB}, and @code{-mspoo} cause different multilibs to be chosen: ! @example #define TARGET_OPTION_TRANSLATE_TABLE \ @{ "-fast", "-march=fast-foo -malt-abi -I/usr/fast-foo" @}, \ @{ "-compat", "-EB -malign=4 -mspoo" @} ! @end example @findex CPP_SPEC @item CPP_SPEC --- 156,166 ---- multilibs. Example nonsensical definition, where @code{-malt-abi}, @code{-EB}, and @code{-mspoo} cause different multilibs to be chosen: ! @smallexample #define TARGET_OPTION_TRANSLATE_TABLE \ @{ "-fast", "-march=fast-foo -malt-abi -I/usr/fast-foo" @}, \ @{ "-compat", "-EB -malign=4 -mspoo" @} ! @end smallexample @findex CPP_SPEC @item CPP_SPEC *************** argument @var{name} is the name of an as *** 7423,7428 **** --- 7423,7433 ---- @item DBX_OUTPUT_RBRAC (@var{stream}, @var{name}) Like @code{DBX_OUTPUT_LBRAC}, but for the end of a scope level. + @findex DBX_OUTPUT_NFUN + @item DBX_OUTPUT_NFUN (@var{stream}, @var{lscope_label}, @var{decl}) + Define this macro if the target machine requires special handling to + output an @code{N_FUN} entry for the function @var{decl}. + @findex DBX_OUTPUT_ENUM @item DBX_OUTPUT_ENUM (@var{stream}, @var{type}) Define this macro if the target machine requires special handling to diff -Nrc3pad gcc-3.2/gcc/doc/trouble.texi gcc-3.2.1/gcc/doc/trouble.texi *** gcc-3.2/gcc/doc/trouble.texi Thu Jan 17 22:45:21 2002 --- gcc-3.2.1/gcc/doc/trouble.texi Wed Sep 11 16:40:29 2002 *************** libraries and debuggers on certain syste *** 105,115 **** @itemize @bullet @item ! G++ does not do name mangling in the same way as other C++ ! compilers. This means that object files compiled with one compiler ! cannot be used with another. ! This effect is intentional, to protect you from more subtle problems. Compilers differ as to many internal details of C++ implementation, including: how class instances are laid out, how multiple inheritance is implemented, and how virtual function calls are handled. If the name --- 105,117 ---- @itemize @bullet @item ! On many platforms, GCC supports a different ABI for C++ than do other ! compilers, so the object files compiled by GCC cannot be used with object ! files generated by another C++ compiler. ! An area where the difference is most apparent is name mangling. The use ! of different name mangling is intentional, to protect you from more subtle ! problems. Compilers differ as to many internal details of C++ implementation, including: how class instances are laid out, how multiple inheritance is implemented, and how virtual function calls are handled. If the name diff -Nrc3pad gcc-3.2/gcc/doloop.c gcc-3.2.1/gcc/doloop.c *** gcc-3.2/gcc/doloop.c Fri Jan 4 02:00:26 2002 --- gcc-3.2.1/gcc/doloop.c Thu Sep 26 23:10:38 2002 *************** doloop_modify_runtime (loop, iterations_ *** 552,557 **** --- 552,558 ---- { const struct loop_info *loop_info = LOOP_INFO (loop); HOST_WIDE_INT abs_inc; + HOST_WIDE_INT abs_loop_inc; int neg_inc; rtx diff; rtx sequence; *************** doloop_modify_runtime (loop, iterations_ *** 591,603 **** n = abs (final - initial) / abs_inc; n += (abs (final - initial) % abs_inc) != 0; ! If the loop has been unrolled, then the loop body has been ! preconditioned to iterate a multiple of unroll_number times. If ! abs_inc is != 1, the full calculation is ! t1 = abs_inc * unroll_number; ! n = abs (final - initial) / t1; ! n += (abs (final - initial) % t1) > t1 - abs_inc; The division and modulo operations can be avoided by requiring that the increment is a power of 2 (precondition_loop_p enforces --- 592,613 ---- n = abs (final - initial) / abs_inc; n += (abs (final - initial) % abs_inc) != 0; ! But when abs_inc is a power of two, the summation won't overflow ! except in cases where the loop never terminates. So we don't ! need to use this more costly calculation. ! If the loop has been unrolled, the full calculation is ! ! t1 = abs_inc * unroll_number; increment per loop ! n = abs (final - initial) / t1; full loops ! n += (abs (final - initial) % t1) != 0; partial loop ! ! However, in certain cases the unrolled loop will be preconditioned ! by emitting copies of the loop body with conditional branches, ! so that the unrolled loop is always a full loop and thus needs ! no exit tests. In this case we don't want to add the partial ! loop count. As above, when t1 is a power of two we don't need to ! worry about overflow. The division and modulo operations can be avoided by requiring that the increment is a power of 2 (precondition_loop_p enforces *************** doloop_modify_runtime (loop, iterations_ *** 658,715 **** fprintf (loop_dump_stream, "Doloop: Basic induction var skips initial incr.\n"); ! diff = expand_simple_binop (mode, PLUS, diff, increment, diff, ! unsigned_p, OPTAB_LIB_WIDEN); } } ! if (abs_inc * loop_info->unroll_number != 1) { int shift_count; - rtx extra; - rtx label; - unsigned HOST_WIDE_INT limit; ! shift_count = exact_log2 (abs_inc * loop_info->unroll_number); if (shift_count < 0) abort (); ! /* abs (final - initial) / (abs_inc * unroll_number) */ ! iterations = expand_simple_binop (GET_MODE (diff), LSHIFTRT, ! diff, GEN_INT (shift_count), ! NULL_RTX, 1, ! OPTAB_LIB_WIDEN); ! ! if (abs_inc != 1) ! { ! /* abs (final - initial) % (abs_inc * unroll_number) */ ! rtx count = GEN_INT (abs_inc * loop_info->unroll_number - 1); ! extra = expand_simple_binop (GET_MODE (iterations), AND, ! diff, count, NULL_RTX, 1, ! OPTAB_LIB_WIDEN); ! ! /* If (abs (final - initial) % (abs_inc * unroll_number) ! <= abs_inc * (unroll - 1)), ! jump past following increment instruction. */ ! label = gen_label_rtx (); ! limit = abs_inc * (loop_info->unroll_number - 1); ! emit_cmp_and_jump_insns (extra, GEN_INT (limit), ! limit == 0 ? EQ : LEU, NULL_RTX, ! GET_MODE (extra), 0, label); ! JUMP_LABEL (get_last_insn ()) = label; ! LABEL_NUSES (label)++; ! ! /* Increment the iteration count by one. */ ! iterations = expand_simple_binop (GET_MODE (iterations), PLUS, ! iterations, GEN_INT (1), ! iterations, 1, ! OPTAB_LIB_WIDEN); ! emit_label (label); ! } } ! else ! iterations = diff; /* If there is a NOTE_INSN_LOOP_VTOP, we have a `for' or `while' style loop, with a loop exit test at the start. Thus, we can --- 668,699 ---- fprintf (loop_dump_stream, "Doloop: Basic induction var skips initial incr.\n"); ! diff = expand_simple_binop (mode, PLUS, diff, GEN_INT (abs_inc), ! diff, unsigned_p, OPTAB_LIB_WIDEN); } } ! abs_loop_inc = abs_inc * loop_info->unroll_number; ! if (abs_loop_inc != 1) { int shift_count; ! shift_count = exact_log2 (abs_loop_inc); if (shift_count < 0) abort (); ! if (!loop_info->preconditioned) ! diff = expand_simple_binop (GET_MODE (diff), PLUS, ! diff, GEN_INT (abs_loop_inc - 1), ! diff, 1, OPTAB_LIB_WIDEN); ! /* (abs (final - initial) + abs_inc * unroll_number - 1) ! / (abs_inc * unroll_number) */ ! diff = expand_simple_binop (GET_MODE (diff), LSHIFTRT, ! diff, GEN_INT (shift_count), ! diff, 1, OPTAB_LIB_WIDEN); } ! iterations = diff; /* If there is a NOTE_INSN_LOOP_VTOP, we have a `for' or `while' style loop, with a loop exit test at the start. Thus, we can *************** doloop_modify_runtime (loop, iterations_ *** 722,738 **** iteration count to one if necessary. */ if (! loop->vtop) { - rtx label; - if (loop_dump_stream) fprintf (loop_dump_stream, "Doloop: Do-while loop.\n"); ! /* A `do-while' loop must iterate at least once. If the ! iteration count is bogus, we set the iteration count to 1. Note that if the loop has been unrolled, then the loop body ! is guaranteed to execute at least once. */ ! if (loop_info->unroll_number == 1) { /* Emit insns to test if the loop will immediately terminate and to set the iteration count to 1 if true. */ label = gen_label_rtx(); --- 706,725 ---- iteration count to one if necessary. */ if (! loop->vtop) { if (loop_dump_stream) fprintf (loop_dump_stream, "Doloop: Do-while loop.\n"); ! /* A `do-while' loop must iterate at least once. For code like ! i = initial; do { ... } while (++i < final); ! we will calculate a bogus iteration count if initial > final. ! So detect this and set the iteration count to 1. Note that if the loop has been unrolled, then the loop body ! is guaranteed to execute at least once. Also, when the ! comparison is NE, our calculated count will be OK. */ ! if (loop_info->unroll_number == 1 && comparison_code != NE) { + rtx label; + /* Emit insns to test if the loop will immediately terminate and to set the iteration count to 1 if true. */ label = gen_label_rtx(); diff -Nrc3pad gcc-3.2/gcc/emit-rtl.c gcc-3.2.1/gcc/emit-rtl.c *** gcc-3.2/gcc/emit-rtl.c Mon Jul 1 21:50:14 2002 --- gcc-3.2.1/gcc/emit-rtl.c Thu Sep 12 02:27:13 2002 *************** set_mem_offset (mem, offset) *** 1903,1908 **** --- 1903,1919 ---- offset, MEM_SIZE (mem), MEM_ALIGN (mem), GET_MODE (mem)); } + + /* Set the size of MEM to SIZE. */ + + void + set_mem_size (mem, size) + rtx mem, size; + { + MEM_ATTRS (mem) = get_mem_attrs (MEM_ALIAS_SET (mem), MEM_EXPR (mem), + MEM_OFFSET (mem), size, MEM_ALIGN (mem), + GET_MODE (mem)); + } /* Return a memory reference like MEMREF, but with its mode changed to MODE and its address changed to ADDR. (VOIDmode means don't change the mode. diff -Nrc3pad gcc-3.2/gcc/explow.c gcc-3.2.1/gcc/explow.c *** gcc-3.2/gcc/explow.c Thu Feb 21 23:06:14 2002 --- gcc-3.2.1/gcc/explow.c Fri Aug 23 12:00:35 2002 *************** Software Foundation, 59 Temple Place - S *** 34,39 **** --- 34,40 ---- #include "insn-config.h" #include "ggc.h" #include "recog.h" + #include "langhooks.h" static rtx break_out_memory_refs PARAMS ((rtx)); static void emit_stack_probe PARAMS ((rtx)); *************** rtx *** 285,304 **** expr_size (exp) tree exp; { ! tree size; ! ! if (TREE_CODE_CLASS (TREE_CODE (exp)) == 'd' ! && DECL_SIZE_UNIT (exp) != 0) ! size = DECL_SIZE_UNIT (exp); ! else ! size = size_in_bytes (TREE_TYPE (exp)); if (TREE_CODE (size) != INTEGER_CST && contains_placeholder_p (size)) size = build (WITH_RECORD_EXPR, sizetype, size, exp); return expand_expr (size, NULL_RTX, TYPE_MODE (sizetype), 0); } /* Return a copy of X in which all memory references --- 286,318 ---- expr_size (exp) tree exp; { ! tree size = (*lang_hooks.expr_size) (exp); if (TREE_CODE (size) != INTEGER_CST && contains_placeholder_p (size)) size = build (WITH_RECORD_EXPR, sizetype, size, exp); return expand_expr (size, NULL_RTX, TYPE_MODE (sizetype), 0); + } + + /* Return a wide integer for the size in bytes of the value of EXP, or -1 + if the size can vary or is larger than an integer. */ + + HOST_WIDE_INT + int_expr_size (exp) + tree exp; + { + tree t = (*lang_hooks.expr_size) (exp); + + if (t == 0 + || TREE_CODE (t) != INTEGER_CST + || TREE_OVERFLOW (t) + || TREE_INT_CST_HIGH (t) != 0 + /* If the result would appear negative, it's too big to represent. */ + || (HOST_WIDE_INT) TREE_INT_CST_LOW (t) < 0) + return -1; + return TREE_INT_CST_LOW (t); } /* Return a copy of X in which all memory references diff -Nrc3pad gcc-3.2/gcc/expmed.c gcc-3.2.1/gcc/expmed.c *** gcc-3.2/gcc/expmed.c Mon Jun 24 16:50:42 2002 --- gcc-3.2.1/gcc/expmed.c Mon Nov 4 18:39:45 2002 *************** extract_bit_field (str_rtx, bitsize, bit *** 1144,1150 **** /* Else we've got some float mode source being extracted into a different float mode destination -- this combination of subregs results in Severe Tire Damage. */ ! abort (); } if (GET_CODE (op0) == REG) op0 = gen_rtx_SUBREG (mode1, op0, byte_offset); --- 1144,1150 ---- /* Else we've got some float mode source being extracted into a different float mode destination -- this combination of subregs results in Severe Tire Damage. */ ! goto no_subreg_mode_swap; } if (GET_CODE (op0) == REG) op0 = gen_rtx_SUBREG (mode1, op0, byte_offset); *************** extract_bit_field (str_rtx, bitsize, bit *** 1155,1160 **** --- 1155,1161 ---- return convert_to_mode (tmode, op0, unsignedp); return op0; } + no_subreg_mode_swap: /* Handle fields bigger than a word. */ diff -Nrc3pad gcc-3.2/gcc/expr.c gcc-3.2.1/gcc/expr.c *** gcc-3.2/gcc/expr.c Tue May 7 05:43:11 2002 --- gcc-3.2.1/gcc/expr.c Thu Nov 7 17:46:15 2002 *************** Software Foundation, 59 Temple Place - S *** 54,62 **** --- 54,64 ---- #ifdef PUSH_ROUNDING + #ifndef PUSH_ARGS_REVERSED #if defined (STACK_GROWS_DOWNWARD) != defined (ARGS_GROW_DOWNWARD) #define PUSH_ARGS_REVERSED /* If it's last to first. */ #endif + #endif #endif *************** rtx *** 5434,5449 **** force_operand (value, target) rtx value, target; { ! optab binoptab = 0; ! /* Use a temporary to force order of execution of calls to ! `force_operand'. */ ! rtx tmp; ! rtx op2; /* Use subtarget as the target for operand 0 of a binary operation. */ rtx subtarget = get_subtarget (target); /* Check for a PIC address load. */ ! if ((GET_CODE (value) == PLUS || GET_CODE (value) == MINUS) && XEXP (value, 0) == pic_offset_table_rtx && (GET_CODE (XEXP (value, 1)) == SYMBOL_REF || GET_CODE (XEXP (value, 1)) == LABEL_REF --- 5436,5448 ---- force_operand (value, target) rtx value, target; { ! rtx op1, op2; /* Use subtarget as the target for operand 0 of a binary operation. */ rtx subtarget = get_subtarget (target); + enum rtx_code code = GET_CODE (value); /* Check for a PIC address load. */ ! if ((code == PLUS || code == MINUS) && XEXP (value, 0) == pic_offset_table_rtx && (GET_CODE (XEXP (value, 1)) == SYMBOL_REF || GET_CODE (XEXP (value, 1)) == LABEL_REF *************** force_operand (value, target) *** 5455,5514 **** return subtarget; } ! if (GET_CODE (value) == PLUS) ! binoptab = add_optab; ! else if (GET_CODE (value) == MINUS) ! binoptab = sub_optab; ! else if (GET_CODE (value) == MULT) { ! op2 = XEXP (value, 1); ! if (!CONSTANT_P (op2) ! && !(GET_CODE (op2) == REG && op2 != subtarget)) ! subtarget = 0; ! tmp = force_operand (XEXP (value, 0), subtarget); ! return expand_mult (GET_MODE (value), tmp, ! force_operand (op2, NULL_RTX), ! target, 1); } ! if (binoptab) { op2 = XEXP (value, 1); ! if (!CONSTANT_P (op2) ! && !(GET_CODE (op2) == REG && op2 != subtarget)) subtarget = 0; ! if (binoptab == sub_optab && GET_CODE (op2) == CONST_INT) { ! binoptab = add_optab; op2 = negate_rtx (GET_MODE (value), op2); } /* Check for an addition with OP2 a constant integer and our first ! operand a PLUS of a virtual register and something else. In that ! case, we want to emit the sum of the virtual register and the ! constant first and then add the other value. This allows virtual ! register instantiation to simply modify the constant rather than ! creating another one around this addition. */ ! if (binoptab == add_optab && GET_CODE (op2) == CONST_INT && GET_CODE (XEXP (value, 0)) == PLUS && GET_CODE (XEXP (XEXP (value, 0), 0)) == REG && REGNO (XEXP (XEXP (value, 0), 0)) >= FIRST_VIRTUAL_REGISTER && REGNO (XEXP (XEXP (value, 0), 0)) <= LAST_VIRTUAL_REGISTER) { ! rtx temp = expand_binop (GET_MODE (value), binoptab, ! XEXP (XEXP (value, 0), 0), op2, ! subtarget, 0, OPTAB_LIB_WIDEN); ! return expand_binop (GET_MODE (value), binoptab, temp, ! force_operand (XEXP (XEXP (value, 0), 1), 0), ! target, 0, OPTAB_LIB_WIDEN); } ! tmp = force_operand (XEXP (value, 0), subtarget); ! return expand_binop (GET_MODE (value), binoptab, tmp, ! force_operand (op2, NULL_RTX), ! target, 0, OPTAB_LIB_WIDEN); ! /* We give UNSIGNEDP = 0 to expand_binop ! because the only operations we are expanding here are signed ones. */ } #ifdef INSN_SCHEDULING --- 5454,5541 ---- return subtarget; } ! if (code == ZERO_EXTEND || code == SIGN_EXTEND) { ! if (!target) ! target = gen_reg_rtx (GET_MODE (value)); ! convert_move (target, force_operand (XEXP (value, 0), NULL), ! code == ZERO_EXTEND); ! return target; } ! if (GET_RTX_CLASS (code) == '2' || GET_RTX_CLASS (code) == 'c') { op2 = XEXP (value, 1); ! if (!CONSTANT_P (op2) && !(GET_CODE (op2) == REG && op2 != subtarget)) subtarget = 0; ! if (code == MINUS && GET_CODE (op2) == CONST_INT) { ! code = PLUS; op2 = negate_rtx (GET_MODE (value), op2); } /* Check for an addition with OP2 a constant integer and our first ! operand a PLUS of a virtual register and something else. In that ! case, we want to emit the sum of the virtual register and the ! constant first and then add the other value. This allows virtual ! register instantiation to simply modify the constant rather than ! creating another one around this addition. */ ! if (code == PLUS && GET_CODE (op2) == CONST_INT && GET_CODE (XEXP (value, 0)) == PLUS && GET_CODE (XEXP (XEXP (value, 0), 0)) == REG && REGNO (XEXP (XEXP (value, 0), 0)) >= FIRST_VIRTUAL_REGISTER && REGNO (XEXP (XEXP (value, 0), 0)) <= LAST_VIRTUAL_REGISTER) { ! rtx temp = expand_simple_binop (GET_MODE (value), code, ! XEXP (XEXP (value, 0), 0), op2, ! subtarget, 0, OPTAB_LIB_WIDEN); ! return expand_simple_binop (GET_MODE (value), code, temp, ! force_operand (XEXP (XEXP (value, ! 0), 1), 0), ! target, 0, OPTAB_LIB_WIDEN); } ! op1 = force_operand (XEXP (value, 0), subtarget); ! op2 = force_operand (op2, NULL_RTX); ! switch (code) ! { ! case MULT: ! return expand_mult (GET_MODE (value), op1, op2, target, 1); ! case DIV: ! if (!INTEGRAL_MODE_P (GET_MODE (value))) ! return expand_simple_binop (GET_MODE (value), code, op1, op2, ! target, 1, OPTAB_LIB_WIDEN); ! else ! return expand_divmod (0, ! FLOAT_MODE_P (GET_MODE (value)) ! ? RDIV_EXPR : TRUNC_DIV_EXPR, ! GET_MODE (value), op1, op2, target, 0); ! break; ! case MOD: ! return expand_divmod (1, TRUNC_MOD_EXPR, GET_MODE (value), op1, op2, ! target, 0); ! break; ! case UDIV: ! return expand_divmod (0, TRUNC_DIV_EXPR, GET_MODE (value), op1, op2, ! target, 1); ! break; ! case UMOD: ! return expand_divmod (1, TRUNC_MOD_EXPR, GET_MODE (value), op1, op2, ! target, 1); ! break; ! case ASHIFTRT: ! return expand_simple_binop (GET_MODE (value), code, op1, op2, ! target, 0, OPTAB_LIB_WIDEN); ! break; ! default: ! return expand_simple_binop (GET_MODE (value), code, op1, op2, ! target, 1, OPTAB_LIB_WIDEN); ! } ! } ! if (GET_RTX_CLASS (code) == '1') ! { ! op1 = force_operand (XEXP (value, 0), NULL_RTX); ! return expand_simple_unop (GET_MODE (value), code, op1, target, 0); } #ifdef INSN_SCHEDULING *************** expand_expr (exp, target, tmode, modifie *** 6202,6208 **** } case PARM_DECL: ! if (DECL_RTL (exp) == 0) { error_with_decl (exp, "prior parameter's size depends on `%s'"); return CONST0_RTX (mode); --- 6229,6235 ---- } case PARM_DECL: ! if (! DECL_RTL_SET_P (exp)) { error_with_decl (exp, "prior parameter's size depends on `%s'"); return CONST0_RTX (mode); *************** expand_expr (exp, target, tmode, modifie *** 6661,6668 **** * TYPE_QUAL_CONST))), 0, TREE_ADDRESSABLE (exp), 1); ! store_constructor (exp, target, 0, ! int_size_in_bytes (TREE_TYPE (exp))); return target; } --- 6688,6694 ---- * TYPE_QUAL_CONST))), 0, TREE_ADDRESSABLE (exp), 1); ! store_constructor (exp, target, 0, int_expr_size (exp)); return target; } *************** expand_expr (exp, target, tmode, modifie *** 7564,7579 **** } } /* No sense saving up arithmetic to be done if it's all in the wrong mode to form part of an address. And force_operand won't know whether to sign-extend or zero-extend. */ if ((modifier != EXPAND_SUM && modifier != EXPAND_INITIALIZER) || mode != ptr_mode) ! goto binop; ! ! if (! safe_from_p (subtarget, TREE_OPERAND (exp, 1), 1)) ! subtarget = 0; op0 = expand_expr (TREE_OPERAND (exp, 0), subtarget, VOIDmode, modifier); op1 = expand_expr (TREE_OPERAND (exp, 1), NULL_RTX, VOIDmode, modifier); --- 7590,7613 ---- } } + if (! safe_from_p (subtarget, TREE_OPERAND (exp, 1), 1)) + subtarget = 0; + /* No sense saving up arithmetic to be done if it's all in the wrong mode to form part of an address. And force_operand won't know whether to sign-extend or zero-extend. */ if ((modifier != EXPAND_SUM && modifier != EXPAND_INITIALIZER) || mode != ptr_mode) ! { ! op0 = expand_expr (TREE_OPERAND (exp, 0), subtarget, VOIDmode, 0); ! op1 = expand_expr (TREE_OPERAND (exp, 1), NULL_RTX, VOIDmode, 0); ! if (op0 == const0_rtx) ! return op1; ! if (op1 == const0_rtx) ! return op0; ! goto binop2; ! } op0 = expand_expr (TREE_OPERAND (exp, 0), subtarget, VOIDmode, modifier); op1 = expand_expr (TREE_OPERAND (exp, 1), NULL_RTX, VOIDmode, modifier); diff -Nrc3pad gcc-3.2/gcc/expr.h gcc-3.2.1/gcc/expr.h *** gcc-3.2/gcc/expr.h Sun Mar 31 09:42:05 2002 --- gcc-3.2.1/gcc/expr.h Thu Sep 12 02:27:13 2002 *************** extern unsigned int case_values_threshol *** 548,553 **** --- 548,557 ---- /* Return an rtx for the size in bytes of the value of an expr. */ extern rtx expr_size PARAMS ((tree)); + /* Return a wide integer for the size in bytes of the value of EXP, or -1 + if the size can vary or is larger than an integer. */ + extern HOST_WIDE_INT int_expr_size PARAMS ((tree)); + extern rtx lookup_static_chain PARAMS ((tree)); /* Convert a stack slot address ADDR valid in function FNDECL *************** extern void set_mem_expr PARAMS ((rtx, t *** 608,613 **** --- 612,620 ---- /* Set the offset for MEM to OFFSET. */ extern void set_mem_offset PARAMS ((rtx, rtx)); + /* Set the size for MEM to SIZE. */ + extern void set_mem_size PARAMS ((rtx, rtx)); + /* Return a memory reference like MEMREF, but with its mode changed to MODE and its address changed to ADDR. (VOIDmode means don't change the mode. diff -Nrc3pad gcc-3.2/gcc/flags.h gcc-3.2.1/gcc/flags.h *** gcc-3.2/gcc/flags.h Thu Mar 21 23:12:21 2002 --- gcc-3.2.1/gcc/flags.h Sun Oct 6 23:02:05 2002 *************** extern int align_labels_max_skip; *** 604,609 **** --- 604,613 ---- extern int align_functions; extern int align_functions_log; + /* Like align_functions_log above, but used by front-ends to force the + minimum function alignment. Zero means no alignment is forced. */ + extern int force_align_functions_log; + /* Nonzero if we dump in VCG format, not plain text. */ extern int dump_for_graph; diff -Nrc3pad gcc-3.2/gcc/flow.c gcc-3.2.1/gcc/flow.c *** gcc-3.2/gcc/flow.c Thu Apr 18 20:21:09 2002 --- gcc-3.2.1/gcc/flow.c Sat Nov 16 00:46:44 2002 *************** life_analysis (f, file, flags) *** 499,504 **** --- 499,507 ---- } } #endif + + rebuild_jump_labels (get_insns ()); + /* Removing dead insns should've made jumptables really dead. */ delete_dead_jumptables (); } *************** propagate_one_insn (pbi, insn) *** 1626,1632 **** if (libcall_is_dead) prev = propagate_block_delete_libcall ( insn, note); else ! propagate_block_delete_insn (pbi->bb, insn); return prev; } --- 1629,1670 ---- if (libcall_is_dead) prev = propagate_block_delete_libcall ( insn, note); else ! { ! ! /* If INSN contains a RETVAL note and is dead, but the libcall ! as a whole is not dead, then we want to remove INSN, but ! not the whole libcall sequence. ! ! However, we need to also remove the dangling REG_LIBCALL ! note so that we do not have mis-matched LIBCALL/RETVAL ! notes. In theory we could find a new location for the ! REG_RETVAL note, but it hardly seems worth the effort. ! ! NOTE at this point will be the RETVAL note if it exists. */ ! if (note) ! { ! rtx libcall_note; ! ! libcall_note ! = find_reg_note (XEXP (note, 0), REG_LIBCALL, NULL_RTX); ! remove_note (XEXP (note, 0), libcall_note); ! } ! ! /* Similarly if INSN contains a LIBCALL note, remove the ! dangling REG_RETVAL note. */ ! note = find_reg_note (insn, REG_LIBCALL, NULL_RTX); ! if (note) ! { ! rtx retval_note; ! ! retval_note ! = find_reg_note (XEXP (note, 0), REG_RETVAL, NULL_RTX); ! remove_note (XEXP (note, 0), retval_note); ! } ! ! /* Now delete INSN. */ ! propagate_block_delete_insn (pbi->bb, insn); ! } return prev; } diff -Nrc3pad gcc-3.2/gcc/fold-const.c gcc-3.2.1/gcc/fold-const.c *** gcc-3.2/gcc/fold-const.c Sat Jun 15 00:42:25 2002 --- gcc-3.2.1/gcc/fold-const.c Tue Oct 22 09:06:18 2002 *************** fold_binary_op_with_conditional_arg (cod *** 4869,4874 **** --- 4869,4875 ---- /* And these are the types of the expressions. */ tree lhs_type = type; tree rhs_type = type; + int save = 0; if (cond_first_p) { *************** fold_binary_op_with_conditional_arg (cod *** 4927,4937 **** if an arm is a COND_EXPR since we get exponential behavior in that case. */ ! if (TREE_CODE (arg) != SAVE_EXPR && ! TREE_CONSTANT (arg) ! && global_bindings_p () == 0 ! && ((TREE_CODE (arg) != VAR_DECL ! && TREE_CODE (arg) != PARM_DECL) ! || TREE_SIDE_EFFECTS (arg))) { if (TREE_CODE (true_value) != COND_EXPR) lhs = fold (build (lhs_code, lhs_type, *true_lhs, *true_rhs)); --- 4928,4939 ---- if an arm is a COND_EXPR since we get exponential behavior in that case. */ ! if (TREE_CODE (arg) == SAVE_EXPR) ! save = 1; ! else if (! TREE_CONSTANT (arg) ! && global_bindings_p () == 0 ! && ((TREE_CODE (arg) != VAR_DECL && TREE_CODE (arg) != PARM_DECL) ! || TREE_SIDE_EFFECTS (arg))) { if (TREE_CODE (true_value) != COND_EXPR) lhs = fold (build (lhs_code, lhs_type, *true_lhs, *true_rhs)); *************** fold_binary_op_with_conditional_arg (cod *** 4941,4947 **** if ((lhs == 0 || ! TREE_CONSTANT (lhs)) && (rhs == 0 || !TREE_CONSTANT (rhs))) ! arg = save_expr (arg), lhs = rhs = 0; } if (lhs == 0) --- 4943,4953 ---- if ((lhs == 0 || ! TREE_CONSTANT (lhs)) && (rhs == 0 || !TREE_CONSTANT (rhs))) ! { ! arg = save_expr (arg); ! lhs = rhs = 0; ! save = 1; ! } } if (lhs == 0) *************** fold_binary_op_with_conditional_arg (cod *** 4951,4957 **** test = fold (build (COND_EXPR, type, test, lhs, rhs)); ! if (TREE_CODE (arg) == SAVE_EXPR) return build (COMPOUND_EXPR, type, convert (void_type_node, arg), strip_compound_expr (test, arg)); --- 4957,4963 ---- test = fold (build (COND_EXPR, type, test, lhs, rhs)); ! if (save) return build (COMPOUND_EXPR, type, convert (void_type_node, arg), strip_compound_expr (test, arg)); *************** fold (expr) *** 6535,6541 **** else if (TREE_INT_CST_HIGH (arg1) == -1 && (TREE_INT_CST_LOW (arg1) ! == ((unsigned HOST_WIDE_INT) 1 << (width - 1))) && ! TREE_UNSIGNED (TREE_TYPE (arg1))) switch (TREE_CODE (t)) { --- 6541,6547 ---- else if (TREE_INT_CST_HIGH (arg1) == -1 && (TREE_INT_CST_LOW (arg1) ! == ((unsigned HOST_WIDE_INT) -1 << (width - 1))) && ! TREE_UNSIGNED (TREE_TYPE (arg1))) switch (TREE_CODE (t)) { diff -Nrc3pad gcc-3.2/gcc/function.c gcc-3.2.1/gcc/function.c *** gcc-3.2/gcc/function.c Sat Jun 22 14:29:26 2002 --- gcc-3.2.1/gcc/function.c Mon Oct 14 21:04:17 2002 *************** Software Foundation, 59 Temple Place - S *** 59,64 **** --- 59,65 ---- #include "ggc.h" #include "tm_p.h" #include "integrate.h" + #include "langhooks.h" #ifndef TRAMPOLINE_ALIGNMENT #define TRAMPOLINE_ALIGNMENT FUNCTION_BOUNDARY *************** assign_stack_temp_for_type (mode, size, *** 826,832 **** /* If a type is specified, set the relevant flags. */ if (type != 0) { ! RTX_UNCHANGING_P (slot) = TYPE_READONLY (type); MEM_VOLATILE_P (slot) = TYPE_VOLATILE (type); MEM_SET_IN_STRUCT_P (slot, AGGREGATE_TYPE_P (type)); } --- 827,834 ---- /* If a type is specified, set the relevant flags. */ if (type != 0) { ! RTX_UNCHANGING_P (slot) = (lang_hooks.honor_readonly ! && TYPE_READONLY (type)); MEM_VOLATILE_P (slot) = TYPE_VOLATILE (type); MEM_SET_IN_STRUCT_P (slot, AGGREGATE_TYPE_P (type)); } diff -Nrc3pad gcc-3.2/gcc/gcc.c gcc-3.2.1/gcc/gcc.c *** gcc-3.2/gcc/gcc.c Thu Aug 1 20:14:57 2002 --- gcc-3.2.1/gcc/gcc.c Mon Oct 14 21:55:26 2002 *************** static const char *print_prog_name = NUL *** 172,177 **** --- 172,182 ---- static int print_multi_directory; + /* Flag saying to print the relative path we'd use to + find OS libraries given the current compiler flags. */ + + static int print_multi_os_directory; + /* Flag saying to print the list of subdirectories and compiler flags used to select them in a standard form. */ *************** static struct compiler *lookup_compiler *** 285,293 **** static char *build_search_list PARAMS ((struct path_prefix *, const char *, int)); static void putenv_from_prefixes PARAMS ((struct path_prefix *, const char *)); static int access_check PARAMS ((const char *, int)); ! static char *find_a_file PARAMS ((struct path_prefix *, const char *, int)); static void add_prefix PARAMS ((struct path_prefix *, const char *, ! const char *, int, int, int *)); static void translate_options PARAMS ((int *, const char *const **)); static char *skip_whitespace PARAMS ((char *)); static void delete_if_ordinary PARAMS ((const char *)); --- 290,299 ---- static char *build_search_list PARAMS ((struct path_prefix *, const char *, int)); static void putenv_from_prefixes PARAMS ((struct path_prefix *, const char *)); static int access_check PARAMS ((const char *, int)); ! static char *find_a_file PARAMS ((struct path_prefix *, const char *, ! int, int)); static void add_prefix PARAMS ((struct path_prefix *, const char *, ! const char *, int, int, int *, int)); static void translate_options PARAMS ((int *, const char *const **)); static char *skip_whitespace PARAMS ((char *)); static void delete_if_ordinary PARAMS ((const char *)); *************** static const char *link_libgcc_spec = LI *** 668,679 **** static const char *trad_capable_cpp = "%{traditional|ftraditional|traditional-cpp:trad}cpp0"; static const char *cpp_unique_options = "%{C:%{!E:%eGNU C does not support -C without using -E}}\ %{nostdinc*} %{C} %{v} %{I*} %{P} %{$} %I\ ! %{MD:-MD %W{!o: %b.d}%W{o*:%.d%*}}\ ! %{MMD:-MMD %W{!o: %b.d}%W{o*:%.d%*}}\ ! %{M} %{MM} %W{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 -D__GXX_ABI_VERSION=102}\ %{!undef:%{!ansi:%{!std=*:%p}%{std=gnu*:%p}} %P} %{trigraphs}\ --- 674,688 ---- static const char *trad_capable_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}}\ %{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 -D__GXX_ABI_VERSION=102}\ %{!undef:%{!ansi:%{!std=*:%p}%{std=gnu*:%p}} %P} %{trigraphs}\ *************** static const struct option_map option_ma *** 963,968 **** --- 972,978 ---- {"--print-missing-file-dependencies", "-MG", 0}, {"--print-multi-lib", "-print-multi-lib", 0}, {"--print-multi-directory", "-print-multi-directory", 0}, + {"--print-multi-os-directory", "-print-multi-os-directory", 0}, {"--print-prog-name", "-print-prog-name=", "aj"}, {"--profile", "-p", 0}, {"--profile-blocks", "-a", 0}, *************** struct prefix_list *** 1248,1254 **** int require_machine_suffix; /* Don't use without machine_suffix. */ /* 2 means try both machine_suffix and just_machine_suffix. */ int *used_flag_ptr; /* 1 if a file was found with this prefix. */ ! int priority; /* Sort key - priority within list */ }; struct path_prefix --- 1258,1266 ---- int require_machine_suffix; /* Don't use without machine_suffix. */ /* 2 means try both machine_suffix and just_machine_suffix. */ int *used_flag_ptr; /* 1 if a file was found with this prefix. */ ! int priority; /* Sort key - priority within list. */ ! int os_multilib; /* 1 if OS multilib scheme should be used, ! 0 for GCC multilib scheme. */ }; struct path_prefix *************** static const char *const standard_bindir *** 1337,1342 **** --- 1349,1359 ---- set_multilib_dir based on the compilation options. */ static const char *multilib_dir; + + /* Subdirectory to use for locating libraries in OS conventions. Set by + set_multilib_dir based on the compilation options. */ + + static const char *multilib_os_dir; /* Structure to keep track of the specs that have been defined so far. These are accessed using %(specname) or %[specname] in a compiler *************** static struct spec_list static_specs[] = *** 1390,1395 **** --- 1407,1413 ---- INIT_STATIC_SPEC ("multilib_extra", &multilib_extra), INIT_STATIC_SPEC ("multilib_matches", &multilib_matches), INIT_STATIC_SPEC ("multilib_exclusions", &multilib_exclusions), + INIT_STATIC_SPEC ("multilib_options", &multilib_options), INIT_STATIC_SPEC ("linker", &linker_name_spec), INIT_STATIC_SPEC ("link_libgcc", &link_libgcc_spec), INIT_STATIC_SPEC ("md_exec_prefix", &md_exec_prefix), *************** read_specs (filename, main_p) *** 1832,1838 **** (long) (p1 - buffer + 1)); p[-2] = '\0'; ! new_filename = find_a_file (&startfile_prefixes, p1, R_OK); read_specs (new_filename ? new_filename : p1, FALSE); continue; } --- 1850,1856 ---- (long) (p1 - buffer + 1)); p[-2] = '\0'; ! new_filename = find_a_file (&startfile_prefixes, p1, R_OK, 0); read_specs (new_filename ? new_filename : p1, FALSE); continue; } *************** read_specs (filename, main_p) *** 1851,1857 **** (long) (p1 - buffer + 1)); p[-2] = '\0'; ! new_filename = find_a_file (&startfile_prefixes, p1, R_OK); if (new_filename) read_specs (new_filename, FALSE); else if (verbose_flag) --- 1869,1875 ---- (long) (p1 - buffer + 1)); p[-2] = '\0'; ! new_filename = find_a_file (&startfile_prefixes, p1, R_OK, 0); if (new_filename) read_specs (new_filename, FALSE); else if (verbose_flag) *************** access_check (name, mode) *** 2480,2495 **** Return 0 if not found, otherwise return its name, allocated with malloc. */ static char * ! find_a_file (pprefix, name, mode) struct path_prefix *pprefix; const char *name; ! int mode; { char *temp; const char *const file_suffix = ((mode & X_OK) != 0 ? HOST_EXECUTABLE_SUFFIX : ""); struct prefix_list *pl; int len = pprefix->max_len + strlen (name) + strlen (file_suffix) + 1; #ifdef DEFAULT_ASSEMBLER if (! strcmp (name, "as") && access (DEFAULT_ASSEMBLER, mode) == 0) --- 2498,2514 ---- Return 0 if not found, otherwise return its name, allocated with malloc. */ static char * ! find_a_file (pprefix, name, mode, multilib) struct path_prefix *pprefix; const char *name; ! int mode, multilib; { char *temp; const char *const file_suffix = ((mode & X_OK) != 0 ? HOST_EXECUTABLE_SUFFIX : ""); struct prefix_list *pl; int len = pprefix->max_len + strlen (name) + strlen (file_suffix) + 1; + const char *multilib_name, *multilib_os_name; #ifdef DEFAULT_ASSEMBLER if (! strcmp (name, "as") && access (DEFAULT_ASSEMBLER, mode) == 0) *************** find_a_file (pprefix, name, mode) *** 2504,2509 **** --- 2523,2544 ---- if (machine_suffix) len += strlen (machine_suffix); + multilib_name = name; + multilib_os_name = name; + if (multilib && multilib_os_dir) + { + int len1 = multilib_dir ? strlen (multilib_dir) + 1 : 0; + int len2 = strlen (multilib_os_dir) + 1; + + len += len1 > len2 ? len1 : len2; + if (multilib_dir) + multilib_name = ACONCAT ((multilib_dir, dir_separator_str, name, + NULL)); + if (strcmp (multilib_os_dir, ".") != 0) + multilib_os_name = ACONCAT ((multilib_os_dir, dir_separator_str, name, + NULL)); + } + temp = xmalloc (len); /* Determine the filename to execute (special case for absolute paths). */ *************** find_a_file (pprefix, name, mode) *** 2519,2524 **** --- 2554,2562 ---- else for (pl = pprefix->plist; pl; pl = pl->next) { + const char *this_name + = pl->os_multilib ? multilib_os_name : multilib_name; + if (machine_suffix) { /* Some systems have a suffix for executable files. *************** find_a_file (pprefix, name, mode) *** 2527,2533 **** { strcpy (temp, pl->prefix); strcat (temp, machine_suffix); ! strcat (temp, name); strcat (temp, file_suffix); if (access_check (temp, mode) == 0) { --- 2565,2571 ---- { strcpy (temp, pl->prefix); strcat (temp, machine_suffix); ! strcat (temp, multilib_name); strcat (temp, file_suffix); if (access_check (temp, mode) == 0) { *************** find_a_file (pprefix, name, mode) *** 2537,2546 **** } } ! /* Now try just the name. */ strcpy (temp, pl->prefix); strcat (temp, machine_suffix); ! strcat (temp, name); if (access_check (temp, mode) == 0) { if (pl->used_flag_ptr != 0) --- 2575,2584 ---- } } ! /* Now try just the multilib_name. */ strcpy (temp, pl->prefix); strcat (temp, machine_suffix); ! strcat (temp, multilib_name); if (access_check (temp, mode) == 0) { if (pl->used_flag_ptr != 0) *************** find_a_file (pprefix, name, mode) *** 2559,2565 **** { strcpy (temp, pl->prefix); strcat (temp, just_machine_suffix); ! strcat (temp, name); strcat (temp, file_suffix); if (access_check (temp, mode) == 0) { --- 2597,2603 ---- { strcpy (temp, pl->prefix); strcat (temp, just_machine_suffix); ! strcat (temp, multilib_name); strcat (temp, file_suffix); if (access_check (temp, mode) == 0) { *************** find_a_file (pprefix, name, mode) *** 2571,2577 **** strcpy (temp, pl->prefix); strcat (temp, just_machine_suffix); ! strcat (temp, name); if (access_check (temp, mode) == 0) { if (pl->used_flag_ptr != 0) --- 2609,2615 ---- strcpy (temp, pl->prefix); strcat (temp, just_machine_suffix); ! strcat (temp, multilib_name); if (access_check (temp, mode) == 0) { if (pl->used_flag_ptr != 0) *************** find_a_file (pprefix, name, mode) *** 2589,2595 **** if (file_suffix[0] != 0) { strcpy (temp, pl->prefix); ! strcat (temp, name); strcat (temp, file_suffix); if (access_check (temp, mode) == 0) { --- 2627,2633 ---- if (file_suffix[0] != 0) { strcpy (temp, pl->prefix); ! strcat (temp, this_name); strcat (temp, file_suffix); if (access_check (temp, mode) == 0) { *************** find_a_file (pprefix, name, mode) *** 2600,2606 **** } strcpy (temp, pl->prefix); ! strcat (temp, name); if (access_check (temp, mode) == 0) { if (pl->used_flag_ptr != 0) --- 2638,2644 ---- } strcpy (temp, pl->prefix); ! strcat (temp, this_name); if (access_check (temp, mode) == 0) { if (pl->used_flag_ptr != 0) *************** enum path_prefix_priority *** 2638,2650 **** 2 means try both machine_suffix and just_machine_suffix. */ static void ! add_prefix (pprefix, prefix, component, priority, require_machine_suffix, warn) struct path_prefix *pprefix; const char *prefix; const char *component; /* enum prefix_priority */ int priority; int require_machine_suffix; int *warn; { struct prefix_list *pl, **prev; int len; --- 2676,2690 ---- 2 means try both machine_suffix and just_machine_suffix. */ static void ! add_prefix (pprefix, prefix, component, priority, require_machine_suffix, ! warn, os_multilib) struct path_prefix *pprefix; const char *prefix; const char *component; /* enum prefix_priority */ int priority; int require_machine_suffix; int *warn; + int os_multilib; { struct prefix_list *pl, **prev; int len; *************** add_prefix (pprefix, prefix, component, *** 2666,2671 **** --- 2706,2712 ---- pl->require_machine_suffix = require_machine_suffix; pl->used_flag_ptr = warn; pl->priority = priority; + pl->os_multilib = os_multilib; if (warn) *warn = 0; *************** execute () *** 2709,2715 **** commands[0].prog = argbuf[0]; /* first command. */ commands[0].argv = &argbuf[0]; ! string = find_a_file (&exec_prefixes, commands[0].prog, X_OK); if (string) commands[0].argv[0] = string; --- 2750,2756 ---- commands[0].prog = argbuf[0]; /* first command. */ commands[0].argv = &argbuf[0]; ! string = find_a_file (&exec_prefixes, commands[0].prog, X_OK, 0); if (string) commands[0].argv[0] = string; *************** execute () *** 2723,2729 **** argbuf[i] = 0; /* termination of command args. */ commands[n_commands].prog = argbuf[i + 1]; commands[n_commands].argv = &argbuf[i + 1]; ! string = find_a_file (&exec_prefixes, commands[n_commands].prog, X_OK); if (string) commands[n_commands].argv[0] = string; n_commands++; --- 2764,2771 ---- argbuf[i] = 0; /* termination of command args. */ commands[n_commands].prog = argbuf[i + 1]; commands[n_commands].argv = &argbuf[i + 1]; ! string = find_a_file (&exec_prefixes, commands[n_commands].prog, ! X_OK, 0); if (string) commands[n_commands].argv[0] = string; n_commands++; *************** display_help () *** 3041,3046 **** --- 3083,3089 ---- fputs (_("\ -print-multi-lib Display the mapping between command line options and\n\ multiple library search directories\n"), stdout); + fputs (_(" -print-multi-os-directory Display the relative path to OS libraries\n"), stdout); fputs (_(" -Wa, Pass comma-separated on to the assembler\n"), stdout); fputs (_(" -Wp, Pass comma-separated on to the preprocessor\n"), stdout); fputs (_(" -Wl, Pass comma-separated on to the linker\n"), stdout); *************** process_command (argc, argv) *** 3202,3210 **** set_std_prefix (gcc_exec_prefix, len); add_prefix (&exec_prefixes, gcc_exec_prefix, "GCC", ! PREFIX_PRIORITY_LAST, 0, NULL); add_prefix (&startfile_prefixes, gcc_exec_prefix, "GCC", ! PREFIX_PRIORITY_LAST, 0, NULL); } /* COMPILER_PATH and LIBRARY_PATH have values --- 3245,3253 ---- set_std_prefix (gcc_exec_prefix, len); add_prefix (&exec_prefixes, gcc_exec_prefix, "GCC", ! PREFIX_PRIORITY_LAST, 0, NULL, 0); add_prefix (&startfile_prefixes, gcc_exec_prefix, "GCC", ! PREFIX_PRIORITY_LAST, 0, NULL, 0); } /* COMPILER_PATH and LIBRARY_PATH have values *************** process_command (argc, argv) *** 3232,3241 **** else nstore[endp - startp] = 0; add_prefix (&exec_prefixes, nstore, 0, ! PREFIX_PRIORITY_LAST, 0, NULL); add_prefix (&include_prefixes, concat (nstore, "include", NULL), ! 0, PREFIX_PRIORITY_LAST, 0, NULL); if (*endp == 0) break; endp = startp = endp + 1; --- 3275,3284 ---- else nstore[endp - startp] = 0; add_prefix (&exec_prefixes, nstore, 0, ! PREFIX_PRIORITY_LAST, 0, NULL, 0); add_prefix (&include_prefixes, concat (nstore, "include", NULL), ! 0, PREFIX_PRIORITY_LAST, 0, NULL, 0); if (*endp == 0) break; endp = startp = endp + 1; *************** process_command (argc, argv) *** 3267,3273 **** else nstore[endp - startp] = 0; add_prefix (&startfile_prefixes, nstore, NULL, ! PREFIX_PRIORITY_LAST, 0, NULL); if (*endp == 0) break; endp = startp = endp + 1; --- 3310,3316 ---- else nstore[endp - startp] = 0; add_prefix (&startfile_prefixes, nstore, NULL, ! PREFIX_PRIORITY_LAST, 0, NULL, 1); if (*endp == 0) break; endp = startp = endp + 1; *************** process_command (argc, argv) *** 3300,3306 **** else nstore[endp - startp] = 0; add_prefix (&startfile_prefixes, nstore, NULL, ! PREFIX_PRIORITY_LAST, 0, NULL); if (*endp == 0) break; endp = startp = endp + 1; --- 3343,3349 ---- else nstore[endp - startp] = 0; add_prefix (&startfile_prefixes, nstore, NULL, ! PREFIX_PRIORITY_LAST, 0, NULL, 1); if (*endp == 0) break; endp = startp = endp + 1; *************** warranty; not even for MERCHANTABILITY o *** 3401,3406 **** --- 3444,3451 ---- print_multi_lib = 1; else if (! strcmp (argv[i], "-print-multi-directory")) print_multi_directory = 1; + else if (! strcmp (argv[i], "-print-multi-os-directory")) + print_multi_os_directory = 1; else if (! strncmp (argv[i], "-Wa,", 4)) { int prev, j; *************** warranty; not even for MERCHANTABILITY o *** 3570,3576 **** { if (len == 7) add_prefix (&include_prefixes, "include", NULL, ! PREFIX_PRIORITY_B_OPT, 0, NULL); else { char * string = xmalloc (len + 1); --- 3615,3621 ---- { if (len == 7) add_prefix (&include_prefixes, "include", NULL, ! PREFIX_PRIORITY_B_OPT, 0, NULL, 0); else { char * string = xmalloc (len + 1); *************** warranty; not even for MERCHANTABILITY o *** 3578,3593 **** strncpy (string, value, len - 7); strcpy (string + len - 7, "include"); add_prefix (&include_prefixes, string, NULL, ! PREFIX_PRIORITY_B_OPT, 0, NULL); } } add_prefix (&exec_prefixes, value, NULL, ! PREFIX_PRIORITY_B_OPT, 0, &warn_B); add_prefix (&startfile_prefixes, value, NULL, ! PREFIX_PRIORITY_B_OPT, 0, &warn_B); add_prefix (&include_prefixes, concat (value, "include", NULL), ! NULL, PREFIX_PRIORITY_B_OPT, 0, NULL); n_switches++; } break; --- 3623,3638 ---- strncpy (string, value, len - 7); strcpy (string + len - 7, "include"); add_prefix (&include_prefixes, string, NULL, ! PREFIX_PRIORITY_B_OPT, 0, NULL, 0); } } add_prefix (&exec_prefixes, value, NULL, ! PREFIX_PRIORITY_B_OPT, 0, &warn_B, 0); add_prefix (&startfile_prefixes, value, NULL, ! PREFIX_PRIORITY_B_OPT, 0, &warn_B, 0); add_prefix (&include_prefixes, concat (value, "include", NULL), ! NULL, PREFIX_PRIORITY_B_OPT, 0, NULL, 0); n_switches++; } break; *************** warranty; not even for MERCHANTABILITY o *** 3760,3776 **** as well as trying the machine and the version. */ #ifndef OS2 add_prefix (&exec_prefixes, standard_exec_prefix, "GCC", ! PREFIX_PRIORITY_LAST, 1, warn_std_ptr); add_prefix (&exec_prefixes, standard_exec_prefix, "BINUTILS", ! PREFIX_PRIORITY_LAST, 2, warn_std_ptr); add_prefix (&exec_prefixes, standard_exec_prefix_1, "BINUTILS", ! PREFIX_PRIORITY_LAST, 2, warn_std_ptr); #endif add_prefix (&startfile_prefixes, standard_exec_prefix, "BINUTILS", ! PREFIX_PRIORITY_LAST, 1, warn_std_ptr); add_prefix (&startfile_prefixes, standard_exec_prefix_1, "BINUTILS", ! PREFIX_PRIORITY_LAST, 1, warn_std_ptr); tooldir_prefix = concat (tooldir_base_prefix, spec_machine, dir_separator_str, NULL); --- 3805,3821 ---- as well as trying the machine and the version. */ #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); add_prefix (&exec_prefixes, standard_exec_prefix_1, "BINUTILS", ! PREFIX_PRIORITY_LAST, 2, warn_std_ptr, 0); #endif 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); tooldir_prefix = concat (tooldir_base_prefix, spec_machine, dir_separator_str, NULL); *************** warranty; not even for MERCHANTABILITY o *** 3793,3803 **** add_prefix (&exec_prefixes, concat (gcc_exec_tooldir_prefix, "bin", dir_separator_str, NULL), ! NULL, PREFIX_PRIORITY_LAST, 0, NULL); add_prefix (&startfile_prefixes, concat (gcc_exec_tooldir_prefix, "lib", dir_separator_str, NULL), ! NULL, PREFIX_PRIORITY_LAST, 0, NULL); } tooldir_prefix = concat (standard_exec_prefix, spec_machine, --- 3838,3848 ---- add_prefix (&exec_prefixes, concat (gcc_exec_tooldir_prefix, "bin", dir_separator_str, NULL), ! NULL, PREFIX_PRIORITY_LAST, 0, NULL, 0); add_prefix (&startfile_prefixes, concat (gcc_exec_tooldir_prefix, "lib", dir_separator_str, NULL), ! NULL, PREFIX_PRIORITY_LAST, 0, NULL, 1); } tooldir_prefix = concat (standard_exec_prefix, spec_machine, *************** warranty; not even for MERCHANTABILITY o *** 3807,3816 **** add_prefix (&exec_prefixes, concat (tooldir_prefix, "bin", dir_separator_str, NULL), ! "BINUTILS", PREFIX_PRIORITY_LAST, 0, NULL); add_prefix (&startfile_prefixes, concat (tooldir_prefix, "lib", dir_separator_str, NULL), ! "BINUTILS", PREFIX_PRIORITY_LAST, 0, NULL); /* More prefixes are enabled in main, after we read the specs file and determine whether this is cross-compilation or not. */ --- 3852,3861 ---- 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); /* More prefixes are enabled in main, after we read the specs file and determine whether this is cross-compilation or not. */ *************** warranty; not even for MERCHANTABILITY o *** 3860,3865 **** --- 3905,3912 ---- ; else if (! strcmp (argv[i], "-print-multi-directory")) ; + else if (! strcmp (argv[i], "-print-multi-os-directory")) + ; else if (! strcmp (argv[i], "-ftarget-help")) ; else if (! strcmp (argv[i], "-fhelp")) *************** do_spec_1 (spec, inswitch, soft_matched_ *** 4363,4371 **** continue; #endif /* Try subdirectory if there is one. */ ! if (multilib_dir != NULL) { ! if (machine_suffix) { if (strlen (pl->prefix) + strlen (machine_suffix) >= bufsize) --- 4410,4423 ---- continue; #endif /* Try subdirectory if there is one. */ ! if (multilib_dir != NULL ! || (pl->os_multilib && multilib_os_dir != NULL)) { ! const char *multi_dir; ! ! multi_dir = pl->os_multilib ? multilib_os_dir ! : multilib_dir; ! if (machine_suffix && multilib_dir) { if (strlen (pl->prefix) + strlen (machine_suffix) >= bufsize) *************** do_spec_1 (spec, inswitch, soft_matched_ *** 4388,4401 **** } if (!pl->require_machine_suffix) { ! if (is_directory (pl->prefix, multilib_dir, 1)) { do_spec_1 ("-L", 0, NULL); #ifdef SPACE_AFTER_L_OPTION do_spec_1 (" ", 0, NULL); #endif do_spec_1 (pl->prefix, 1, NULL); ! do_spec_1 (multilib_dir, 1, NULL); /* Make this a separate argument. */ do_spec_1 (" ", 0, NULL); } --- 4440,4453 ---- } if (!pl->require_machine_suffix) { ! if (is_directory (pl->prefix, multi_dir, 1)) { do_spec_1 ("-L", 0, NULL); #ifdef SPACE_AFTER_L_OPTION do_spec_1 (" ", 0, NULL); #endif do_spec_1 (pl->prefix, 1, NULL); ! do_spec_1 (multi_dir, 1, NULL); /* Make this a separate argument. */ do_spec_1 (" ", 0, NULL); } *************** find_file (name) *** 5616,5626 **** char *newname; /* Try multilib_dir if it is defined. */ ! if (multilib_dir != NULL) { ! const char *const try = ACONCAT ((multilib_dir, dir_separator_str, name, NULL)); ! ! newname = find_a_file (&startfile_prefixes, try, R_OK); /* If we don't find it in the multi library dir, then fall through and look for it in the normal places. */ --- 5668,5676 ---- char *newname; /* Try multilib_dir if it is defined. */ ! if (multilib_os_dir != NULL) { ! newname = find_a_file (&startfile_prefixes, name, R_OK, 1); /* If we don't find it in the multi library dir, then fall through and look for it in the normal places. */ *************** find_file (name) *** 5628,5634 **** return newname; } ! newname = find_a_file (&startfile_prefixes, name, R_OK); return newname ? newname : name; } --- 5678,5684 ---- return newname; } ! newname = find_a_file (&startfile_prefixes, name, R_OK, 0); return newname ? newname : name; } *************** main (argc, argv) *** 5863,5869 **** spec_version, dir_separator_str, NULL); just_machine_suffix = concat (spec_machine, dir_separator_str, NULL); ! specs_file = find_a_file (&startfile_prefixes, "specs", R_OK); /* Read the specs file unless it is a default one. */ if (specs_file != 0 && strcmp (specs_file, "specs")) read_specs (specs_file, TRUE); --- 5913,5919 ---- spec_version, dir_separator_str, NULL); just_machine_suffix = concat (spec_machine, dir_separator_str, NULL); ! specs_file = find_a_file (&startfile_prefixes, "specs", R_OK, 0); /* Read the specs file unless it is a default one. */ if (specs_file != 0 && strcmp (specs_file, "specs")) read_specs (specs_file, TRUE); *************** main (argc, argv) *** 5888,5905 **** if (*md_exec_prefix) { add_prefix (&exec_prefixes, md_exec_prefix, "GCC", ! PREFIX_PRIORITY_LAST, 0, NULL); add_prefix (&startfile_prefixes, md_exec_prefix, "GCC", ! PREFIX_PRIORITY_LAST, 0, NULL); } if (*md_startfile_prefix) add_prefix (&startfile_prefixes, md_startfile_prefix, "GCC", ! PREFIX_PRIORITY_LAST, 0, NULL); if (*md_startfile_prefix_1) add_prefix (&startfile_prefixes, md_startfile_prefix_1, "GCC", ! PREFIX_PRIORITY_LAST, 0, NULL); /* If standard_startfile_prefix is relative, base it on standard_exec_prefix. This lets us move the installed tree --- 5938,5955 ---- if (*md_exec_prefix) { add_prefix (&exec_prefixes, md_exec_prefix, "GCC", ! PREFIX_PRIORITY_LAST, 0, NULL, 0); add_prefix (&startfile_prefixes, md_exec_prefix, "GCC", ! PREFIX_PRIORITY_LAST, 0, NULL, 0); } if (*md_startfile_prefix) add_prefix (&startfile_prefixes, md_startfile_prefix, "GCC", ! PREFIX_PRIORITY_LAST, 0, NULL, 1); if (*md_startfile_prefix_1) add_prefix (&startfile_prefixes, md_startfile_prefix_1, "GCC", ! PREFIX_PRIORITY_LAST, 0, NULL, 1); /* If standard_startfile_prefix is relative, base it on standard_exec_prefix. This lets us move the installed tree *************** main (argc, argv) *** 5907,5934 **** standard_startfile_prefix on that as well. */ if (IS_ABSOLUTE_PATHNAME (standard_startfile_prefix)) add_prefix (&startfile_prefixes, standard_startfile_prefix, "BINUTILS", ! PREFIX_PRIORITY_LAST, 0, NULL); else { if (gcc_exec_prefix) add_prefix (&startfile_prefixes, concat (gcc_exec_prefix, machine_suffix, standard_startfile_prefix, NULL), ! NULL, PREFIX_PRIORITY_LAST, 0, NULL); add_prefix (&startfile_prefixes, concat (standard_exec_prefix, machine_suffix, standard_startfile_prefix, NULL), ! NULL, PREFIX_PRIORITY_LAST, 0, NULL); } add_prefix (&startfile_prefixes, standard_startfile_prefix_1, ! "BINUTILS", PREFIX_PRIORITY_LAST, 0, NULL); add_prefix (&startfile_prefixes, standard_startfile_prefix_2, ! "BINUTILS", PREFIX_PRIORITY_LAST, 0, NULL); #if 0 /* Can cause surprises, and one can use -B./ instead. */ add_prefix (&startfile_prefixes, "./", NULL, ! PREFIX_PRIORITY_LAST, 1, NULL); #endif } else --- 5957,5984 ---- standard_startfile_prefix on that as well. */ if (IS_ABSOLUTE_PATHNAME (standard_startfile_prefix)) add_prefix (&startfile_prefixes, standard_startfile_prefix, "BINUTILS", ! PREFIX_PRIORITY_LAST, 0, NULL, 1); else { if (gcc_exec_prefix) add_prefix (&startfile_prefixes, concat (gcc_exec_prefix, machine_suffix, standard_startfile_prefix, NULL), ! NULL, PREFIX_PRIORITY_LAST, 0, NULL, 1); add_prefix (&startfile_prefixes, concat (standard_exec_prefix, machine_suffix, standard_startfile_prefix, NULL), ! NULL, PREFIX_PRIORITY_LAST, 0, NULL, 1); } 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); #if 0 /* Can cause surprises, and one can use -B./ instead. */ add_prefix (&startfile_prefixes, "./", NULL, ! PREFIX_PRIORITY_LAST, 1, NULL, 0); #endif } else *************** main (argc, argv) *** 5938,5951 **** add_prefix (&startfile_prefixes, concat (gcc_exec_prefix, machine_suffix, standard_startfile_prefix, NULL), ! "BINUTILS", PREFIX_PRIORITY_LAST, 0, NULL); } /* Process any user specified specs in the order given on the command line. */ for (uptr = user_specs_head; uptr; uptr = uptr->next) { ! char *filename = find_a_file (&startfile_prefixes, uptr->filename, R_OK); read_specs (filename ? filename : uptr->filename, FALSE); } --- 5988,6002 ---- add_prefix (&startfile_prefixes, concat (gcc_exec_prefix, machine_suffix, standard_startfile_prefix, NULL), ! "BINUTILS", PREFIX_PRIORITY_LAST, 0, NULL, 1); } /* Process any user specified specs in the order given on the command line. */ for (uptr = user_specs_head; uptr; uptr = uptr->next) { ! char *filename = find_a_file (&startfile_prefixes, uptr->filename, ! R_OK, 0); read_specs (filename ? filename : uptr->filename, FALSE); } *************** main (argc, argv) *** 5987,5993 **** if (print_prog_name) { ! char *newname = find_a_file (&exec_prefixes, print_prog_name, X_OK); printf ("%s\n", (newname ? newname : print_prog_name)); return (0); } --- 6038,6044 ---- if (print_prog_name) { ! char *newname = find_a_file (&exec_prefixes, print_prog_name, X_OK, 0); printf ("%s\n", (newname ? newname : print_prog_name)); return (0); } *************** main (argc, argv) *** 6007,6012 **** --- 6058,6072 ---- return (0); } + if (print_multi_os_directory) + { + if (multilib_os_dir == NULL) + printf (".\n"); + else + printf ("%s\n", multilib_os_dir); + return (0); + } + if (target_help_flag) { /* Print if any target specific options. */ *************** main (argc, argv) *** 6166,6172 **** /* We'll use ld if we can't find collect2. */ if (! strcmp (linker_name_spec, "collect2")) { ! char *s = find_a_file (&exec_prefixes, "collect2", X_OK); if (s == NULL) linker_name_spec = "ld"; } --- 6226,6232 ---- /* We'll use ld if we can't find collect2. */ if (! strcmp (linker_name_spec, "collect2")) { ! char *s = find_a_file (&exec_prefixes, "collect2", X_OK, 0); if (s == NULL) linker_name_spec = "ld"; } *************** next_member: *** 6460,6465 **** --- 6520,6534 ---- goto next_member; } + struct mdswitchstr + { + const char *str; + int len; + }; + + static struct mdswitchstr *mdswitches; + static int n_mdswitches; + /* Check whether a particular argument was used. The first time we canonicalize the switches to keep only the ones we care about. */ *************** used_arg (p, len) *** 6525,6532 **** xmalloc from calling fatal, and prevents us from re-executing this block of code. */ mswitches ! = (struct mswitchstr *) xmalloc ((sizeof (struct mswitchstr)) ! * (n_switches ? n_switches : 1)); for (i = 0; i < n_switches; i++) { int xlen = strlen (switches[i].part1); --- 6594,6602 ---- xmalloc from calling fatal, and prevents us from re-executing this block of code. */ mswitches ! = (struct mswitchstr *) ! xmalloc (sizeof (struct mswitchstr) ! * (n_mdswitches + (n_switches ? n_switches : 1))); for (i = 0; i < n_switches; i++) { int xlen = strlen (switches[i].part1); *************** used_arg (p, len) *** 6542,6547 **** --- 6612,6668 ---- break; } } + + /* Add MULTILIB_DEFAULTS switches too, as long as they were not present + on the command line nor any options mutually incompatible with + them. */ + for (i = 0; i < n_mdswitches; i++) + { + const char *r; + + for (q = multilib_options; *q != '\0'; q++) + { + while (*q == ' ') + q++; + + r = q; + while (strncmp (q, mdswitches[i].str, mdswitches[i].len) != 0 + || strchr (" /", q[mdswitches[i].len]) == NULL) + { + while (*q != ' ' && *q != '/' && *q != '\0') + q++; + if (*q != '/') + break; + q++; + } + + if (*q != ' ' && *q != '\0') + { + while (*r != ' ' && *r != '\0') + { + q = r; + while (*q != ' ' && *q != '/' && *q != '\0') + q++; + + if (used_arg (r, q - r)) + break; + + if (*q != '/') + { + mswitches[n_mswitches].str = mdswitches[i].str; + mswitches[n_mswitches].len = mdswitches[i].len; + mswitches[n_mswitches].replace = (char *) 0; + mswitches[n_mswitches].rep_len = 0; + n_mswitches++; + break; + } + + r = q + 1; + } + break; + } + } + } } for (i = 0; i < n_mswitches; i++) *************** default_arg (p, len) *** 6556,6580 **** const char *p; int len; { ! const char *start, *end; ! ! for (start = multilib_defaults; *start != '\0'; start = end + 1) ! { ! while (*start == ' ' || *start == '\t') ! start++; ! ! if (*start == '\0') ! break; ! ! for (end = start + 1; *end != ' ' && *end != '\t' && *end != '\0'; end++) ! ; ! ! if ((end - start) == len && strncmp (p, start, len) == 0) ! return 1; ! if (*end == '\0') ! break; ! } return 0; } --- 6677,6687 ---- const char *p; int len; { ! int i; ! for (i = 0; i < n_mdswitches; i++) ! if (len == mdswitches[i].len && ! strncmp (p, mdswitches[i].str, len)) ! return 1; return 0; } *************** set_multilib_dir () *** 6596,6603 **** const char *p; unsigned int this_path_len; const char *this_path, *this_arg; int not_arg; ! int ok; p = multilib_exclusions; while (*p != '\0') --- 6703,6753 ---- const char *p; unsigned int this_path_len; const char *this_path, *this_arg; + const char *start, *end; int not_arg; ! int ok, ndfltok, first; ! ! n_mdswitches = 0; ! start = multilib_defaults; ! while (*start == ' ' || *start == '\t') ! start++; ! while (*start != '\0') ! { ! n_mdswitches++; ! while (*start != ' ' && *start != '\t' && *start != '\0') ! start++; ! while (*start == ' ' || *start == '\t') ! start++; ! } ! ! if (n_mdswitches) ! { ! int i = 0; ! ! mdswitches ! = (struct mdswitchstr *) xmalloc (sizeof (struct mdswitchstr) ! * n_mdswitches); ! for (start = multilib_defaults; *start != '\0'; start = end + 1) ! { ! while (*start == ' ' || *start == '\t') ! start++; ! ! if (*start == '\0') ! break; ! ! for (end = start + 1; ! *end != ' ' && *end != '\t' && *end != '\0'; end++) ! ; ! ! obstack_grow (&multilib_obstack, start, end - start); ! obstack_1grow (&multilib_obstack, 0); ! mdswitches[i].str = obstack_finish (&multilib_obstack); ! mdswitches[i++].len = end - start; ! ! if (*end == '\0') ! break; ! } ! } p = multilib_exclusions; while (*p != '\0') *************** set_multilib_dir () *** 6652,6657 **** --- 6802,6808 ---- ++p; } + first = 1; p = multilib_select; while (*p != '\0') { *************** set_multilib_dir () *** 6674,6679 **** --- 6825,6831 ---- /* Check the arguments. */ ok = 1; + ndfltok = 1; ++p; while (*p != ';') { *************** set_multilib_dir () *** 6709,6740 **** there is a more specific library which uses this argument. If this argument is a default, we need not consider that more specific library. */ ! if (! default_arg (this_arg, p - this_arg)) ! { ! ok = used_arg (this_arg, p - this_arg); ! if (not_arg) ! ok = ! ok; ! } if (*p == ' ') ++p; } ! if (ok) { if (this_path_len != 1 || this_path[0] != '.') { char *new_multilib_dir = xmalloc (this_path_len + 1); strncpy (new_multilib_dir, this_path, this_path_len); new_multilib_dir[this_path_len] = '\0'; multilib_dir = new_multilib_dir; } ! break; } ++p; } } /* Print out the multiple library subdirectory selection --- 6861,6925 ---- there is a more specific library which uses this argument. If this argument is a default, we need not consider that more specific library. */ ! ok = used_arg (this_arg, p - this_arg); ! if (not_arg) ! ok = ! ok; ! ! if (! ok) ! ndfltok = 0; ! ! if (default_arg (this_arg, p - this_arg)) ! ok = 1; if (*p == ' ') ++p; } ! if (ok && first) { if (this_path_len != 1 || this_path[0] != '.') { char *new_multilib_dir = xmalloc (this_path_len + 1); + char *q; + strncpy (new_multilib_dir, this_path, this_path_len); new_multilib_dir[this_path_len] = '\0'; + q = strchr (new_multilib_dir, ':'); + if (q != NULL) + *q = '\0'; multilib_dir = new_multilib_dir; } ! first = 0; ! } ! ! if (ndfltok) ! { ! const char *q = this_path, *end = this_path + this_path_len; ! ! while (q < end && *q != ':') ! q++; ! if (q < end) ! { ! char *new_multilib_os_dir = xmalloc (end - q); ! memcpy (new_multilib_os_dir, q + 1, end - q - 1); ! new_multilib_os_dir[end - q - 1] = '\0'; ! multilib_os_dir = new_multilib_os_dir; ! break; ! } } ++p; } + + if (multilib_dir == NULL && multilib_os_dir != NULL + && strcmp (multilib_os_dir, ".") == 0) + { + free ((char *) multilib_os_dir); + multilib_os_dir = NULL; + } + else if (multilib_dir != NULL && multilib_os_dir == NULL) + multilib_os_dir = multilib_dir; } /* Print out the multiple library subdirectory selection *************** print_multilib_info () *** 6774,6779 **** --- 6959,6970 ---- ++p; } + /* When --disable-multilib was used but target defines + MULTILIB_OSDIRNAMES, entries starting with .: are there just + to find multilib_os_dir, so skip them from output. */ + if (this_path[0] == '.' && this_path[1] == ':') + skip = 1; + /* Check for matches with the multilib_exclusions. We don't bother with the '!' in either list. If any of the exclusion rules match all of its options with the select rule, we skip it. */ *************** print_multilib_info () *** 6915,6921 **** { const char *p1; ! for (p1 = last_path; p1 < p; p1++) putchar (*p1); putchar (';'); } --- 7106,7112 ---- { const char *p1; ! for (p1 = last_path; p1 < p && *p1 != ':'; p1++) putchar (*p1); putchar (';'); } diff -Nrc3pad gcc-3.2/gcc/genmultilib gcc-3.2.1/gcc/genmultilib *** gcc-3.2/gcc/genmultilib Sun Oct 7 18:02:43 2001 --- gcc-3.2.1/gcc/genmultilib Sat Oct 5 21:32:06 2002 *************** *** 63,68 **** --- 63,76 ---- # for the rule to exclude a set. Options can be preceded with a '!' to # match a logical NOT. + # The optional sevenths argument is a list of OS subdirectory names. + # The format is the same as of the second argument. + # The difference is that second argument describes multilib directories + # in GCC conventions, while this one the OS multilib convention. + + # The last option should be "yes" if multilibs are enabled. If it is not + # "yes", all GCC multilib dir names will be ".". + # The output looks like # #define MULTILIB_MATCHES "\ # SUBDIRECTORY OPTIONS;\ *************** *** 79,95 **** # Here is an example (this is from the actual sparc64 case): # genmultilib 'm64/m32 mno-app-regs|mcmodel=medany' '64 32 alt' # 'mcmodel?medany=mcmodel?medmid' 'm32/mno-app-regs* m32/mcmodel=*' ! # 'm32/!m64/mno-app-regs m32/!m64/mcmodel=medany' # This produces: # ". !m64 !m32 !mno-app-regs !mcmodel=medany;", ! # "64 m64 !m32 !mno-app-regs !mcmodel=medany;", ! # "32 !m64 m32 !mno-app-regs !mcmodel=medany;", # "alt !m64 !m32 mno-app-regs mcmodel=medany;", # "alt !m64 !m32 mno-app-regs !mcmodel=medany;", # "alt !m64 !m32 !mno-app-regs mcmodel=medany;", ! # "64/alt m64 !m32 mno-app-regs mcmodel=medany;", ! # "64/alt m64 !m32 mno-app-regs !mcmodel=medany;", ! # "64/alt m64 !m32 !mno-app-regs mcmodel=medany;", # # The effect is that `gcc -mno-app-regs' (for example) will append "alt" # to the directory name when searching for libraries or startup files and --- 87,104 ---- # Here is an example (this is from the actual sparc64 case): # genmultilib 'm64/m32 mno-app-regs|mcmodel=medany' '64 32 alt' # 'mcmodel?medany=mcmodel?medmid' 'm32/mno-app-regs* m32/mcmodel=*' ! # '' 'm32/!m64/mno-app-regs m32/!m64/mcmodel=medany' ! # '../lib64 ../lib32 alt' yes # This produces: # ". !m64 !m32 !mno-app-regs !mcmodel=medany;", ! # "64:../lib64 m64 !m32 !mno-app-regs !mcmodel=medany;", ! # "32:../lib32 !m64 m32 !mno-app-regs !mcmodel=medany;", # "alt !m64 !m32 mno-app-regs mcmodel=medany;", # "alt !m64 !m32 mno-app-regs !mcmodel=medany;", # "alt !m64 !m32 !mno-app-regs mcmodel=medany;", ! # "64/alt:../lib64/alt m64 !m32 mno-app-regs mcmodel=medany;", ! # "64/alt:../lib64/alt m64 !m32 mno-app-regs !mcmodel=medany;", ! # "64/alt:../lib64/alt m64 !m32 !mno-app-regs mcmodel=medany;", # # The effect is that `gcc -mno-app-regs' (for example) will append "alt" # to the directory name when searching for libraries or startup files and *************** matches=$3 *** 106,111 **** --- 115,122 ---- exceptions=$4 extra=$5 exclusions=$6 + osdirnames=$7 + enable_multilib=$8 echo "static const char *const multilib_raw[] = {" *************** if [ -n "${dirnames}" ]; then *** 202,207 **** --- 213,241 ---- done fi + # Construct a sed pattern which will convert option names to OS directory + # names. + toosdirnames= + if [ -n "${osdirnames}" ]; then + set x ${osdirnames} + shift + for set in ${options}; do + for opts in `echo ${set} | sed -e 's|/| |'g`; do + patt="/" + for opt in `echo ${opts} | sed -e 's_|_ _'g`; do + if [ "$1" != "${opt}" ]; then + toosdirnames="${toosdirnames} -e s|/${opt}/|/${1}/|g" + patt="${patt}${1}/" + if [ "${patt}" != "/${1}/" ]; then + toosdirnames="${toosdirnames} -e s|${patt}|/${1}/|g" + fi + fi + done + shift + done + done + fi + # We need another recursive shell script to correctly handle positive # matches. If we are invoked as # genmultilib "opt1 opt2" "" "opt1=nopt1 opt2=nopt2" *************** for combo in ${combinations}; do *** 257,262 **** --- 291,315 ---- # Remove the leading and trailing slashes. dirout=`echo ${dirout} | sed -e 's|^/||' -e 's|/$||g'` + # Use the OS directory names rather than the option names. + if [ -n "${toosdirnames}" ]; then + osdirout=`echo ${combo} | sed ${toosdirnames}` + # Remove the leading and trailing slashes. + osdirout=`echo ${osdirout} | sed -e 's|^/||' -e 's|/$||g'` + if [ "x${enable_multilib}" != xyes ]; then + dirout=".:${osdirout}" + else + dirout="${dirout}:${osdirout}" + fi + else + if [ "x${enable_multilib}" != xyes ]; then + # genmultilib with --disable-multilib should be + # called with '' '' '' '' '' '' '' no + # if MULTILIB_OSDIRNAMES is empty. + exit 1 + fi + fi + # Look through the options. We must output each option that is # present, and negate each option that is not present. optout= *************** done *** 313,318 **** --- 366,376 ---- echo "NULL" echo "};" + # Output the options now + moptions=`echo ${options} | sed -e 's,[ ][ ]*, ,g'` + echo "" + echo "static const char *multilib_options = \"${moptions}\";" + rm -f tmpmultilib2 exit 0 diff -Nrc3pad gcc-3.2/gcc/haifa-sched.c gcc-3.2.1/gcc/haifa-sched.c *** gcc-3.2/gcc/haifa-sched.c Thu Feb 28 18:29:05 2002 --- gcc-3.2.1/gcc/haifa-sched.c Mon Aug 19 18:59:31 2002 *************** move_insn (insn, last) *** 1601,1606 **** --- 1601,1608 ---- retval = reemit_notes (insn, insn); else reemit_notes (insn, insn); + /* Consume SCHED_GROUP_P flag. */ + SCHED_GROUP_P (insn) = 0; insn = prev; } *************** schedule_block (b, rgn_n_insns) *** 1764,1770 **** can_issue_more = (*targetm.sched.variable_issue) (sched_dump, sched_verbose, insn, can_issue_more); ! else can_issue_more--; schedule_insn (insn, &ready, clock_var); --- 1766,1775 ---- can_issue_more = (*targetm.sched.variable_issue) (sched_dump, sched_verbose, insn, can_issue_more); ! /* A naked CLOBBER or USE generates no instruction, so do ! not count them against the issue rate. */ ! else if (GET_CODE (PATTERN (insn)) != USE ! && GET_CODE (PATTERN (insn)) != CLOBBER) can_issue_more--; schedule_insn (insn, &ready, clock_var); diff -Nrc3pad gcc-3.2/gcc/hooks.c gcc-3.2.1/gcc/hooks.c *** gcc-3.2/gcc/hooks.c Thu May 23 17:57:27 2002 --- gcc-3.2.1/gcc/hooks.c Fri Oct 25 22:11:08 2002 *************** hook_void_bool_false () *** 38,40 **** --- 38,48 ---- { return false; } + + /* Generic hook that takes (tree) and returns false. */ + bool + hook_tree_bool_false (a) + tree a ATTRIBUTE_UNUSED; + { + return false; + } diff -Nrc3pad gcc-3.2/gcc/hooks.h gcc-3.2.1/gcc/hooks.h *** gcc-3.2/gcc/hooks.h Thu May 23 17:57:27 2002 --- gcc-3.2.1/gcc/hooks.h Fri Oct 25 22:11:08 2002 *************** Foundation, 59 Temple Place - Suite 330, *** 24,28 **** --- 24,29 ---- bool hook_void_bool_false PARAMS ((void)); void hook_void_void PARAMS ((void)); + bool hook_tree_bool_false PARAMS ((tree)); #endif diff -Nrc3pad gcc-3.2/gcc/intl/ChangeLog gcc-3.2.1/gcc/intl/ChangeLog *** gcc-3.2/gcc/intl/ChangeLog Wed Aug 14 09:00:18 2002 --- gcc-3.2.1/gcc/intl/ChangeLog Tue Nov 19 17:49:05 2002 *************** *** 1,3 **** --- 1,15 ---- + 2002-11-19 Release Manager + + * GCC 3.2.1 Released. + + 2002-11-19 Release Manager + + * GCC 3.2.1 Released. + + 2002-11-18 Release Manager + + * GCC 3.2.1 Released. + 2002-08-14 Release Manager * GCC 3.2 Released. diff -Nrc3pad gcc-3.2/gcc/jump.c gcc-3.2.1/gcc/jump.c *** gcc-3.2/gcc/jump.c Tue Apr 9 20:38:58 2002 --- gcc-3.2.1/gcc/jump.c Sat Nov 16 01:55:47 2002 *************** simplejump_p (insn) *** 1076,1081 **** --- 1076,1096 ---- && GET_CODE (SET_DEST (PATTERN (insn))) == PC && GET_CODE (SET_SRC (PATTERN (insn))) == LABEL_REF); } + /* Return 1 if INSN is an tablejump. */ + + int + tablejump_p (insn) + rtx insn; + { + rtx table; + return (GET_CODE (insn) == JUMP_INSN + && JUMP_LABEL (insn) + && NEXT_INSN (JUMP_LABEL (insn)) + && (table = next_active_insn (JUMP_LABEL (insn))) + && GET_CODE (table) == JUMP_INSN + && (GET_CODE (PATTERN (table)) == ADDR_VEC + || GET_CODE (PATTERN (table)) == ADDR_DIFF_VEC)); + } /* Return nonzero if INSN is a (possibly) conditional jump and nothing more. *************** true_regnum (x) *** 2428,2430 **** --- 2443,2457 ---- } return -1; } + + /* Return regno of the register REG and handle subregs too. */ + unsigned int + reg_or_subregno (reg) + rtx reg; + { + if (REG_P (reg)) + return REGNO (reg); + if (GET_CODE (reg) == SUBREG) + return REGNO (SUBREG_REG (reg)); + abort (); + } diff -Nrc3pad gcc-3.2/gcc/langhooks-def.h gcc-3.2.1/gcc/langhooks-def.h *** gcc-3.2/gcc/langhooks-def.h Thu May 23 17:57:27 2002 --- gcc-3.2.1/gcc/langhooks-def.h Fri Oct 25 22:11:08 2002 *************** extern int lhd_staticp PARAMS ((tree)); *** 48,53 **** --- 48,54 ---- extern void lhd_clear_binding_stack PARAMS ((void)); extern void lhd_print_tree_nothing PARAMS ((FILE *, tree, int)); extern void lhd_set_yydebug PARAMS ((int)); + extern tree lhd_expr_size PARAMS ((tree)); /* Declarations of default tree inlining hooks. */ tree lhd_tree_inlining_walk_subtrees PARAMS ((tree *, int *, *************** tree lhd_tree_inlining_convert_parm_for_ *** 85,90 **** --- 86,92 ---- #define LANG_HOOKS_PRINT_TYPE lhd_print_tree_nothing #define LANG_HOOKS_PRINT_IDENTIFIER lhd_print_tree_nothing #define LANG_HOOKS_SET_YYDEBUG lhd_set_yydebug + #define LANG_HOOKS_EXPR_SIZE lhd_expr_size /* Tree inlining hooks. */ #define LANG_HOOKS_TREE_INLINING_WALK_SUBTREES lhd_tree_inlining_walk_subtrees *************** tree lhd_tree_inlining_convert_parm_for_ *** 102,107 **** --- 104,111 ---- lhd_tree_inlining_copy_res_decl_for_inlining #define LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P \ lhd_tree_inlining_anon_aggr_type_p + #define LANG_HOOKS_TREE_INLINING_VAR_MOD_TYPE_P \ + hook_tree_bool_false #define LANG_HOOKS_TREE_INLINING_START_INLINING \ lhd_tree_inlining_start_inlining #define LANG_HOOKS_TREE_INLINING_END_INLINING \ *************** tree lhd_tree_inlining_convert_parm_for_ *** 118,123 **** --- 122,128 ---- LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P, \ LANG_HOOKS_TREE_INLINING_COPY_RES_DECL_FOR_INLINING, \ LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P, \ + LANG_HOOKS_TREE_INLINING_VAR_MOD_TYPE_P, \ LANG_HOOKS_TREE_INLINING_START_INLINING, \ LANG_HOOKS_TREE_INLINING_END_INLINING, \ LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING \ *************** int lhd_tree_dump_type_quals PARAMS (( *** 156,161 **** --- 161,167 ---- LANG_HOOKS_PRINT_TYPE, \ LANG_HOOKS_PRINT_IDENTIFIER, \ LANG_HOOKS_SET_YYDEBUG, \ + LANG_HOOKS_EXPR_SIZE, \ LANG_HOOKS_TREE_INLINING_INITIALIZER, \ LANG_HOOKS_TREE_DUMP_INITIALIZER \ } diff -Nrc3pad gcc-3.2/gcc/langhooks.c gcc-3.2.1/gcc/langhooks.c *** gcc-3.2/gcc/langhooks.c Thu Mar 21 23:12:21 2002 --- gcc-3.2.1/gcc/langhooks.c Fri Aug 23 12:00:37 2002 *************** lhd_tree_dump_type_quals (t) *** 303,305 **** --- 303,318 ---- return TYPE_QUALS (t); } + /* lang_hooks.expr_size: Determine the size of the value of an expression T + in a language-specific way. Returns a tree for the size in bytes. */ + + tree + lhd_expr_size (exp) + tree exp; + { + if (TREE_CODE_CLASS (TREE_CODE (exp)) == 'd' + && DECL_SIZE_UNIT (exp) != 0) + return DECL_SIZE_UNIT (exp); + else + return size_in_bytes (TREE_TYPE (exp)); + } diff -Nrc3pad gcc-3.2/gcc/langhooks.h gcc-3.2.1/gcc/langhooks.h *** gcc-3.2/gcc/langhooks.h Thu May 23 17:57:28 2002 --- gcc-3.2.1/gcc/langhooks.h Fri Oct 25 22:11:09 2002 *************** struct lang_hooks_for_tree_inlining *** 46,51 **** --- 46,52 ---- void *, int *, void *)); int (*anon_aggr_type_p) PARAMS ((union tree_node *)); + bool (*var_mod_type_p) PARAMS ((union tree_node *)); int (*start_inlining) PARAMS ((union tree_node *)); void (*end_inlining) PARAMS ((union tree_node *)); union tree_node *(*convert_parm_for_inlining) PARAMS ((union tree_node *, *************** struct lang_hooks *** 156,161 **** --- 157,168 ---- warning that the front end does not use such a parser. */ void (*set_yydebug) PARAMS ((int)); + /* Called from expr_size to calculate the size of the value of an + expression in a language-dependent way. Returns a tree for the size + in bytes. A frontend can call lhd_expr_size to get the default + semantics in cases that it doesn't want to handle specially. */ + tree (*expr_size) PARAMS ((tree)); + struct lang_hooks_for_tree_inlining tree_inlining; struct lang_hooks_for_tree_dump tree_dump; diff -Nrc3pad gcc-3.2/gcc/libgcc2.c gcc-3.2.1/gcc/libgcc2.c *** gcc-3.2/gcc/libgcc2.c Tue May 21 23:44:38 2002 --- gcc-3.2.1/gcc/libgcc2.c Wed Oct 9 00:33:12 2002 *************** *** 1,7 **** /* More subroutines needed by GCC output code on some machines. */ /* Compile this one with gcc. */ /* Copyright (C) 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, ! 2000, 2001 Free Software Foundation, Inc. This file is part of GCC. --- 1,7 ---- /* More subroutines needed by GCC output code on some machines. */ /* Compile this one with gcc. */ /* Copyright (C) 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, ! 2000, 2001, 2002 Free Software Foundation, Inc. This file is part of GCC. *************** Software Foundation, 59 Temple Place - S *** 36,43 **** #include "tconfig.h" #include "tsystem.h" - #include "machmode.h" - /* Don't use `fancy_abort' here even if config.h says to use it. */ #ifdef abort #undef abort --- 36,41 ---- *************** __floatdisf (DWtype u) *** 1117,1123 **** && u < ((DWtype) 1 << DF_SIZE))) { if ((UDWtype) u & (REP_BIT - 1)) ! u |= REP_BIT; } } f = (Wtype) (u >> WORD_SIZE); --- 1115,1124 ---- && u < ((DWtype) 1 << DF_SIZE))) { if ((UDWtype) u & (REP_BIT - 1)) ! { ! u &= ~ (REP_BIT - 1); ! u |= REP_BIT; ! } } } f = (Wtype) (u >> WORD_SIZE); diff -Nrc3pad gcc-3.2/gcc/loop.c gcc-3.2.1/gcc/loop.c *** gcc-3.2/gcc/loop.c Sat Jun 15 01:12:04 2002 --- gcc-3.2.1/gcc/loop.c Tue Oct 15 14:42:52 2002 *************** scan_loop (loop, flags) *** 640,645 **** --- 640,646 ---- int threshold; /* Nonzero if we are scanning instructions in a sub-loop. */ int loop_depth = 0; + int in_libcall; loop->top = 0; *************** scan_loop (loop, flags) *** 756,1045 **** When MAYBE_NEVER is 0, all insns will be executed at least once so that is not a problem. */ ! for (p = next_insn_in_loop (loop, loop->scan_start); p != NULL_RTX; p = next_insn_in_loop (loop, p)) { ! if (GET_CODE (p) == INSN ! && (set = single_set (p)) ! && GET_CODE (SET_DEST (set)) == REG #ifdef PIC_OFFSET_TABLE_REG_CALL_CLOBBERED ! && SET_DEST (set) != pic_offset_table_rtx #endif ! && ! regs->array[REGNO (SET_DEST (set))].may_not_optimize) ! { ! int tem1 = 0; ! int tem2 = 0; ! int move_insn = 0; ! rtx src = SET_SRC (set); ! rtx dependencies = 0; ! /* Figure out what to use as a source of this insn. If a REG_EQUIV ! note is given or if a REG_EQUAL note with a constant operand is ! specified, use it as the source and mark that we should move ! this insn by calling emit_move_insn rather that duplicating the ! insn. ! Otherwise, only use the REG_EQUAL contents if a REG_RETVAL note ! is present. */ ! temp = find_reg_note (p, REG_EQUIV, NULL_RTX); ! if (temp) ! src = XEXP (temp, 0), move_insn = 1; ! else ! { ! temp = find_reg_note (p, REG_EQUAL, NULL_RTX); ! if (temp && CONSTANT_P (XEXP (temp, 0))) src = XEXP (temp, 0), move_insn = 1; ! if (temp && find_reg_note (p, REG_RETVAL, NULL_RTX)) { ! src = XEXP (temp, 0); ! /* A libcall block can use regs that don't appear in ! the equivalent expression. To move the libcall, ! we must move those regs too. */ ! dependencies = libcall_other_reg (p, src); } - } ! /* For parallels, add any possible uses to the depencies, as we can't move ! the insn without resolving them first. */ ! if (GET_CODE (PATTERN (p)) == PARALLEL) ! { ! for (i = 0; i < XVECLEN (PATTERN (p), 0); i++) { ! rtx x = XVECEXP (PATTERN (p), 0, i); ! if (GET_CODE (x) == USE) ! dependencies = gen_rtx_EXPR_LIST (VOIDmode, XEXP (x, 0), dependencies); } - } ! /* Don't try to optimize a register that was made ! by loop-optimization for an inner loop. ! We don't know its life-span, so we can't compute the benefit. */ ! if (REGNO (SET_DEST (set)) >= max_reg_before_loop) ! ; ! else if (/* The register is used in basic blocks other ! than the one where it is set (meaning that ! something after this point in the loop might ! depend on its value before the set). */ ! ! reg_in_basic_block_p (p, SET_DEST (set)) ! /* And the set is not guaranteed to be executed once ! the loop starts, or the value before the set is ! needed before the set occurs... ! ! ??? Note we have quadratic behaviour here, mitigated ! by the fact that the previous test will often fail for ! large loops. Rather than re-scanning the entire loop ! each time for register usage, we should build tables ! of the register usage and use them here instead. */ ! && (maybe_never ! || loop_reg_used_before_p (loop, set, p))) ! /* It is unsafe to move the set. ! ! This code used to consider it OK to move a set of a variable ! which was not created by the user and not used in an exit test. ! That behavior is incorrect and was removed. */ ! ; ! else if ((tem = loop_invariant_p (loop, src)) ! && (dependencies == 0 ! || (tem2 = loop_invariant_p (loop, dependencies)) != 0) ! && (regs->array[REGNO (SET_DEST (set))].set_in_loop == 1 ! || (tem1 ! = consec_sets_invariant_p ! (loop, SET_DEST (set), ! regs->array[REGNO (SET_DEST (set))].set_in_loop, ! p))) ! /* If the insn can cause a trap (such as divide by zero), ! can't move it unless it's guaranteed to be executed ! once loop is entered. Even a function call might ! prevent the trap insn from being reached ! (since it might exit!) */ ! && ! ((maybe_never || call_passed) ! && may_trap_p (src))) ! { ! struct movable *m; ! int regno = REGNO (SET_DEST (set)); ! ! /* A potential lossage is where we have a case where two insns ! can be combined as long as they are both in the loop, but ! we move one of them outside the loop. For large loops, ! this can lose. The most common case of this is the address ! of a function being called. ! ! Therefore, if this register is marked as being used exactly ! once if we are in a loop with calls (a "large loop"), see if ! we can replace the usage of this register with the source ! of this SET. If we can, delete this insn. ! Don't do this if P has a REG_RETVAL note or if we have ! SMALL_REGISTER_CLASSES and SET_SRC is a hard register. */ ! if (loop_info->has_call ! && regs->array[regno].single_usage != 0 ! && regs->array[regno].single_usage != const0_rtx ! && REGNO_FIRST_UID (regno) == INSN_UID (p) ! && (REGNO_LAST_UID (regno) ! == INSN_UID (regs->array[regno].single_usage)) ! && regs->array[regno].set_in_loop == 1 ! && GET_CODE (SET_SRC (set)) != ASM_OPERANDS ! && ! side_effects_p (SET_SRC (set)) ! && ! find_reg_note (p, REG_RETVAL, NULL_RTX) ! && (! SMALL_REGISTER_CLASSES ! || (! (GET_CODE (SET_SRC (set)) == REG ! && REGNO (SET_SRC (set)) < FIRST_PSEUDO_REGISTER))) ! /* This test is not redundant; SET_SRC (set) might be ! a call-clobbered register and the life of REGNO ! might span a call. */ ! && ! modified_between_p (SET_SRC (set), p, ! regs->array[regno].single_usage) ! && no_labels_between_p (p, regs->array[regno].single_usage) ! && validate_replace_rtx (SET_DEST (set), SET_SRC (set), ! regs->array[regno].single_usage)) { ! /* Replace any usage in a REG_EQUAL note. Must copy the ! new source, so that we don't get rtx sharing between the ! SET_SOURCE and REG_NOTES of insn p. */ ! REG_NOTES (regs->array[regno].single_usage) ! = replace_rtx (REG_NOTES (regs->array[regno].single_usage), ! SET_DEST (set), copy_rtx (SET_SRC (set))); ! ! delete_insn (p); ! for (i = 0; i < LOOP_REGNO_NREGS (regno, SET_DEST (set)); i++) ! regs->array[regno+i].set_in_loop = 0; ! continue; ! } ! m = (struct movable *) xmalloc (sizeof (struct movable)); ! m->next = 0; ! m->insn = p; ! m->set_src = src; ! m->dependencies = dependencies; ! m->set_dest = SET_DEST (set); ! m->force = 0; ! m->consec = regs->array[REGNO (SET_DEST (set))].set_in_loop - 1; ! m->done = 0; ! m->forces = 0; ! m->partial = 0; ! m->move_insn = move_insn; ! m->move_insn_first = 0; ! m->is_equiv = (find_reg_note (p, REG_EQUIV, NULL_RTX) != 0); ! m->savemode = VOIDmode; ! m->regno = regno; ! /* Set M->cond if either loop_invariant_p ! or consec_sets_invariant_p returned 2 ! (only conditionally invariant). */ ! m->cond = ((tem | tem1 | tem2) > 1); ! m->global = LOOP_REG_GLOBAL_P (loop, regno); ! m->match = 0; ! m->lifetime = LOOP_REG_LIFETIME (loop, regno); ! m->savings = regs->array[regno].n_times_set; ! if (find_reg_note (p, REG_RETVAL, NULL_RTX)) ! m->savings += libcall_benefit (p); ! for (i = 0; i < LOOP_REGNO_NREGS (regno, SET_DEST (set)); i++) ! regs->array[regno+i].set_in_loop = move_insn ? -2 : -1; ! /* Add M to the end of the chain MOVABLES. */ ! loop_movables_add (movables, m); ! if (m->consec > 0) ! { ! /* It is possible for the first instruction to have a ! REG_EQUAL note but a non-invariant SET_SRC, so we must ! remember the status of the first instruction in case ! the last instruction doesn't have a REG_EQUAL note. */ ! m->move_insn_first = m->move_insn; ! /* Skip this insn, not checking REG_LIBCALL notes. */ ! p = next_nonnote_insn (p); ! /* Skip the consecutive insns, if there are any. */ ! p = skip_consec_insns (p, m->consec); ! /* Back up to the last insn of the consecutive group. */ ! p = prev_nonnote_insn (p); ! /* We must now reset m->move_insn, m->is_equiv, and possibly ! m->set_src to correspond to the effects of all the ! insns. */ ! temp = find_reg_note (p, REG_EQUIV, NULL_RTX); ! if (temp) ! m->set_src = XEXP (temp, 0), m->move_insn = 1; ! else { ! temp = find_reg_note (p, REG_EQUAL, NULL_RTX); ! if (temp && CONSTANT_P (XEXP (temp, 0))) ! m->set_src = XEXP (temp, 0), m->move_insn = 1; ! else ! m->move_insn = 0; } ! m->is_equiv = (find_reg_note (p, REG_EQUIV, NULL_RTX) != 0); ! } ! } ! /* If this register is always set within a STRICT_LOW_PART ! or set to zero, then its high bytes are constant. ! So clear them outside the loop and within the loop ! just load the low bytes. ! We must check that the machine has an instruction to do so. ! Also, if the value loaded into the register ! depends on the same register, this cannot be done. */ ! else if (SET_SRC (set) == const0_rtx ! && GET_CODE (NEXT_INSN (p)) == INSN ! && (set1 = single_set (NEXT_INSN (p))) ! && GET_CODE (set1) == SET ! && (GET_CODE (SET_DEST (set1)) == STRICT_LOW_PART) ! && (GET_CODE (XEXP (SET_DEST (set1), 0)) == SUBREG) ! && (SUBREG_REG (XEXP (SET_DEST (set1), 0)) ! == SET_DEST (set)) ! && !reg_mentioned_p (SET_DEST (set), SET_SRC (set1))) ! { ! int regno = REGNO (SET_DEST (set)); ! if (regs->array[regno].set_in_loop == 2) ! { ! struct movable *m; m = (struct movable *) xmalloc (sizeof (struct movable)); m->next = 0; m->insn = p; m->set_dest = SET_DEST (set); - m->dependencies = 0; m->force = 0; ! m->consec = 0; m->done = 0; m->forces = 0; ! m->move_insn = 0; m->move_insn_first = 0; ! m->partial = 1; ! /* If the insn may not be executed on some cycles, ! we can't clear the whole reg; clear just high part. ! Not even if the reg is used only within this loop. ! Consider this: ! while (1) ! while (s != t) { ! if (foo ()) x = *s; ! use (x); ! } ! Clearing x before the inner loop could clobber a value ! being saved from the last time around the outer loop. ! However, if the reg is not used outside this loop ! and all uses of the register are in the same ! basic block as the store, there is no problem. ! ! If this insn was made by loop, we don't know its ! INSN_LUID and hence must make a conservative ! assumption. */ ! m->global = (INSN_UID (p) >= max_uid_for_loop ! || LOOP_REG_GLOBAL_P (loop, regno) ! || (labels_in_range_p ! (p, REGNO_FIRST_LUID (regno)))); ! if (maybe_never && m->global) ! m->savemode = GET_MODE (SET_SRC (set1)); ! else ! m->savemode = VOIDmode; m->regno = regno; ! m->cond = 0; m->match = 0; m->lifetime = LOOP_REG_LIFETIME (loop, regno); ! m->savings = 1; for (i = 0; i < LOOP_REGNO_NREGS (regno, SET_DEST (set)); i++) ! regs->array[regno+i].set_in_loop = -1; /* Add M to the end of the chain MOVABLES. */ loop_movables_add (movables, m); } } } --- 757,1067 ---- When MAYBE_NEVER is 0, all insns will be executed at least once so that is not a problem. */ ! for (in_libcall = 0, p = next_insn_in_loop (loop, loop->scan_start); p != NULL_RTX; p = next_insn_in_loop (loop, p)) { ! if (in_libcall && INSN_P (p) && find_reg_note (p, REG_RETVAL, NULL_RTX)) ! in_libcall--; ! if (GET_CODE (p) == INSN) ! { ! temp = find_reg_note (p, REG_LIBCALL, NULL_RTX); ! if (temp) ! in_libcall++; ! if (! in_libcall ! && (set = single_set (p)) ! && GET_CODE (SET_DEST (set)) == REG #ifdef PIC_OFFSET_TABLE_REG_CALL_CLOBBERED ! && SET_DEST (set) != pic_offset_table_rtx #endif ! && ! regs->array[REGNO (SET_DEST (set))].may_not_optimize) ! { ! int tem1 = 0; ! int tem2 = 0; ! int move_insn = 0; ! rtx src = SET_SRC (set); ! rtx dependencies = 0; ! /* Figure out what to use as a source of this insn. If a ! REG_EQUIV note is given or if a REG_EQUAL note with a ! constant operand is specified, use it as the source and ! mark that we should move this insn by calling ! emit_move_insn rather that duplicating the insn. ! Otherwise, only use the REG_EQUAL contents if a REG_RETVAL ! note is present. */ ! temp = find_reg_note (p, REG_EQUIV, NULL_RTX); ! if (temp) src = XEXP (temp, 0), move_insn = 1; ! else { ! temp = find_reg_note (p, REG_EQUAL, NULL_RTX); ! if (temp && CONSTANT_P (XEXP (temp, 0))) ! src = XEXP (temp, 0), move_insn = 1; ! if (temp && find_reg_note (p, REG_RETVAL, NULL_RTX)) ! { ! src = XEXP (temp, 0); ! /* A libcall block can use regs that don't appear in ! the equivalent expression. To move the libcall, ! we must move those regs too. */ ! dependencies = libcall_other_reg (p, src); ! } } ! /* For parallels, add any possible uses to the depencies, as ! we can't move the insn without resolving them first. */ ! if (GET_CODE (PATTERN (p)) == PARALLEL) { ! for (i = 0; i < XVECLEN (PATTERN (p), 0); i++) ! { ! rtx x = XVECEXP (PATTERN (p), 0, i); ! if (GET_CODE (x) == USE) ! dependencies ! = gen_rtx_EXPR_LIST (VOIDmode, XEXP (x, 0), ! dependencies); ! } } ! /* Don't try to optimize a register that was made ! by loop-optimization for an inner loop. ! We don't know its life-span, so we can't compute ! the benefit. */ ! if (REGNO (SET_DEST (set)) >= max_reg_before_loop) ! ; ! else if (/* The register is used in basic blocks other ! than the one where it is set (meaning that ! something after this point in the loop might ! depend on its value before the set). */ ! ! reg_in_basic_block_p (p, SET_DEST (set)) ! /* And the set is not guaranteed to be executed once ! the loop starts, or the value before the set is ! needed before the set occurs... ! ??? Note we have quadratic behaviour here, mitigated ! by the fact that the previous test will often fail for ! large loops. Rather than re-scanning the entire loop ! each time for register usage, we should build tables ! of the register usage and use them here instead. */ ! && (maybe_never ! || loop_reg_used_before_p (loop, set, p))) ! /* It is unsafe to move the set. ! This code used to consider it OK to move a set of a variable ! which was not created by the user and not used in an exit ! test. ! That behavior is incorrect and was removed. */ ! ; ! else if ((tem = loop_invariant_p (loop, src)) ! && (dependencies == 0 ! || (tem2 ! = loop_invariant_p (loop, dependencies)) != 0) ! && (regs->array[REGNO (SET_DEST (set))].set_in_loop == 1 ! || (tem1 ! = consec_sets_invariant_p ! (loop, SET_DEST (set), ! regs->array[REGNO (SET_DEST (set))].set_in_loop, ! p))) ! /* If the insn can cause a trap (such as divide by zero), ! can't move it unless it's guaranteed to be executed ! once loop is entered. Even a function call might ! prevent the trap insn from being reached ! (since it might exit!) */ ! && ! ((maybe_never || call_passed) ! && may_trap_p (src))) { ! struct movable *m; ! int regno = REGNO (SET_DEST (set)); ! /* A potential lossage is where we have a case where two insns ! can be combined as long as they are both in the loop, but ! we move one of them outside the loop. For large loops, ! this can lose. The most common case of this is the address ! of a function being called. ! Therefore, if this register is marked as being used ! exactly once if we are in a loop with calls ! (a "large loop"), see if we can replace the usage of ! this register with the source of this SET. If we can, ! delete this insn. ! Don't do this if P has a REG_RETVAL note or if we have ! SMALL_REGISTER_CLASSES and SET_SRC is a hard register. */ ! if (loop_info->has_call ! && regs->array[regno].single_usage != 0 ! && regs->array[regno].single_usage != const0_rtx ! && REGNO_FIRST_UID (regno) == INSN_UID (p) ! && (REGNO_LAST_UID (regno) ! == INSN_UID (regs->array[regno].single_usage)) ! && regs->array[regno].set_in_loop == 1 ! && GET_CODE (SET_SRC (set)) != ASM_OPERANDS ! && ! side_effects_p (SET_SRC (set)) ! && ! find_reg_note (p, REG_RETVAL, NULL_RTX) ! && (! SMALL_REGISTER_CLASSES ! || (! (GET_CODE (SET_SRC (set)) == REG ! && (REGNO (SET_SRC (set)) ! < FIRST_PSEUDO_REGISTER)))) ! /* This test is not redundant; SET_SRC (set) might be ! a call-clobbered register and the life of REGNO ! might span a call. */ ! && ! modified_between_p (SET_SRC (set), p, ! regs->array[regno].single_usage) ! && no_labels_between_p (p, ! regs->array[regno].single_usage) ! && validate_replace_rtx (SET_DEST (set), SET_SRC (set), ! regs->array[regno].single_usage)) { ! /* Replace any usage in a REG_EQUAL note. Must copy ! the new source, so that we don't get rtx sharing ! between the SET_SOURCE and REG_NOTES of insn p. */ ! REG_NOTES (regs->array[regno].single_usage) ! = (replace_rtx ! (REG_NOTES (regs->array[regno].single_usage), ! SET_DEST (set), copy_rtx (SET_SRC (set)))); + delete_insn (p); + for (i = 0; i < LOOP_REGNO_NREGS (regno, SET_DEST (set)); + i++) + regs->array[regno+i].set_in_loop = 0; + continue; } ! m = (struct movable *) xmalloc (sizeof (struct movable)); m->next = 0; m->insn = p; + m->set_src = src; + m->dependencies = dependencies; m->set_dest = SET_DEST (set); m->force = 0; ! m->consec ! = regs->array[REGNO (SET_DEST (set))].set_in_loop - 1; m->done = 0; m->forces = 0; ! m->partial = 0; ! m->move_insn = move_insn; m->move_insn_first = 0; ! m->is_equiv = (find_reg_note (p, REG_EQUIV, NULL_RTX) != 0); ! m->savemode = VOIDmode; m->regno = regno; ! /* Set M->cond if either loop_invariant_p ! or consec_sets_invariant_p returned 2 ! (only conditionally invariant). */ ! m->cond = ((tem | tem1 | tem2) > 1); ! m->global = LOOP_REG_GLOBAL_P (loop, regno); m->match = 0; m->lifetime = LOOP_REG_LIFETIME (loop, regno); ! m->savings = regs->array[regno].n_times_set; ! if (find_reg_note (p, REG_RETVAL, NULL_RTX)) ! m->savings += libcall_benefit (p); for (i = 0; i < LOOP_REGNO_NREGS (regno, SET_DEST (set)); i++) ! regs->array[regno+i].set_in_loop = move_insn ? -2 : -1; /* Add M to the end of the chain MOVABLES. */ loop_movables_add (movables, m); + + if (m->consec > 0) + { + /* It is possible for the first instruction to have a + REG_EQUAL note but a non-invariant SET_SRC, so we must + remember the status of the first instruction in case + the last instruction doesn't have a REG_EQUAL note. */ + m->move_insn_first = m->move_insn; + + /* Skip this insn, not checking REG_LIBCALL notes. */ + p = next_nonnote_insn (p); + /* Skip the consecutive insns, if there are any. */ + p = skip_consec_insns (p, m->consec); + /* Back up to the last insn of the consecutive group. */ + p = prev_nonnote_insn (p); + + /* We must now reset m->move_insn, m->is_equiv, and + possibly m->set_src to correspond to the effects of + all the insns. */ + temp = find_reg_note (p, REG_EQUIV, NULL_RTX); + if (temp) + m->set_src = XEXP (temp, 0), m->move_insn = 1; + else + { + temp = find_reg_note (p, REG_EQUAL, NULL_RTX); + if (temp && CONSTANT_P (XEXP (temp, 0))) + m->set_src = XEXP (temp, 0), m->move_insn = 1; + else + m->move_insn = 0; + + } + m->is_equiv + = (find_reg_note (p, REG_EQUIV, NULL_RTX) != 0); + } + } + /* If this register is always set within a STRICT_LOW_PART + or set to zero, then its high bytes are constant. + So clear them outside the loop and within the loop + just load the low bytes. + We must check that the machine has an instruction to do so. + Also, if the value loaded into the register + depends on the same register, this cannot be done. */ + else if (SET_SRC (set) == const0_rtx + && GET_CODE (NEXT_INSN (p)) == INSN + && (set1 = single_set (NEXT_INSN (p))) + && GET_CODE (set1) == SET + && (GET_CODE (SET_DEST (set1)) == STRICT_LOW_PART) + && (GET_CODE (XEXP (SET_DEST (set1), 0)) == SUBREG) + && (SUBREG_REG (XEXP (SET_DEST (set1), 0)) + == SET_DEST (set)) + && !reg_mentioned_p (SET_DEST (set), SET_SRC (set1))) + { + int regno = REGNO (SET_DEST (set)); + if (regs->array[regno].set_in_loop == 2) + { + struct movable *m; + m = (struct movable *) xmalloc (sizeof (struct movable)); + m->next = 0; + m->insn = p; + m->set_dest = SET_DEST (set); + m->dependencies = 0; + m->force = 0; + m->consec = 0; + m->done = 0; + m->forces = 0; + m->move_insn = 0; + m->move_insn_first = 0; + m->partial = 1; + /* If the insn may not be executed on some cycles, + we can't clear the whole reg; clear just high part. + Not even if the reg is used only within this loop. + Consider this: + while (1) + while (s != t) { + if (foo ()) x = *s; + use (x); + } + Clearing x before the inner loop could clobber a value + being saved from the last time around the outer loop. + However, if the reg is not used outside this loop + and all uses of the register are in the same + basic block as the store, there is no problem. + + If this insn was made by loop, we don't know its + INSN_LUID and hence must make a conservative + assumption. */ + m->global = (INSN_UID (p) >= max_uid_for_loop + || LOOP_REG_GLOBAL_P (loop, regno) + || (labels_in_range_p + (p, REGNO_FIRST_LUID (regno)))); + if (maybe_never && m->global) + m->savemode = GET_MODE (SET_SRC (set1)); + else + m->savemode = VOIDmode; + m->regno = regno; + m->cond = 0; + m->match = 0; + m->lifetime = LOOP_REG_LIFETIME (loop, regno); + m->savings = 1; + for (i = 0; i < LOOP_REGNO_NREGS (regno, SET_DEST (set)); + i++) + regs->array[regno+i].set_in_loop = -1; + /* Add M to the end of the chain MOVABLES. */ + loop_movables_add (movables, m); + } } } } *************** move_movables (loop, movables, threshold *** 1911,1920 **** for (count = m->consec; count >= 0; count--) { /* If this is the first insn of a library call sequence, ! skip to the end. */ if (GET_CODE (p) != NOTE && (temp = find_reg_note (p, REG_LIBCALL, NULL_RTX))) ! p = XEXP (temp, 0); /* If this is the last insn of a libcall sequence, then delete every insn in the sequence except the last. --- 1933,1942 ---- for (count = m->consec; count >= 0; count--) { /* If this is the first insn of a library call sequence, ! something is very wrong. */ if (GET_CODE (p) != NOTE && (temp = find_reg_note (p, REG_LIBCALL, NULL_RTX))) ! abort (); /* If this is the last insn of a libcall sequence, then delete every insn in the sequence except the last. *************** emit_prefetch_instructions (loop) *** 4090,4100 **** { rtx reg = gen_reg_rtx (Pmode); rtx loop_start = loop->start; rtx add_val = simplify_gen_binary (PLUS, Pmode, info[i].giv->add_val, GEN_INT (y * PREFETCH_BLOCK)); ! loop_iv_add_mult_emit_before (loop, info[i].class->initial_value, info[i].giv->mult_val, add_val, reg, 0, loop_start); emit_insn_before (gen_prefetch (reg, GEN_INT (info[i].write), --- 4112,4128 ---- { rtx reg = gen_reg_rtx (Pmode); rtx loop_start = loop->start; + rtx init_val = info[i].class->initial_value; rtx add_val = simplify_gen_binary (PLUS, Pmode, info[i].giv->add_val, GEN_INT (y * PREFETCH_BLOCK)); ! /* Functions called by LOOP_IV_ADD_EMIT_BEFORE expect a ! non-constant INIT_VAL to have the same mode as REG, which ! in this case we know to be Pmode. */ ! if (GET_MODE (init_val) != Pmode && !CONSTANT_P (init_val)) ! init_val = convert_to_mode (Pmode, init_val, 0); ! loop_iv_add_mult_emit_before (loop, init_val, info[i].giv->mult_val, add_val, reg, 0, loop_start); emit_insn_before (gen_prefetch (reg, GEN_INT (info[i].write), *************** canonicalize_condition (insn, cond, reve *** 9264,9270 **** { case LE: if ((unsigned HOST_WIDE_INT) const_val != max_val >> 1) ! code = LT, op1 = GEN_INT (const_val + 1); break; /* When cross-compiling, const_val might be sign-extended from --- 9292,9298 ---- { case LE: if ((unsigned HOST_WIDE_INT) const_val != max_val >> 1) ! code = LT, op1 = gen_int_mode (const_val + 1, GET_MODE (op0)); break; /* When cross-compiling, const_val might be sign-extended from *************** canonicalize_condition (insn, cond, reve *** 9273,9289 **** if ((HOST_WIDE_INT) (const_val & max_val) != (((HOST_WIDE_INT) 1 << (GET_MODE_BITSIZE (GET_MODE (op0)) - 1)))) ! code = GT, op1 = GEN_INT (const_val - 1); break; case LEU: if (uconst_val < max_val) ! code = LTU, op1 = GEN_INT (uconst_val + 1); break; case GEU: if (uconst_val != 0) ! code = GTU, op1 = GEN_INT (uconst_val - 1); break; default: --- 9301,9317 ---- if ((HOST_WIDE_INT) (const_val & max_val) != (((HOST_WIDE_INT) 1 << (GET_MODE_BITSIZE (GET_MODE (op0)) - 1)))) ! code = GT, op1 = gen_int_mode (const_val - 1, GET_MODE (op0)); break; case LEU: if (uconst_val < max_val) ! code = LTU, op1 = gen_int_mode (uconst_val + 1, GET_MODE (op0)); break; case GEU: if (uconst_val != 0) ! code = GTU, op1 = gen_int_mode (uconst_val - 1, GET_MODE (op0)); break; default: *************** loop_regs_scan (loop, extra_size) *** 9532,9537 **** --- 9560,9584 ---- if (GET_CODE (insn) == CODE_LABEL || GET_CODE (insn) == JUMP_INSN) memset (last_set, 0, regs->num * sizeof (rtx)); + + /* Invalidate all registers used for function argument passing. + We check rtx_varies_p for the same reason as below, to allow + optimizing PIC calculations. */ + if (GET_CODE (insn) == CALL_INSN) + { + rtx link; + for (link = CALL_INSN_FUNCTION_USAGE (insn); + link; + link = XEXP (link, 1)) + { + rtx op, reg; + + if (GET_CODE (op = XEXP (link, 0)) == USE + && GET_CODE (reg = XEXP (op, 0)) == REG + && rtx_varies_p (reg, 1)) + regs->array[REGNO (reg)].may_not_optimize = 1; + } + } } /* Invalidate all hard registers clobbered by calls. With one exception: diff -Nrc3pad gcc-3.2/gcc/loop.h gcc-3.2.1/gcc/loop.h *** gcc-3.2/gcc/loop.h Wed Apr 3 07:53:51 2002 --- gcc-3.2.1/gcc/loop.h Tue Sep 17 03:25:06 2002 *************** struct loop_info *** 314,319 **** --- 314,322 ---- int has_multiple_exit_targets; /* Nonzero if there is an indirect jump in the current function. */ int has_indirect_jump; + /* Whether loop unrolling has emitted copies of the loop body so + that the main loop needs no exit tests. */ + int preconditioned; /* Register or constant initial loop value. */ rtx initial_value; /* Register or constant value used for comparison test. */ diff -Nrc3pad gcc-3.2/gcc/mklibgcc.in gcc-3.2.1/gcc/mklibgcc.in *** gcc-3.2/gcc/mklibgcc.in Thu May 9 17:35:21 2002 --- gcc-3.2.1/gcc/mklibgcc.in Sat Oct 5 21:32:06 2002 *************** *** 32,38 **** # SHLIB_MAPFILES # SHLIB_NM_FLAGS # SHLIB_INSTALL ! # SHLIB_SLIBDIR_SUFFIXES # Make needs VPATH to be literal. echo 'srcdir = @srcdir@' --- 32,38 ---- # SHLIB_MAPFILES # SHLIB_NM_FLAGS # SHLIB_INSTALL ! # MULTILIB_OSDIRNAMES # Make needs VPATH to be literal. echo 'srcdir = @srcdir@' *************** for ml in $MULTILIBS; do *** 317,338 **** fi shlib_so_name="$shlib_base_name" shlib_dir= ! if [ -n "$SHLIB_SLIBDIR_SUFFIXES" ]; then if [ "$dir" != . ]; then shlib_dir="$dir"/ ! for suffix_pair in $SHLIB_SLIBDIR_SUFFIXES ; do ! base_ml_dir=`echo ${suffix_pair} | sed -e 's/:.*$//' -e 's/=/$(EQ)/g'` ! if [ "$dir" = "$base_ml_dir" ]; then ! shlib_so_name=libgcc_s ! break ! else ! canon_dir=`echo $dir | sed -n -e "s:$base_ml_dir/::p"` ! if [ -n "$canon_dir" ]; then ! shlib_so_name=libgcc_s_`echo $canon_dir | sed s,/,_,g` ! break ! fi ! fi ! done fi fi echo "" --- 317,334 ---- fi shlib_so_name="$shlib_base_name" shlib_dir= ! if [ -n "$MULTILIB_OSDIRNAMES" ]; then if [ "$dir" != . ]; then + gcc_multilib_dir=`./xgcc -B./ $flags --print-multi-directory` + os_multilib_dir=`./xgcc -B./ $flags --print-multi-os-directory` shlib_dir="$dir"/ ! gcc_multilib_sup=`echo $gcc_multilib_dir | sed 's~^[^/]*/~~'` ! os_multilib_base=`echo $os_multilib_dir | sed -n "s~/${gcc_multilib_sup}\$~~p"` ! if [ -z "$os_multilib_base" ]; then ! shlib_so_name=libgcc_s ! else ! shlib_so_name=libgcc_s_`echo $gcc_multilib_sup | sed s,/,_,g` ! fi fi fi echo "" *************** echo "" *** 438,443 **** --- 434,440 ---- echo "install: $all" for ml in $MULTILIBS; do dir=`echo ${ml} | sed -e 's/;.*$//' -e 's/=/$(EQ)/g'` + flags=`echo ${ml} | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`; if [ $dir != . ]; then ldir='$(libsubdir)'/$dir echo " if [ -d $ldir ]; then true; else mkdir $ldir; chmod a+rx $ldir; fi;" *************** for ml in $MULTILIBS; do *** 460,498 **** shlib_so_name="$shlib_base_name" shlib_dir= shlib_slibdir_qual= ! if [ -n "$SHLIB_SLIBDIR_SUFFIXES" ]; then ! shlib_slibdir_qual=none if [ "$dir" != . ]; then shlib_dir="$dir"/ - for suffix_pair in $SHLIB_SLIBDIR_SUFFIXES ; do - base_ml_dir=`echo ${suffix_pair} | sed -e 's/:.*$//' -e 's/=/$(EQ)/g'` - if [ "$dir" = "$base_ml_dir" ]; then - shlib_so_name=libgcc_s - shlib_slibdir_qual=`echo ${suffix_pair} | sed -e 's/^[^:]*://'` - break - else - canon_dir=`echo $dir | sed -n -e "s:$base_ml_dir/::p"` - if [ -n "$canon_dir" ]; then - shlib_so_name=libgcc_s_`echo $canon_dir | sed s,/,_,g` - shlib_slibdir_qual=`echo ${suffix_pair} | sed -e 's/^[^:]*://'` - break - fi - fi - done fi ! if [ "$shlib_slibdir_qual" = none ]; then ! for suffix_pair in $SHLIB_SLIBDIR_SUFFIXES ; do ! base_ml_dir=`echo ${suffix_pair} | sed -e 's/:.*$//' -e 's/=/$(EQ)/g'` ! shlib_slibdir_qual=`echo ${suffix_pair} | sed -e 's/^[^:]*://'` ! for ml2 in $MULTILIBS; do ! dir2=`echo ${ml2} | sed -e 's/;.*$//' -e 's/=/$(EQ)/g'` ! if [ "$base_ml_dir" = "$dir2" ]; then ! shlib_slibdir_qual= ! break ! fi ! done ! if [ -n "$shlib_slibdir_qual" ]; then break; fi ! done fi fi echo " $SHLIB_INSTALL" \ --- 457,478 ---- shlib_so_name="$shlib_base_name" shlib_dir= shlib_slibdir_qual= ! if [ -n "$MULTILIB_OSDIRNAMES" ]; then ! gcc_multilib_dir=`./xgcc -B./ $flags --print-multi-directory` ! os_multilib_dir=`./xgcc -B./ $flags --print-multi-os-directory` if [ "$dir" != . ]; then shlib_dir="$dir"/ fi ! gcc_multilib_sup=`echo $gcc_multilib_dir | sed 's~^[^/]*/~~'` ! os_multilib_base=`echo $os_multilib_dir | sed -n "s~/${gcc_multilib_sup}\$~~p"` ! if [ -z "$os_multilib_base" ]; then ! shlib_so_name=libgcc_s ! if [ "$os_multilib_dir" != "." ]; then ! shlib_slibdir_qual="/$os_multilib_dir" ! fi ! else ! shlib_so_name=libgcc_s_`echo $gcc_multilib_sup | sed s,/,_,g` ! shlib_slibdir_qual="/$os_multilib_base" fi fi echo " $SHLIB_INSTALL" \ diff -Nrc3pad gcc-3.2/gcc/optabs.c gcc-3.2.1/gcc/optabs.c *** gcc-3.2/gcc/optabs.c Fri Apr 5 19:13:00 2002 --- gcc-3.2.1/gcc/optabs.c Wed Sep 4 22:29:13 2002 *************** expand_binop (mode, binoptab, op0, op1, *** 752,774 **** } /* In case the insn wants input operands in modes different from ! the result, convert the operands. It would seem that we ! don't need to convert CONST_INTs, but we do, so that they're ! a properly sign-extended for their modes; we choose the ! widest mode between mode and mode[01], so that, in a widening ! operation, we call convert_modes with different FROM and TO ! modes, which ensures the value is sign-extended. Shift ! operations are an exception, because the second operand needs ! not be extended to the mode of the result. */ if (GET_MODE (op0) != mode0 && mode0 != VOIDmode) xop0 = convert_modes (mode0, GET_MODE (op0) != VOIDmode ? GET_MODE (op0) ! : GET_MODE_SIZE (mode) > GET_MODE_SIZE (mode0) ! ? mode ! : mode0, xop0, unsignedp); if (GET_MODE (xop1) != mode1 --- 752,769 ---- } /* In case the insn wants input operands in modes different from ! those of the actual operands, convert the operands. It would ! seem that we don't need to convert CONST_INTs, but we do, so ! that they're properly zero-extended or sign-extended for their ! modes; shift operations are an exception, because the second ! operand needs not be extended to the mode of the result. */ if (GET_MODE (op0) != mode0 && mode0 != VOIDmode) xop0 = convert_modes (mode0, GET_MODE (op0) != VOIDmode ? GET_MODE (op0) ! : mode, xop0, unsignedp); if (GET_MODE (xop1) != mode1 *************** expand_binop (mode, binoptab, op0, op1, *** 776,783 **** xop1 = convert_modes (mode1, GET_MODE (op1) != VOIDmode ? GET_MODE (op1) ! : (GET_MODE_SIZE (mode) > GET_MODE_SIZE (mode1) ! && ! shift_op) ? mode : mode1, xop1, unsignedp); --- 771,777 ---- xop1 = convert_modes (mode1, GET_MODE (op1) != VOIDmode ? GET_MODE (op1) ! : ! shift_op ? mode : mode1, xop1, unsignedp); *************** expand_binop (mode, binoptab, op0, op1, *** 1192,1200 **** { int i; optab otheroptab = binoptab == add_optab ? sub_optab : add_optab; ! unsigned int nwords = GET_MODE_BITSIZE (mode) / BITS_PER_WORD; rtx carry_in = NULL_RTX, carry_out = NULL_RTX; ! rtx xop0, xop1; /* We can handle either a 1 or -1 value for the carry. If STORE_FLAG value is one of those, use it. Otherwise, use 1 since it is the --- 1186,1194 ---- { int i; optab otheroptab = binoptab == add_optab ? sub_optab : add_optab; ! int nwords = GET_MODE_BITSIZE (mode) / BITS_PER_WORD; rtx carry_in = NULL_RTX, carry_out = NULL_RTX; ! rtx xop0, xop1, xtarget; /* We can handle either a 1 or -1 value for the carry. If STORE_FLAG value is one of those, use it. Otherwise, use 1 since it is the *************** expand_binop (mode, binoptab, op0, op1, *** 1209,1227 **** xop0 = force_reg (mode, op0); xop1 = force_reg (mode, op1); ! if (target == 0 || GET_CODE (target) != REG ! || target == xop0 || target == xop1) ! target = gen_reg_rtx (mode); /* Indicate for flow that the entire target reg is being set. */ if (GET_CODE (target) == REG) ! emit_insn (gen_rtx_CLOBBER (VOIDmode, target)); /* Do the actual arithmetic. */ for (i = 0; i < nwords; i++) { int index = (WORDS_BIG_ENDIAN ? nwords - i - 1 : i); ! rtx target_piece = operand_subword (target, index, 1, mode); rtx op0_piece = operand_subword_force (xop0, index, mode); rtx op1_piece = operand_subword_force (xop1, index, mode); rtx x; --- 1203,1222 ---- xop0 = force_reg (mode, op0); xop1 = force_reg (mode, op1); ! xtarget = gen_reg_rtx (mode); ! ! if (target == 0 || GET_CODE (target) != REG) ! target = xtarget; /* Indicate for flow that the entire target reg is being set. */ if (GET_CODE (target) == REG) ! emit_insn (gen_rtx_CLOBBER (VOIDmode, xtarget)); /* Do the actual arithmetic. */ for (i = 0; i < nwords; i++) { int index = (WORDS_BIG_ENDIAN ? nwords - i - 1 : i); ! rtx target_piece = operand_subword (xtarget, index, 1, mode); rtx op0_piece = operand_subword_force (xop0, index, mode); rtx op1_piece = operand_subword_force (xop1, index, mode); rtx x; *************** expand_binop (mode, binoptab, op0, op1, *** 1281,1287 **** { if (mov_optab->handlers[(int) mode].insn_code != CODE_FOR_nothing) { ! rtx temp = emit_move_insn (target, target); set_unique_reg_note (temp, REG_EQUAL, --- 1276,1282 ---- { if (mov_optab->handlers[(int) mode].insn_code != CODE_FOR_nothing) { ! rtx temp = emit_move_insn (target, xtarget); set_unique_reg_note (temp, REG_EQUAL, *************** expand_binop (mode, binoptab, op0, op1, *** 1443,1448 **** --- 1438,1446 ---- rtx temp = expand_binop (word_mode, binoptab, op0_low, op1_xhigh, NULL_RTX, 0, OPTAB_DIRECT); + if (!REG_P (product_high)) + product_high = force_reg (word_mode, product_high); + if (temp != 0) temp = expand_binop (word_mode, add_optab, temp, product_high, product_high, 0, next_methods); *************** expand_binop (mode, binoptab, op0, op1, *** 1462,1467 **** --- 1460,1467 ---- if (temp != 0 && temp != product_high) emit_move_insn (product_high, temp); + emit_move_insn (operand_subword (product, high, 1, mode), product_high); + if (temp != 0) { if (mov_optab->handlers[(int) mode].insn_code != CODE_FOR_nothing) diff -Nrc3pad gcc-3.2/gcc/po/ChangeLog gcc-3.2.1/gcc/po/ChangeLog *** gcc-3.2/gcc/po/ChangeLog Wed Aug 14 09:00:29 2002 --- gcc-3.2.1/gcc/po/ChangeLog Tue Nov 19 17:49:16 2002 *************** *** 1,3 **** --- 1,15 ---- + 2002-11-19 Release Manager + + * GCC 3.2.1 Released. + + 2002-11-19 Release Manager + + * GCC 3.2.1 Released. + + 2002-11-18 Release Manager + + * GCC 3.2.1 Released. + 2002-08-14 Release Manager * GCC 3.2 Released. diff -Nrc3pad gcc-3.2/gcc/reload.c gcc-3.2.1/gcc/reload.c *** gcc-3.2/gcc/reload.c Thu Jun 13 16:08:12 2002 --- gcc-3.2.1/gcc/reload.c Thu Oct 24 08:59:49 2002 *************** static int push_secondary_reload PARAMS *** 242,248 **** #endif 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)); static void push_replacement PARAMS ((rtx *, int, enum machine_mode)); static void combine_reloads PARAMS ((void)); static int find_reusable_reload PARAMS ((rtx *, rtx, enum reg_class, --- 242,248 ---- #endif 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 combine_reloads PARAMS ((void)); static int find_reusable_reload PARAMS ((rtx *, rtx, enum reg_class, *************** find_reusable_reload (p_in, out, class, *** 794,802 **** SUBREG_REG expression. */ static int ! reload_inner_reg_of_subreg (x, mode) rtx x; enum machine_mode mode; { rtx inner; --- 794,803 ---- SUBREG_REG expression. */ static int ! reload_inner_reg_of_subreg (x, mode, output) rtx x; enum machine_mode mode; + int output; { rtx inner; *************** reload_inner_reg_of_subreg (x, mode) *** 824,829 **** --- 825,831 ---- word and the number of regs for INNER is not the same as the number of words in INNER, then INNER will need reloading. */ return (GET_MODE_SIZE (mode) <= UNITS_PER_WORD + && output && GET_MODE_SIZE (GET_MODE (inner)) > UNITS_PER_WORD && ((GET_MODE_SIZE (GET_MODE (inner)) / UNITS_PER_WORD) != HARD_REGNO_NREGS (REGNO (inner), GET_MODE (inner)))); *************** push_reload (in, out, inloc, outloc, cla *** 1047,1053 **** /* Similar issue for (SUBREG constant ...) if it was not handled by the code above. This can happen if SUBREG_BYTE != 0. */ ! if (in != 0 && reload_inner_reg_of_subreg (in, inmode)) { enum reg_class in_class = class; --- 1049,1055 ---- /* Similar issue for (SUBREG constant ...) if it was not handled by the code above. This can happen if SUBREG_BYTE != 0. */ ! if (in != 0 && reload_inner_reg_of_subreg (in, inmode, 0)) { enum reg_class in_class = class; *************** push_reload (in, out, inloc, outloc, cla *** 1144,1150 **** However, we must reload the inner reg *as well as* the subreg in that case. In this case, the inner reg is an in-out reload. */ ! if (out != 0 && reload_inner_reg_of_subreg (out, outmode)) { /* This relies on the fact that emit_reload_insns outputs the instructions for output reloads of type RELOAD_OTHER in reverse --- 1146,1152 ---- However, we must reload the inner reg *as well as* the subreg in that case. In this case, the inner reg is an in-out reload. */ ! if (out != 0 && reload_inner_reg_of_subreg (out, outmode, 1)) { /* This relies on the fact that emit_reload_insns outputs the instructions for output reloads of type RELOAD_OTHER in reverse *************** push_reload (in, out, inloc, outloc, cla *** 1283,1294 **** 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 ! && REGNO (in) < FIRST_PSEUDO_REGISTER ! && SECONDARY_MEMORY_NEEDED (REGNO_REG_CLASS (REGNO (in)), ! class, inmode)) ! get_secondary_mem (in, inmode, opnum, type); #endif i = n_reloads; --- 1285,1301 ---- So add an additional reload. */ #ifdef SECONDARY_MEMORY_NEEDED ! { ! 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; *************** push_reload (in, out, inloc, outloc, cla *** 1314,1324 **** n_reloads++; #ifdef SECONDARY_MEMORY_NEEDED ! if (out != 0 && GET_CODE (out) == REG ! && REGNO (out) < FIRST_PSEUDO_REGISTER ! && SECONDARY_MEMORY_NEEDED (class, REGNO_REG_CLASS (REGNO (out)), ! outmode)) ! get_secondary_mem (out, outmode, opnum, type); #endif } else --- 1321,1336 ---- n_reloads++; #ifdef SECONDARY_MEMORY_NEEDED ! { ! 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 *************** combine_reloads () *** 1712,1718 **** && ! (GET_CODE (rld[i].in) == REG && reg_overlap_mentioned_for_reload_p (rld[i].in, rld[output_reload].out)))) ! && ! reload_inner_reg_of_subreg (rld[i].in, rld[i].inmode) && (reg_class_size[(int) rld[i].class] || SMALL_REGISTER_CLASSES) /* We will allow making things slightly worse by combining an --- 1724,1731 ---- && ! (GET_CODE (rld[i].in) == REG && reg_overlap_mentioned_for_reload_p (rld[i].in, rld[output_reload].out)))) ! && ! reload_inner_reg_of_subreg (rld[i].in, rld[i].inmode, ! rld[i].when_needed != RELOAD_FOR_INPUT) && (reg_class_size[(int) rld[i].class] || SMALL_REGISTER_CLASSES) /* We will allow making things slightly worse by combining an *************** find_reloads (insn, replace, ind_levels, *** 2643,2649 **** ; else if (constraints[i][0] == 'p') { ! find_reloads_address (VOIDmode, (rtx*) 0, recog_data.operand[i], recog_data.operand_loc[i], i, operand_type[i], ind_levels, insn); --- 2656,2662 ---- ; else if (constraints[i][0] == 'p') { ! 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_toplev (x, opnum, type, ind *** 4414,4433 **** reg_equiv_constant[regno])) != 0) return tem; ! if (GET_MODE_BITSIZE (GET_MODE (x)) == BITS_PER_WORD ! && regno >= FIRST_PSEUDO_REGISTER && reg_renumber[regno] < 0 ! && reg_equiv_constant[regno] != 0 ! && (tem = operand_subword (reg_equiv_constant[regno], ! SUBREG_BYTE (x) / UNITS_PER_WORD, 0, ! GET_MODE (SUBREG_REG (x)))) != 0) { ! /* TEM is now a word sized constant for the bits from X that ! we wanted. However, TEM may be the wrong representation. ! ! Use gen_lowpart_common to convert a CONST_INT into a ! CONST_DOUBLE and vice versa as needed according to by the mode ! of the SUBREG. */ ! tem = gen_lowpart_common (GET_MODE (x), tem); if (!tem) abort (); return tem; --- 4427,4438 ---- reg_equiv_constant[regno])) != 0) return tem; ! if (regno >= FIRST_PSEUDO_REGISTER && reg_renumber[regno] < 0 ! && reg_equiv_constant[regno] != 0) { ! tem = ! simplify_gen_subreg (GET_MODE (x), reg_equiv_constant[regno], ! GET_MODE (SUBREG_REG (x)), SUBREG_BYTE (x)); if (!tem) abort (); return tem; diff -Nrc3pad gcc-3.2/gcc/reload1.c gcc-3.2.1/gcc/reload1.c *** gcc-3.2/gcc/reload1.c Tue May 21 23:42:54 2002 --- gcc-3.2.1/gcc/reload1.c Thu Oct 10 15:40:20 2002 *************** static void delete_output_reload PARAMS *** 440,446 **** static void delete_address_reloads PARAMS ((rtx, rtx)); static void delete_address_reloads_1 PARAMS ((rtx, rtx, rtx)); static rtx inc_for_reload PARAMS ((rtx, rtx, rtx, int)); - static int constraint_accepts_reg_p PARAMS ((const char *, rtx)); static void reload_cse_regs_1 PARAMS ((rtx)); static int reload_cse_noop_set_p PARAMS ((rtx)); static int reload_cse_simplify_set PARAMS ((rtx, rtx)); --- 440,445 ---- *************** emit_input_reload_insns (chain, rl, old, *** 6384,6421 **** && SET_DEST (PATTERN (temp)) == old /* Make sure we can access insn_operand_constraint. */ && asm_noperands (PATTERN (temp)) < 0 - /* This is unsafe if prev insn rejects our reload reg. */ - && constraint_accepts_reg_p (insn_data[recog_memoized (temp)].operand[0].constraint, - reloadreg) /* This is unsafe if operand occurs more than once in current insn. Perhaps some occurrences aren't reloaded. */ ! && count_occurrences (PATTERN (insn), old, 0) == 1 ! /* Don't risk splitting a matching pair of operands. */ ! && ! reg_mentioned_p (old, SET_SRC (PATTERN (temp)))) { /* Store into the reload register instead of the pseudo. */ SET_DEST (PATTERN (temp)) = reloadreg; ! /* If the previous insn is an output reload, the source is ! a reload register, and its spill_reg_store entry will ! contain the previous destination. This is now ! invalid. */ ! if (GET_CODE (SET_SRC (PATTERN (temp))) == REG ! && REGNO (SET_SRC (PATTERN (temp))) < FIRST_PSEUDO_REGISTER) { ! spill_reg_store[REGNO (SET_SRC (PATTERN (temp)))] = 0; ! spill_reg_stored_to[REGNO (SET_SRC (PATTERN (temp)))] = 0; ! } ! /* If these are the only uses of the pseudo reg, ! pretend for GDB it lives in the reload reg we used. */ ! if (REG_N_DEATHS (REGNO (old)) == 1 ! && REG_N_SETS (REGNO (old)) == 1) { ! reg_renumber[REGNO (old)] = REGNO (rl->reg_rtx); ! alter_reg (REGNO (old), -1); } - special = 1; } } --- 6383,6425 ---- && SET_DEST (PATTERN (temp)) == old /* Make sure we can access insn_operand_constraint. */ && asm_noperands (PATTERN (temp)) < 0 /* This is unsafe if operand occurs more than once in current insn. Perhaps some occurrences aren't reloaded. */ ! && count_occurrences (PATTERN (insn), old, 0) == 1) { + rtx old = SET_DEST (PATTERN (temp)); /* Store into the reload register instead of the pseudo. */ SET_DEST (PATTERN (temp)) = reloadreg; ! /* Verify that resulting insn is valid. */ ! extract_insn (temp); ! if (constrain_operands (1)) { ! /* If the previous insn is an output reload, the source is ! a reload register, and its spill_reg_store entry will ! contain the previous destination. This is now ! invalid. */ ! if (GET_CODE (SET_SRC (PATTERN (temp))) == REG ! && REGNO (SET_SRC (PATTERN (temp))) < FIRST_PSEUDO_REGISTER) ! { ! spill_reg_store[REGNO (SET_SRC (PATTERN (temp)))] = 0; ! spill_reg_stored_to[REGNO (SET_SRC (PATTERN (temp)))] = 0; ! } ! /* If these are the only uses of the pseudo reg, ! pretend for GDB it lives in the reload reg we used. */ ! if (REG_N_DEATHS (REGNO (old)) == 1 ! && REG_N_SETS (REGNO (old)) == 1) ! { ! reg_renumber[REGNO (old)] = REGNO (rl->reg_rtx); ! alter_reg (REGNO (old), -1); ! } ! special = 1; ! } ! else { ! SET_DEST (PATTERN (temp)) = old; } } } *************** gen_reload (out, in, opnum, type) *** 7354,7359 **** --- 7358,7366 ---- { rtx last = get_last_insn (); rtx tem; + #ifdef SECONDARY_MEMORY_NEEDED + int in_regnum, out_regnum; + #endif /* If IN is a paradoxical SUBREG, remove it and try to put the opposite SUBREG on OUT. Likewise for a paradoxical SUBREG on OUT. */ *************** gen_reload (out, in, opnum, type) *** 7516,7535 **** #ifdef SECONDARY_MEMORY_NEEDED /* If we need a memory location to do the move, do it that way. */ ! else if (GET_CODE (in) == REG && REGNO (in) < FIRST_PSEUDO_REGISTER ! && GET_CODE (out) == REG && REGNO (out) < FIRST_PSEUDO_REGISTER ! && SECONDARY_MEMORY_NEEDED (REGNO_REG_CLASS (REGNO (in)), ! REGNO_REG_CLASS (REGNO (out)), GET_MODE (out))) { /* Get the memory to use and rewrite both registers to its mode. */ rtx loc = get_secondary_mem (in, GET_MODE (out), opnum, type); if (GET_MODE (loc) != GET_MODE (out)) ! out = gen_rtx_REG (GET_MODE (loc), REGNO (out)); if (GET_MODE (loc) != GET_MODE (in)) ! in = gen_rtx_REG (GET_MODE (loc), REGNO (in)); gen_reload (loc, in, opnum, type); gen_reload (out, loc, opnum, type); --- 7523,7544 ---- #ifdef SECONDARY_MEMORY_NEEDED /* If we need a memory location to do the move, do it that way. */ ! else if ((in_regnum = true_regnum (in)) >= 0 ! && in_regnum < FIRST_PSEUDO_REGISTER ! && (out_regnum = true_regnum (out)) >= 0 ! && out_regnum < FIRST_PSEUDO_REGISTER ! && SECONDARY_MEMORY_NEEDED (REGNO_REG_CLASS (in_regnum), ! REGNO_REG_CLASS (out_regnum), GET_MODE (out))) { /* Get the memory to use and rewrite both registers to its mode. */ rtx loc = get_secondary_mem (in, GET_MODE (out), opnum, type); if (GET_MODE (loc) != GET_MODE (out)) ! out = gen_rtx_REG (GET_MODE (loc), out_regnum); if (GET_MODE (loc) != GET_MODE (in)) ! in = gen_rtx_REG (GET_MODE (loc), in_regnum); gen_reload (loc, in, opnum, type); gen_reload (out, loc, opnum, type); *************** delete_output_reload (insn, j, last_relo *** 7581,7586 **** --- 7590,7600 ---- rtx i1; rtx substed; + /* It is possible that this reload has been only used to set another reload + we eliminated earlier and thus deleted this instruction too. */ + if (INSN_DELETED_P (output_reload_insn)) + return; + /* Get the raw pseudo-register referred to. */ while (GET_CODE (reg) == SUBREG) *************** inc_for_reload (reloadreg, in, value, in *** 7981,8031 **** return store; } - /* Return 1 if we are certain that the constraint-string STRING allows - the hard register REG. Return 0 if we can't be sure of this. */ - - static int - constraint_accepts_reg_p (string, reg) - const char *string; - rtx reg; - { - int value = 0; - int regno = true_regnum (reg); - int c; - - /* Initialize for first alternative. */ - value = 0; - /* Check that each alternative contains `g' or `r'. */ - while (1) - switch (c = *string++) - { - case 0: - /* If an alternative lacks `g' or `r', we lose. */ - return value; - case ',': - /* If an alternative lacks `g' or `r', we lose. */ - if (value == 0) - return 0; - /* Initialize for next alternative. */ - value = 0; - break; - case 'g': - case 'r': - /* Any general reg wins for this alternative. */ - if (TEST_HARD_REG_BIT (reg_class_contents[(int) GENERAL_REGS], regno)) - value = 1; - break; - default: - /* Any reg in specified class wins for this alternative. */ - { - enum reg_class class = REG_CLASS_FROM_LETTER (c); - - if (TEST_HARD_REG_BIT (reg_class_contents[(int) class], regno)) - value = 1; - } - } - } - /* INSN is a no-op; delete it. If this sets the return value of the function, we must keep a USE around, in case this is in a different basic block than the final USE. Otherwise, --- 7995,8000 ---- diff -Nrc3pad gcc-3.2/gcc/rtl.h gcc-3.2.1/gcc/rtl.h *** gcc-3.2/gcc/rtl.h Sun May 19 09:05:27 2002 --- gcc-3.2.1/gcc/rtl.h Sat Nov 16 01:55:47 2002 *************** extern rtx pc_set PARAMS ((rtx)); *** 1804,1809 **** --- 1804,1810 ---- extern rtx condjump_label PARAMS ((rtx)); extern int simplejump_p PARAMS ((rtx)); extern int returnjump_p PARAMS ((rtx)); + extern int tablejump_p PARAMS ((rtx)); extern int onlyjump_p PARAMS ((rtx)); extern int only_sets_cc0_p PARAMS ((rtx)); extern int sets_cc0_p PARAMS ((rtx)); *************** extern int invert_jump_1 PARAMS ((rtx, *** 1811,1816 **** --- 1812,1818 ---- extern int invert_jump PARAMS ((rtx, rtx, int)); extern int rtx_renumbered_equal_p PARAMS ((rtx, rtx)); extern int true_regnum PARAMS ((rtx)); + extern unsigned int reg_or_subregno PARAMS ((rtx)); extern int redirect_jump_1 PARAMS ((rtx, rtx)); extern int redirect_jump PARAMS ((rtx, rtx, int)); extern void rebuild_jump_labels PARAMS ((rtx)); diff -Nrc3pad gcc-3.2/gcc/sched-deps.c gcc-3.2.1/gcc/sched-deps.c *** gcc-3.2/gcc/sched-deps.c Tue Feb 19 02:53:10 2002 --- gcc-3.2.1/gcc/sched-deps.c Fri Sep 27 01:13:27 2002 *************** sched_analyze_insn (deps, x, insn, loop_ *** 923,929 **** code = GET_CODE (x); } if (code == SET || code == CLOBBER) ! sched_analyze_1 (deps, x, insn); else if (code == PARALLEL) { int i; --- 923,937 ---- code = GET_CODE (x); } if (code == SET || code == CLOBBER) ! { ! sched_analyze_1 (deps, x, insn); ! ! /* Bare clobber insns are used for letting life analysis, reg-stack ! and others know that a value is dead. Depend on the last call ! instruction so that reg-stack won't get confused. */ ! if (code == CLOBBER) ! add_dependence_list (insn, deps->last_function_call, REG_DEP_OUTPUT); ! } else if (code == PARALLEL) { int i; *************** sched_analyze_insn (deps, x, insn, loop_ *** 1118,1125 **** EXECUTE_IF_SET_IN_REG_SET (reg_pending_clobbers, 0, i, { struct deps_reg *reg_last = &deps->reg_last[i]; - add_dependence_list (insn, reg_last->sets, REG_DEP_OUTPUT); - add_dependence_list (insn, reg_last->uses, REG_DEP_ANTI); if (reg_last->uses_length > MAX_PENDING_LIST_LENGTH || reg_last->clobbers_length > MAX_PENDING_LIST_LENGTH) { --- 1126,1131 ---- *************** sched_analyze_insn (deps, x, insn, loop_ *** 1129,1134 **** --- 1135,1141 ---- REG_DEP_ANTI); add_dependence_list_and_free (insn, ®_last->clobbers, REG_DEP_OUTPUT); + reg_last->sets = alloc_INSN_LIST (insn, reg_last->sets); reg_last->clobbers_length = 0; reg_last->uses_length = 0; } *************** sched_analyze_insn (deps, x, insn, loop_ *** 1163,1168 **** --- 1170,1185 ---- CLEAR_REG_SET (reg_pending_clobbers); CLEAR_REG_SET (reg_pending_sets); + /* If we are currently in a libcall scheduling group, then mark the + current insn as being in a scheduling group and that it can not + be moved into a different basic block. */ + + if (deps->libcall_block_tail_insn) + { + set_sched_group_p (insn); + CANT_MOVE (insn) = 1; + } + /* If a post-call group is still open, see if it should remain so. This insn must be a simple move of a hard reg to a pseudo or vice-versa. *************** sched_analyze (deps, head, tail) *** 1226,1231 **** --- 1243,1250 ---- for (insn = head;; insn = NEXT_INSN (insn)) { + rtx link, end_seq, r0, set, note; + if (GET_CODE (insn) == INSN || GET_CODE (insn) == JUMP_INSN) { /* Clear out the stale LOG_LINKS from flow. */ *************** sched_analyze (deps, head, tail) *** 1252,1260 **** { int i; - /* Clear out stale SCHED_GROUP_P. */ - SCHED_GROUP_P (insn) = 0; - CANT_MOVE (insn) = 1; /* Clear out the stale LOG_LINKS from flow. */ --- 1271,1276 ---- *************** sched_analyze (deps, head, tail) *** 1356,1361 **** --- 1372,1417 ---- if (current_sched_info->use_cselib) cselib_process_insn (insn); + + /* Now that we have completed handling INSN, check and see if it is + a CLOBBER beginning a libcall block. If it is, record the + end of the libcall sequence. + + We want to schedule libcall blocks as a unit before reload. While + this restricts scheduling, it preserves the meaning of a libcall + block. + + As a side effect, we may get better code due to decreased register + pressure as well as less chance of a foreign insn appearing in + a libcall block. */ + if (!reload_completed + /* Note we may have nested libcall sequences. We only care about + the outermost libcall sequence. */ + && deps->libcall_block_tail_insn == 0 + /* The sequence must start with a clobber of a register. */ + && GET_CODE (insn) == INSN + && GET_CODE (PATTERN (insn)) == CLOBBER + && (r0 = XEXP (PATTERN (insn), 0), GET_CODE (r0) == REG) + && GET_CODE (XEXP (PATTERN (insn), 0)) == REG + /* The CLOBBER must also have a REG_LIBCALL note attached. */ + && (link = find_reg_note (insn, REG_LIBCALL, NULL_RTX)) != 0 + && (end_seq = XEXP (link, 0)) != 0 + /* The insn referenced by the REG_LIBCALL note must be a + simple nop copy with the same destination as the register + mentioned in the clobber. */ + && (set = single_set (end_seq)) != 0 + && SET_DEST (set) == r0 && SET_SRC (set) == r0 + /* And finally the insn referenced by the REG_LIBCALL must + also contain a REG_EQUAL note and a REG_RETVAL note. */ + && find_reg_note (end_seq, REG_EQUAL, NULL_RTX) != 0 + && find_reg_note (end_seq, REG_RETVAL, NULL_RTX) != 0) + deps->libcall_block_tail_insn = XEXP (link, 0); + + /* If we have reached the end of a libcall block, then close the + block. */ + if (deps->libcall_block_tail_insn == insn) + deps->libcall_block_tail_insn = 0; + if (insn == tail) { if (current_sched_info->use_cselib) *************** init_deps (deps) *** 1449,1454 **** --- 1505,1511 ---- deps->last_function_call = 0; deps->sched_before_next_call = 0; deps->in_post_call_group_p = false; + deps->libcall_block_tail_insn = 0; } /* Free insn lists found in DEPS. */ diff -Nrc3pad gcc-3.2/gcc/sched-int.h gcc-3.2.1/gcc/sched-int.h *** gcc-3.2/gcc/sched-int.h Thu Feb 28 18:29:07 2002 --- gcc-3.2.1/gcc/sched-int.h Mon Aug 19 18:59:31 2002 *************** struct deps *** 83,88 **** --- 83,94 ---- the call. */ bool in_post_call_group_p; + /* Set to the tail insn of the outermost libcall block. + + When nonzero, we will mark each insn processed by sched_analyze_insn + with SCHED_GROUP_P to ensure libcalls are scheduled as a unit. */ + rtx libcall_block_tail_insn; + /* The maximum register number for the following arrays. Before reload this is max_reg_num; after reload it is FIRST_PSEUDO_REGISTER. */ int max_reg; diff -Nrc3pad gcc-3.2/gcc/sibcall.c gcc-3.2.1/gcc/sibcall.c *** gcc-3.2/gcc/sibcall.c Sat Apr 6 19:37:38 2002 --- gcc-3.2.1/gcc/sibcall.c Tue Sep 17 21:20:26 2002 *************** optimize_sibling_and_tail_recursive_call *** 574,581 **** rtx insn, insns; basic_block alternate_exit = EXIT_BLOCK_PTR; bool no_sibcalls_this_function = false; ! int successful_sibling_call = 0; ! int replaced_call_placeholder = 0; edge e; insns = get_insns (); --- 574,581 ---- rtx insn, insns; basic_block alternate_exit = EXIT_BLOCK_PTR; bool no_sibcalls_this_function = false; ! bool successful_replacement = false; ! bool replaced_call_placeholder = false; edge e; insns = get_insns (); *************** optimize_sibling_and_tail_recursive_call *** 715,724 **** /* Select a set of insns to implement the call and emit them. Tail recursion is the most efficient, so select it over a tail/sibling call. */ - if (sibcall) - successful_sibling_call = 1; ! replaced_call_placeholder = 1; replace_call_placeholder (insn, tailrecursion != 0 ? sibcall_use_tail_recursion --- 715,725 ---- /* Select a set of insns to implement the call and emit them. Tail recursion is the most efficient, so select it over a tail/sibling call. */ ! if (sibcall || tailrecursion) ! successful_replacement = true; ! replaced_call_placeholder = true; ! replace_call_placeholder (insn, tailrecursion != 0 ? sibcall_use_tail_recursion *************** optimize_sibling_and_tail_recursive_call *** 728,734 **** } } ! if (successful_sibling_call) { rtx insn; tree arg; --- 729,735 ---- } } ! if (successful_replacement) { rtx insn; tree arg; diff -Nrc3pad gcc-3.2/gcc/stmt.c gcc-3.2.1/gcc/stmt.c *** gcc-3.2/gcc/stmt.c Wed Apr 17 01:43:57 2002 --- gcc-3.2.1/gcc/stmt.c Mon Nov 11 20:52:29 2002 *************** tail_recursion_args (actuals, formals) *** 3351,3358 **** if (GET_MODE (DECL_RTL (f)) == GET_MODE (argvec[i])) emit_move_insn (DECL_RTL (f), argvec[i]); else ! convert_move (DECL_RTL (f), argvec[i], ! TREE_UNSIGNED (TREE_TYPE (TREE_VALUE (a)))); } free_temp_slots (); --- 3351,3368 ---- if (GET_MODE (DECL_RTL (f)) == GET_MODE (argvec[i])) emit_move_insn (DECL_RTL (f), argvec[i]); else ! { ! rtx tmp = argvec[i]; ! ! if (DECL_MODE (f) != GET_MODE (DECL_RTL (f))) ! { ! tmp = gen_reg_rtx (DECL_MODE (f)); ! convert_move (tmp, argvec[i], ! TREE_UNSIGNED (TREE_TYPE (TREE_VALUE (a)))); ! } ! convert_move (DECL_RTL (f), tmp, ! TREE_UNSIGNED (TREE_TYPE (TREE_VALUE (a)))); ! } } free_temp_slots (); diff -Nrc3pad gcc-3.2/gcc/toplev.c gcc-3.2.1/gcc/toplev.c *** gcc-3.2/gcc/toplev.c Mon May 27 05:48:15 2002 --- gcc-3.2.1/gcc/toplev.c Sat Nov 2 00:57:23 2002 *************** int align_labels_max_skip; *** 879,884 **** --- 879,888 ---- int align_functions; int align_functions_log; + /* Like align_functions_log above, but used by front-ends to force the + minimum function alignment. Zero means no alignment is forced. */ + int force_align_functions_log; + /* Table of supported debugging formats. */ static const struct { *************** rest_of_compilation (decl) *** 2407,2412 **** --- 2411,2419 ---- DECL_INITIAL (decl) = 0; goto exit_rest_of_compilation; } + else if (TYPE_P (parent)) + /* A function in a local class should be treated normally. */ + break; /* If requested, consider whether to make this function inline. */ if ((DECL_INLINE (decl) && !flag_no_inline) *************** rest_of_compilation (decl) *** 3016,3028 **** block. The loop infrastructure does the real job for us. */ flow_loops_find (&loops, LOOP_TREE); /* Estimate using heuristics if no profiling info is available. */ if (flag_guess_branch_prob) estimate_probability (&loops); - if (rtl_dump_file) - flow_loops_dump (&loops, rtl_dump_file, NULL, 0); - flow_loops_free (&loops); } life_analysis (insns, rtl_dump_file, PROP_FINAL); --- 3023,3035 ---- block. The loop infrastructure does the real job for us. */ flow_loops_find (&loops, LOOP_TREE); + if (rtl_dump_file) + flow_loops_dump (&loops, rtl_dump_file, NULL, 0); + /* Estimate using heuristics if no profiling info is available. */ if (flag_guess_branch_prob) estimate_probability (&loops); flow_loops_free (&loops); } life_analysis (insns, rtl_dump_file, PROP_FINAL); diff -Nrc3pad gcc-3.2/gcc/tradcpp.c gcc-3.2.1/gcc/tradcpp.c *** gcc-3.2/gcc/tradcpp.c Wed May 22 05:58:48 2002 --- gcc-3.2.1/gcc/tradcpp.c Mon Nov 11 06:38:47 2002 *************** output_line_command (ip, op, conditional *** 4104,4110 **** sprintf (line_cmd_buf, "# %d \"%s\"", ip->lineno, ip->fname); if (file_change != same_file) strcat (line_cmd_buf, file_change == enter_file ? " 1" : " 2"); ! if (system_include_depth > 0) strcat (line_cmd_buf, " 3"); len = strlen (line_cmd_buf); line_cmd_buf[len++] = '\n'; --- 4104,4110 ---- sprintf (line_cmd_buf, "# %d \"%s\"", ip->lineno, ip->fname); if (file_change != same_file) strcat (line_cmd_buf, file_change == enter_file ? " 1" : " 2"); ! if (system_include_depth > (file_change == leave_file)) strcat (line_cmd_buf, " 3"); len = strlen (line_cmd_buf); line_cmd_buf[len++] = '\n'; diff -Nrc3pad gcc-3.2/gcc/tree-inline.c gcc-3.2.1/gcc/tree-inline.c *** gcc-3.2/gcc/tree-inline.c Wed Apr 17 01:43:57 2002 --- gcc-3.2.1/gcc/tree-inline.c Fri Oct 25 22:11:09 2002 *************** expand_call_inline (tp, walk_subtrees, d *** 762,767 **** --- 762,768 ---- inline_data *id; tree t; tree expr; + tree stmt; tree chain; tree fn; tree scope_stmt; *************** expand_call_inline (tp, walk_subtrees, d *** 853,862 **** for the return statements within the function to jump to. The type of the statement expression is the return type of the function call. */ ! expr = build1 (STMT_EXPR, TREE_TYPE (TREE_TYPE (fn)), NULL_TREE); /* There is no scope associated with the statement-expression. */ STMT_EXPR_NO_SCOPE (expr) = 1; ! /* Local declarations will be replaced by their equivalents in this map. */ st = id->decl_map; --- 854,863 ---- for the return statements within the function to jump to. The type of the statement expression is the return type of the function call. */ ! expr = build1 (STMT_EXPR, TREE_TYPE (TREE_TYPE (fn)), make_node (COMPOUND_STMT)); /* There is no scope associated with the statement-expression. */ STMT_EXPR_NO_SCOPE (expr) = 1; ! stmt = STMT_EXPR_STMT (expr); /* Local declarations will be replaced by their equivalents in this map. */ st = id->decl_map; *************** expand_call_inline (tp, walk_subtrees, d *** 871,877 **** parameters. */ expand_calls_inline (&arg_inits, id); /* And add them to the tree. */ ! STMT_EXPR_STMT (expr) = chainon (STMT_EXPR_STMT (expr), arg_inits); /* Record the function we are about to inline so that we can avoid recursing into it. */ --- 872,878 ---- parameters. */ expand_calls_inline (&arg_inits, id); /* And add them to the tree. */ ! COMPOUND_BODY (stmt) = chainon (COMPOUND_BODY (stmt), arg_inits); /* Record the function we are about to inline so that we can avoid recursing into it. */ *************** expand_call_inline (tp, walk_subtrees, d *** 906,913 **** SCOPE_BEGIN_P (scope_stmt) = 1; SCOPE_NO_CLEANUPS_P (scope_stmt) = 1; remap_block (scope_stmt, DECL_ARGUMENTS (fn), id); ! TREE_CHAIN (scope_stmt) = STMT_EXPR_STMT (expr); ! STMT_EXPR_STMT (expr) = scope_stmt; /* Tell the debugging backends that this block represents the outermost scope of the inlined function. */ --- 907,914 ---- SCOPE_BEGIN_P (scope_stmt) = 1; SCOPE_NO_CLEANUPS_P (scope_stmt) = 1; remap_block (scope_stmt, DECL_ARGUMENTS (fn), id); ! TREE_CHAIN (scope_stmt) = COMPOUND_BODY (stmt); ! COMPOUND_BODY (stmt) = scope_stmt; /* Tell the debugging backends that this block represents the outermost scope of the inlined function. */ *************** expand_call_inline (tp, walk_subtrees, d *** 915,948 **** BLOCK_ABSTRACT_ORIGIN (SCOPE_STMT_BLOCK (scope_stmt)) = DECL_ORIGIN (fn); /* Declare the return variable for the function. */ ! STMT_EXPR_STMT (expr) ! = chainon (STMT_EXPR_STMT (expr), declare_return_variable (id, &use_stmt)); /* After we've initialized the parameters, we insert the body of the function itself. */ ! inlined_body = &STMT_EXPR_STMT (expr); while (*inlined_body) inlined_body = &TREE_CHAIN (*inlined_body); *inlined_body = copy_body (id); - /* Close the block for the parameters. */ - scope_stmt = build_stmt (SCOPE_STMT, DECL_INITIAL (fn)); - SCOPE_NO_CLEANUPS_P (scope_stmt) = 1; - remap_block (scope_stmt, NULL_TREE, id); - STMT_EXPR_STMT (expr) - = chainon (STMT_EXPR_STMT (expr), scope_stmt); - /* After the body of the function comes the RET_LABEL. This must come before we evaluate the returned value below, because that evalulation may cause RTL to be generated. */ ! STMT_EXPR_STMT (expr) ! = chainon (STMT_EXPR_STMT (expr), build_stmt (LABEL_STMT, id->ret_label)); /* Finally, mention the returned value so that the value of the statement-expression is the returned value of the function. */ ! STMT_EXPR_STMT (expr) = chainon (STMT_EXPR_STMT (expr), use_stmt); /* Clean up. */ splay_tree_delete (id->decl_map); --- 916,949 ---- BLOCK_ABSTRACT_ORIGIN (SCOPE_STMT_BLOCK (scope_stmt)) = DECL_ORIGIN (fn); /* Declare the return variable for the function. */ ! COMPOUND_BODY (stmt) ! = chainon (COMPOUND_BODY (stmt), declare_return_variable (id, &use_stmt)); /* After we've initialized the parameters, we insert the body of the function itself. */ ! inlined_body = &COMPOUND_BODY (stmt); while (*inlined_body) inlined_body = &TREE_CHAIN (*inlined_body); *inlined_body = copy_body (id); /* After the body of the function comes the RET_LABEL. This must come before we evaluate the returned value below, because that evalulation may cause RTL to be generated. */ ! COMPOUND_BODY (stmt) ! = chainon (COMPOUND_BODY (stmt), build_stmt (LABEL_STMT, id->ret_label)); /* Finally, mention the returned value so that the value of the statement-expression is the returned value of the function. */ ! COMPOUND_BODY (stmt) = chainon (COMPOUND_BODY (stmt), use_stmt); ! ! /* Close the block for the parameters. */ ! scope_stmt = build_stmt (SCOPE_STMT, DECL_INITIAL (fn)); ! SCOPE_NO_CLEANUPS_P (scope_stmt) = 1; ! remap_block (scope_stmt, NULL_TREE, id); ! COMPOUND_BODY (stmt) ! = chainon (COMPOUND_BODY (stmt), scope_stmt); /* Clean up. */ splay_tree_delete (id->decl_map); *************** walk_tree (tp, func, data, htab_) *** 1223,1228 **** --- 1224,1235 ---- { WALK_SUBTREE_TAIL (TREE_TYPE (*tp)); } + else if (TREE_CODE_CLASS (code) == 't') + { + WALK_SUBTREE (TYPE_SIZE (*tp)); + WALK_SUBTREE (TYPE_SIZE_UNIT (*tp)); + /* Also examine various special fields, below. */ + } result = (*lang_hooks.tree_inlining.walk_subtrees) (tp, &walk_subtrees, func, data, htab); *************** walk_tree (tp, func, data, htab_) *** 1319,1324 **** --- 1326,1332 ---- return NULL_TREE; #undef WALK_SUBTREE + #undef WALK_SUBTREE_TAIL } /* Like walk_tree, but does not walk duplicate nodes more than *************** copy_tree_r (tp, walk_subtrees, data) *** 1377,1384 **** if (TREE_CODE (*tp) == SCOPE_STMT) SCOPE_STMT_BLOCK (*tp) = NULL_TREE; } ! else if (TREE_CODE_CLASS (code) == 't') ! /* There's no need to copy types, or anything beneath them. */ *walk_subtrees = 0; return NULL_TREE; --- 1385,1392 ---- if (TREE_CODE (*tp) == SCOPE_STMT) SCOPE_STMT_BLOCK (*tp) = NULL_TREE; } ! else if (TREE_CODE_CLASS (code) == 't' && !variably_modified_type_p (*tp)) ! /* Types only need to be copied if they are variably modified. */ *walk_subtrees = 0; return NULL_TREE; diff -Nrc3pad gcc-3.2/gcc/tree.c gcc-3.2.1/gcc/tree.c *** gcc-3.2/gcc/tree.c Fri Apr 26 23:46:01 2002 --- gcc-3.2.1/gcc/tree.c Fri Oct 25 22:11:09 2002 *************** tree_size (node) *** 286,292 **** case '1': /* a unary arithmetic expression */ case '2': /* a binary arithmetic expression */ return (sizeof (struct tree_exp) ! + (TREE_CODE_LENGTH (code) - 1) * sizeof (char *)); case 'c': /* a constant */ /* We can't use TREE_CODE_LENGTH for INTEGER_CST, since the number of --- 286,292 ---- case '1': /* a unary arithmetic expression */ case '2': /* a binary arithmetic expression */ return (sizeof (struct tree_exp) ! + TREE_CODE_LENGTH (code) * sizeof (char *) - sizeof (char *)); case 'c': /* a constant */ /* We can't use TREE_CODE_LENGTH for INTEGER_CST, since the number of *************** tree_size (node) *** 304,315 **** case 'x': /* something random, like an identifier. */ { ! size_t length; ! length = (sizeof (struct tree_common) ! + TREE_CODE_LENGTH (code) * sizeof (char *)); ! if (code == TREE_VEC) ! length += (TREE_VEC_LENGTH (node) - 1) * sizeof (char *); ! return length; } default: --- 304,315 ---- case 'x': /* something random, like an identifier. */ { ! size_t length; ! length = (sizeof (struct tree_common) ! + TREE_CODE_LENGTH (code) * sizeof (char *)); ! if (code == TREE_VEC) ! length += TREE_VEC_LENGTH (node) * sizeof (char *) - sizeof (char *); ! return length; } default: *************** int_fits_type_p (c, type) *** 4335,4340 **** --- 4335,4399 ---- } } + /* Returns true if T is, contains, or refers to a type with variable + size. This concept is more general than that of C99 'variably + modified types': in C99, a struct type is never variably modified + because a VLA may not appear as a structure member. However, in + GNU C code like: + + struct S { int i[f()]; }; + + is valid, and other languages may define similar constructs. */ + + bool + variably_modified_type_p (type) + tree type; + { + /* If TYPE itself has variable size, it is variably modified. + + We do not yet have a representation of the C99 '[*]' syntax. + When a representation is chosen, this function should be modified + to test for that case as well. */ + if (TYPE_SIZE (type) + && TYPE_SIZE (type) != error_mark_node + && TREE_CODE (TYPE_SIZE (type)) != INTEGER_CST) + return true; + + /* If TYPE is a pointer or reference, it is variably modified if + the type pointed to is variably modified. */ + if ((TREE_CODE (type) == POINTER_TYPE + || TREE_CODE (type) == REFERENCE_TYPE) + && variably_modified_type_p (TREE_TYPE (type))) + return true; + + /* If TYPE is an array, it is variably modified if the array + elements are. (Note that the VLA case has already been checked + above.) */ + if (TREE_CODE (type) == ARRAY_TYPE + && variably_modified_type_p (TREE_TYPE (type))) + return true; + + /* If TYPE is a function type, it is variably modified if any of the + parameters or the return type are variably modified. */ + if (TREE_CODE (type) == FUNCTION_TYPE + || TREE_CODE (type) == METHOD_TYPE) + { + tree parm; + + if (variably_modified_type_p (TREE_TYPE (type))) + return true; + for (parm = TYPE_ARG_TYPES (type); + parm && parm != void_list_node; + parm = TREE_CHAIN (parm)) + if (variably_modified_type_p (TREE_VALUE (parm))) + return true; + } + + /* The current language may have other cases to check, but in general, + all other types are not variably modified. */ + return (*lang_hooks.tree_inlining.var_mod_type_p) (type); + } + /* Given a DECL or TYPE, return the scope in which it was declared, or NULL_TREE if there is no containing scope. */ diff -Nrc3pad gcc-3.2/gcc/tree.h gcc-3.2.1/gcc/tree.h *** gcc-3.2/gcc/tree.h Wed Apr 17 01:43:57 2002 --- gcc-3.2.1/gcc/tree.h Fri Oct 25 22:11:09 2002 *************** extern tree integer_types[itk_none]; *** 2052,2057 **** --- 2052,2084 ---- #define long_long_unsigned_type_node integer_types[itk_unsigned_long_long] + /* A pointer-to-function member type looks like: + + struct { + __P __pfn; + ptrdiff_t __delta; + }; + + If __pfn is NULL, it is a NULL pointer-to-member-function. + + (Because the vtable is always the first thing in the object, we + don't need its offset.) If the function is virtual, then PFN is + one plus twice the index into the vtable; otherwise, it is just a + pointer to the function. + + Unfortunately, using the lowest bit of PFN doesn't work in + architectures that don't impose alignment requirements on function + addresses, or that use the lowest bit to tell one ISA from another, + for example. For such architectures, we use the lowest bit of + DELTA instead of the lowest bit of the PFN, and DELTA will be + multiplied by 2. */ + + enum ptrmemfunc_vbit_where_t + { + ptrmemfunc_vbit_in_pfn, + ptrmemfunc_vbit_in_delta + }; + #define NULL_TREE (tree) NULL /* Approximate positive square root of a host double. This is for *************** struct obstack; *** 2911,2916 **** --- 2938,2944 ---- /* In tree.c */ extern int really_constant_p PARAMS ((tree)); extern int int_fits_type_p PARAMS ((tree, tree)); + extern bool variably_modified_type_p PARAMS ((tree)); extern int tree_log2 PARAMS ((tree)); extern int tree_floor_log2 PARAMS ((tree)); extern void preserve_data PARAMS ((void)); diff -Nrc3pad gcc-3.2/gcc/unroll.c gcc-3.2.1/gcc/unroll.c *** gcc-3.2/gcc/unroll.c Sat Jun 15 01:12:06 2002 --- gcc-3.2.1/gcc/unroll.c Thu Oct 3 19:40:44 2002 *************** unroll_loop (loop, insn_count, strength_ *** 1188,1193 **** --- 1188,1196 ---- /* Keep track of the unroll factor for the loop. */ loop_info->unroll_number = unroll_number; + /* And whether the loop has been preconditioned. */ + loop_info->preconditioned = loop_preconditioned; + /* For each biv and giv, determine whether it can be safely split into a different variable for each unrolled copy of the loop body. We precalculate and save this info here, since computing it is *************** find_splittable_givs (loop, bl, unroll_t *** 2868,2874 **** value = tem; } ! splittable_regs[REGNO (v->new_reg)] = value; } else { --- 2871,2877 ---- value = tem; } ! splittable_regs[reg_or_subregno (v->new_reg)] = value; } else { *************** find_splittable_givs (loop, bl, unroll_t *** 3047,3067 **** itself does not have to be splittable. */ if (v->same && v->same->giv_type == DEST_REG) ! addr_combined_regs[REGNO (v->same->new_reg)] = v->same; if (GET_CODE (v->new_reg) == REG) { /* This giv maybe hasn't been combined with any others. Make sure that it's giv is marked as splittable here. */ ! splittable_regs[REGNO (v->new_reg)] = value; /* Make it appear to depend upon itself, so that the giv will be properly split in the main loop above. */ if (! v->same) { v->same = v; ! addr_combined_regs[REGNO (v->new_reg)] = v; } } --- 3050,3070 ---- itself does not have to be splittable. */ if (v->same && v->same->giv_type == DEST_REG) ! addr_combined_regs[reg_or_subregno (v->same->new_reg)] = v->same; if (GET_CODE (v->new_reg) == REG) { /* This giv maybe hasn't been combined with any others. Make sure that it's giv is marked as splittable here. */ ! splittable_regs[reg_or_subregno (v->new_reg)] = value; /* Make it appear to depend upon itself, so that the giv will be properly split in the main loop above. */ if (! v->same) { v->same = v; ! addr_combined_regs[reg_or_subregno (v->new_reg)] = v; } } *************** find_splittable_givs (loop, bl, unroll_t *** 3098,3104 **** if (! v->ignore) count = REG_IV_CLASS (ivs, REGNO (v->src_reg))->biv_count; ! splittable_regs_updates[REGNO (v->new_reg)] = count; } result++; --- 3101,3107 ---- if (! v->ignore) count = REG_IV_CLASS (ivs, REGNO (v->src_reg))->biv_count; ! splittable_regs_updates[reg_or_subregno (v->new_reg)] = count; } result++; *************** loop_iterations (loop) *** 3997,4008 **** } return 0; } - else if (comparison_code == EQ) - { - if (loop_dump_stream) - fprintf (loop_dump_stream, "Loop iterations: EQ comparison loop.\n"); - return 0; - } else if (GET_CODE (final_value) != CONST_INT) { if (loop_dump_stream) --- 4000,4005 ---- *************** loop_iterations (loop) *** 4014,4019 **** --- 4011,4053 ---- } return 0; } + else if (comparison_code == EQ) + { + rtx inc_once; + + if (loop_dump_stream) + fprintf (loop_dump_stream, "Loop iterations: EQ comparison loop.\n"); + + inc_once = gen_int_mode (INTVAL (initial_value) + INTVAL (increment), + GET_MODE (iteration_var)); + + if (inc_once == final_value) + { + /* The iterator value once through the loop is equal to the + comparision value. Either we have an infinite loop, or + we'll loop twice. */ + if (increment == const0_rtx) + return 0; + loop_info->n_iterations = 2; + } + else + loop_info->n_iterations = 1; + + if (GET_CODE (loop_info->initial_value) == CONST_INT) + loop_info->final_value + = gen_int_mode ((INTVAL (loop_info->initial_value) + + loop_info->n_iterations * INTVAL (increment)), + GET_MODE (iteration_var)); + else + loop_info->final_value + = plus_constant (loop_info->initial_value, + loop_info->n_iterations * INTVAL (increment)); + loop_info->final_equiv_value + = gen_int_mode ((INTVAL (initial_value) + + loop_info->n_iterations * INTVAL (increment)), + GET_MODE (iteration_var)); + return loop_info->n_iterations; + } /* Final_larger is 1 if final larger, 0 if they are equal, otherwise -1. */ if (unsigned_p) diff -Nrc3pad gcc-3.2/gcc/varasm.c gcc-3.2.1/gcc/varasm.c *** gcc-3.2/gcc/varasm.c Mon Jun 10 21:44:41 2002 --- gcc-3.2.1/gcc/varasm.c Wed Oct 30 19:20:18 2002 *************** asm_output_aligned_bss (file, decl, name *** 535,541 **** const char *name; int size, align; { - ASM_GLOBALIZE_LABEL (file, name); bss_section (); ASM_OUTPUT_ALIGN (file, floor_log2 (align / BITS_PER_UNIT)); #ifdef ASM_DECLARE_OBJECT_NAME --- 535,540 ---- *************** assemble_start_function (decl, fnname) *** 1194,1199 **** --- 1193,1200 ---- /* Tell assembler to move to target machine's alignment for functions. */ align = floor_log2 (FUNCTION_BOUNDARY / BITS_PER_UNIT); + if (align < force_align_functions_log) + align = force_align_functions_log; if (align > 0) { ASM_OUTPUT_ALIGN (asm_out_file, align); diff -Nrc3pad gcc-3.2/gcc/version.c gcc-3.2.1/gcc/version.c *** gcc-3.2/gcc/version.c Wed Aug 14 09:01:17 2002 --- gcc-3.2.1/gcc/version.c Tue Nov 19 08:04:31 2002 *************** *** 1,4 **** #include "ansidecl.h" #include "version.h" ! const char *const version_string = "3.2"; --- 1,4 ---- #include "ansidecl.h" #include "version.h" ! const char *const version_string = "3.2.1"; diff -Nrc3pad gcc-3.2/gnats.html gcc-3.2.1/gnats.html *** gcc-3.2/gnats.html Wed Aug 14 09:31:13 2002 --- gcc-3.2.1/gnats.html Tue Nov 19 18:11:48 2002 *************** *** 4,30 **** Submitting Bug Reports using GNATS !

    gccbug and gnatsweb

    !

    GNATS is the GNU ! bug tracking system, and it is now used to track GCC bug reports, as ! well. Before submitting a bug report, please read the general instructions.

    !

    The preferred way of submitting a bug report is by means of the gccbug ! program that is automatically installed with current versions of GCC ! and submits the bug report by e-mail.

    ! !

    If this is not possible, please use the gnatsweb ! interface. Make sure you include an e-mail address, so we can inform you when the status of your report changes.

    !

    Both techniques use the same bug database.

    !

    Filling out a report

    The bug report form provides a number of fields; you'll need to fill-out most of those (as indicated below) to provide a complete --- 4,30 ---- Submitting Bug Reports using GNATS +

    Submitting Bug Reports using GNATS

    + !

    gnatsweb and gccbug

    !

    GNATS, the GNU bug tracking system, is used to track GCC bug reports. ! Before submitting a bug report, please read the general instructions.

    !

    The preferred way to submit a bug report is by means of the ! gnatsweb ! interface. Make sure you include an e-mail address, so we can inform you when the status of your report changes.

    !

    Another way is to use the gccbug program that is ! automatically installed with current versions of GCC, which submits the bug ! report by e-mail.

    +

    Both techniques use the same GNATS bug database.

    !

    Filling out a report

    The bug report form provides a number of fields; you'll need to fill-out most of those (as indicated below) to provide a complete diff -Nrc3pad gcc-3.2/include/ChangeLog gcc-3.2.1/include/ChangeLog *** gcc-3.2/include/ChangeLog Wed Aug 14 09:00:39 2002 --- gcc-3.2.1/include/ChangeLog Tue Nov 19 17:49:31 2002 *************** *** 1,3 **** --- 1,20 ---- + 2002-11-19 Release Manager + + * GCC 3.2.1 Released. + + 2002-11-19 Release Manager + + * GCC 3.2.1 Released. + + 2002-11-18 Release Manager + + * GCC 3.2.1 Released. + + 2002-11-03 Roger Sayle + DJ Delorie + + * getopt.h: Avoid prototyping getopt with no arguments in C++. + 2002-08-14 Release Manager * GCC 3.2 Released. diff -Nrc3pad gcc-3.2/include/getopt.h gcc-3.2.1/include/getopt.h *** gcc-3.2/include/getopt.h Wed Mar 14 19:44:38 2001 --- gcc-3.2.1/include/getopt.h Sun Nov 3 23:45:49 2002 *************** struct option *** 111,117 **** errors, only prototype getopt for the GNU C library. */ extern int getopt (int argc, char *const *argv, const char *shortopts); #else /* not __GNU_LIBRARY__ */ ! # if !defined (HAVE_DECL_GETOPT) extern int getopt (); # endif #endif /* __GNU_LIBRARY__ */ --- 111,117 ---- errors, only prototype getopt for the GNU C library. */ extern int getopt (int argc, char *const *argv, const char *shortopts); #else /* not __GNU_LIBRARY__ */ ! # if !defined (HAVE_DECL_GETOPT) && !defined (__cplusplus) extern int getopt (); # endif #endif /* __GNU_LIBRARY__ */ diff -Nrc3pad gcc-3.2/libiberty/ChangeLog gcc-3.2.1/libiberty/ChangeLog *** gcc-3.2/libiberty/ChangeLog Wed Aug 14 09:00:49 2002 --- gcc-3.2.1/libiberty/ChangeLog Tue Nov 19 17:49:53 2002 *************** *** 1,3 **** --- 1,19 ---- + 2002-11-19 Release Manager + + * GCC 3.2.1 Released. + + 2002-11-19 Release Manager + + * GCC 3.2.1 Released. + + 2002-11-18 Release Manager + + * GCC 3.2.1 Released. + + 2002-10-07 Kaveh R. Ghazi + + * Makefile.in (all): Fix multilib parallel build. + 2002-08-14 Release Manager * GCC 3.2 Released. diff -Nrc3pad gcc-3.2/libiberty/Makefile.in gcc-3.2.1/libiberty/Makefile.in *** gcc-3.2/libiberty/Makefile.in Tue Jan 22 20:03:29 2002 --- gcc-3.2.1/libiberty/Makefile.in Mon Oct 7 04:37:03 2002 *************** SUBDIRS = testsuite *** 99,105 **** # FIXME: add @BUILD_INFO@ once we're sure it works for everyone. all: stamp-picdir $(TARGETLIB) needed-list required-list all-subdir ! @$(MULTIDO) $(FLAGS_TO_PASS) multi-do DO=all .PHONY: check installcheck check: check-subdir --- 99,105 ---- # FIXME: add @BUILD_INFO@ once we're sure it works for everyone. all: stamp-picdir $(TARGETLIB) needed-list required-list all-subdir ! @: $(MAKE) ; exec $(MULTIDO) $(FLAGS_TO_PASS) multi-do DO=all .PHONY: check installcheck check: check-subdir diff -Nrc3pad gcc-3.2/maintainer-scripts/ChangeLog gcc-3.2.1/maintainer-scripts/ChangeLog *** gcc-3.2/maintainer-scripts/ChangeLog Wed Aug 14 09:01:12 2002 --- gcc-3.2.1/maintainer-scripts/ChangeLog Tue Nov 19 17:50:16 2002 *************** *** 1,3 **** --- 1,15 ---- + 2002-11-19 Release Manager + + * GCC 3.2.1 Released. + + 2002-11-19 Release Manager + + * GCC 3.2.1 Released. + + 2002-11-18 Release Manager + + * GCC 3.2.1 Released. + 2002-08-14 Release Manager * GCC 3.2 Released.