diff -Nrc3pad gcc-3.0.2/.brik gcc-3.0.3/.brik *** gcc-3.0.2/.brik Tue Oct 23 11:37:15 2001 --- gcc-3.0.3/.brik Thu Dec 20 12:33:45 2001 *************** *** 4,29 **** # ------ -------- 2864072627b ./.cvsignore ! 1333652262b ./BUGS 2171125041b ./COPYING 508743035b ./COPYING.LIB ! 3674160514b ./ChangeLog ! 3468455665b ./FAQ 2513020160b ./GNATS 2229468985b ./INSTALL/README 2762343880b ./INSTALL/binaries.html ! 2525189791b ./INSTALL/build.html ! 2861585075b ./INSTALL/configure.html 1964338015b ./INSTALL/download.html ! 688694853b ./INSTALL/finalinstall.html ! 4063529934b ./INSTALL/index.html ! 1619414355b ./INSTALL/specific.html ! 2369737775b ./INSTALL/test.html 585133217b ./MAINTAINERS 253028645b ./Makefile.in 3697693037b ./README 3461973635b ./boehm-gc/BCC_MAKEFILE ! 3209638649b ./boehm-gc/ChangeLog 4012707064b ./boehm-gc/EMX_MAKEFILE 145946109b ./boehm-gc/MacOS.c 591574792b ./boehm-gc/MacProjects.sit.hqx --- 4,30 ---- # ------ -------- 2864072627b ./.cvsignore ! 875839122b ./BUGS 2171125041b ./COPYING 508743035b ./COPYING.LIB ! 1939966481b ./ChangeLog ! 1145364955b ./FAQ 2513020160b ./GNATS 2229468985b ./INSTALL/README 2762343880b ./INSTALL/binaries.html ! 502143757b ./INSTALL/build.html ! 2560162634b ./INSTALL/configure.html 1964338015b ./INSTALL/download.html ! 957581931b ./INSTALL/finalinstall.html ! 2381494717b ./INSTALL/gfdl.html ! 4202521290b ./INSTALL/index.html ! 3483445294b ./INSTALL/specific.html ! 1966250664b ./INSTALL/test.html 585133217b ./MAINTAINERS 253028645b ./Makefile.in 3697693037b ./README 3461973635b ./boehm-gc/BCC_MAKEFILE ! 201797530b ./boehm-gc/ChangeLog 4012707064b ./boehm-gc/EMX_MAKEFILE 145946109b ./boehm-gc/MacOS.c 591574792b ./boehm-gc/MacProjects.sit.hqx *************** *** 166,177 **** 3707632643b ./boehm-gc/version.h 2262051120b ./boehm-gc/weakpointer.h 4042937657b ./boehm-gc/win32_threads.c ! 1430989246b ./bugs.html 3139906847b ./config-ml.in 1152210207b ./config.guess 3430029098b ./config.if 572719696b ./config.sub ! 3998075193b ./config/ChangeLog 612455112b ./config/acinclude.m4 3007349820b ./config/mh-a68bsd 1442196770b ./config/mh-aix386 --- 167,178 ---- 3707632643b ./boehm-gc/version.h 2262051120b ./boehm-gc/weakpointer.h 4042937657b ./boehm-gc/win32_threads.c ! 1854631872b ./bugs.html 3139906847b ./config-ml.in 1152210207b ./config.guess 3430029098b ./config.if 572719696b ./config.sub ! 3397619163b ./config/ChangeLog 612455112b ./config/acinclude.m4 3007349820b ./config/mh-a68bsd 1442196770b ./config/mh-aix386 *************** *** 215,221 **** 456622165b ./config/mh-vaxult2 3265825290b ./config/mh-x86pic 198559626b ./config/mpw-mh-mpw ! 2151949570b ./config/mpw/ChangeLog 3145098931b ./config/mpw/MoveIfChange 1476422091b ./config/mpw/README 4005879853b ./config/mpw/forward-include --- 216,222 ---- 456622165b ./config/mh-vaxult2 3265825290b ./config/mh-x86pic 198559626b ./config/mpw-mh-mpw ! 1839840281b ./config/mpw/ChangeLog 3145098931b ./config/mpw/MoveIfChange 1476422091b ./config/mpw/README 4005879853b ./config/mpw/forward-include *************** *** 245,258 **** 771382916b ./config/mt-x86pic 3721047005b ./configure 3733934766b ./configure.in ! 1113421123b ./contrib/ChangeLog 550196746b ./contrib/compare_tests 2828387446b ./contrib/convert_to_f2c 2929939770b ./contrib/convert_to_g2c 2025073358b ./contrib/download_f2c 2292355102b ./contrib/gcc_build 2946097430b ./contrib/gcc_release ! 4179351048b ./contrib/gcc_update 1336632236b ./contrib/gccbug.el 2520368790b ./contrib/gennews 4256039795b ./contrib/index-prop --- 246,260 ---- 771382916b ./config/mt-x86pic 3721047005b ./configure 3733934766b ./configure.in ! 1332267117b ./contrib/ChangeLog ! 1278643902b ./contrib/PR3145.patch 550196746b ./contrib/compare_tests 2828387446b ./contrib/convert_to_f2c 2929939770b ./contrib/convert_to_g2c 2025073358b ./contrib/download_f2c 2292355102b ./contrib/gcc_build 2946097430b ./contrib/gcc_release ! 3156084968b ./contrib/gcc_update 1336632236b ./contrib/gccbug.el 2520368790b ./contrib/gennews 4256039795b ./contrib/index-prop *************** *** 260,272 **** 3627076674b ./contrib/snapshot 1623905231b ./contrib/test_installed 1719899924b ./contrib/test_summary ! 1623138628b ./contrib/texi2pod.pl 2210983108b ./contrib/warn_summary ! 2110682007b ./faq.html 1005262133b ./fastjar/AUTHORS 1745615150b ./fastjar/CHANGES 1396100520b ./fastjar/COPYING ! 1191974177b ./fastjar/ChangeLog 2770615802b ./fastjar/INSTALL 2457567884b ./fastjar/Makefile.am 1854345631b ./fastjar/Makefile.in --- 262,274 ---- 3627076674b ./contrib/snapshot 1623905231b ./contrib/test_installed 1719899924b ./contrib/test_summary ! 921638709b ./contrib/texi2pod.pl 2210983108b ./contrib/warn_summary ! 1687097564b ./faq.html 1005262133b ./fastjar/AUTHORS 1745615150b ./fastjar/CHANGES 1396100520b ./fastjar/COPYING ! 2561089227b ./fastjar/ChangeLog 2770615802b ./fastjar/INSTALL 2457567884b ./fastjar/Makefile.am 1854345631b ./fastjar/Makefile.in *************** *** 298,304 **** 1014730298b ./gcc/ABOUT-NLS 2171125041b ./gcc/COPYING 508743035b ./gcc/COPYING.LIB ! 1027933138b ./gcc/ChangeLog 1908191848b ./gcc/ChangeLog.0 1287222071b ./gcc/ChangeLog.1 3345586942b ./gcc/ChangeLog.2 --- 300,306 ---- 1014730298b ./gcc/ABOUT-NLS 2171125041b ./gcc/COPYING 508743035b ./gcc/COPYING.LIB ! 949434222b ./gcc/ChangeLog 1908191848b ./gcc/ChangeLog.0 1287222071b ./gcc/ChangeLog.1 3345586942b ./gcc/ChangeLog.2 *************** *** 309,323 **** 232745070b ./gcc/FSFChangeLog.10 2525829644b ./gcc/FSFChangeLog.11 2771840517b ./gcc/LANGUAGES ! 4083143375b ./gcc/Makefile.in ! 3328882189b ./gcc/NEWS 408114840b ./gcc/ONEWS 3310775363b ./gcc/README-fixinc 2741038711b ./gcc/README.Portability 1084935625b ./gcc/SERVICE ! 1319767072b ./gcc/acconfig.h 986758660b ./gcc/aclocal.m4 ! 2509700127b ./gcc/alias.c 1470543567b ./gcc/basic-block.h 1630019981b ./gcc/bb-reorder.c 446912740b ./gcc/bitmap.c --- 311,325 ---- 232745070b ./gcc/FSFChangeLog.10 2525829644b ./gcc/FSFChangeLog.11 2771840517b ./gcc/LANGUAGES ! 102022123b ./gcc/Makefile.in ! 3793037844b ./gcc/NEWS 408114840b ./gcc/ONEWS 3310775363b ./gcc/README-fixinc 2741038711b ./gcc/README.Portability 1084935625b ./gcc/SERVICE ! 2958064375b ./gcc/acconfig.h 986758660b ./gcc/aclocal.m4 ! 834740043b ./gcc/alias.c 1470543567b ./gcc/basic-block.h 1630019981b ./gcc/bb-reorder.c 446912740b ./gcc/bitmap.c *************** *** 326,334 **** 1766646758b ./gcc/builtins.c 3745012357b ./gcc/builtins.def 293598240b ./gcc/c-aux-info.c ! 115949369b ./gcc/c-common.c 858317341b ./gcc/c-common.def ! 651535970b ./gcc/c-common.h 530343767b ./gcc/c-convert.c 163655288b ./gcc/c-decl.c 876789290b ./gcc/c-dump.c --- 328,336 ---- 1766646758b ./gcc/builtins.c 3745012357b ./gcc/builtins.def 293598240b ./gcc/c-aux-info.c ! 2635855078b ./gcc/c-common.c 858317341b ./gcc/c-common.def ! 2289361130b ./gcc/c-common.h 530343767b ./gcc/c-convert.c 163655288b ./gcc/c-decl.c 876789290b ./gcc/c-dump.c *************** *** 338,347 **** 3040046848b ./gcc/c-lang.c 61530428b ./gcc/c-lex.c 916578687b ./gcc/c-lex.h ! 1529796766b ./gcc/c-parse.c ! 353343561b ./gcc/c-parse.in ! 1042264003b ./gcc/c-parse.y ! 220833347b ./gcc/c-pragma.c 2111457647b ./gcc/c-pragma.h 4251225764b ./gcc/c-semantics.c 1365281254b ./gcc/c-tree.h --- 340,349 ---- 3040046848b ./gcc/c-lang.c 61530428b ./gcc/c-lex.c 916578687b ./gcc/c-lex.h ! 2666238154b ./gcc/c-parse.c ! 1000116933b ./gcc/c-parse.in ! 2954289204b ./gcc/c-parse.y ! 3529754923b ./gcc/c-pragma.c 2111457647b ./gcc/c-pragma.h 4251225764b ./gcc/c-semantics.c 1365281254b ./gcc/c-tree.h *************** *** 350,360 **** 1728509875b ./gcc/calls.c 1002247553b ./gcc/collect2.c 972672658b ./gcc/collect2.h ! 1330846505b ./gcc/combine.c 1434596660b ./gcc/conditions.h ! 1496922945b ./gcc/config.gcc 1315260558b ./gcc/config.guess ! 2721129262b ./gcc/config.in 3329436298b ./gcc/config/1750a/1750a-protos.h 550533333b ./gcc/config/1750a/1750a.c 1762431589b ./gcc/config/1750a/1750a.h --- 352,362 ---- 1728509875b ./gcc/calls.c 1002247553b ./gcc/collect2.c 972672658b ./gcc/collect2.h ! 2565271898b ./gcc/combine.c 1434596660b ./gcc/conditions.h ! 1650983446b ./gcc/config.gcc 1315260558b ./gcc/config.guess ! 523349083b ./gcc/config.in 3329436298b ./gcc/config/1750a/1750a-protos.h 550533333b ./gcc/config/1750a/1750a.c 1762431589b ./gcc/config/1750a/1750a.h *************** *** 432,438 **** 2093699269b ./gcc/config/arm/arm-protos.h 478450204b ./gcc/config/arm/arm-wince-pe.h 1409257642b ./gcc/config/arm/arm.c ! 1310667152b ./gcc/config/arm/arm.h 45374279b ./gcc/config/arm/arm.md 2444652934b ./gcc/config/arm/coff.h 2696406159b ./gcc/config/arm/conix-elf.h --- 434,440 ---- 2093699269b ./gcc/config/arm/arm-protos.h 478450204b ./gcc/config/arm/arm-wince-pe.h 1409257642b ./gcc/config/arm/arm.c ! 1220949056b ./gcc/config/arm/arm.h 45374279b ./gcc/config/arm/arm.md 2444652934b ./gcc/config/arm/coff.h 2696406159b ./gcc/config/arm/conix-elf.h *************** *** 522,528 **** 2310880765b ./gcc/config/dsp16xx/dsp16xx.h 4033615684b ./gcc/config/dsp16xx/dsp16xx.md 2521513577b ./gcc/config/dsp16xx/xm-dsp16xx.h ! 974340428b ./gcc/config/elfos.h 1622698848b ./gcc/config/elxsi/elxsi-protos.h 817143838b ./gcc/config/elxsi/elxsi.c 2228578351b ./gcc/config/elxsi/elxsi.h --- 524,530 ---- 2310880765b ./gcc/config/dsp16xx/dsp16xx.h 4033615684b ./gcc/config/dsp16xx/dsp16xx.md 2521513577b ./gcc/config/dsp16xx/xm-dsp16xx.h ! 2967990158b ./gcc/config/elfos.h 1622698848b ./gcc/config/elxsi/elxsi-protos.h 817143838b ./gcc/config/elxsi/elxsi.c 2228578351b ./gcc/config/elxsi/elxsi.h *************** *** 539,545 **** 3472567657b ./gcc/config/float-sparc.h 766947524b ./gcc/config/float-vax.h 729288938b ./gcc/config/fp-bit.c ! 86092851b ./gcc/config/fp-bit.h 2304723625b ./gcc/config/fr30/crti.asm 2025473533b ./gcc/config/fr30/crtn.asm 4061935745b ./gcc/config/fr30/fr30-protos.h --- 541,547 ---- 3472567657b ./gcc/config/float-sparc.h 766947524b ./gcc/config/float-vax.h 729288938b ./gcc/config/fp-bit.c ! 1972802898b ./gcc/config/fp-bit.h 2304723625b ./gcc/config/fr30/crti.asm 2025473533b ./gcc/config/fr30/crtn.asm 4061935745b ./gcc/config/fr30/fr30-protos.h *************** *** 550,556 **** 3501217985b ./gcc/config/fr30/t-fr30 4080807226b ./gcc/config/fr30/xm-fr30.h 3532526787b ./gcc/config/freebsd-nthr.h ! 1571444958b ./gcc/config/freebsd.h 3857422654b ./gcc/config/freebsd3.h 2210711654b ./gcc/config/freebsd4.h 1531797731b ./gcc/config/freebsd5.h --- 552,558 ---- 3501217985b ./gcc/config/fr30/t-fr30 4080807226b ./gcc/config/fr30/xm-fr30.h 3532526787b ./gcc/config/freebsd-nthr.h ! 2727094490b ./gcc/config/freebsd.h 3857422654b ./gcc/config/freebsd3.h 2210711654b ./gcc/config/freebsd4.h 1531797731b ./gcc/config/freebsd5.h *************** *** 559,567 **** 1556064359b ./gcc/config/gofast.h 1813884828b ./gcc/config/h8300/fixunssfsi.c 1075730847b ./gcc/config/h8300/h8300-protos.h ! 848177896b ./gcc/config/h8300/h8300.c 305883268b ./gcc/config/h8300/h8300.h ! 3675978024b ./gcc/config/h8300/h8300.md 2095012315b ./gcc/config/h8300/lib1funcs.asm 836948877b ./gcc/config/h8300/rtems.h 3200589132b ./gcc/config/h8300/t-h8300 --- 561,569 ---- 1556064359b ./gcc/config/gofast.h 1813884828b ./gcc/config/h8300/fixunssfsi.c 1075730847b ./gcc/config/h8300/h8300-protos.h ! 1256626199b ./gcc/config/h8300/h8300.c 305883268b ./gcc/config/h8300/h8300.h ! 2195131597b ./gcc/config/h8300/h8300.md 2095012315b ./gcc/config/h8300/lib1funcs.asm 836948877b ./gcc/config/h8300/rtems.h 3200589132b ./gcc/config/h8300/t-h8300 *************** *** 595,601 **** 3010444208b ./gcc/config/i386/config-nt.sed 3207315249b ./gcc/config/i386/crtdll.h 3943560803b ./gcc/config/i386/cygwin.asm ! 8287530b ./gcc/config/i386/cygwin.h 2274149541b ./gcc/config/i386/dgux.c 3055146333b ./gcc/config/i386/dgux.h 1570943831b ./gcc/config/i386/djgpp-rtems.h --- 597,603 ---- 3010444208b ./gcc/config/i386/config-nt.sed 3207315249b ./gcc/config/i386/crtdll.h 3943560803b ./gcc/config/i386/cygwin.asm ! 1405926987b ./gcc/config/i386/cygwin.h 2274149541b ./gcc/config/i386/dgux.c 3055146333b ./gcc/config/i386/dgux.h 1570943831b ./gcc/config/i386/djgpp-rtems.h *************** *** 610,618 **** 3714536309b ./gcc/config/i386/i386-coff.h 1565496826b ./gcc/config/i386/i386-interix.h 1433006975b ./gcc/config/i386/i386-protos.h ! 1115041691b ./gcc/config/i386/i386.c 663612626b ./gcc/config/i386/i386.h ! 3903059271b ./gcc/config/i386/i386.md 2138609268b ./gcc/config/i386/i386elf.h 2044371014b ./gcc/config/i386/interix.c 3245573839b ./gcc/config/i386/isc.h --- 612,620 ---- 3714536309b ./gcc/config/i386/i386-coff.h 1565496826b ./gcc/config/i386/i386-interix.h 1433006975b ./gcc/config/i386/i386-protos.h ! 4176448367b ./gcc/config/i386/i386.c 663612626b ./gcc/config/i386/i386.h ! 3961207690b ./gcc/config/i386/i386.md 2138609268b ./gcc/config/i386/i386elf.h 2044371014b ./gcc/config/i386/interix.c 3245573839b ./gcc/config/i386/isc.h *************** *** 654,660 **** 1565106149b ./gcc/config/i386/sol2-ci.asm 4008317666b ./gcc/config/i386/sol2-cn.asm 2045686122b ./gcc/config/i386/sol2-gc1.asm ! 3161619351b ./gcc/config/i386/sol2.h 3870175252b ./gcc/config/i386/sol2gas.h 4009223163b ./gcc/config/i386/sun.h 1745602951b ./gcc/config/i386/sun386.h --- 656,662 ---- 1565106149b ./gcc/config/i386/sol2-ci.asm 4008317666b ./gcc/config/i386/sol2-cn.asm 2045686122b ./gcc/config/i386/sol2-gc1.asm ! 4286221804b ./gcc/config/i386/sol2.h 3870175252b ./gcc/config/i386/sol2gas.h 4009223163b ./gcc/config/i386/sun.h 1745602951b ./gcc/config/i386/sun386.h *************** *** 773,789 **** 651274697b ./gcc/config/i960/xm-i960.h 876649532b ./gcc/config/ia64/crtbegin.asm 1855415332b ./gcc/config/ia64/crtend.asm ! 3900706760b ./gcc/config/ia64/elf.h 2257162614b ./gcc/config/ia64/fde-glibc.c ! 3987815221b ./gcc/config/ia64/hpux.h 353921496b ./gcc/config/ia64/ia64-protos.h 1190921893b ./gcc/config/ia64/ia64.c ! 335927227b ./gcc/config/ia64/ia64.h 2221221481b ./gcc/config/ia64/ia64.md 3051569292b ./gcc/config/ia64/ia64intrin.h 3488320870b ./gcc/config/ia64/lib1funcs.asm 2361471520b ./gcc/config/ia64/libgcc-ia64.ver ! 3005002548b ./gcc/config/ia64/linux.h 3617523204b ./gcc/config/ia64/sysv4.h 2148782144b ./gcc/config/ia64/t-glibc 4031706241b ./gcc/config/ia64/t-hpux --- 775,792 ---- 651274697b ./gcc/config/i960/xm-i960.h 876649532b ./gcc/config/ia64/crtbegin.asm 1855415332b ./gcc/config/ia64/crtend.asm ! 2915180026b ./gcc/config/ia64/elf.h 2257162614b ./gcc/config/ia64/fde-glibc.c ! 1924751760b ./gcc/config/ia64/freebsd.h ! 3662079824b ./gcc/config/ia64/hpux.h 353921496b ./gcc/config/ia64/ia64-protos.h 1190921893b ./gcc/config/ia64/ia64.c ! 4239981362b ./gcc/config/ia64/ia64.h 2221221481b ./gcc/config/ia64/ia64.md 3051569292b ./gcc/config/ia64/ia64intrin.h 3488320870b ./gcc/config/ia64/lib1funcs.asm 2361471520b ./gcc/config/ia64/libgcc-ia64.ver ! 2524176459b ./gcc/config/ia64/linux.h 3617523204b ./gcc/config/ia64/sysv4.h 2148782144b ./gcc/config/ia64/t-glibc 4031706241b ./gcc/config/ia64/t-hpux *************** *** 808,816 **** 2629267148b ./gcc/config/m68hc11/larith.asm 3563849705b ./gcc/config/m68hc11/m68hc11-crt0.S 321124732b ./gcc/config/m68hc11/m68hc11-protos.h ! 599626127b ./gcc/config/m68hc11/m68hc11.c ! 3375995232b ./gcc/config/m68hc11/m68hc11.h ! 2110857943b ./gcc/config/m68hc11/m68hc11.md 3915866468b ./gcc/config/m68hc11/m68hc12.h 3238866738b ./gcc/config/m68hc11/t-m68hc11-gas 1569281943b ./gcc/config/m68hc11/xm-m68hc11.h --- 811,819 ---- 2629267148b ./gcc/config/m68hc11/larith.asm 3563849705b ./gcc/config/m68hc11/m68hc11-crt0.S 321124732b ./gcc/config/m68hc11/m68hc11-protos.h ! 3659628307b ./gcc/config/m68hc11/m68hc11.c ! 313616667b ./gcc/config/m68hc11/m68hc11.h ! 2352306031b ./gcc/config/m68hc11/m68hc11.md 3915866468b ./gcc/config/m68hc11/m68hc12.h 3238866738b ./gcc/config/m68hc11/t-m68hc11-gas 1569281943b ./gcc/config/m68hc11/xm-m68hc11.h *************** *** 1015,1023 **** 943017591b ./gcc/config/mips/linux.h 1257153673b ./gcc/config/mips/mips-5.h 3874587589b ./gcc/config/mips/mips-protos.h ! 3305871759b ./gcc/config/mips/mips.c 241717903b ./gcc/config/mips/mips.h ! 1059478459b ./gcc/config/mips/mips.md 3291569396b ./gcc/config/mips/mips16.S 789509308b ./gcc/config/mips/netbsd.h 1685635385b ./gcc/config/mips/news4.h --- 1018,1026 ---- 943017591b ./gcc/config/mips/linux.h 1257153673b ./gcc/config/mips/mips-5.h 3874587589b ./gcc/config/mips/mips-protos.h ! 3277778295b ./gcc/config/mips/mips.c 241717903b ./gcc/config/mips/mips.h ! 1790038414b ./gcc/config/mips/mips.md 3291569396b ./gcc/config/mips/mips16.S 789509308b ./gcc/config/mips/netbsd.h 1685635385b ./gcc/config/mips/news4.h *************** *** 1173,1179 **** 2880448747b ./gcc/config/romp/x-mach 2947038505b ./gcc/config/romp/x-romp 3533377098b ./gcc/config/romp/xm-romp.h ! 52724573b ./gcc/config/rs6000/aix.h 1519682134b ./gcc/config/rs6000/aix31.h 2741987967b ./gcc/config/rs6000/aix3newas.h 1702283472b ./gcc/config/rs6000/aix41.h --- 1176,1182 ---- 2880448747b ./gcc/config/romp/x-mach 2947038505b ./gcc/config/romp/x-romp 3533377098b ./gcc/config/romp/xm-romp.h ! 588290010b ./gcc/config/rs6000/aix.h 1519682134b ./gcc/config/rs6000/aix31.h 2741987967b ./gcc/config/rs6000/aix3newas.h 1702283472b ./gcc/config/rs6000/aix41.h *************** *** 1191,1217 **** 3919710780b ./gcc/config/rs6000/lynx.h 1717863199b ./gcc/config/rs6000/mach.h 1820610909b ./gcc/config/rs6000/milli.exp 911358933b ./gcc/config/rs6000/rs6000-protos.h ! 1173041686b ./gcc/config/rs6000/rs6000.c ! 2662922828b ./gcc/config/rs6000/rs6000.h ! 845918244b ./gcc/config/rs6000/rs6000.md 2636863004b ./gcc/config/rs6000/rtems.h 4210977084b ./gcc/config/rs6000/sol-c0.c 1695016479b ./gcc/config/rs6000/sol-ci.asm 1927994766b ./gcc/config/rs6000/sol-cn.asm 554206256b ./gcc/config/rs6000/sol2.h ! 4006545716b ./gcc/config/rs6000/sysv4.h 3795959522b ./gcc/config/rs6000/sysv4le.h 2917213310b ./gcc/config/rs6000/t-aix43 3185730278b ./gcc/config/rs6000/t-beos 2787085020b ./gcc/config/rs6000/t-newas ! 2333037305b ./gcc/config/rs6000/t-ppccomm 365048301b ./gcc/config/rs6000/t-ppcgas 2289036871b ./gcc/config/rs6000/t-ppcos 1709081807b ./gcc/config/rs6000/t-rs6000 2434716614b ./gcc/config/rs6000/t-xnewas 3817285156b ./gcc/config/rs6000/t-xrs6000 ! 2779759220b ./gcc/config/rs6000/tramp.asm 301220496b ./gcc/config/rs6000/vxppc.h 489691602b ./gcc/config/rs6000/x-aix31 764225160b ./gcc/config/rs6000/x-aix41 --- 1194,1221 ---- 3919710780b ./gcc/config/rs6000/lynx.h 1717863199b ./gcc/config/rs6000/mach.h 1820610909b ./gcc/config/rs6000/milli.exp + 2451456339b ./gcc/config/rs6000/netbsd.h 911358933b ./gcc/config/rs6000/rs6000-protos.h ! 1956281226b ./gcc/config/rs6000/rs6000.c ! 3718915863b ./gcc/config/rs6000/rs6000.h ! 119791080b ./gcc/config/rs6000/rs6000.md 2636863004b ./gcc/config/rs6000/rtems.h 4210977084b ./gcc/config/rs6000/sol-c0.c 1695016479b ./gcc/config/rs6000/sol-ci.asm 1927994766b ./gcc/config/rs6000/sol-cn.asm 554206256b ./gcc/config/rs6000/sol2.h ! 2116302544b ./gcc/config/rs6000/sysv4.h 3795959522b ./gcc/config/rs6000/sysv4le.h 2917213310b ./gcc/config/rs6000/t-aix43 3185730278b ./gcc/config/rs6000/t-beos 2787085020b ./gcc/config/rs6000/t-newas ! 1987043510b ./gcc/config/rs6000/t-ppccomm 365048301b ./gcc/config/rs6000/t-ppcgas 2289036871b ./gcc/config/rs6000/t-ppcos 1709081807b ./gcc/config/rs6000/t-rs6000 2434716614b ./gcc/config/rs6000/t-xnewas 3817285156b ./gcc/config/rs6000/t-xrs6000 ! 3674297686b ./gcc/config/rs6000/tramp.asm 301220496b ./gcc/config/rs6000/vxppc.h 489691602b ./gcc/config/rs6000/x-aix31 764225160b ./gcc/config/rs6000/x-aix41 *************** *** 1290,1298 **** 4047109349b ./gcc/config/sparc/sp86x-aout.h 1145591187b ./gcc/config/sparc/sp86x-elf.h 3513225184b ./gcc/config/sparc/sparc-protos.h ! 2857592585b ./gcc/config/sparc/sparc.c 3958437963b ./gcc/config/sparc/sparc.h ! 2064414952b ./gcc/config/sparc/sparc.md 113090716b ./gcc/config/sparc/splet.h 3035335612b ./gcc/config/sparc/sun4gas.h 3455486806b ./gcc/config/sparc/sun4o3.h --- 1294,1302 ---- 4047109349b ./gcc/config/sparc/sp86x-aout.h 1145591187b ./gcc/config/sparc/sp86x-elf.h 3513225184b ./gcc/config/sparc/sparc-protos.h ! 389502879b ./gcc/config/sparc/sparc.c 3958437963b ./gcc/config/sparc/sparc.h ! 228516595b ./gcc/config/sparc/sparc.md 113090716b ./gcc/config/sparc/splet.h 3035335612b ./gcc/config/sparc/sun4gas.h 3455486806b ./gcc/config/sparc/sun4o3.h *************** *** 1394,1423 **** 3697539901b ./gcc/config/xm-std32.h 4091214272b ./gcc/config/xm-svr3.h 3741840130b ./gcc/config/xm-svr4.h ! 3218574372b ./gcc/configure 3600082583b ./gcc/configure.frag ! 2309352480b ./gcc/configure.in 3394568616b ./gcc/conflict.c 556313302b ./gcc/convert.c 4032982380b ./gcc/convert.h 1230086821b ./gcc/cp/.cvsignore ! 788140310b ./gcc/cp/ChangeLog 1903584b ./gcc/cp/ChangeLog.1 1881731020b ./gcc/cp/ChangeLog.2 2546444747b ./gcc/cp/ChangeLog.egcs ! 1788488183b ./gcc/cp/Make-lang.in 846059250b ./gcc/cp/NEWS ! 3390344274b ./gcc/cp/call.c 4115552602b ./gcc/cp/cfns.gperf 1705070232b ./gcc/cp/cfns.h ! 1220336448b ./gcc/cp/class.c 1920345452b ./gcc/cp/config-lang.in 3406340479b ./gcc/cp/cp-tree.def ! 2682469958b ./gcc/cp/cp-tree.h 788167684b ./gcc/cp/cvt.c ! 1404777217b ./gcc/cp/decl.c 1027981985b ./gcc/cp/decl.h ! 2337829944b ./gcc/cp/decl2.c 217522872b ./gcc/cp/dump.c 3091430199b ./gcc/cp/errfn.c 3135875533b ./gcc/cp/error.c --- 1398,1427 ---- 3697539901b ./gcc/config/xm-std32.h 4091214272b ./gcc/config/xm-svr3.h 3741840130b ./gcc/config/xm-svr4.h ! 1109293671b ./gcc/configure 3600082583b ./gcc/configure.frag ! 16799304b ./gcc/configure.in 3394568616b ./gcc/conflict.c 556313302b ./gcc/convert.c 4032982380b ./gcc/convert.h 1230086821b ./gcc/cp/.cvsignore ! 1417379349b ./gcc/cp/ChangeLog 1903584b ./gcc/cp/ChangeLog.1 1881731020b ./gcc/cp/ChangeLog.2 2546444747b ./gcc/cp/ChangeLog.egcs ! 3271703209b ./gcc/cp/Make-lang.in 846059250b ./gcc/cp/NEWS ! 3462171967b ./gcc/cp/call.c 4115552602b ./gcc/cp/cfns.gperf 1705070232b ./gcc/cp/cfns.h ! 16357655b ./gcc/cp/class.c 1920345452b ./gcc/cp/config-lang.in 3406340479b ./gcc/cp/cp-tree.def ! 3385771554b ./gcc/cp/cp-tree.h 788167684b ./gcc/cp/cvt.c ! 907549516b ./gcc/cp/decl.c 1027981985b ./gcc/cp/decl.h ! 1690588862b ./gcc/cp/decl2.c 217522872b ./gcc/cp/dump.c 3091430199b ./gcc/cp/errfn.c 3135875533b ./gcc/cp/error.c *************** *** 1431,1476 **** 1106559236b ./gcc/cp/lang-specs.h 3458231555b ./gcc/cp/lex.c 1080237442b ./gcc/cp/lex.h ! 2689785615b ./gcc/cp/mangle.c 419660916b ./gcc/cp/method.c 701335209b ./gcc/cp/mpw-config.in 4041177245b ./gcc/cp/mpw-make.sed ! 1791576125b ./gcc/cp/operators.def ! 212667869b ./gcc/cp/optimize.c 348619331b ./gcc/cp/parse.c 4085964132b ./gcc/cp/parse.h 1879411084b ./gcc/cp/parse.y ! 940975689b ./gcc/cp/pt.c 903594734b ./gcc/cp/ptree.c 1890655336b ./gcc/cp/repo.c ! 2073476971b ./gcc/cp/rtti.c 696207784b ./gcc/cp/search.c ! 2381646409b ./gcc/cp/semantics.c 1818467654b ./gcc/cp/spew.c ! 91515646b ./gcc/cp/tree.c ! 1859957305b ./gcc/cp/typeck.c 3459487995b ./gcc/cp/typeck2.c 1359529404b ./gcc/cp/xref.c ! 4198030259b ./gcc/cppdefault.c 1864191136b ./gcc/cppdefault.h 1696803319b ./gcc/cpperror.c 1757467731b ./gcc/cppexp.c 1209278199b ./gcc/cppfiles.c 3904470681b ./gcc/cpphash.c 1641754935b ./gcc/cpphash.h ! 2491140484b ./gcc/cppinit.c 791416625b ./gcc/cpplex.c 365830801b ./gcc/cpplib.c 3400544410b ./gcc/cpplib.h ! 2361742565b ./gcc/cppmacro.c 373762755b ./gcc/cppmain.c ! 4137262150b ./gcc/cppspec.c 2903740050b ./gcc/cross-make 1363172067b ./gcc/crtstuff.c 266646376b ./gcc/cse.c 1864237584b ./gcc/cselib.h 216805921b ./gcc/cstamp-h.in ! 3098946745b ./gcc/dbxout.c 181061183b ./gcc/dbxout.h 1104788844b ./gcc/dbxstclass.h 2469057166b ./gcc/dce.c --- 1435,1480 ---- 1106559236b ./gcc/cp/lang-specs.h 3458231555b ./gcc/cp/lex.c 1080237442b ./gcc/cp/lex.h ! 1021016080b ./gcc/cp/mangle.c 419660916b ./gcc/cp/method.c 701335209b ./gcc/cp/mpw-config.in 4041177245b ./gcc/cp/mpw-make.sed ! 2545245613b ./gcc/cp/operators.def ! 179667898b ./gcc/cp/optimize.c 348619331b ./gcc/cp/parse.c 4085964132b ./gcc/cp/parse.h 1879411084b ./gcc/cp/parse.y ! 1087392378b ./gcc/cp/pt.c 903594734b ./gcc/cp/ptree.c 1890655336b ./gcc/cp/repo.c ! 456361741b ./gcc/cp/rtti.c 696207784b ./gcc/cp/search.c ! 952457260b ./gcc/cp/semantics.c 1818467654b ./gcc/cp/spew.c ! 783708168b ./gcc/cp/tree.c ! 2083169874b ./gcc/cp/typeck.c 3459487995b ./gcc/cp/typeck2.c 1359529404b ./gcc/cp/xref.c ! 1602205564b ./gcc/cppdefault.c 1864191136b ./gcc/cppdefault.h 1696803319b ./gcc/cpperror.c 1757467731b ./gcc/cppexp.c 1209278199b ./gcc/cppfiles.c 3904470681b ./gcc/cpphash.c 1641754935b ./gcc/cpphash.h ! 1376958113b ./gcc/cppinit.c 791416625b ./gcc/cpplex.c 365830801b ./gcc/cpplib.c 3400544410b ./gcc/cpplib.h ! 1609411692b ./gcc/cppmacro.c 373762755b ./gcc/cppmain.c ! 3666180672b ./gcc/cppspec.c 2903740050b ./gcc/cross-make 1363172067b ./gcc/crtstuff.c 266646376b ./gcc/cse.c 1864237584b ./gcc/cselib.h 216805921b ./gcc/cstamp-h.in ! 458197924b ./gcc/dbxout.c 181061183b ./gcc/dbxout.h 1104788844b ./gcc/dbxstclass.h 2469057166b ./gcc/dce.c *************** *** 1481,1503 **** 890851034b ./gcc/doc/.cvsignore 1316708563b ./gcc/doc/c-tree.texi 3680358381b ./gcc/doc/contrib.texi ! 2846172728b ./gcc/doc/cpp.1 ! 3597805091b ./gcc/doc/cpp.info ! 4249470227b ./gcc/doc/cpp.info-1 757268427b ./gcc/doc/cpp.info-2 1262632653b ./gcc/doc/cpp.info-3 ! 167551904b ./gcc/doc/cpp.info-4 ! 3574813453b ./gcc/doc/cpp.texi 3141595163b ./gcc/doc/cppinternals.info 1445289518b ./gcc/doc/cppinternals.texi ! 597376622b ./gcc/doc/extend.texi ! 2101763670b ./gcc/doc/gcc.1 ! 3909373821b ./gcc/doc/gcc.info ! 1987967750b ./gcc/doc/gcc.info-1 ! 1412220606b ./gcc/doc/gcc.info-10 3943813356b ./gcc/doc/gcc.info-11 418964136b ./gcc/doc/gcc.info-12 ! 2935130590b ./gcc/doc/gcc.info-13 3149587542b ./gcc/doc/gcc.info-14 695739271b ./gcc/doc/gcc.info-15 1601557755b ./gcc/doc/gcc.info-16 --- 1485,1508 ---- 890851034b ./gcc/doc/.cvsignore 1316708563b ./gcc/doc/c-tree.texi 3680358381b ./gcc/doc/contrib.texi ! 1751994355b ./gcc/doc/cpp.1 ! 2389364134b ./gcc/doc/cpp.info ! 1420015170b ./gcc/doc/cpp.info-1 757268427b ./gcc/doc/cpp.info-2 1262632653b ./gcc/doc/cpp.info-3 ! 2256404929b ./gcc/doc/cpp.info-4 ! 3325515262b ./gcc/doc/cpp.texi 3141595163b ./gcc/doc/cppinternals.info 1445289518b ./gcc/doc/cppinternals.texi ! 2232690756b ./gcc/doc/extend.texi ! 771278149b ./gcc/doc/fsf-funding.7 ! 4161830194b ./gcc/doc/gcc.1 ! 1317475718b ./gcc/doc/gcc.info ! 299085619b ./gcc/doc/gcc.info-1 ! 2921110039b ./gcc/doc/gcc.info-10 3943813356b ./gcc/doc/gcc.info-11 418964136b ./gcc/doc/gcc.info-12 ! 1921973611b ./gcc/doc/gcc.info-13 3149587542b ./gcc/doc/gcc.info-14 695739271b ./gcc/doc/gcc.info-15 1601557755b ./gcc/doc/gcc.info-16 *************** *** 1513,1552 **** 1607293577b ./gcc/doc/gcc.info-25 3092425092b ./gcc/doc/gcc.info-26 178291516b ./gcc/doc/gcc.info-27 ! 1510217315b ./gcc/doc/gcc.info-28 3723298804b ./gcc/doc/gcc.info-29 4095656035b ./gcc/doc/gcc.info-3 239428913b ./gcc/doc/gcc.info-30 2220281758b ./gcc/doc/gcc.info-31 414837311b ./gcc/doc/gcc.info-32 1806833096b ./gcc/doc/gcc.info-33 ! 2139934929b ./gcc/doc/gcc.info-34 3348688145b ./gcc/doc/gcc.info-35 1797713626b ./gcc/doc/gcc.info-36 ! 177642172b ./gcc/doc/gcc.info-37 2743624506b ./gcc/doc/gcc.info-38 ! 183373778b ./gcc/doc/gcc.info-4 352877010b ./gcc/doc/gcc.info-5 979705408b ./gcc/doc/gcc.info-6 ! 2082768225b ./gcc/doc/gcc.info-7 3184007007b ./gcc/doc/gcc.info-8 102742701b ./gcc/doc/gcc.info-9 ! 3679799138b ./gcc/doc/gcc.texi ! 3948564685b ./gcc/doc/gcov.1 ! 2764453786b ./gcc/doc/gcov.texi ! 1008218839b ./gcc/doc/include/fdl.texi ! 3383701708b ./gcc/doc/include/funding.texi ! 423212962b ./gcc/doc/include/gpl.texi 4016541318b ./gcc/doc/include/texinfo.tex 2393405651b ./gcc/doc/install-old.texi ! 870109107b ./gcc/doc/install.texi ! 3260938793b ./gcc/doc/install.texi2html ! 3035201328b ./gcc/doc/invoke.texi 2662979853b ./gcc/doc/md.texi 1033541327b ./gcc/doc/objc.texi 1140289608b ./gcc/doc/rtl.texi ! 3106491649b ./gcc/doc/tm.texi ! 472588828b ./gcc/doloop.c 123944430b ./gcc/dominance.c 2660216905b ./gcc/doprint.c 2791449994b ./gcc/doschk.c --- 1518,1559 ---- 1607293577b ./gcc/doc/gcc.info-25 3092425092b ./gcc/doc/gcc.info-26 178291516b ./gcc/doc/gcc.info-27 ! 3921416100b ./gcc/doc/gcc.info-28 3723298804b ./gcc/doc/gcc.info-29 4095656035b ./gcc/doc/gcc.info-3 239428913b ./gcc/doc/gcc.info-30 2220281758b ./gcc/doc/gcc.info-31 414837311b ./gcc/doc/gcc.info-32 1806833096b ./gcc/doc/gcc.info-33 ! 1521400144b ./gcc/doc/gcc.info-34 3348688145b ./gcc/doc/gcc.info-35 1797713626b ./gcc/doc/gcc.info-36 ! 1612449171b ./gcc/doc/gcc.info-37 2743624506b ./gcc/doc/gcc.info-38 ! 1048830900b ./gcc/doc/gcc.info-4 352877010b ./gcc/doc/gcc.info-5 979705408b ./gcc/doc/gcc.info-6 ! 1659946480b ./gcc/doc/gcc.info-7 3184007007b ./gcc/doc/gcc.info-8 102742701b ./gcc/doc/gcc.info-9 ! 1385469307b ./gcc/doc/gcc.texi ! 1447414042b ./gcc/doc/gcov.1 ! 3462759430b ./gcc/doc/gcov.texi ! 3319588956b ./gcc/doc/gfdl.7 ! 1195898946b ./gcc/doc/gpl.7 ! 973259336b ./gcc/doc/include/fdl.texi ! 2048065465b ./gcc/doc/include/funding.texi ! 3235143907b ./gcc/doc/include/gpl.texi 4016541318b ./gcc/doc/include/texinfo.tex 2393405651b ./gcc/doc/install-old.texi ! 2522265625b ./gcc/doc/install.texi ! 1547785611b ./gcc/doc/install.texi2html ! 2989775757b ./gcc/doc/invoke.texi 2662979853b ./gcc/doc/md.texi 1033541327b ./gcc/doc/objc.texi 1140289608b ./gcc/doc/rtl.texi ! 89665016b ./gcc/doc/tm.texi ! 2499571202b ./gcc/doloop.c 123944430b ./gcc/dominance.c 2660216905b ./gcc/doprint.c 2791449994b ./gcc/doschk.c *************** *** 1556,1562 **** 369471853b ./gcc/dwarf2.h 1793399413b ./gcc/dwarf2asm.c 3481577918b ./gcc/dwarf2asm.h ! 1091575516b ./gcc/dwarf2out.c 907111294b ./gcc/dwarf2out.h 1291353303b ./gcc/dwarfout.c 1589660034b ./gcc/dwarfout.h --- 1563,1569 ---- 369471853b ./gcc/dwarf2.h 1793399413b ./gcc/dwarf2asm.c 3481577918b ./gcc/dwarf2asm.h ! 3529109919b ./gcc/dwarf2out.c 907111294b ./gcc/dwarf2out.h 1291353303b ./gcc/dwarfout.c 1589660034b ./gcc/dwarfout.h *************** *** 1564,1581 **** 626897841b ./gcc/enquire.c 3097048689b ./gcc/errors.c 3948305090b ./gcc/errors.h ! 1058293138b ./gcc/except.c 3751320921b ./gcc/except.h 3470052574b ./gcc/exgettext 1523181895b ./gcc/explow.c 1640629260b ./gcc/expmed.c ! 2102481446b ./gcc/expr.c 3169905778b ./gcc/expr.h 2920655732b ./gcc/f/.cvsignore 496151338b ./gcc/f/BUGS ! 213841743b ./gcc/f/ChangeLog 4225493150b ./gcc/f/ChangeLog.0 ! 1959441375b ./gcc/f/Make-lang.in 4163515796b ./gcc/f/NEWS 281424983b ./gcc/f/README 3295584012b ./gcc/f/RELEASE-PREP --- 1571,1588 ---- 626897841b ./gcc/enquire.c 3097048689b ./gcc/errors.c 3948305090b ./gcc/errors.h ! 2118248124b ./gcc/except.c 3751320921b ./gcc/except.h 3470052574b ./gcc/exgettext 1523181895b ./gcc/explow.c 1640629260b ./gcc/expmed.c ! 351991323b ./gcc/expr.c 3169905778b ./gcc/expr.h 2920655732b ./gcc/f/.cvsignore 496151338b ./gcc/f/BUGS ! 3080971801b ./gcc/f/ChangeLog 4225493150b ./gcc/f/ChangeLog.0 ! 437764639b ./gcc/f/Make-lang.in 4163515796b ./gcc/f/NEWS 281424983b ./gcc/f/README 3295584012b ./gcc/f/RELEASE-PREP *************** *** 1645,1651 **** 1861938661b ./gcc/f/lab.c 1912790643b ./gcc/f/lab.h 1541062170b ./gcc/f/lang-options.h ! 2697598145b ./gcc/f/lang-specs.h 123352428b ./gcc/f/lex.c 3648980141b ./gcc/f/lex.h 3616710460b ./gcc/f/malloc.c --- 1652,1658 ---- 1861938661b ./gcc/f/lab.c 1912790643b ./gcc/f/lab.h 1541062170b ./gcc/f/lang-options.h ! 3052573854b ./gcc/f/lang-specs.h 123352428b ./gcc/f/lex.c 3648980141b ./gcc/f/lex.h 3616710460b ./gcc/f/malloc.c *************** *** 1699,1714 **** 1323122026b ./gcc/f/symbol.def 4185634583b ./gcc/f/symbol.h 2744008879b ./gcc/f/target.c ! 2888576815b ./gcc/f/target.h 3965009956b ./gcc/f/top.c 4257635887b ./gcc/f/top.h 3443401298b ./gcc/f/type.c 1269043734b ./gcc/f/type.h ! 1430487999b ./gcc/f/version.c 1880947867b ./gcc/f/version.h 3584291506b ./gcc/f/where.c 422122823b ./gcc/f/where.h ! 2449724627b ./gcc/final.c 3904468581b ./gcc/fix-header.c 3884502794b ./gcc/fixinc/Makefile.in 2351321356b ./gcc/fixinc/README --- 1706,1721 ---- 1323122026b ./gcc/f/symbol.def 4185634583b ./gcc/f/symbol.h 2744008879b ./gcc/f/target.c ! 2483223874b ./gcc/f/target.h 3965009956b ./gcc/f/top.c 4257635887b ./gcc/f/top.h 3443401298b ./gcc/f/type.c 1269043734b ./gcc/f/type.h ! 2927788807b ./gcc/f/version.c 1880947867b ./gcc/f/version.h 3584291506b ./gcc/f/where.c 422122823b ./gcc/f/where.h ! 1052098650b ./gcc/final.c 3904468581b ./gcc/fix-header.c 3884502794b ./gcc/fixinc/Makefile.in 2351321356b ./gcc/fixinc/README *************** *** 1720,1737 **** 1901674452b ./gcc/fixinc/fixinc.svr4 2193207840b ./gcc/fixinc/fixinc.winnt 1439814780b ./gcc/fixinc/fixinc.wrap ! 2436281382b ./gcc/fixinc/fixincl.c 4214658264b ./gcc/fixinc/fixincl.sh 2178021789b ./gcc/fixinc/fixincl.tpl ! 306422479b ./gcc/fixinc/fixincl.x 1372603529b ./gcc/fixinc/fixlib.c 971233728b ./gcc/fixinc/fixlib.h 4013194329b ./gcc/fixinc/fixtests.c 2003329934b ./gcc/fixinc/genfixes 3680461708b ./gcc/fixinc/gnu-regex.c 1403987073b ./gcc/fixinc/gnu-regex.h ! 1552151123b ./gcc/fixinc/inclhack.def ! 1662855861b ./gcc/fixinc/mkfixinc.sh 3901871541b ./gcc/fixinc/procopen.c 1750379031b ./gcc/fixinc/server.c 2895407134b ./gcc/fixinc/server.h --- 1727,1744 ---- 1901674452b ./gcc/fixinc/fixinc.svr4 2193207840b ./gcc/fixinc/fixinc.winnt 1439814780b ./gcc/fixinc/fixinc.wrap ! 1824978333b ./gcc/fixinc/fixincl.c 4214658264b ./gcc/fixinc/fixincl.sh 2178021789b ./gcc/fixinc/fixincl.tpl ! 3121350554b ./gcc/fixinc/fixincl.x 1372603529b ./gcc/fixinc/fixlib.c 971233728b ./gcc/fixinc/fixlib.h 4013194329b ./gcc/fixinc/fixtests.c 2003329934b ./gcc/fixinc/genfixes 3680461708b ./gcc/fixinc/gnu-regex.c 1403987073b ./gcc/fixinc/gnu-regex.h ! 1541023411b ./gcc/fixinc/inclhack.def ! 245955576b ./gcc/fixinc/mkfixinc.sh 3901871541b ./gcc/fixinc/procopen.c 1750379031b ./gcc/fixinc/server.c 2895407134b ./gcc/fixinc/server.h *************** *** 1757,1763 **** 2670651204b ./gcc/fixinc/tests/base/libgen.h 1854625388b ./gcc/fixinc/tests/base/machine/cpu.h 114078425b ./gcc/fixinc/tests/base/malloc.h ! 575808734b ./gcc/fixinc/tests/base/math.h 2373596333b ./gcc/fixinc/tests/base/netdnet/dnetdb.h 4211518276b ./gcc/fixinc/tests/base/netinet/ip.h 3107111098b ./gcc/fixinc/tests/base/pixrect/memvar.h --- 1764,1770 ---- 2670651204b ./gcc/fixinc/tests/base/libgen.h 1854625388b ./gcc/fixinc/tests/base/machine/cpu.h 114078425b ./gcc/fixinc/tests/base/malloc.h ! 2389003803b ./gcc/fixinc/tests/base/math.h 2373596333b ./gcc/fixinc/tests/base/netdnet/dnetdb.h 4211518276b ./gcc/fixinc/tests/base/netinet/ip.h 3107111098b ./gcc/fixinc/tests/base/pixrect/memvar.h *************** *** 1771,1777 **** 1831085175b ./gcc/fixinc/tests/base/rpcsvc/rstat.h 2162639252b ./gcc/fixinc/tests/base/rpcsvc/rusers.h 135186565b ./gcc/fixinc/tests/base/sparc/asm_linkage.h ! 2145323530b ./gcc/fixinc/tests/base/stdio.h 135522837b ./gcc/fixinc/tests/base/stdlib.h 2941232612b ./gcc/fixinc/tests/base/strings.h 482468002b ./gcc/fixinc/tests/base/sundev/vuid_event.h --- 1778,1784 ---- 1831085175b ./gcc/fixinc/tests/base/rpcsvc/rstat.h 2162639252b ./gcc/fixinc/tests/base/rpcsvc/rusers.h 135186565b ./gcc/fixinc/tests/base/sparc/asm_linkage.h ! 2925418517b ./gcc/fixinc/tests/base/stdio.h 135522837b ./gcc/fixinc/tests/base/stdlib.h 2941232612b ./gcc/fixinc/tests/base/strings.h 482468002b ./gcc/fixinc/tests/base/sundev/vuid_event.h *************** *** 1794,1800 **** 1174710562b ./gcc/fixinc/tests/base/sys/types.h 3923345847b ./gcc/fixinc/tests/base/sys/utsname.h 3579560225b ./gcc/fixinc/tests/base/sys/wait.h ! 2326532742b ./gcc/fixinc/tests/base/testing.h 10407256b ./gcc/fixinc/tests/base/time.h 3845139066b ./gcc/fixinc/tests/base/tinfo.h 4209310059b ./gcc/fixinc/tests/base/types/vxTypesBase.h --- 1801,1807 ---- 1174710562b ./gcc/fixinc/tests/base/sys/types.h 3923345847b ./gcc/fixinc/tests/base/sys/utsname.h 3579560225b ./gcc/fixinc/tests/base/sys/wait.h ! 2119077343b ./gcc/fixinc/tests/base/testing.h 10407256b ./gcc/fixinc/tests/base/time.h 3845139066b ./gcc/fixinc/tests/base/tinfo.h 4209310059b ./gcc/fixinc/tests/base/types/vxTypesBase.h *************** *** 1802,1808 **** 1711694323b ./gcc/fixproto 4214100853b ./gcc/flags.h 14144180b ./gcc/floatlib.c ! 1148505848b ./gcc/flow.c 3036032403b ./gcc/fold-const.c 814448160b ./gcc/fp-test.c 888363625b ./gcc/function.c --- 1809,1815 ---- 1711694323b ./gcc/fixproto 4214100853b ./gcc/flags.h 14144180b ./gcc/floatlib.c ! 645949506b ./gcc/flow.c 3036032403b ./gcc/fold-const.c 814448160b ./gcc/fp-test.c 888363625b ./gcc/function.c *************** *** 1810,1820 **** 1945284764b ./gcc/future.options 4221598017b ./gcc/gansidecl.h 4122921738b ./gcc/gbl-ctors.h ! 1168318307b ./gcc/gcc.c ! 2630706606b ./gcc/gcc.h 3891935819b ./gcc/gcc.hlp 2684927393b ./gcc/gccbug.in ! 1641833990b ./gcc/gccspec.c 1843506698b ./gcc/gcov-io.h 313069282b ./gcc/gcov.c 608033730b ./gcc/gcse.c --- 1817,1827 ---- 1945284764b ./gcc/future.options 4221598017b ./gcc/gansidecl.h 4122921738b ./gcc/gbl-ctors.h ! 4115725976b ./gcc/gcc.c ! 3913162253b ./gcc/gcc.h 3891935819b ./gcc/gcc.hlp 2684927393b ./gcc/gccbug.in ! 3916741943b ./gcc/gccspec.c 1843506698b ./gcc/gcov-io.h 313069282b ./gcc/gcov.c 608033730b ./gcc/gcse.c *************** *** 1844,1850 **** 684549565b ./gcc/ginclude/iso646.h 2766673945b ./gcc/ginclude/math-3300.h 3047408322b ./gcc/ginclude/math-68881.h ! 3196849793b ./gcc/ginclude/ppc-asm.h 2576905081b ./gcc/ginclude/proto.h 956736189b ./gcc/ginclude/stdarg.h 4095609490b ./gcc/ginclude/stdbool.h --- 1851,1857 ---- 684549565b ./gcc/ginclude/iso646.h 2766673945b ./gcc/ginclude/math-3300.h 3047408322b ./gcc/ginclude/math-68881.h ! 2851218889b ./gcc/ginclude/ppc-asm.h 2576905081b ./gcc/ginclude/proto.h 956736189b ./gcc/ginclude/stdarg.h 4095609490b ./gcc/ginclude/stdbool.h *************** *** 1865,1871 **** 2905827269b ./gcc/gthr-single.h 1038062946b ./gcc/gthr-solaris.h 2035828726b ./gcc/gthr-vxworks.h ! 1994804979b ./gcc/gthr-win32.h 2337416886b ./gcc/gthr.h 96676216b ./gcc/haifa-sched.c 3418019003b ./gcc/halfpic.c --- 1872,1878 ---- 2905827269b ./gcc/gthr-single.h 1038062946b ./gcc/gthr-solaris.h 2035828726b ./gcc/gthr-vxworks.h ! 82508872b ./gcc/gthr-win32.h 2337416886b ./gcc/gthr.h 96676216b ./gcc/haifa-sched.c 3418019003b ./gcc/halfpic.c *************** *** 1874,1887 **** 3760968495b ./gcc/hash.c 2987787285b ./gcc/hash.h 3658640867b ./gcc/hwint.h ! 1121895341b ./gcc/ifcvt.c 309316919b ./gcc/input.h 1198394584b ./gcc/insn-addr.h 3211908462b ./gcc/integrate.c 2996455768b ./gcc/integrate.h 1933110400b ./gcc/intl.c 1326021680b ./gcc/intl.h ! 1957716668b ./gcc/intl/ChangeLog 2608513953b ./gcc/intl/Makefile.in 1035788439b ./gcc/intl/VERSION 2050167308b ./gcc/intl/bindtextdom.c --- 1881,1894 ---- 3760968495b ./gcc/hash.c 2987787285b ./gcc/hash.h 3658640867b ./gcc/hwint.h ! 1398051783b ./gcc/ifcvt.c 309316919b ./gcc/input.h 1198394584b ./gcc/insn-addr.h 3211908462b ./gcc/integrate.c 2996455768b ./gcc/integrate.h 1933110400b ./gcc/intl.c 1326021680b ./gcc/intl.h ! 1671161077b ./gcc/intl/ChangeLog 2608513953b ./gcc/intl/Makefile.in 1035788439b ./gcc/intl/VERSION 2050167308b ./gcc/intl/bindtextdom.c *************** *** 1905,1918 **** 3722123962b ./gcc/intl/textdomain.c 2960721199b ./gcc/intl/xopen-msg.sed 4005572097b ./gcc/java/.cvsignore ! 2846269432b ./gcc/java/ChangeLog 3199045892b ./gcc/java/Make-lang.in 3788283147b ./gcc/java/boehm.c 2541917855b ./gcc/java/buffer.c 1535113190b ./gcc/java/buffer.h 3525399284b ./gcc/java/chartables.h 2664267463b ./gcc/java/check-init.c ! 3845730481b ./gcc/java/class.c 2038704444b ./gcc/java/config-lang.in 3496722225b ./gcc/java/constants.c 640032177b ./gcc/java/convert.h --- 1912,1925 ---- 3722123962b ./gcc/intl/textdomain.c 2960721199b ./gcc/intl/xopen-msg.sed 4005572097b ./gcc/java/.cvsignore ! 663649129b ./gcc/java/ChangeLog 3199045892b ./gcc/java/Make-lang.in 3788283147b ./gcc/java/boehm.c 2541917855b ./gcc/java/buffer.c 1535113190b ./gcc/java/buffer.h 3525399284b ./gcc/java/chartables.h 2664267463b ./gcc/java/check-init.c ! 247804317b ./gcc/java/class.c 2038704444b ./gcc/java/config-lang.in 3496722225b ./gcc/java/constants.c 640032177b ./gcc/java/convert.h *************** *** 1938,1945 **** 1146326619b ./gcc/java/jcf-write.c 1809110177b ./gcc/java/jcf.h 2686701189b ./gcc/java/jv-scan.c ! 4138083440b ./gcc/java/jvgenmain.c ! 3557411428b ./gcc/java/jvspec.c 3567108747b ./gcc/java/keyword.gperf 1595011281b ./gcc/java/keyword.h 1056131461b ./gcc/java/lang-options.h --- 1945,1952 ---- 1146326619b ./gcc/java/jcf-write.c 1809110177b ./gcc/java/jcf.h 2686701189b ./gcc/java/jv-scan.c ! 2779755583b ./gcc/java/jvgenmain.c ! 1154927807b ./gcc/java/jvspec.c 3567108747b ./gcc/java/keyword.gperf 1595011281b ./gcc/java/keyword.h 1056131461b ./gcc/java/lang-options.h *************** *** 1949,1957 **** 1271687574b ./gcc/java/lex.h 3274830053b ./gcc/java/mangle.c 2248284043b ./gcc/java/mangle_name.c ! 96916050b ./gcc/java/parse-scan.c 578153036b ./gcc/java/parse-scan.y ! 2814799967b ./gcc/java/parse.c 790738941b ./gcc/java/parse.h 3618600566b ./gcc/java/parse.y 3137203029b ./gcc/java/typeck.c --- 1956,1964 ---- 1271687574b ./gcc/java/lex.h 3274830053b ./gcc/java/mangle.c 2248284043b ./gcc/java/mangle_name.c ! 707618575b ./gcc/java/parse-scan.c 578153036b ./gcc/java/parse-scan.y ! 711551807b ./gcc/java/parse.c 790738941b ./gcc/java/parse.h 3618600566b ./gcc/java/parse.y 3137203029b ./gcc/java/typeck.c *************** *** 1972,1978 **** 4116099112b ./gcc/lists.c 3899123841b ./gcc/local-alloc.c 2278161154b ./gcc/longlong.h ! 4152471143b ./gcc/loop.c 3762441882b ./gcc/loop.h 983398590b ./gcc/machmode.def 2565031954b ./gcc/machmode.h --- 1979,1985 ---- 4116099112b ./gcc/lists.c 3899123841b ./gcc/local-alloc.c 2278161154b ./gcc/longlong.h ! 2626114710b ./gcc/loop.c 3762441882b ./gcc/loop.h 983398590b ./gcc/machmode.def 2565031954b ./gcc/machmode.h *************** *** 1986,1992 **** 1872345184b ./gcc/mkdeps.c 1784521594b ./gcc/mkdeps.h 827441351b ./gcc/mkinstalldirs ! 68016513b ./gcc/mklibgcc.in 2364607364b ./gcc/mkmap-flat.awk 60626456b ./gcc/mkmap-symver.awk 1597314052b ./gcc/move-if-change --- 1993,1999 ---- 1872345184b ./gcc/mkdeps.c 1784521594b ./gcc/mkdeps.h 827441351b ./gcc/mkinstalldirs ! 2925172224b ./gcc/mklibgcc.in 2364607364b ./gcc/mkmap-flat.awk 60626456b ./gcc/mkmap-symver.awk 1597314052b ./gcc/move-if-change *************** *** 1998,2005 **** 2977909645b ./gcc/objc/lang-specs.h 4226828284b ./gcc/objc/objc-act.c 3444272236b ./gcc/objc/objc-act.h ! 3815467981b ./gcc/objc/objc-parse.c ! 3649582771b ./gcc/objc/objc-parse.y 620378166b ./gcc/objc/objc-tree.def 1567868913b ./gcc/objc/objc.gperf 3926640974b ./gcc/optabs.c --- 2005,2012 ---- 2977909645b ./gcc/objc/lang-specs.h 4226828284b ./gcc/objc/objc-act.c 3444272236b ./gcc/objc/objc-act.h ! 1009656462b ./gcc/objc/objc-parse.c ! 619937598b ./gcc/objc/objc-parse.y 620378166b ./gcc/objc/objc-tree.def 1567868913b ./gcc/objc/objc.gperf 3926640974b ./gcc/optabs.c *************** *** 2008,2016 **** 52078911b ./gcc/params.def 200901683b ./gcc/params.h 1987145824b ./gcc/patch-apollo-includes ! 1044845750b ./gcc/po/ChangeLog 1909445789b ./gcc/po/Makefile.in.in ! 230456843b ./gcc/po/POTFILES.in 2625119691b ./gcc/po/cat-id-tbl.c 793353780b ./gcc/po/gcc.pot 216805921b ./gcc/po/stamp-cat-id --- 2015,2023 ---- 52078911b ./gcc/params.def 200901683b ./gcc/params.h 1987145824b ./gcc/patch-apollo-includes ! 221914905b ./gcc/po/ChangeLog 1909445789b ./gcc/po/Makefile.in.in ! 1504810947b ./gcc/po/POTFILES.in 2625119691b ./gcc/po/cat-id-tbl.c 793353780b ./gcc/po/gcc.pot 216805921b ./gcc/po/stamp-cat-id *************** *** 2028,2039 **** 3792773945b ./gcc/recog.h 3444596851b ./gcc/reg-stack.c 1357530535b ./gcc/regclass.c ! 3460075521b ./gcc/regmove.c 583135114b ./gcc/regrename.c 3830393261b ./gcc/regs.h 3006122128b ./gcc/reload.c 725417840b ./gcc/reload.h ! 715349482b ./gcc/reload1.c 2155579804b ./gcc/reorg.c 1244398550b ./gcc/resource.c 1586797891b ./gcc/resource.h --- 2035,2046 ---- 3792773945b ./gcc/recog.h 3444596851b ./gcc/reg-stack.c 1357530535b ./gcc/regclass.c ! 2081265358b ./gcc/regmove.c 583135114b ./gcc/regrename.c 3830393261b ./gcc/regs.h 3006122128b ./gcc/reload.c 725417840b ./gcc/reload.h ! 3062408354b ./gcc/reload1.c 2155579804b ./gcc/reorg.c 1244398550b ./gcc/resource.c 1586797891b ./gcc/resource.h *************** *** 2061,2079 **** 213938074b ./gcc/ssa.h 2395322097b ./gcc/stab.def 471587796b ./gcc/stack.h ! 335514606b ./gcc/stmt.c ! 996837816b ./gcc/stor-layout.c 1839687809b ./gcc/stringpool.c 567176141b ./gcc/sys-protos.h 482558466b ./gcc/sys-types.h 949648988b ./gcc/system.h ! 1554221349b ./gcc/testsuite/ChangeLog 986418331b ./gcc/testsuite/README 4258789052b ./gcc/testsuite/README.g++ 174183124b ./gcc/testsuite/README.gcc 1101480727b ./gcc/testsuite/config/default.exp 2175367674b ./gcc/testsuite/g++.dg/dg.exp 559527351b ./gcc/testsuite/g++.dg/mangle1.C 370035332b ./gcc/testsuite/g++.dg/special/conpr-1.C 1019201819b ./gcc/testsuite/g++.dg/special/conpr-2.C 1217683257b ./gcc/testsuite/g++.dg/special/conpr-2a.C --- 2068,2088 ---- 213938074b ./gcc/ssa.h 2395322097b ./gcc/stab.def 471587796b ./gcc/stack.h ! 269343607b ./gcc/stmt.c ! 3365131970b ./gcc/stor-layout.c 1839687809b ./gcc/stringpool.c 567176141b ./gcc/sys-protos.h 482558466b ./gcc/sys-types.h 949648988b ./gcc/system.h ! 150148496b ./gcc/testsuite/ChangeLog 986418331b ./gcc/testsuite/README 4258789052b ./gcc/testsuite/README.g++ 174183124b ./gcc/testsuite/README.gcc 1101480727b ./gcc/testsuite/config/default.exp 2175367674b ./gcc/testsuite/g++.dg/dg.exp 559527351b ./gcc/testsuite/g++.dg/mangle1.C + 522523166b ./gcc/testsuite/g++.dg/ref1.C + 1942107252b ./gcc/testsuite/g++.dg/sizeof1.C 370035332b ./gcc/testsuite/g++.dg/special/conpr-1.C 1019201819b ./gcc/testsuite/g++.dg/special/conpr-2.C 1217683257b ./gcc/testsuite/g++.dg/special/conpr-2a.C *************** *** 3236,3242 **** 1937028645b ./gcc/testsuite/g++.old-deja/g++.law/cvt4.C 2149948272b ./gcc/testsuite/g++.old-deja/g++.law/cvt5.C 1375863901b ./gcc/testsuite/g++.old-deja/g++.law/cvt6.C ! 3875047485b ./gcc/testsuite/g++.old-deja/g++.law/cvt7.C 4106332146b ./gcc/testsuite/g++.old-deja/g++.law/cvt8.C 3074219571b ./gcc/testsuite/g++.old-deja/g++.law/cvt9.C 3892359310b ./gcc/testsuite/g++.old-deja/g++.law/dossier1.C --- 3245,3251 ---- 1937028645b ./gcc/testsuite/g++.old-deja/g++.law/cvt4.C 2149948272b ./gcc/testsuite/g++.old-deja/g++.law/cvt5.C 1375863901b ./gcc/testsuite/g++.old-deja/g++.law/cvt6.C ! 1268590000b ./gcc/testsuite/g++.old-deja/g++.law/cvt7.C 4106332146b ./gcc/testsuite/g++.old-deja/g++.law/cvt8.C 3074219571b ./gcc/testsuite/g++.old-deja/g++.law/cvt9.C 3892359310b ./gcc/testsuite/g++.old-deja/g++.law/dossier1.C *************** *** 3666,3673 **** 791627116b ./gcc/testsuite/g++.old-deja/g++.mike/p4736b.C 3037713609b ./gcc/testsuite/g++.old-deja/g++.mike/p4736c.C 3183066012b ./gcc/testsuite/g++.old-deja/g++.mike/p4750.C ! 3056895628b ./gcc/testsuite/g++.old-deja/g++.mike/p5469.C ! 3540390210b ./gcc/testsuite/g++.old-deja/g++.mike/p5469a.C 1694086012b ./gcc/testsuite/g++.old-deja/g++.mike/p5571.C 2030989669b ./gcc/testsuite/g++.old-deja/g++.mike/p5611.C 3220562563b ./gcc/testsuite/g++.old-deja/g++.mike/p5673.C --- 3675,3682 ---- 791627116b ./gcc/testsuite/g++.old-deja/g++.mike/p4736b.C 3037713609b ./gcc/testsuite/g++.old-deja/g++.mike/p4736c.C 3183066012b ./gcc/testsuite/g++.old-deja/g++.mike/p4750.C ! 2783396832b ./gcc/testsuite/g++.old-deja/g++.mike/p5469.C ! 1643480270b ./gcc/testsuite/g++.old-deja/g++.mike/p5469a.C 1694086012b ./gcc/testsuite/g++.old-deja/g++.mike/p5571.C 2030989669b ./gcc/testsuite/g++.old-deja/g++.mike/p5611.C 3220562563b ./gcc/testsuite/g++.old-deja/g++.mike/p5673.C *************** *** 3897,3903 **** 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 ! 2957842485b ./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 --- 3906,3912 ---- 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 ! 3391153903b ./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 *************** *** 4012,4017 **** --- 4021,4027 ---- 3821789807b ./gcc/testsuite/g++.old-deja/g++.other/conv7.C 3587605986b ./gcc/testsuite/g++.old-deja/g++.other/copy1.C 3735054018b ./gcc/testsuite/g++.old-deja/g++.other/copy2.C + 4116304803b ./gcc/testsuite/g++.old-deja/g++.other/copy3.C 809878899b ./gcc/testsuite/g++.old-deja/g++.other/covar1.C 1458918645b ./gcc/testsuite/g++.old-deja/g++.other/crash1.C 2622243234b ./gcc/testsuite/g++.old-deja/g++.other/crash10.C *************** *** 4138,4143 **** --- 4148,4154 ---- 106210432b ./gcc/testsuite/g++.old-deja/g++.other/externC2.C 763760707b ./gcc/testsuite/g++.old-deja/g++.other/externC3.C 3610590692b ./gcc/testsuite/g++.old-deja/g++.other/externC4.C + 1052362663b ./gcc/testsuite/g++.old-deja/g++.other/externC5.C 778443229b ./gcc/testsuite/g++.old-deja/g++.other/field1.C 250200362b ./gcc/testsuite/g++.old-deja/g++.other/field2.C 1648602614b ./gcc/testsuite/g++.old-deja/g++.other/fnname1.C *************** *** 4782,4787 **** --- 4793,4799 ---- 1810826153b ./gcc/testsuite/g++.old-deja/g++.pt/memclass9.C 1224975036b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp1.C 2904180820b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp10.C + 4058618179b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C 2282254491b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp11.C 1976328805b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp12.C 1239088058b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp13.C *************** *** 5315,5320 **** --- 5327,5333 ---- 1434994100b ./gcc/testsuite/g++.old-deja/g++.warn/impint2.C 308484502b ./gcc/testsuite/g++.old-deja/g++.warn/inline.C 3053994732b ./gcc/testsuite/g++.old-deja/g++.warn/iomanip.C + 3603456747b ./gcc/testsuite/g++.old-deja/g++.warn/virt1.C 1192919505b ./gcc/testsuite/g++.old-deja/old-deja.exp 2710099993b ./gcc/testsuite/g77.dg/20010216-1.f 1815830648b ./gcc/testsuite/g77.dg/dg.exp *************** *** 5518,5523 **** --- 5531,5539 ---- 3077114319b ./gcc/testsuite/gcc.c-torture/compile/20010611-1.c 246682254b ./gcc/testsuite/gcc.c-torture/compile/20010903-1.c 1179192833b ./gcc/testsuite/gcc.c-torture/compile/20011010-1.c + 1413783183b ./gcc/testsuite/gcc.c-torture/compile/20011029-1.c + 259957404b ./gcc/testsuite/gcc.c-torture/compile/20011109-1.c + 3987052556b ./gcc/testsuite/gcc.c-torture/compile/20011205-1.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 *************** *** 6809,6814 **** --- 6825,6831 ---- 3796475762b ./gcc/testsuite/gcc.dg/compare1.c 280070085b ./gcc/testsuite/gcc.dg/compare2.c 1929905505b ./gcc/testsuite/gcc.dg/compare3.c + 2444556566b ./gcc/testsuite/gcc.dg/concat.c 872352985b ./gcc/testsuite/gcc.dg/conv-1.c 2296607049b ./gcc/testsuite/gcc.dg/cpp/19921210-1.c 446012754b ./gcc/testsuite/gcc.dg/cpp/19930510-1.c *************** *** 6947,6953 **** 858950276b ./gcc/testsuite/gcc.dg/cpp/pragma-1.c 2473416313b ./gcc/testsuite/gcc.dg/cpp/pragma-2.c 1107840471b ./gcc/testsuite/gcc.dg/cpp/redef1.c ! 3231647572b ./gcc/testsuite/gcc.dg/cpp/redef2.c 3846911977b ./gcc/testsuite/gcc.dg/cpp/skipping.c 4230263348b ./gcc/testsuite/gcc.dg/cpp/spacing1.c 3081823659b ./gcc/testsuite/gcc.dg/cpp/strify1.c --- 6964,6970 ---- 858950276b ./gcc/testsuite/gcc.dg/cpp/pragma-1.c 2473416313b ./gcc/testsuite/gcc.dg/cpp/pragma-2.c 1107840471b ./gcc/testsuite/gcc.dg/cpp/redef1.c ! 1601641321b ./gcc/testsuite/gcc.dg/cpp/redef2.c 3846911977b ./gcc/testsuite/gcc.dg/cpp/skipping.c 4230263348b ./gcc/testsuite/gcc.dg/cpp/spacing1.c 3081823659b ./gcc/testsuite/gcc.dg/cpp/strify1.c *************** *** 7274,7281 **** 2056968410b ./gcc/timevar.c 780535585b ./gcc/timevar.def 3918443491b ./gcc/timevar.h ! 3255809228b ./gcc/tlink.c ! 3744765622b ./gcc/toplev.c 3421121434b ./gcc/toplev.h 3381960764b ./gcc/tradcif.c 2773797431b ./gcc/tradcif.y --- 7291,7298 ---- 2056968410b ./gcc/timevar.c 780535585b ./gcc/timevar.def 3918443491b ./gcc/timevar.h ! 697833503b ./gcc/tlink.c ! 3644362593b ./gcc/toplev.c 3421121434b ./gcc/toplev.h 3381960764b ./gcc/tradcif.c 2773797431b ./gcc/tradcif.y *************** *** 7287,7293 **** 231560538b ./gcc/tsystem.h 4139263293b ./gcc/typeclass.h 17641651b ./gcc/unprotoize.c ! 3034634162b ./gcc/unroll.c 298823486b ./gcc/unwind-dw2-fde.c 2579082273b ./gcc/unwind-dw2-fde.h 1325164416b ./gcc/unwind-dw2.c --- 7304,7310 ---- 231560538b ./gcc/tsystem.h 4139263293b ./gcc/typeclass.h 17641651b ./gcc/unprotoize.c ! 1475109513b ./gcc/unroll.c 298823486b ./gcc/unwind-dw2-fde.c 2579082273b ./gcc/unwind-dw2-fde.h 1325164416b ./gcc/unwind-dw2.c *************** *** 7298,7311 **** 1491937623b ./gcc/varasm.c 740604337b ./gcc/varray.c 3918364708b ./gcc/varray.h ! 1464599016b ./gcc/version.c 1227851131b ./gcc/version.h 1040256635b ./gcc/vmsconfig.com 4121715740b ./gcc/xcoffout.c 2574034949b ./gcc/xcoffout.h 3832073952b ./gnats.html 2171125041b ./include/COPYING ! 4045792881b ./include/ChangeLog 888917931b ./include/ansidecl.h 1789350587b ./include/demangle.h 2980645374b ./include/dyn-string.h --- 7315,7328 ---- 1491937623b ./gcc/varasm.c 740604337b ./gcc/varray.c 3918364708b ./gcc/varray.h ! 4025509517b ./gcc/version.c 1227851131b ./gcc/version.h 1040256635b ./gcc/vmsconfig.com 4121715740b ./gcc/xcoffout.c 2574034949b ./gcc/xcoffout.h 3832073952b ./gnats.html 2171125041b ./include/COPYING ! 1449219214b ./include/ChangeLog 888917931b ./include/ansidecl.h 1789350587b ./include/demangle.h 2980645374b ./include/dyn-string.h *************** *** 7323,7329 **** 176339077b ./include/splay-tree.h 1653599470b ./include/symcat.h 4171599065b ./install-sh ! 4014153537b ./libf2c/ChangeLog 57434001b ./libf2c/Makefile.in 3111321221b ./libf2c/README 308226469b ./libf2c/TODO --- 7340,7346 ---- 176339077b ./include/splay-tree.h 1653599470b ./include/symcat.h 4171599065b ./install-sh ! 264260950b ./libf2c/ChangeLog 57434001b ./libf2c/Makefile.in 3111321221b ./libf2c/README 308226469b ./libf2c/TODO *************** *** 7335,7344 **** 332556269b ./libf2c/f2cext.c 3266643335b ./libf2c/g2c.hin 317136894b ./libf2c/libF77/F77_aloc.c ! 1147257543b ./libf2c/libF77/Makefile.in 1384146782b ./libf2c/libF77/Notice 3594711912b ./libf2c/libF77/README.netlib ! 2358276950b ./libf2c/libF77/Version.c 1304659322b ./libf2c/libF77/abort_.c 2143735092b ./libf2c/libF77/c_abs.c 4102372920b ./libf2c/libF77/c_cos.c --- 7352,7361 ---- 332556269b ./libf2c/f2cext.c 3266643335b ./libf2c/g2c.hin 317136894b ./libf2c/libF77/F77_aloc.c ! 3068841118b ./libf2c/libF77/Makefile.in 1384146782b ./libf2c/libF77/Notice 3594711912b ./libf2c/libF77/README.netlib ! 3204374780b ./libf2c/libF77/Version.c 1304659322b ./libf2c/libF77/abort_.c 2143735092b ./libf2c/libF77/c_abs.c 4102372920b ./libf2c/libF77/c_cos.c *************** *** 7470,7476 **** 999500799b ./libf2c/libI77/Makefile.in 1384146782b ./libf2c/libI77/Notice 3744878144b ./libf2c/libI77/README.netlib ! 211241024b ./libf2c/libI77/Version.c 1131505415b ./libf2c/libI77/backspace.c 2398093876b ./libf2c/libI77/close.c 3931934799b ./libf2c/libI77/config.h.in --- 7487,7493 ---- 999500799b ./libf2c/libI77/Makefile.in 1384146782b ./libf2c/libI77/Notice 3744878144b ./libf2c/libI77/README.netlib ! 1456222052b ./libf2c/libI77/Version.c 1131505415b ./libf2c/libI77/backspace.c 2398093876b ./libf2c/libI77/close.c 3931934799b ./libf2c/libI77/config.h.in *************** *** 7479,7485 **** 3018153615b ./libf2c/libI77/dfe.c 1498544240b ./libf2c/libI77/dolio.c 4283690771b ./libf2c/libI77/due.c ! 879637007b ./libf2c/libI77/endfile.c 3237984441b ./libf2c/libI77/err.c 3294101487b ./libf2c/libI77/f2ch.add 3487746107b ./libf2c/libI77/fio.h --- 7496,7502 ---- 3018153615b ./libf2c/libI77/dfe.c 1498544240b ./libf2c/libI77/dolio.c 4283690771b ./libf2c/libI77/due.c ! 1211665159b ./libf2c/libI77/endfile.c 3237984441b ./libf2c/libI77/err.c 3294101487b ./libf2c/libI77/f2ch.add 3487746107b ./libf2c/libI77/fio.h *************** *** 7518,7524 **** 2966234338b ./libf2c/libU77/Makefile.in 572996563b ./libf2c/libU77/PROJECTS 2980229902b ./libf2c/libU77/README ! 2451964497b ./libf2c/libU77/Version.c 1842933802b ./libf2c/libU77/access_.c 4214861580b ./libf2c/libU77/acconfig.h 2301261828b ./libf2c/libU77/aclocal.m4 --- 7535,7541 ---- 2966234338b ./libf2c/libU77/Makefile.in 572996563b ./libf2c/libU77/PROJECTS 2980229902b ./libf2c/libU77/README ! 1842740396b ./libf2c/libU77/Version.c 1842933802b ./libf2c/libU77/access_.c 4214861580b ./libf2c/libU77/acconfig.h 2301261828b ./libf2c/libU77/aclocal.m4 *************** *** 7580,7586 **** 3987376609b ./libf2c/libU77/vxttime_.c 1384146782b ./libf2c/permission.netlib 3513813969b ./libf2c/readme.netlib ! 2825692990b ./libffi/ChangeLog 2412263940b ./libffi/ChangeLog.libgcj 1481682558b ./libffi/ChangeLog.v1 2593181117b ./libffi/LICENSE --- 7597,7603 ---- 3987376609b ./libf2c/libU77/vxttime_.c 1384146782b ./libf2c/permission.netlib 3513813969b ./libf2c/readme.netlib ! 2894311362b ./libffi/ChangeLog 2412263940b ./libffi/ChangeLog.libgcj 1481682558b ./libffi/ChangeLog.v1 2593181117b ./libffi/LICENSE *************** *** 7630,7637 **** 4026965770b ./libffi/src/x86/win32.S 216805921b ./libffi/stamp-h.in 508743035b ./libiberty/COPYING.LIB ! 1610441598b ./libiberty/ChangeLog ! 1950042116b ./libiberty/Makefile.in 4016047250b ./libiberty/README 4152189310b ./libiberty/aclocal.m4 879652143b ./libiberty/alloca-conf.h --- 7647,7654 ---- 4026965770b ./libffi/src/x86/win32.S 216805921b ./libffi/stamp-h.in 508743035b ./libiberty/COPYING.LIB ! 2696201583b ./libiberty/ChangeLog ! 2883770811b ./libiberty/Makefile.in 4016047250b ./libiberty/README 4152189310b ./libiberty/aclocal.m4 879652143b ./libiberty/alloca-conf.h *************** *** 7661,7667 **** 2374920525b ./libiberty/configure.in 3602665671b ./libiberty/copysign.c 382214955b ./libiberty/cp-demangle.c ! 2181362183b ./libiberty/cplus-dem.c 1493405776b ./libiberty/dyn-string.c 2375131771b ./libiberty/fdmatch.c 3402508166b ./libiberty/floatformat.c --- 7678,7684 ---- 2374920525b ./libiberty/configure.in 3602665671b ./libiberty/copysign.c 382214955b ./libiberty/cp-demangle.c ! 2736791262b ./libiberty/cplus-dem.c 1493405776b ./libiberty/dyn-string.c 2375131771b ./libiberty/fdmatch.c 3402508166b ./libiberty/floatformat.c *************** *** 7716,7722 **** 974873767b ./libiberty/strtol.c 1828706574b ./libiberty/strtoul.c 2389145348b ./libiberty/testsuite/Makefile.in ! 1979662792b ./libiberty/testsuite/demangle-expected 1807149783b ./libiberty/testsuite/regress-demangle 1688081427b ./libiberty/tmpnam.c 1231940410b ./libiberty/vasprintf.c --- 7733,7739 ---- 974873767b ./libiberty/strtol.c 1828706574b ./libiberty/strtoul.c 2389145348b ./libiberty/testsuite/Makefile.in ! 1232507167b ./libiberty/testsuite/demangle-expected 1807149783b ./libiberty/testsuite/regress-demangle 1688081427b ./libiberty/tmpnam.c 1231940410b ./libiberty/vasprintf.c *************** *** 7733,7739 **** 3859667112b ./libiberty/xstrdup.c 2509140929b ./libiberty/xstrerror.c 2171125041b ./libjava/COPYING ! 351416319b ./libjava/ChangeLog 3473562392b ./libjava/ChangeLog-1999 3913589198b ./libjava/HACKING 2906142423b ./libjava/LIBGCJ_LICENSE --- 7750,7756 ---- 3859667112b ./libiberty/xstrdup.c 2509140929b ./libiberty/xstrerror.c 2171125041b ./libjava/COPYING ! 3699633081b ./libjava/ChangeLog 3473562392b ./libjava/ChangeLog-1999 3913589198b ./libjava/HACKING 2906142423b ./libjava/LIBGCJ_LICENSE *************** *** 7748,7754 **** 3784840223b ./libjava/addr2name.awk 608342622b ./libjava/boehm.cc 1179658282b ./libjava/chartables.pl ! 4248440651b ./libjava/configure 3242339555b ./libjava/configure.host 2518793201b ./libjava/configure.in 3942405165b ./libjava/defineclass.cc --- 7765,7771 ---- 3784840223b ./libjava/addr2name.awk 608342622b ./libjava/boehm.cc 1179658282b ./libjava/chartables.pl ! 652541543b ./libjava/configure 3242339555b ./libjava/configure.host 2518793201b ./libjava/configure.in 3942405165b ./libjava/defineclass.cc *************** *** 8668,8680 **** 2067382225b ./libjava/javax/naming/spi/InitialContextFactoryBuilder.java 1709476683b ./libjava/javax/naming/spi/NamingManager.java 562080873b ./libjava/javax/naming/spi/ObjectFactory.java ! 2965503045b ./libjava/jni.cc 3263845190b ./libjava/libgcj-test.spec.in 1618850334b ./libjava/libgcj.spec.in 3693275905b ./libjava/libgcjdata.c 1996902805b ./libjava/libltdl/.cvsignore 1530919786b ./libjava/libltdl/COPYING.LIB ! 3848332079b ./libjava/libltdl/ChangeLog 3589765398b ./libjava/libltdl/Makefile.am 2495909158b ./libjava/libltdl/Makefile.in 1322928877b ./libjava/libltdl/README --- 8685,8697 ---- 2067382225b ./libjava/javax/naming/spi/InitialContextFactoryBuilder.java 1709476683b ./libjava/javax/naming/spi/NamingManager.java 562080873b ./libjava/javax/naming/spi/ObjectFactory.java ! 2194098132b ./libjava/jni.cc 3263845190b ./libjava/libgcj-test.spec.in 1618850334b ./libjava/libgcj.spec.in 3693275905b ./libjava/libgcjdata.c 1996902805b ./libjava/libltdl/.cvsignore 1530919786b ./libjava/libltdl/COPYING.LIB ! 2067897300b ./libjava/libltdl/ChangeLog 3589765398b ./libjava/libltdl/Makefile.am 2495909158b ./libjava/libltdl/Makefile.in 1322928877b ./libjava/libltdl/README *************** *** 8705,8711 **** 1359447378b ./libjava/scripts/showval.java 3969226176b ./libjava/sysdep/ia64-frame.h 4255020929b ./libjava/sysdep/ia64.c ! 266237528b ./libjava/testsuite/ChangeLog 3806425466b ./libjava/testsuite/Makefile.am 1253427395b ./libjava/testsuite/Makefile.in 1230501773b ./libjava/testsuite/config/default.exp --- 8722,8728 ---- 1359447378b ./libjava/scripts/showval.java 3969226176b ./libjava/sysdep/ia64-frame.h 4255020929b ./libjava/sysdep/ia64.c ! 1764111269b ./libjava/testsuite/ChangeLog 3806425466b ./libjava/testsuite/Makefile.am 1253427395b ./libjava/testsuite/Makefile.in 1230501773b ./libjava/testsuite/config/default.exp *************** *** 9064,9070 **** 1032868016b ./libjava/testsuite/libjava.mauve/mauve.exp 168151904b ./libjava/testsuite/libjava.mauve/xfails 1531406287b ./libjava/win32-threads.cc ! 1121501330b ./libobjc/ChangeLog 3802413505b ./libobjc/Makefile.in 638422313b ./libobjc/NXConstStr.m 3285287551b ./libobjc/Object.m --- 9081,9087 ---- 1032868016b ./libjava/testsuite/libjava.mauve/mauve.exp 168151904b ./libjava/testsuite/libjava.mauve/xfails 1531406287b ./libjava/win32-threads.cc ! 1855631810b ./libobjc/ChangeLog 3802413505b ./libobjc/Makefile.in 638422313b ./libobjc/NXConstStr.m 3285287551b ./libobjc/Object.m *************** *** 9119,9133 **** 2005277748b ./libobjc/thr-vxworks.c 2963027857b ./libobjc/thr-win32.c 1509327042b ./libobjc/thr.c ! 1971839529b ./libstdc++-v3/ChangeLog 4193951875b ./libstdc++-v3/ChangeLog-2000 2737980541b ./libstdc++-v3/Makefile.am 455890377b ./libstdc++-v3/Makefile.in 476340085b ./libstdc++-v3/README ! 1785366352b ./libstdc++-v3/acconfig.h ! 941843433b ./libstdc++-v3/acinclude.m4 ! 1507045635b ./libstdc++-v3/aclocal.m4 ! 3139938778b ./libstdc++-v3/config.h.in 1453199454b ./libstdc++-v3/config/basic_file_libio.cc 440650960b ./libstdc++-v3/config/basic_file_libio.h 3327448769b ./libstdc++-v3/config/basic_file_stdio.cc --- 9136,9150 ---- 2005277748b ./libobjc/thr-vxworks.c 2963027857b ./libobjc/thr-win32.c 1509327042b ./libobjc/thr.c ! 2988995043b ./libstdc++-v3/ChangeLog 4193951875b ./libstdc++-v3/ChangeLog-2000 2737980541b ./libstdc++-v3/Makefile.am 455890377b ./libstdc++-v3/Makefile.in 476340085b ./libstdc++-v3/README ! 1454978311b ./libstdc++-v3/acconfig.h ! 3758211099b ./libstdc++-v3/acinclude.m4 ! 1723321994b ./libstdc++-v3/aclocal.m4 ! 3992870177b ./libstdc++-v3/config.h.in 1453199454b ./libstdc++-v3/config/basic_file_libio.cc 440650960b ./libstdc++-v3/config/basic_file_libio.h 3327448769b ./libstdc++-v3/config/basic_file_stdio.cc *************** *** 9209,9215 **** 3980190828b ./libstdc++-v3/config/os/solaris/solaris2.7/bits/ctype_inline.h 1735304697b ./libstdc++-v3/config/os/solaris/solaris2.7/bits/ctype_noninline.h 186536916b ./libstdc++-v3/config/os/solaris/solaris2.7/bits/os_defines.h ! 2689720803b ./libstdc++-v3/configure 3116040814b ./libstdc++-v3/configure.host 502813057b ./libstdc++-v3/configure.in 2732356862b ./libstdc++-v3/configure.target --- 9226,9232 ---- 3980190828b ./libstdc++-v3/config/os/solaris/solaris2.7/bits/ctype_inline.h 1735304697b ./libstdc++-v3/config/os/solaris/solaris2.7/bits/ctype_noninline.h 186536916b ./libstdc++-v3/config/os/solaris/solaris2.7/bits/os_defines.h ! 2449261353b ./libstdc++-v3/configure 3116040814b ./libstdc++-v3/configure.host 502813057b ./libstdc++-v3/configure.in 2732356862b ./libstdc++-v3/configure.target *************** *** 9219,9248 **** 863086283b ./libstdc++-v3/docs/doxygen/style.css 404838806b ./libstdc++-v3/docs/doxygen/user.cfg.in 4001239912b ./libstdc++-v3/docs/html/17_intro/BADNAMES ! 1897516117b ./libstdc++-v3/docs/html/17_intro/BUGS ! 1657776562b ./libstdc++-v3/docs/html/17_intro/C++STYLE ! 1484663604b ./libstdc++-v3/docs/html/17_intro/CHECKLIST 2171125041b ./libstdc++-v3/docs/html/17_intro/COPYING 3922222294b ./libstdc++-v3/docs/html/17_intro/COPYING.DOC ! 200707478b ./libstdc++-v3/docs/html/17_intro/DESIGN 1363011462b ./libstdc++-v3/docs/html/17_intro/HEADER_POLICY 12001592b ./libstdc++-v3/docs/html/17_intro/PROBLEMS 698966724b ./libstdc++-v3/docs/html/17_intro/RELEASE-NOTES ! 1612896665b ./libstdc++-v3/docs/html/17_intro/TODO 3997884874b ./libstdc++-v3/docs/html/17_intro/concept_check.diff 3326490253b ./libstdc++-v3/docs/html/17_intro/contribute.html 3461116413b ./libstdc++-v3/docs/html/17_intro/headers_cc.txt ! 2817107662b ./libstdc++-v3/docs/html/17_intro/howto.html 3565645043b ./libstdc++-v3/docs/html/17_intro/libstdc++-assign.txt ! 2228462606b ./libstdc++-v3/docs/html/17_intro/license.html 982764901b ./libstdc++-v3/docs/html/17_intro/organization ! 1278915005b ./libstdc++-v3/docs/html/17_intro/porting-howto.html ! 3336170739b ./libstdc++-v3/docs/html/17_intro/porting-howto.xml ! 2063480760b ./libstdc++-v3/docs/html/18_support/howto.html ! 1410322631b ./libstdc++-v3/docs/html/19_diagnostics/howto.html ! 2835046806b ./libstdc++-v3/docs/html/20_util/howto.html 2326263830b ./libstdc++-v3/docs/html/21_strings/gotw29a.txt ! 456495239b ./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 --- 9236,9267 ---- 863086283b ./libstdc++-v3/docs/doxygen/style.css 404838806b ./libstdc++-v3/docs/doxygen/user.cfg.in 4001239912b ./libstdc++-v3/docs/html/17_intro/BADNAMES ! 985890621b ./libstdc++-v3/docs/html/17_intro/BUGS ! 2419103289b ./libstdc++-v3/docs/html/17_intro/C++STYLE ! 2881598729b ./libstdc++-v3/docs/html/17_intro/CHECKLIST 2171125041b ./libstdc++-v3/docs/html/17_intro/COPYING 3922222294b ./libstdc++-v3/docs/html/17_intro/COPYING.DOC ! 3222542515b ./libstdc++-v3/docs/html/17_intro/DESIGN 1363011462b ./libstdc++-v3/docs/html/17_intro/HEADER_POLICY 12001592b ./libstdc++-v3/docs/html/17_intro/PROBLEMS 698966724b ./libstdc++-v3/docs/html/17_intro/RELEASE-NOTES ! 3997667910b ./libstdc++-v3/docs/html/17_intro/TODO 3997884874b ./libstdc++-v3/docs/html/17_intro/concept_check.diff 3326490253b ./libstdc++-v3/docs/html/17_intro/contribute.html 3461116413b ./libstdc++-v3/docs/html/17_intro/headers_cc.txt ! 2379403154b ./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 ! 4058128368b ./libstdc++-v3/docs/html/17_intro/porting-howto.html ! 424990165b ./libstdc++-v3/docs/html/17_intro/porting-howto.xml ! 2455364651b ./libstdc++-v3/docs/html/17_intro/porting.html ! 127841094b ./libstdc++-v3/docs/html/17_intro/porting.texi ! 3329218498b ./libstdc++-v3/docs/html/18_support/howto.html ! 2268070041b ./libstdc++-v3/docs/html/19_diagnostics/howto.html ! 2248597755b ./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 *************** *** 9250,9273 **** 1554570816b ./libstdc++-v3/docs/html/22_locale/howto.html 60951948b ./libstdc++-v3/docs/html/22_locale/locale.html 2961292476b ./libstdc++-v3/docs/html/22_locale/messages.html ! 3038307209b ./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 ! 4004053273b ./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 ! 3113980624b ./libstdc++-v3/docs/html/27_io/howto.html ! 1631173890b ./libstdc++-v3/docs/html/Makefile 1903336430b ./libstdc++-v3/docs/html/configopts.html ! 95080851b ./libstdc++-v3/docs/html/documentation.html ! 3445372463b ./libstdc++-v3/docs/html/explanations.html ! 2886809538b ./libstdc++-v3/docs/html/ext/howto.html ! 2864809450b ./libstdc++-v3/docs/html/ext/lwg-active.html ! 3144932103b ./libstdc++-v3/docs/html/ext/lwg-defects.html ! 2490001280b ./libstdc++-v3/docs/html/ext/sgiexts.html ! 3349943401b ./libstdc++-v3/docs/html/faq/index.html ! 3450973058b ./libstdc++-v3/docs/html/faq/index.txt 3510747379b ./libstdc++-v3/docs/html/install.html 2049389478b ./libstdc++-v3/docs/html/lib3styles.css 1018934202b ./libstdc++-v3/include/Makefile.am --- 9269,9292 ---- 1554570816b ./libstdc++-v3/docs/html/22_locale/howto.html 60951948b ./libstdc++-v3/docs/html/22_locale/locale.html 2961292476b ./libstdc++-v3/docs/html/22_locale/messages.html ! 2056976870b ./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 ! 2949880033b ./libstdc++-v3/docs/html/27_io/howto.html ! 3129179057b ./libstdc++-v3/docs/html/Makefile 1903336430b ./libstdc++-v3/docs/html/configopts.html ! 2546324033b ./libstdc++-v3/docs/html/documentation.html ! 3529196048b ./libstdc++-v3/docs/html/explanations.html ! 1226112276b ./libstdc++-v3/docs/html/ext/howto.html ! 3141721309b ./libstdc++-v3/docs/html/ext/lwg-active.html ! 3531115263b ./libstdc++-v3/docs/html/ext/lwg-defects.html ! 3111249657b ./libstdc++-v3/docs/html/ext/sgiexts.html ! 2202036139b ./libstdc++-v3/docs/html/faq/index.html ! 2188256919b ./libstdc++-v3/docs/html/faq/index.txt 3510747379b ./libstdc++-v3/docs/html/install.html 2049389478b ./libstdc++-v3/docs/html/lib3styles.css 1018934202b ./libstdc++-v3/include/Makefile.am *************** *** 9313,9327 **** 2964830866b ./libstdc++-v3/include/bits/basic_ios.h 2254012334b ./libstdc++-v3/include/bits/basic_ios.tcc 2082508960b ./libstdc++-v3/include/bits/basic_string.h ! 1857306722b ./libstdc++-v3/include/bits/basic_string.tcc ! 1664028266b ./libstdc++-v3/include/bits/boost_concept_check.h ! 3612158683b ./libstdc++-v3/include/bits/c++config 2314692779b ./libstdc++-v3/include/bits/char_traits.h 2805936695b ./libstdc++-v3/include/bits/codecvt.h 4120003531b ./libstdc++-v3/include/bits/concept_check.h 4222967943b ./libstdc++-v3/include/bits/concept_checks.h 3638262457b ./libstdc++-v3/include/bits/container_concepts.h ! 3915319002b ./libstdc++-v3/include/bits/cpp_type_traits.h 1601132351b ./libstdc++-v3/include/bits/fpos.h 3545962146b ./libstdc++-v3/include/bits/fstream.tcc 3886600201b ./libstdc++-v3/include/bits/functexcept.h --- 9332,9346 ---- 2964830866b ./libstdc++-v3/include/bits/basic_ios.h 2254012334b ./libstdc++-v3/include/bits/basic_ios.tcc 2082508960b ./libstdc++-v3/include/bits/basic_string.h ! 1457427451b ./libstdc++-v3/include/bits/basic_string.tcc ! 683603772b ./libstdc++-v3/include/bits/boost_concept_check.h ! 1775688865b ./libstdc++-v3/include/bits/c++config 2314692779b ./libstdc++-v3/include/bits/char_traits.h 2805936695b ./libstdc++-v3/include/bits/codecvt.h 4120003531b ./libstdc++-v3/include/bits/concept_check.h 4222967943b ./libstdc++-v3/include/bits/concept_checks.h 3638262457b ./libstdc++-v3/include/bits/container_concepts.h ! 783599862b ./libstdc++-v3/include/bits/cpp_type_traits.h 1601132351b ./libstdc++-v3/include/bits/fpos.h 3545962146b ./libstdc++-v3/include/bits/fstream.tcc 3886600201b ./libstdc++-v3/include/bits/functexcept.h *************** *** 9332,9339 **** 354751699b ./libstdc++-v3/include/bits/ios_base.h 2213504588b ./libstdc++-v3/include/bits/istream.tcc 2076404966b ./libstdc++-v3/include/bits/limits_generic.h ! 2347240123b ./libstdc++-v3/include/bits/locale_facets.h ! 4169892956b ./libstdc++-v3/include/bits/locale_facets.tcc 1654371752b ./libstdc++-v3/include/bits/localefwd.h 1773064307b ./libstdc++-v3/include/bits/mask_array.h 4212032713b ./libstdc++-v3/include/bits/ostream.tcc --- 9351,9358 ---- 354751699b ./libstdc++-v3/include/bits/ios_base.h 2213504588b ./libstdc++-v3/include/bits/istream.tcc 2076404966b ./libstdc++-v3/include/bits/limits_generic.h ! 774313285b ./libstdc++-v3/include/bits/locale_facets.h ! 4019781243b ./libstdc++-v3/include/bits/locale_facets.tcc 1654371752b ./libstdc++-v3/include/bits/localefwd.h 1773064307b ./libstdc++-v3/include/bits/mask_array.h 4212032713b ./libstdc++-v3/include/bits/ostream.tcc *************** *** 9345,9351 **** 3436409662b ./libstdc++-v3/include/bits/sstream.tcc 289136488b ./libstdc++-v3/include/bits/std_algorithm.h 2190102835b ./libstdc++-v3/include/bits/std_bitset.h ! 1951420756b ./libstdc++-v3/include/bits/std_complex.h 2026387708b ./libstdc++-v3/include/bits/std_deque.h 1480548940b ./libstdc++-v3/include/bits/std_fstream.h 909850763b ./libstdc++-v3/include/bits/std_functional.h --- 9364,9370 ---- 3436409662b ./libstdc++-v3/include/bits/sstream.tcc 289136488b ./libstdc++-v3/include/bits/std_algorithm.h 2190102835b ./libstdc++-v3/include/bits/std_bitset.h ! 4200624366b ./libstdc++-v3/include/bits/std_complex.h 2026387708b ./libstdc++-v3/include/bits/std_deque.h 1480548940b ./libstdc++-v3/include/bits/std_fstream.h 909850763b ./libstdc++-v3/include/bits/std_functional.h *************** *** 9355,9361 **** 2709925409b ./libstdc++-v3/include/bits/std_iostream.h 570267107b ./libstdc++-v3/include/bits/std_istream.h 2834882043b ./libstdc++-v3/include/bits/std_iterator.h ! 243895402b ./libstdc++-v3/include/bits/std_limits.h 2877785888b ./libstdc++-v3/include/bits/std_list.h 3961142338b ./libstdc++-v3/include/bits/std_locale.h 201090893b ./libstdc++-v3/include/bits/std_map.h --- 9374,9380 ---- 2709925409b ./libstdc++-v3/include/bits/std_iostream.h 570267107b ./libstdc++-v3/include/bits/std_istream.h 2834882043b ./libstdc++-v3/include/bits/std_iterator.h ! 3099065606b ./libstdc++-v3/include/bits/std_limits.h 2877785888b ./libstdc++-v3/include/bits/std_list.h 3961142338b ./libstdc++-v3/include/bits/std_locale.h 201090893b ./libstdc++-v3/include/bits/std_map.h *************** *** 9378,9384 **** 1901902183b ./libstdc++-v3/include/bits/stl_bvector.h 2179796154b ./libstdc++-v3/include/bits/stl_config.h 2878454282b ./libstdc++-v3/include/bits/stl_construct.h ! 3420405531b ./libstdc++-v3/include/bits/stl_deque.h 1616976213b ./libstdc++-v3/include/bits/stl_function.h 3262343598b ./libstdc++-v3/include/bits/stl_heap.h 38213228b ./libstdc++-v3/include/bits/stl_iterator.h --- 9397,9403 ---- 1901902183b ./libstdc++-v3/include/bits/stl_bvector.h 2179796154b ./libstdc++-v3/include/bits/stl_config.h 2878454282b ./libstdc++-v3/include/bits/stl_construct.h ! 900906786b ./libstdc++-v3/include/bits/stl_deque.h 1616976213b ./libstdc++-v3/include/bits/stl_function.h 3262343598b ./libstdc++-v3/include/bits/stl_heap.h 38213228b ./libstdc++-v3/include/bits/stl_iterator.h *************** *** 9404,9410 **** 3933418180b ./libstdc++-v3/include/bits/stl_vector.h 2427064909b ./libstdc++-v3/include/bits/streambuf.tcc 3733069616b ./libstdc++-v3/include/bits/stringfwd.h ! 2281182376b ./libstdc++-v3/include/bits/type_traits.h 1275731289b ./libstdc++-v3/include/bits/valarray_array.h 1408725829b ./libstdc++-v3/include/bits/valarray_array.tcc 4062553156b ./libstdc++-v3/include/bits/valarray_meta.h --- 9423,9429 ---- 3933418180b ./libstdc++-v3/include/bits/stl_vector.h 2427064909b ./libstdc++-v3/include/bits/streambuf.tcc 3733069616b ./libstdc++-v3/include/bits/stringfwd.h ! 3044846779b ./libstdc++-v3/include/bits/type_traits.h 1275731289b ./libstdc++-v3/include/bits/valarray_array.h 1408725829b ./libstdc++-v3/include/bits/valarray_array.tcc 4062553156b ./libstdc++-v3/include/bits/valarray_meta.h *************** *** 9438,9444 **** 1849023164b ./libstdc++-v3/include/c_shadow/bits/std_cstdarg.h 1416432536b ./libstdc++-v3/include/c_shadow/bits/std_cstddef.h 603206410b ./libstdc++-v3/include/c_shadow/bits/std_cstdio.h ! 3217625918b ./libstdc++-v3/include/c_shadow/bits/std_cstdlib.h 3229568541b ./libstdc++-v3/include/c_shadow/bits/std_cstring.h 3422048856b ./libstdc++-v3/include/c_shadow/bits/std_ctime.h 536419890b ./libstdc++-v3/include/c_shadow/bits/std_cwchar.h --- 9457,9463 ---- 1849023164b ./libstdc++-v3/include/c_shadow/bits/std_cstdarg.h 1416432536b ./libstdc++-v3/include/c_shadow/bits/std_cstddef.h 603206410b ./libstdc++-v3/include/c_shadow/bits/std_cstdio.h ! 362076186b ./libstdc++-v3/include/c_shadow/bits/std_cstdlib.h 3229568541b ./libstdc++-v3/include/c_shadow/bits/std_cstring.h 3422048856b ./libstdc++-v3/include/c_shadow/bits/std_ctime.h 536419890b ./libstdc++-v3/include/c_shadow/bits/std_cwchar.h *************** *** 9471,9477 **** 3742613068b ./libstdc++-v3/include/c_shadow/stdarg.h 1746566969b ./libstdc++-v3/include/c_shadow/stddef.h 3938753534b ./libstdc++-v3/include/c_shadow/stdio.h ! 2467432661b ./libstdc++-v3/include/c_shadow/stdlib.h 105073828b ./libstdc++-v3/include/c_shadow/string.h 2629001503b ./libstdc++-v3/include/c_shadow/sys/cdefs.h 3221974189b ./libstdc++-v3/include/c_shadow/time.h --- 9490,9496 ---- 3742613068b ./libstdc++-v3/include/c_shadow/stdarg.h 1746566969b ./libstdc++-v3/include/c_shadow/stddef.h 3938753534b ./libstdc++-v3/include/c_shadow/stdio.h ! 4232198514b ./libstdc++-v3/include/c_shadow/stdlib.h 105073828b ./libstdc++-v3/include/c_shadow/string.h 2629001503b ./libstdc++-v3/include/c_shadow/sys/cdefs.h 3221974189b ./libstdc++-v3/include/c_shadow/time.h *************** *** 9554,9560 **** 2645437597b ./libstdc++-v3/include/std/utility 2280752861b ./libstdc++-v3/include/std/valarray 392237057b ./libstdc++-v3/include/std/vector ! 131300061b ./libstdc++-v3/libio/ChangeLog 226381804b ./libstdc++-v3/libio/Makefile.am 1424658516b ./libstdc++-v3/libio/Makefile.in 314955067b ./libstdc++-v3/libio/_G_config.h --- 9573,9579 ---- 2645437597b ./libstdc++-v3/include/std/utility 2280752861b ./libstdc++-v3/include/std/valarray 392237057b ./libstdc++-v3/include/std/vector ! 265245219b ./libstdc++-v3/libio/ChangeLog 226381804b ./libstdc++-v3/libio/Makefile.am 1424658516b ./libstdc++-v3/libio/Makefile.in 314955067b ./libstdc++-v3/libio/_G_config.h *************** *** 9627,9636 **** 180238345b ./libstdc++-v3/src/gen-num-limits.cc 681129958b ./libstdc++-v3/src/globals.cc 1383759180b ./libstdc++-v3/src/ios.cc ! 3763069051b ./libstdc++-v3/src/limits.cc 641891272b ./libstdc++-v3/src/limits_generic.cc 888901044b ./libstdc++-v3/src/locale-inst.cc ! 4248120791b ./libstdc++-v3/src/locale.cc 3678785766b ./libstdc++-v3/src/localename.cc 4290618040b ./libstdc++-v3/src/misc-inst.cc 1726669856b ./libstdc++-v3/src/stdexcept.cc --- 9646,9655 ---- 180238345b ./libstdc++-v3/src/gen-num-limits.cc 681129958b ./libstdc++-v3/src/globals.cc 1383759180b ./libstdc++-v3/src/ios.cc ! 4247682085b ./libstdc++-v3/src/limits.cc 641891272b ./libstdc++-v3/src/limits_generic.cc 888901044b ./libstdc++-v3/src/locale-inst.cc ! 1154042250b ./libstdc++-v3/src/locale.cc 3678785766b ./libstdc++-v3/src/localename.cc 4290618040b ./libstdc++-v3/src/misc-inst.cc 1726669856b ./libstdc++-v3/src/stdexcept.cc *************** *** 9669,9675 **** 4006660250b ./libstdc++-v3/testsuite/20_util/binders.cc 2620430532b ./libstdc++-v3/testsuite/21_strings/append.cc 1828225934b ./libstdc++-v3/testsuite/21_strings/c_strings.cc ! 1157819296b ./libstdc++-v3/testsuite/21_strings/capacity.cc 2635888646b ./libstdc++-v3/testsuite/21_strings/char_traits_requirements.cc 4052621376b ./libstdc++-v3/testsuite/21_strings/char_traits_typedefs.cc 2800726480b ./libstdc++-v3/testsuite/21_strings/compare.cc --- 9688,9694 ---- 4006660250b ./libstdc++-v3/testsuite/20_util/binders.cc 2620430532b ./libstdc++-v3/testsuite/21_strings/append.cc 1828225934b ./libstdc++-v3/testsuite/21_strings/c_strings.cc ! 2085027904b ./libstdc++-v3/testsuite/21_strings/capacity.cc 2635888646b ./libstdc++-v3/testsuite/21_strings/char_traits_requirements.cc 4052621376b ./libstdc++-v3/testsuite/21_strings/char_traits_typedefs.cc 2800726480b ./libstdc++-v3/testsuite/21_strings/compare.cc *************** *** 9751,9757 **** 1876828962b ./libstdc++-v3/testsuite/27_io/ios_manip_fmtflags.cc 402291869b ./libstdc++-v3/testsuite/27_io/ios_members.cc 1023084641b ./libstdc++-v3/testsuite/27_io/istream.cc ! 773035515b ./libstdc++-v3/testsuite/27_io/istream_extractor_arith.cc 262004209b ./libstdc++-v3/testsuite/27_io/istream_extractor_char.cc 1013375821b ./libstdc++-v3/testsuite/27_io/istream_extractor_other-1.tst 1013375821b ./libstdc++-v3/testsuite/27_io/istream_extractor_other-1.txt --- 9770,9776 ---- 1876828962b ./libstdc++-v3/testsuite/27_io/ios_manip_fmtflags.cc 402291869b ./libstdc++-v3/testsuite/27_io/ios_members.cc 1023084641b ./libstdc++-v3/testsuite/27_io/istream.cc ! 149386730b ./libstdc++-v3/testsuite/27_io/istream_extractor_arith.cc 262004209b ./libstdc++-v3/testsuite/27_io/istream_extractor_char.cc 1013375821b ./libstdc++-v3/testsuite/27_io/istream_extractor_other-1.tst 1013375821b ./libstdc++-v3/testsuite/27_io/istream_extractor_other-1.txt *************** *** 9812,9818 **** 902556840b ./move-if-change 1077958069b ./symlink-tree 1370970362b ./ylwrap ! 1295615007b ./zlib/ChangeLog 2655845150b ./zlib/ChangeLog.gcj 3874989574b ./zlib/FAQ 467711448b ./zlib/INDEX --- 9831,9837 ---- 902556840b ./move-if-change 1077958069b ./symlink-tree 1370970362b ./ylwrap ! 2986081122b ./zlib/ChangeLog 2655845150b ./zlib/ChangeLog.gcj 3874989574b ./zlib/FAQ 467711448b ./zlib/INDEX diff -Nrc3pad gcc-3.0.2/BUGS gcc-3.0.3/BUGS *** gcc-3.0.2/BUGS Tue Oct 23 10:56:16 2001 --- gcc-3.0.3/BUGS Thu Dec 20 11:56:11 2001 *************** Summarized bug reporting instructions *** 47,71 **** What we need ! Please include in your bug report all of the following items: ! * The GCC version (not just 3.xx; run gcc -v) ! * The system type (the dir name after gcc-lib in the output of gcc ! -v ! * The complete command line that triggers the bug ! * The compiler output (error messages, warnings, etc) ! * The preprocessed file (*.i*) that triggers the bug, generated by ! adding -save-temps to the complete compilation command (see below) ! * The options given when GCC was configured/built ! What we DON'T want * A source file that #includes header files that are left out of the bug report (see above) ! * That source file and a collection of header files (don't waste ! your time; the preprocessor will collect them for you! :-) * An attached archive (tar, zip, shar, whatever) containing all (or ! some :-) of the above, so that we can tell what the bug report is ! about without having to unarchive it * A code snippet that won't cause the compiler to produce the exact output mentioned in the bug report (e.g., a snippet with just a few lines around the one that apparently triggers the bug, with --- 47,70 ---- What we need ! Please include in your bug report all of the following items, the ! first three of which can be obtained from the output of gcc -v: ! * the exact version of GCC; ! * the system type; ! * the options given when GCC was configured/built; ! * the complete command line that triggers the bug; ! * the compiler output (error messages, warnings, etc.); and ! * the preprocessed file (*.i*) that triggers the bug, generated by ! adding -save-temps to the complete compilation command (see ! below). ! What we do not want * A source file that #includes header files that are left out of the bug report (see above) ! * That source file and a collection of header files. * An attached archive (tar, zip, shar, whatever) containing all (or ! some :-) of the above. * A code snippet that won't cause the compiler to produce the exact output mentioned in the bug report (e.g., a snippet with just a few lines around the one that apparently triggers the bug, with *************** Summarized bug reporting instructions *** 78,86 **** compiled, such that retrying a sufficient number of times results in a successful compilation; this is a symptom of a hardware problem, not of a compiler bug (sorry) ! * E-mail messages that complement previous, incomplete bug reports; ! post a new, self-contained, full bug report instead, if possible ! as a follow-up (or reply) to the original bug report * Assembly files (*.s) produced by the compiler, or any binary files, such as object files, executables or core files * Duplicate bug reports, or reports of bugs already fixed in the --- 77,85 ---- compiled, such that retrying a sufficient number of times results in a successful compilation; this is a symptom of a hardware problem, not of a compiler bug (sorry) ! * E-mail messages that complement previous, incomplete bug reports. ! Post a new, self-contained, full bug report instead, if possible ! as a follow-up to the original bug report * Assembly files (*.s) produced by the compiler, or any binary files, such as object files, executables or core files * Duplicate bug reports, or reports of bugs already fixed in the *************** Summarized bug reporting instructions *** 98,105 **** Where to post it Please submit your bug report directly to the [20]GCC GNATS bug ! database. If this is not possible, please mail all information to ! [21]gcc-bugs@gcc.gnu.org. Detailed bug reporting instructions --- 97,104 ---- Where to post it Please submit your bug report directly to the [20]GCC GNATS bug ! database. Only if this is not possible, mail all information to ! [21]bug-gcc@gnu.org or [22]gcc-bugs@gcc.gnu.org. Detailed bug reporting instructions *************** Detailed bug reporting instructions *** 145,151 **** The gcc lists have message size limits (200 kbytes) and bug reports over those limits will currently be bounced. If your bug is larger ! than that, please post it using the [22]GCC GNATS bug database. If you fail to supply enough information for a bug report to be reproduced, someone will probably ask you to post additional --- 144,150 ---- The gcc lists have message size limits (200 kbytes) and bug reports over those limits will currently be bounced. If your bug is larger ! than that, please post it using the [23]GCC GNATS bug database. If you fail to supply enough information for a bug report to be reproduced, someone will probably ask you to post additional *************** General *** 191,197 **** Fortran Fortran bugs are documented in the G77 manual rather than explicitly ! listed here. Please see [23]Known Causes of Trouble with GNU Fortran in the G77 manual. _________________________________________________________________ --- 190,196 ---- Fortran Fortran bugs are documented in the G77 manual rather than explicitly ! listed here. Please see [24]Known Causes of Trouble with GNU Fortran in the G77 manual. _________________________________________________________________ *************** C *** 207,216 **** #include FILE *yyin = stdin; will not compile with GNU libc (GNU/Linux libc6), because stdin ! is not a constant. This was done deliberately, in order for ! there to be no limit on the number of open FILE objects. It is ! surprising for people used to traditional Unix C libraries, but ! it is permitted by the C standard. This construct commonly occurs in code generated by old versions of lex or yacc. We suggest you try regenerating the --- 206,216 ---- #include FILE *yyin = stdin; will not compile with GNU libc (GNU/Linux libc6), because stdin ! is not a constant. This was done deliberately, to make it ! easier to maintain binary compatibility when the type FILE ! needs to be changed. It is surprising for people used to ! traditional Unix C libraries, but it is permitted by the C ! standard. This construct commonly occurs in code generated by old versions of lex or yacc. We suggest you try regenerating the *************** C *** 220,226 **** There is a common misconception that the GCC developers are responsible for GNU libc. These are in fact two entirely ! separate projects; please check the [24]GNU libc web pages for details. Cannot use preprocessor directive in macro arguments. --- 220,226 ---- There is a common misconception that the GCC developers are responsible for GNU libc. These are in fact two entirely ! separate projects; please check the [25]GNU libc web pages for details. Cannot use preprocessor directive in macro arguments. *************** C++ *** 299,305 **** reported very often, but not yet fixed. While it is certainly better to fix bugs instead of documenting them, this document might save people the effort of writing a bug report when the bug is already ! well-known. [25]How to report bugs tells you how to report a bug. There are many reasons why reported bugs don't get fixed. It might be difficult to fix, or fixing it might break compatibility. Often, --- 299,305 ---- reported very often, but not yet fixed. While it is certainly better to fix bugs instead of documenting them, this document might save people the effort of writing a bug report when the bug is already ! well-known. [26]How to report bugs tells you how to report a bug. There are many reasons why reported bugs don't get fixed. It might be difficult to fix, or fixing it might break compatibility. Often, *************** C++ *** 318,329 **** Common problems updating from G++ 2.95 to G++ 3.0 G++ 3.0 conforms much closer to the ISO C++ standard (available at ! [26]http://www.ncits.org/cplusplus.htm). We have also implemented some of the core and library defect reports (available at ! [27]http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/cwg_defects.html & ! [28]http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html respectively). * The ABI has changed. This means that both class layout and name mangling is different. You must recompile all c++ libraries (if --- 318,329 ---- Common problems updating from G++ 2.95 to G++ 3.0 G++ 3.0 conforms much closer to the ISO C++ standard (available at ! [27]http://www.ncits.org/cplusplus.htm). We have also implemented some of the core and library defect reports (available at ! [28]http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/cwg_defects.html & ! [29]http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html respectively). * The ABI has changed. This means that both class layout and name mangling is different. You must recompile all c++ libraries (if *************** C++ *** 419,425 **** the nearest representable number. This is not a bug in the compiler, but an inherent limitation ! of the float and double types. Please study [29]this paper for more information. Missing features --- 419,425 ---- the nearest representable number. This is not a bug in the compiler, but an inherent limitation ! of the float and double types. Please study [30]this paper for more information. Missing features *************** References *** 529,540 **** 18. http://gcc.gnu.org/gnats.html 19. http://gcc.gnu.org/bugs.html#known 20. http://gcc.gnu.org/gnats.html ! 21. mailto:gcc-bugs@gcc.gnu.org ! 22. http://gcc.gnu.org/gnats.html ! 23. http://gcc.gnu.org/onlinedocs/g77_bugs.html ! 24. http://www.gnu.org/software/glibc/ ! 25. http://gcc.gnu.org/bugs.html#report ! 26. http://www.ncits.org/cplusplus.htm ! 27. http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/cwg_defects.html ! 28. http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html ! 29. http://www.validlab.com/goldberg/paper.ps --- 529,541 ---- 18. http://gcc.gnu.org/gnats.html 19. http://gcc.gnu.org/bugs.html#known 20. http://gcc.gnu.org/gnats.html ! 21. mailto:bug-gcc@gnu.org ! 22. mailto:gcc-bugs@gcc.gnu.org ! 23. http://gcc.gnu.org/gnats.html ! 24. http://gcc.gnu.org/onlinedocs/g77_bugs.html ! 25. http://www.gnu.org/software/glibc/ ! 26. http://gcc.gnu.org/bugs.html#report ! 27. http://www.ncits.org/cplusplus.htm ! 28. http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/cwg_defects.html ! 29. http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html ! 30. http://www.validlab.com/goldberg/paper.ps diff -Nrc3pad gcc-3.0.2/ChangeLog gcc-3.0.3/ChangeLog *** gcc-3.0.2/ChangeLog Tue Oct 23 10:18:45 2001 --- gcc-3.0.3/ChangeLog Thu Dec 20 11:20:57 2001 *************** *** 1,3 **** --- 1,7 ---- + 2001-12-20 Release Manager + + * GCC 3.0.3 Released. + 2001-10-23 Release Manager * GCC 3.0.2 Released. diff -Nrc3pad gcc-3.0.2/FAQ gcc-3.0.3/FAQ *** gcc-3.0.2/FAQ Tue Oct 23 10:56:17 2001 --- gcc-3.0.3/FAQ Thu Dec 20 11:56:11 2001 *************** *** 40,53 **** 5. [29]Miscellaneous 1. [30]Virtual memory exhausted 2. [31]Friend Templates ! 3. [32]Why do I need autoconf, bison, xgettext, automake, etc? ! 4. [33]Why can't I build a shared library? ! 5. [34]How to work around too long C++ symbol names? (-fsquangle) ! 6. [35]When building C++, the linker says my constructors, destructors or virtual tables are undefined, but I defined them ! 7. [36]Will GCC someday include an incremental linker? _________________________________________________________________ General information --- 40,55 ---- 5. [29]Miscellaneous 1. [30]Virtual memory exhausted 2. [31]Friend Templates ! 3. [32]dynamic_cast, throw, typeid don't work with shared ! libraries ! 4. [33]Why do I need autoconf, bison, xgettext, automake, etc? ! 5. [34]Why can't I build a shared library? ! 6. [35]How to work around too long C++ symbol names? (-fsquangle) ! 7. [36]When building C++, the linker says my constructors, destructors or virtual tables are undefined, but I defined them ! 8. [37]Will GCC someday include an incremental linker? _________________________________________________________________ General information *************** What is the relationship between GCC and *** 69,75 **** development on the gcc2 compiler and appointed the EGCS project as the official GCC maintainers. The net result was a single project which carries forward GCC development under the ultimate control of the ! [37]GCC Steering Committee. _________________________________________________________________ What is the relationship between GCC and Cygnus / Red Hat? --- 71,77 ---- development on the gcc2 compiler and appointed the EGCS project as the official GCC maintainers. The net result was a single project which carries forward GCC development under the ultimate control of the ! [38]GCC Steering Committee. _________________________________________________________________ What is the relationship between GCC and Cygnus / Red Hat? *************** What is the relationship between GCC and *** 80,86 **** While Red Hat does donate hardware, network connections, code and developer time to GCC development, Red Hat does not control GCC. ! Overall control of GCC is in the hands of the [38]GCC Steering Committee which includes people from a variety of different organizations and backgrounds. The purpose of the steering committee is to make decisions in the best interest of GCC and to help ensure --- 82,88 ---- While Red Hat does donate hardware, network connections, code and developer time to GCC development, Red Hat does not control GCC. ! Overall control of GCC is in the hands of the [39]GCC Steering Committee which includes people from a variety of different organizations and backgrounds. The purpose of the steering committee is to make decisions in the best interest of GCC and to help ensure *************** What is the relationship between GCC and *** 92,98 **** What is an open development model? ! We are using a bazaar style [39][1] approach to GCC development: we make snapshots publicly available to anyone who wants to try them; we welcome anyone to join the development mailing list. All of the discussions on the development mailing list are available via the web. --- 94,100 ---- What is an open development model? ! We are using a bazaar style [40][1] approach to GCC development: we make snapshots publicly available to anyone who wants to try them; we welcome anyone to join the development mailing list. All of the discussions on the development mailing list are available via the web. *************** What is an open development model? *** 130,142 **** the past few months. The paper which started all of this introduced two terms: A cathedral development model versus a bazaar development model. The paper is written by Eric S. Raymond, it is ! called ``[40]The Cathedral and the Bazaar''. The paper is a useful starting point for discussions. _________________________________________________________________ How do I report a bug? ! There are complete instructions [41]here. _________________________________________________________________ How do I get a bug fixed or a feature added? --- 132,144 ---- the past few months. The paper which started all of this introduced two terms: A cathedral development model versus a bazaar development model. The paper is written by Eric S. Raymond, it is ! called ``[41]The Cathedral and the Bazaar''. The paper is a useful starting point for discussions. _________________________________________________________________ How do I report a bug? ! There are complete instructions [42]here. _________________________________________________________________ How do I get a bug fixed or a feature added? *************** How do I get a bug fixed or a feature ad *** 151,157 **** * Hire someone to fix it for you. There are various companies and individuals providing support for GCC. This alternative costs money, but is relatively likely to get results. ! * [42]Report the problem to the GCC GNATS bug tracking system and hope that someone will be kind enough to fix it for you. While this is certainly possible, and often happens, there is no guarantee that it will. You should not expect the same response --- 153,159 ---- * Hire someone to fix it for you. There are various companies and individuals providing support for GCC. This alternative costs money, but is relatively likely to get results. ! * [43]Report the problem to the GCC GNATS bug tracking system and hope that someone will be kind enough to fix it for you. While this is certainly possible, and often happens, there is no guarantee that it will. You should not expect the same response *************** How do I get a bug fixed or a feature ad *** 159,165 **** organization since the people who read GCC bug reports, if they choose to help you, will be volunteering their time. This alternative will work best if you follow the directions on ! [43]submitting bugreports. * Fix it yourself. This alternative will probably bring results, if you work hard enough, but will probably take a lot of time, and, depending on the quality of your work and the perceived benefits --- 161,167 ---- organization since the people who read GCC bug reports, if they choose to help you, will be volunteering their time. This alternative will work best if you follow the directions on ! [44]submitting bugreports. * Fix it yourself. This alternative will probably bring results, if you work hard enough, but will probably take a lot of time, and, depending on the quality of your work and the perceived benefits *************** How do I get a bug fixed or a feature ad *** 170,176 **** How can I get a development environment for GCC without using CVS? GCC snapshots are available from the FTP server and its mirrors; see ! the [44]GCC mirror list. _________________________________________________________________ Does GCC work on my platform? --- 172,178 ---- How can I get a development environment for GCC without using CVS? GCC snapshots are available from the FTP server and its mirrors; see ! the [45]GCC mirror list. _________________________________________________________________ Does GCC work on my platform? *************** Does GCC work on my platform? *** 178,186 **** The host/target specific installation notes for GCC include 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 [45]latest version is always available at the GCC web site. Reports of successful builds for GCC ! versions [46]3.0 and [47]2.95 are also available at the web site. _________________________________________________________________ Installation --- 180,188 ---- The host/target specific installation notes for GCC include 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 [46]latest version is always available at the GCC web site. Reports of successful builds for GCC ! versions [47]3.0 and [48]2.95 are also available at the web site. _________________________________________________________________ Installation *************** How to install multiple versions of GCC *** 237,243 **** 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, [48]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 --- 239,245 ---- 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, [49]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 *** 303,309 **** versions of those programs. To ensure that GCC finds the GNU assembler (the GNU loader), which are ! required by [49]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. --- 305,311 ---- versions of those programs. To ensure that GCC finds the GNU assembler (the GNU loader), which are ! required by [50]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 *** 357,363 **** 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 ! [50]http://www.gnu.org/software/dejagnu/dejagnu.html. _________________________________________________________________ How do I pass flags like -fnew-abi to the testsuite? --- 359,365 ---- 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 ! [51]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 *** 392,398 **** Is there a stringstream / sstream for GCC 2.95.2? Yes, it's at: ! [51]http://gcc.gnu.org/ml/libstdc++/2000-q2/msg00700/sstream. _________________________________________________________________ Miscellaneous --- 394,400 ---- Is there a stringstream / sstream for GCC 2.95.2? Yes, it's at: ! [52]http://gcc.gnu.org/ml/libstdc++/2000-q2/msg00700/sstream. _________________________________________________________________ Miscellaneous *************** void bar(foo) { /* ... */ } *** 460,465 **** --- 462,517 ---- version of the Standard, it is. _________________________________________________________________ + dynamic_cast, throw, typeid don't work with shared libraries + + The new C++ ABI in the GCC 3.0 series uses address comparisons, rather + than string compares, to determine type equality. This leads to better + performance. Like other objects that have to be present in the final + executable, these std::typeinfo_t objects have what is called vague + linkage because they are not tightly bound to any one particular + translation unit (object file). The compiler has to emit them in any + translation unit that requires their presence, and then rely on the + linking and loading process to make sure that only one of them is + active in the final executable. With static linking all of these + symbols are resolved at link time, but with dynamic linking, further + resolution occurs at load time. You have to ensure that objects within + a shared library are resolved against objects in the executable and + other shared libraries. + * For a program which is linked against a shared library, no + additional precautions need taking. + * You cannot create a shared library with the "-Bsymbolic" option, + as that prevents the resolution described above. + * If you use dlopen to explicitly load code from a shared library, + you must do several things. First, export global symbols from the + executable by linking it with the "-E" flag (you will have to + specify this as "-Wl,-E" if you are invoking the linker in the + usual manner from the compiler driver, g++). You must also make + the external symbols in the loaded library available for + subsequent libraries by providing the RTLD_GLOBAL flag to dlopen. + The symbol resolution can be immediate or lazy. + + Template instantiations are another, user visible, case of objects + with vague linkage, which needs similar resolution. If you do not take + the above precautions, you may discover that a template instantiation + with the same argument list, but instantiated in multiple translation + units, has several addresses, depending in which translation unit the + address is taken. (This is not an exhaustive list of the kind of + objects which have vague linkage and are expected to be resolved + during linking & loading.) + + If you are worried about different objects with the same name + colliding during the linking or loading process, then you should use + namespaces to disambiguate them. Giving distinct objects with global + linkage the same name is a violation of the One Definition Rule (ODR) + [basic.def.odr]. + + For more details about the way that GCC implements these and other C++ + features, please read the [53]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, automake, etc? If you're using diffs up dated from one snapshot to the next, or if *************** Why do I need autoconf, bison, xgettext, *** 485,494 **** rebuild GCC. In general, the current versions of these tools from ! [52]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 ! [53]ftp://gcc.gnu.org/pub/gcc/infrastructure/ for any special versions of packages. _________________________________________________________________ --- 537,546 ---- rebuild GCC. In general, the current versions of these tools from ! [54]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 ! [55]ftp://gcc.gnu.org/pub/gcc/infrastructure/ for any special versions of packages. _________________________________________________________________ *************** References *** 599,623 **** 29. http://gcc.gnu.org/faq.html#misc 30. http://gcc.gnu.org/faq.html#memexhausted 31. http://gcc.gnu.org/faq.html#friend ! 32. http://gcc.gnu.org/faq.html#generated_files ! 33. http://gcc.gnu.org/faq.html#picflag-needed ! 34. http://gcc.gnu.org/faq.html#squangle ! 35. http://gcc.gnu.org/faq.html#vtables ! 36. http://gcc.gnu.org/faq.html#incremental ! 37. http://gcc.gnu.org/steering.html 38. http://gcc.gnu.org/steering.html ! 39. http://gcc.gnu.org/faq.html#cathedral-vs-bazaar ! 40. http://www.tuxedo.org/~esr/writings/cathedral-bazaar/ ! 41. http://gcc.gnu.org/bugs.html 42. http://gcc.gnu.org/bugs.html 43. http://gcc.gnu.org/bugs.html ! 44. http://gcc.gnu.org/mirrors.html ! 45. http://gcc.gnu.org/install/specific.html ! 46. http://gcc.gnu.org/gcc-3.0/buildstat.html ! 47. http://gcc.gnu.org/gcc-2.95/buildstat.html ! 48. http://gcc.gnu.org/faq.html#gas ! 49. http://gcc.gnu.org/install/specific.html ! 50. http://www.gnu.org/software/dejagnu/dejagnu.html ! 51. http://gcc.gnu.org/ml/libstdc++/2000-q2/msg00700/sstream ! 52. ftp://ftp.gnu.org/gnu/ ! 53. ftp://gcc.gnu.org/pub/gcc/infrastructure/ --- 651,677 ---- 29. http://gcc.gnu.org/faq.html#misc 30. http://gcc.gnu.org/faq.html#memexhausted 31. http://gcc.gnu.org/faq.html#friend ! 32. http://gcc.gnu.org/faq.html#dso ! 33. http://gcc.gnu.org/faq.html#generated_files ! 34. http://gcc.gnu.org/faq.html#picflag-needed ! 35. http://gcc.gnu.org/faq.html#squangle ! 36. http://gcc.gnu.org/faq.html#vtables ! 37. http://gcc.gnu.org/faq.html#incremental 38. http://gcc.gnu.org/steering.html ! 39. http://gcc.gnu.org/steering.html ! 40. http://gcc.gnu.org/faq.html#cathedral-vs-bazaar ! 41. http://www.tuxedo.org/~esr/writings/cathedral-bazaar/ 42. http://gcc.gnu.org/bugs.html 43. http://gcc.gnu.org/bugs.html ! 44. http://gcc.gnu.org/bugs.html ! 45. http://gcc.gnu.org/mirrors.html ! 46. http://gcc.gnu.org/install/specific.html ! 47. http://gcc.gnu.org/gcc-3.0/buildstat.html ! 48. http://gcc.gnu.org/gcc-2.95/buildstat.html ! 49. http://gcc.gnu.org/faq.html#gas ! 50. http://gcc.gnu.org/install/specific.html ! 51. http://www.gnu.org/software/dejagnu/dejagnu.html ! 52. http://gcc.gnu.org/ml/libstdc++/2000-q2/msg00700/sstream ! 53. http://www.codesourcery.com/cxx-abi ! 54. ftp://ftp.gnu.org/gnu/ ! 55. ftp://gcc.gnu.org/pub/gcc/infrastructure/ diff -Nrc3pad gcc-3.0.2/INSTALL/build.html gcc-3.0.3/INSTALL/build.html *** gcc-3.0.2/INSTALL/build.html Tue Oct 23 10:56:17 2001 --- gcc-3.0.3/INSTALL/build.html Thu Dec 20 11:56:11 2001 *************** as parts of GCC can only be built with G *** 128,134 ****

To build a cross compiler, we first recommend building and installing a native compiler. You can then use the native GCC compiler to build the ! cross compiler.

Assuming you have already installed a native copy of GCC and configured your cross compiler, issue the command make, which performs the --- 128,135 ----

To build a cross compiler, we first recommend building and installing a native compiler. You can then use the native GCC compiler to build the ! cross compiler. The installed native compiler needs to be GCC version ! 2.95 or later.

Assuming you have already installed a native copy of GCC and configured your cross compiler, issue the command make, which performs the diff -Nrc3pad gcc-3.0.2/INSTALL/configure.html gcc-3.0.3/INSTALL/configure.html *** gcc-3.0.2/INSTALL/configure.html Tue Oct 23 10:56:17 2001 --- gcc-3.0.3/INSTALL/configure.html Thu Dec 20 11:56:11 2001 *************** implies that the host defaults to t *** 71,77 ****

Options specification

Use options to override several configure time options for ! GCC. A partial list of supported options:

--prefix=dirname --- 71,79 ----

Options specification

Use options to override several configure time options for ! GCC. A list of supported options follows; configure ! --help may list other options, but those not listed below may not ! work and should not normally be used.

--prefix=dirname *************** procedure to prefer its copy of GNU catgets interface, the GCC build procedure normally ignores catgets and instead uses GCC's copy of the GNU gettext library. The --with-catgets option causes the ! build procedure to use the host's catgets in this situation.

Some options which only apply to building cross compilers: --- 468,478 ---- inferior catgets interface, the GCC build procedure normally ignores catgets and instead uses GCC's copy of the GNU gettext library. The --with-catgets option causes the ! build procedure to use the host's catgets in this situation. ! !

--with-system-zlib !
Use installed zlib rather than that included with GCC. This option ! only applies if the Java front end is being built.

Some options which only apply to building cross compilers: diff -Nrc3pad gcc-3.0.2/INSTALL/finalinstall.html gcc-3.0.3/INSTALL/finalinstall.html *** gcc-3.0.2/INSTALL/finalinstall.html Tue Oct 23 10:56:17 2001 --- gcc-3.0.3/INSTALL/finalinstall.html Thu Dec 20 11:56:11 2001 *************** info format in infodir< *** 25,42 ****

If you don't mind, please quickly review the 3.0 build status page. ! If your system is not listed, send a note to gcc@gcc.gnu.org indicating ! that you successfully built and installed GCC. !

Include the output from running srcdir/config.guess. (Do ! not send us the config.guess file itself, just the one-line output from ! running it!) Also specify which version you built. ! If the build was for GNU/Linux, also include the distribution name and version ! (e.g., Red Hat 7.1 or Debian 2.2.3, available from /etc/issue) ! and the version of glibc you used; for RPM-based systems like Red Hat, Mandrake, and SuSE type rpm -q glibc to get the glibc version, ! and on systems like Debian and Progeny use dpkg -l libc6.

We'd also like to know if the host/target specific installation notes --- 25,63 ----

If you don't mind, please quickly review the 3.0 build status page. ! If your system is not listed for the version of GCC that you built, ! send a note to gcc@gcc.gnu.org indicating ! that you successfully built and installed GCC. ! Include the following information: !

    !
  • Output from running srcdir/config.guess. Do not send us ! that file itself, just the one-line output from running it. ! !
  • The output of gcc -v for your newly installed gcc. ! This tells us which version of GCC you built and the options you passed to ! configure. ! !
  • If the build was for GNU/Linux, also include: !
      !
    • The distribution name and version (e.g., Red Hat 7.1 or Debian 2.2.3); ! this information should be available from /etc/issue. ! !
    • The version of the Linux kernel, available from uname --version ! or uname -a. ! !
    • The version of glibc you used; for RPM-based systems like Red Hat, Mandrake, and SuSE type rpm -q glibc to get the glibc version, ! and on systems like Debian and Progeny use dpkg -l libc6. !
    ! For other systems, you can include similar information if you think it is ! relevant. ! !
  • Any other information that you think would be useful to people building ! GCC on the same configuration. The new entry in the build status list ! will include a link to the archived copy of your message. !

We'd also like to know if the host/target specific installation notes diff -Nrc3pad gcc-3.0.2/INSTALL/gfdl.html gcc-3.0.3/INSTALL/gfdl.html *** gcc-3.0.2/INSTALL/gfdl.html Wed Dec 31 16:00:00 1969 --- gcc-3.0.3/INSTALL/gfdl.html Thu Dec 20 11:56:11 2001 *************** *** 0 **** --- 1,381 ---- + + Installing GCC: GNU Free Documentation License + + + + + + +

Installing GCC: GNU Free Documentation License

+ +

Version 1.1, March 2000

+ +
Copyright © 2000 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA  02111-1307, USA
+ 
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+ 
+ +
    +
  1. PREAMBLE + +

    The purpose of this License is to make a manual, textbook, or other + written document free in the sense of freedom: to assure everyone + the effective freedom to copy and redistribute it, with or without + modifying it, either commercially or noncommercially. Secondarily, + this License preserves for the author and publisher a way to get + credit for their work, while not being considered responsible for + modifications made by others. + +

    This License is a kind of "copyleft", which means that derivative + works of the document must themselves be free in the same sense. It + complements the GNU General Public License, which is a copyleft + license designed for free software. + +

    We have designed this License in order to use it for manuals for free + software, because free software needs free documentation: a free + program should come with manuals providing the same freedoms that the + software does. But this License is not limited to software manuals; + it can be used for any textual work, regardless of subject matter or + whether it is published as a printed book. We recommend this License + principally for works whose purpose is instruction or reference. + +

  2. APPLICABILITY AND DEFINITIONS + +

    This License applies to any manual or other work that contains a + notice placed by the copyright holder saying it can be distributed + under the terms of this License. The "Document", below, refers to any + such manual or work. Any member of the public is a licensee, and is + addressed as "you". + +

    A "Modified Version" of the Document means any work containing the + Document or a portion of it, either copied verbatim, or with + modifications and/or translated into another language. + +

    A "Secondary Section" is a named appendix or a front-matter section of + the Document that deals exclusively with the relationship of the + publishers or authors of the Document to the Document's overall subject + (or to related matters) and contains nothing that could fall directly + within that overall subject. (For example, if the Document is in part a + textbook of mathematics, a Secondary Section may not explain any + mathematics.) The relationship could be a matter of historical + connection with the subject or with related matters, or of legal, + commercial, philosophical, ethical or political position regarding + them. + +

    The "Invariant Sections" are certain Secondary Sections whose titles + are designated, as being those of Invariant Sections, in the notice + that says that the Document is released under this License. + +

    The "Cover Texts" are certain short passages of text that are listed, + as Front-Cover Texts or Back-Cover Texts, in the notice that says that + the Document is released under this License. + +

    A "Transparent" copy of the Document means a machine-readable copy, + represented in a format whose specification is available to the + general public, whose contents can be viewed and edited directly and + straightforwardly with generic text editors or (for images composed of + pixels) generic paint programs or (for drawings) some widely available + drawing editor, and that is suitable for input to text formatters or + for automatic translation to a variety of formats suitable for input + to text formatters. A copy made in an otherwise Transparent file + format whose markup has been designed to thwart or discourage + subsequent modification by readers is not Transparent. A copy that is + not "Transparent" is called "Opaque". + +

    Examples of suitable formats for Transparent copies include plain + ASCII without markup, Texinfo input format, LaTeX input format, + SGML or XML using a publicly available + DTD, and standard-conforming simple HTML designed + for human modification. Opaque formats include PostScript, + PDF, proprietary formats that can be read and edited only by + proprietary word processors, SGML or XML for which + the DTD and/or processing tools are not generally available, + and the machine-generated HTML produced by some word + processors for output purposes only. + +

    The "Title Page" means, for a printed book, the title page itself, + plus such following pages as are needed to hold, legibly, the material + this License requires to appear in the title page. For works in + formats which do not have any title page as such, "Title Page" means + the text near the most prominent appearance of the work's title, + preceding the beginning of the body of the text. + +

  3. VERBATIM COPYING + +

    You may copy and distribute the Document in any medium, either + commercially or noncommercially, provided that this License, the + copyright notices, and the license notice saying this License applies + to the Document are reproduced in all copies, and that you add no other + conditions whatsoever to those of this License. You may not use + technical measures to obstruct or control the reading or further + copying of the copies you make or distribute. However, you may accept + compensation in exchange for copies. If you distribute a large enough + number of copies you must also follow the conditions in section 3. + +

    You may also lend copies, under the same conditions stated above, and + you may publicly display copies. + +

  4. COPYING IN QUANTITY + +

    If you publish printed copies of the Document numbering more than 100, + and the Document's license notice requires Cover Texts, you must enclose + the copies in covers that carry, clearly and legibly, all these Cover + Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on + the back cover. Both covers must also clearly and legibly identify + you as the publisher of these copies. The front cover must present + the full title with all words of the title equally prominent and + visible. You may add other material on the covers in addition. + Copying with changes limited to the covers, as long as they preserve + the title of the Document and satisfy these conditions, can be treated + as verbatim copying in other respects. + +

    If the required texts for either cover are too voluminous to fit + legibly, you should put the first ones listed (as many as fit + reasonably) on the actual cover, and continue the rest onto adjacent + pages. + +

    If you publish or distribute Opaque copies of the Document numbering + more than 100, you must either include a machine-readable Transparent + copy along with each Opaque copy, or state in or with each Opaque copy + a publicly-accessible computer-network location containing a complete + Transparent copy of the Document, free of added material, which the + general network-using public has access to download anonymously at no + charge using public-standard network protocols. If you use the latter + option, you must take reasonably prudent steps, when you begin + distribution of Opaque copies in quantity, to ensure that this + Transparent copy will remain thus accessible at the stated location + until at least one year after the last time you distribute an Opaque + copy (directly or through your agents or retailers) of that edition to + the public. + +

    It is requested, but not required, that you contact the authors of the + Document well before redistributing any large number of copies, to give + them a chance to provide you with an updated version of the Document. + +

  5. MODIFICATIONS + +

    You may copy and distribute a Modified Version of the Document under + the conditions of sections 2 and 3 above, provided that you release + the Modified Version under precisely this License, with the Modified + Version filling the role of the Document, thus licensing distribution + and modification of the Modified Version to whoever possesses a copy + of it. In addition, you must do these things in the Modified Version: + +

      +

    1. Use in the Title Page (and on the covers, if any) a title distinct + from that of the Document, and from those of previous versions + (which should, if there were any, be listed in the History section + of the Document). You may use the same title as a previous version + if the original publisher of that version gives permission. + +
    2. List on the Title Page, as authors, one or more persons or entities + responsible for authorship of the modifications in the Modified + Version, together with at least five of the principal authors of the + Document (all of its principal authors, if it has less than five). + +
    3. State on the Title page the name of the publisher of the + Modified Version, as the publisher. + +
    4. Preserve all the copyright notices of the Document. + +
    5. Add an appropriate copyright notice for your modifications + adjacent to the other copyright notices. + +
    6. Include, immediately after the copyright notices, a license notice + giving the public permission to use the Modified Version under the + terms of this License, in the form shown in the Addendum below. + +
    7. Preserve in that license notice the full lists of Invariant Sections + and required Cover Texts given in the Document's license notice. + +
    8. Include an unaltered copy of this License. + +
    9. Preserve the section entitled "History", and its title, and add to + it an item stating at least the title, year, new authors, and + publisher of the Modified Version as given on the Title Page. If + there is no section entitled "History" in the Document, create one + stating the title, year, authors, and publisher of the Document as + given on its Title Page, then add an item describing the Modified + Version as stated in the previous sentence. + +
    10. Preserve the network location, if any, given in the Document for + public access to a Transparent copy of the Document, and likewise + the network locations given in the Document for previous versions + it was based on. These may be placed in the "History" section. + You may omit a network location for a work that was published at + least four years before the Document itself, or if the original + publisher of the version it refers to gives permission. + +
    11. In any section entitled "Acknowledgments" or "Dedications", + preserve the section's title, and preserve in the section all the + substance and tone of each of the contributor acknowledgments + and/or dedications given therein. + +
    12. Preserve all the Invariant Sections of the Document, + unaltered in their text and in their titles. Section numbers + or the equivalent are not considered part of the section titles. + +
    13. Delete any section entitled "Endorsements". Such a section + may not be included in the Modified Version. + +
    14. Do not retitle any existing section as "Endorsements" + or to conflict in title with any Invariant Section. +
    + +

    If the Modified Version includes new front-matter sections or + appendices that qualify as Secondary Sections and contain no material + copied from the Document, you may at your option designate some or all + of these sections as invariant. To do this, add their titles to the + list of Invariant Sections in the Modified Version's license notice. + These titles must be distinct from any other section titles. + +

    You may add a section entitled "Endorsements", provided it contains + nothing but endorsements of your Modified Version by various + parties--for example, statements of peer review or that the text has + been approved by an organization as the authoritative definition of a + standard. + +

    You may add a passage of up to five words as a Front-Cover Text, and a + passage of up to 25 words as a Back-Cover Text, to the end of the list + of Cover Texts in the Modified Version. Only one passage of + Front-Cover Text and one of Back-Cover Text may be added by (or + through arrangements made by) any one entity. If the Document already + includes a cover text for the same cover, previously added by you or + by arrangement made by the same entity you are acting on behalf of, + you may not add another; but you may replace the old one, on explicit + permission from the previous publisher that added the old one. + +

    The author(s) and publisher(s) of the Document do not by this License + give permission to use their names for publicity for or to assert or + imply endorsement of any Modified Version. + +

  6. COMBINING DOCUMENTS + +

    You may combine the Document with other documents released under this + License, under the terms defined in section 4 above for modified + versions, provided that you include in the combination all of the + Invariant Sections of all of the original documents, unmodified, and + list them all as Invariant Sections of your combined work in its + license notice. + +

    The combined work need only contain one copy of this License, and + multiple identical Invariant Sections may be replaced with a single + copy. If there are multiple Invariant Sections with the same name but + different contents, make the title of each such section unique by + adding at the end of it, in parentheses, the name of the original + author or publisher of that section if known, or else a unique number. + Make the same adjustment to the section titles in the list of + Invariant Sections in the license notice of the combined work. + +

    In the combination, you must combine any sections entitled "History" + in the various original documents, forming one section entitled + "History"; likewise combine any sections entitled "Acknowledgments", + and any sections entitled "Dedications". You must delete all sections + entitled "Endorsements." + +

  7. COLLECTIONS OF DOCUMENTS + +

    You may make a collection consisting of the Document and other documents + released under this License, and replace the individual copies of this + License in the various documents with a single copy that is included in + the collection, provided that you follow the rules of this License for + verbatim copying of each of the documents in all other respects. + +

    You may extract a single document from such a collection, and distribute + it individually under this License, provided you insert a copy of this + License into the extracted document, and follow this License in all + other respects regarding verbatim copying of that document. + +

  8. AGGREGATION WITH INDEPENDENT WORKS + +

    A compilation of the Document or its derivatives with other separate + and independent documents or works, in or on a volume of a storage or + distribution medium, does not as a whole count as a Modified Version + of the Document, provided no compilation copyright is claimed for the + compilation. Such a compilation is called an "aggregate", and this + License does not apply to the other self-contained works thus compiled + with the Document, on account of their being thus compiled, if they + are not themselves derivative works of the Document. + +

    If the Cover Text requirement of section 3 is applicable to these + copies of the Document, then if the Document is less than one quarter + of the entire aggregate, the Document's Cover Texts may be placed on + covers that surround only the Document within the aggregate. + Otherwise they must appear on covers around the whole aggregate. + +

  9. TRANSLATION + +

    Translation is considered a kind of modification, so you may + distribute translations of the Document under the terms of section 4. + Replacing Invariant Sections with translations requires special + permission from their copyright holders, but you may include + translations of some or all Invariant Sections in addition to the + original versions of these Invariant Sections. You may include a + translation of this License provided that you also include the + original English version of this License. In case of a disagreement + between the translation and the original English version of this + License, the original English version will prevail. + +

  10. TERMINATION + +

    You may not copy, modify, sublicense, or distribute the Document except + as expressly provided for under this License. Any other attempt to + copy, modify, sublicense or distribute the Document is void, and will + automatically terminate your rights under this License. However, + parties who have received copies, or rights, from you under this + License will not have their licenses terminated so long as such + parties remain in full compliance. + +

  11. FUTURE REVISIONS OF THIS LICENSE + +

    The Free Software Foundation may publish new, revised versions + of the GNU Free Documentation License from time to time. Such new + versions will be similar in spirit to the present version, but may + differ in detail to address new problems or concerns. See + http://www.gnu.org/copyleft/. + +

    Each version of the License is given a distinguishing version number. + If the Document specifies that a particular numbered version of this + License "or any later version" applies to it, you have the option of + following the terms and conditions either of that specified version or + of any later version that has been published (not as a draft) by the + Free Software Foundation. If the Document does not specify a version + number of this License, you may choose any version ever published (not + as a draft) by the Free Software Foundation. +

+ +

ADDENDUM: How to use this License for your documents

+ +

To use this License in a document you have written, include a copy of + the License in the document and put the following copyright and + license notices just after the title page: + +

  Copyright (C)  year  your name.
+   Permission is granted to copy, distribute and/or modify this document
+   under the terms of the GNU Free Documentation License, Version 1.1
+   or any later version published by the Free Software Foundation;
+   with the Invariant Sections being list their titles, with the
+   Front-Cover Texts being list, and with the Back-Cover Texts being list.
+   A copy of the license is included in the section entitled ``GNU
+   Free Documentation License''.
+ 
+ +

If you have no Invariant Sections, write "with no Invariant Sections" + instead of saying which ones are invariant. If you have no + Front-Cover Texts, write "no Front-Cover Texts" instead of + "Front-Cover Texts being list"; likewise for Back-Cover Texts. + +

If your document contains nontrivial examples of program code, we + recommend releasing these examples in parallel under your choice of + 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.0.2/INSTALL/index.html gcc-3.0.3/INSTALL/index.html *** gcc-3.0.2/INSTALL/index.html Tue Oct 23 10:56:17 2001 --- gcc-3.0.3/INSTALL/index.html Thu Dec 20 11:56:11 2001 *************** more binaries exist that use them. *** 49,53 **** --- 49,74 ----

Return to the GCC Installation page +

Copyright © 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, + 1999, 2000, 2001 Free Software Foundation, Inc. + +

+

Permission is granted to copy, distribute and/or modify this document + under the terms of the GNU Free Documentation License, Version 1.1 or + any later version published by the Free Software Foundation; with no + Invariant Sections, the Front-Cover texts being (a) (see below), and + with the Back-Cover Texts being (b) (see below). A copy of the + license is included in the section entitled "GNU Free Documentation License". + +

(a) The FSF's Front-Cover Text is: + +

A GNU Manual + +

(b) The FSF's Back-Cover Text is: + +

You have freedom to copy and modify this GNU Manual, like GNU + software. Copies published by the Free Software Foundation raise + funds for GNU development. + diff -Nrc3pad gcc-3.0.2/INSTALL/specific.html gcc-3.0.3/INSTALL/specific.html *** gcc-3.0.2/INSTALL/specific.html Tue Oct 23 10:56:17 2001 --- gcc-3.0.3/INSTALL/specific.html Thu Dec 20 11:56:11 2001 *************** as new information becomes available. *** 89,94 **** --- 89,95 ----

  • powerpc*-*-* powerpc-*-sysv4
  • powerpc-*-elf powerpc-*-sysv4
  • powerpc-*-linux-gnu* +
  • powerpc-*-netbsd*
  • powerpc-*-eabiaix
  • powerpc-*-eabisim
  • powerpc-*-eabi *************** as new information becomes available. *** 105,110 **** --- 106,112 ----
  • *-*-solaris2.8
  • sparc-sun-sunos4*
  • sparc-unknown-linux-gnulibc1 +
  • sparc-*-linux*
  • sparc64-*-*
  • *-*-sysv*
  • vax-dec-ultrix *************** if you initially built it with gcc-2.7.2 *** 1546,1552 ****


    !

    powerpc-*-eabiaix

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


    !

    powerpc-*-netbsd*

    ! !

    PowerPC system in big endian mode running NetBSD. To build the ! documentation you will need Texinfo version 4.0 (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. *************** the default. *** 1554,1560 ****


    !

    powerpc-*-eabisim

    Embedded PowerPC system in big endian mode for use in running under the PSIM simulator. --- 1565,1571 ----


    !

    powerpc-*-eabisim

    Embedded PowerPC system in big endian mode for use in running under the PSIM simulator. *************** PSIM simulator. *** 1562,1582 ****


    !

    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. --- 1573,1593 ----


    !

    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. *************** the PSIM simulator. *** 1584,1604 ****


    !

    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

    The only operating systems supported for the IBM RT PC are AOS and MACH. GCC does not support AIX running on the RT. We recommend you --- 1595,1615 ----


    !

    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

    The only operating systems supported for the IBM RT PC are AOS and MACH. GCC does not support AIX running on the RT. We recommend you *************** can be safely ignored; the stage 3 compi *** 1611,1631 ****


    !

    s390-*-linux*

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


    !

    s390x-*-linux*

    IBM zSeries system (64 bit) running Linux for zSeries.


    !

    *-*-solaris2*

    Sun does not ship a C compiler with Solaris 2. To bootstrap and install GCC you first have to install a pre-built compiler, see our --- 1622,1642 ----


    !

    s390-*-linux*

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


    !

    s390x-*-linux*

    IBM zSeries system (64 bit) running Linux for zSeries.


    !

    *-*-solaris2*

    Sun does not ship a C compiler with Solaris 2. To bootstrap and install GCC you first have to install a pre-built compiler, see our *************** newer: g++ will complain th *** 1664,1670 **** that omitting the type means int; this assumption worked for C89 but is wrong for C++, and is now wrong for C99 also. !

    g++ accepts such (illegal) constructs with the option -fpermissive; it will assume that any missing type is int (as defined by C89). --- 1675,1681 ---- that omitting the type means int; this assumption worked for C89 but is wrong for C++, and is now wrong for C99 also. !

    g++ accepts such (invalid) constructs with the option -fpermissive; it will assume that any missing type is int (as defined by C89). *************** will assume that any missing type is


    !

    sparc-sun-solaris2*

    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: --- 1687,1693 ----


    !

    sparc-sun-solaris2*

    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: *************** on non-UltraSPARC machines. *** 1703,1709 ****


    !

    sparc-sun-solaris2.7

    Sun patch 107058-01 (1999-01-13) for Solaris 7/SPARC triggers a bug in the dynamic linker. This problem (Sun bug 4210064) affects GCC 2.8 --- 1714,1720 ----


    !

    sparc-sun-solaris2.7

    Sun patch 107058-01 (1999-01-13) for Solaris 7/SPARC triggers a bug in the dynamic linker. This problem (Sun bug 4210064) affects GCC 2.8 *************** the Solaris 7 Recommended Patch Cluster. *** 1740,1746 ****


    !

    *-*-solaris2.8

    The Solaris 8 linker fails to link some libjava programs if previously-installed GCC java libraries already exist in the configured --- 1751,1757 ----


    !

    *-*-solaris2.8

    The Solaris 8 linker fails to link some libjava programs if previously-installed GCC java libraries already exist in the configured *************** Java libraries. *** 1752,1758 ****


    !

    sparc-sun-sunos4*

    A bug in the SunOS 4 linker will cause it to crash when linking -fPIC compiled objects (and will therefore not allow you to build --- 1763,1769 ----


    !

    sparc-sun-sunos4*

    A bug in the SunOS 4 linker will cause it to crash when linking -fPIC compiled objects (and will therefore not allow you to build *************** be due to a bug in sh. You *** 1771,1777 ****


    !

    sparc-unknown-linux-gnulibc1

    It has been reported that you might need binutils 2.8.1.0.23 --- 1782,1788 ----


    !

    sparc-unknown-linux-gnulibc1

    It has been reported that you might need binutils 2.8.1.0.23 *************** for this platform, too. *** 1780,1786 ****


    !

    sparc64-*-*

    GCC version 2.95 is not able to compile code correctly for sparc64 targets. Users of the Linux kernel, at least, --- 1791,1806 ----


    !

    sparc-*-linux*

    ! !

    GCC versions 3.0 and higher require binutils 2.11.2 and glibc 2.2.4 ! or newer on this platform. All earlier binutils and glibc ! releases mishandled unaligned relocations on sparc-*-* targets. ! !

    !
    ! !

    sparc64-*-*

    GCC version 2.95 is not able to compile code correctly for sparc64 targets. Users of the Linux kernel, at least, *************** recognize (via uname -a) th *** 1791,1797 ****


    !

    *-*-sysv*

    On System V release 3, you may get this error message while linking: --- 1811,1817 ----


    !

    *-*-sysv*

    On System V release 3, you may get this error message while linking: *************** is said to work. Smaller values may als *** 1823,1829 ****


    !

    vax-dec-ultrix

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


    !

    vax-dec-ultrix

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


    !

    we32k-*-*

    These computers are also known as the 3b2, 3b5, 3b20 and other similar names. (However, the 3b1 is actually a 68000.) --- 1851,1857 ----


    !

    we32k-*-*

    These computers are also known as the 3b2, 3b5, 3b20 and other similar names. (However, the 3b1 is actually a 68000.) *************** as the file cc1plus is larg *** 1867,1873 ****


    !

    Microsoft Windows (32 bit)

    A port of GCC 2.95.x is included with the Cygwin environment. --- 1887,1893 ----


    !

    Microsoft Windows (32 bit)

    A port of GCC 2.95.x is included with the Cygwin environment. *************** without modification. *** 1878,1884 ****


    !

    OS/2

    GCC does not currently support OS/2. However, Andrew Zabolotny has been working on a generic OS/2 port with pgcc. The current code can be found --- 1898,1904 ----


    !

    OS/2

    GCC does not currently support OS/2. However, Andrew Zabolotny has been working on a generic OS/2 port with pgcc. The current code can be found *************** at Older systems

    GCC contains support files for many older (1980s and early 1990s) Unix variants. For the most part, support for these systems --- 1910,1916 ----


    !

    Older systems

    GCC contains support files for many older (1980s and early 1990s) Unix variants. For the most part, support for these systems *************** current GCC) is to be found in the GCC t *** 1933,1939 ****


    !

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

    C++ support is significantly better on ELF targets if you use the GNU linker; duplicate copies of --- 1953,1959 ----


    !

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

    C++ support is significantly better on ELF targets if you use the GNU linker; duplicate copies of diff -Nrc3pad gcc-3.0.2/INSTALL/test.html gcc-3.0.3/INSTALL/test.html *** gcc-3.0.2/INSTALL/test.html Tue Oct 23 10:56:17 2001 --- gcc-3.0.3/INSTALL/test.html Thu Dec 20 11:56:11 2001 *************** behave on different platforms and compar *** 117,121 **** --- 117,125 ---- 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.0.2/bugs.html gcc-3.0.3/bugs.html *** gcc-3.0.2/bugs.html Tue Oct 23 10:56:06 2001 --- gcc-3.0.3/bugs.html Thu Dec 20 11:56:01 2001 *************** requested in this summary.

    *** 69,100 ****

    What we need

    ! Please include in your bug report all of the following items:
      !
    • The GCC version (not just 3.xx; run gcc -v)
    • !
    • The system type (the dir name after gcc-lib in the ! output of gcc -v
    • !
    • The complete command line that triggers the bug
    • !
    • The compiler output (error messages, warnings, etc)
    • !
    • The preprocessed file (*.i*) that triggers the bug, generated by adding -save-temps to the complete ! compilation command (see below)
    • !
    • The options given when GCC was configured/built
    !

    What we DON'T want

      !
    • A source file that #includes header files that are left out of the bug report (see above)
    • !
    • That source file and a collection of header files (don't ! waste your time; the preprocessor will collect them for you! :-)
    • An attached archive (tar, zip, shar, whatever) containing all ! (or some :-) of the above, so that we can tell what the bug report ! is about without having to unarchive it
    • A code snippet that won't cause the compiler to produce the exact output mentioned in the bug report (e.g., a snippet with just --- 69,98 ----

      What we need

      ! Please include in your bug report all of the following items, the first ! three of which can be obtained from the output of gcc -v:
        !
      • the exact version of GCC;
      • !
      • the system type;
      • !
      • the options given when GCC was configured/built;
      • !
      • the complete command line that triggers the bug;
      • !
      • the compiler output (error messages, warnings, etc.); and
      • !
      • the preprocessed file (*.i*) that triggers the bug, generated by adding -save-temps to the complete ! compilation command (see below).
      !

      What we do not want

        !
      • A source file that #includes header files that are left out of the bug report (see above)
      • !
      • That source file and a collection of header files.
      • An attached archive (tar, zip, shar, whatever) containing all ! (or some :-) of the above.
      • A code snippet that won't cause the compiler to produce the exact output mentioned in the bug report (e.g., a snippet with just *************** Please include in your bug report all *** 112,121 **** not of a compiler bug (sorry)
      • E-mail messages that complement previous, incomplete bug ! reports; post a new, self-contained, full bug report instead, if ! possible as a follow-up (or reply) to the original bug report
      • !
      • Assembly files (*.s) produced by the compiler, or any binary files, such as object files, executables or core files
      • Duplicate bug reports, or reports of bugs already fixed in the --- 110,119 ---- not of a compiler bug (sorry)
      • E-mail messages that complement previous, incomplete bug ! reports. Post a new, self-contained, full bug report instead, if ! possible as a follow-up to the original bug report
      • !
      • Assembly files (*.s) produced by the compiler, or any binary files, such as object files, executables or core files
      • Duplicate bug reports, or reports of bugs already fixed in the *************** Please include in your bug report all *** 137,144 ****

        Where to post it

        Please submit your bug report directly to the ! GCC GNATS bug database. If this is not possible, ! please mail all information to gcc-bugs@gcc.gnu.org. --- 135,143 ----

        Where to post it

        Please submit your bug report directly to the ! GCC GNATS bug database. ! Only if this is not possible, mail all information to ! bug-gcc@gnu.org or gcc-bugs@gcc.gnu.org. *************** Typically the preprocessed file (extensi *** 156,175 **** resulting file with one of the popular compression programs such as bzip2, gzip, zip or compress (in decreasing order of preference). Use maximum compression ! (-9) if available. Please include the compressed preprocessor output in your bug report, even if the source code is freely available elsewhere; it makes the job of our volunteer testers much easier.

        The only excuses to not send us the preprocessed sources are (i) if you've found a bug in the preprocessor, or (ii) if you've ! reduced the testcase to a small file that doesn't include any other file. If you can't post the preprocessed sources because they're proprietary code, then try to create a small file that triggers the same problem.

        Since we're supposed to be able to re-create the assembly output ! (extension .s), you usually should not include it in the bug report, although you may want to post parts of it to point out assembly code you consider to be wrong.

        --- 155,174 ---- resulting file with one of the popular compression programs such as bzip2, gzip, zip or compress (in decreasing order of preference). Use maximum compression ! (-9) if available. Please include the compressed preprocessor output in your bug report, even if the source code is freely available elsewhere; it makes the job of our volunteer testers much easier.

        The only excuses to not send us the preprocessed sources are (i) if you've found a bug in the preprocessor, or (ii) if you've ! reduced the testcase to a small file that doesn't include any other file. If you can't post the preprocessed sources because they're proprietary code, then try to create a small file that triggers the same problem.

        Since we're supposed to be able to re-create the assembly output ! (extension .s), you usually should not include it in the bug report, although you may want to post parts of it to point out assembly code you consider to be wrong.

        *************** lot. Code like this: *** 277,286 ****
        will not compile with GNU libc (GNU/Linux libc6), because ! stdin is not a constant. This was done deliberately, in ! order for there to be no limit on the number of open FILE ! objects. It is surprising for people used to traditional Unix C ! libraries, but it is permitted by the C standard.

        This construct commonly occurs in code generated by old versions of lex or yacc. We suggest you try regenerating the parser with a --- 276,285 ---- will not compile with GNU libc (GNU/Linux libc6), because ! stdin is not a constant. This was done deliberately, to make ! it easier to maintain binary compatibility when the type FILE ! needs to be changed. It is surprising for people used to traditional Unix ! C libraries, but it is permitted by the C standard.

        This construct commonly occurs in code generated by old versions of lex or yacc. We suggest you try regenerating the parser with a diff -Nrc3pad gcc-3.0.2/config/ChangeLog gcc-3.0.3/config/ChangeLog *** gcc-3.0.2/config/ChangeLog Tue Oct 23 10:18:59 2001 --- gcc-3.0.3/config/ChangeLog Thu Dec 20 11:21:11 2001 *************** *** 1,3 **** --- 1,7 ---- + 2001-12-20 Release Manager + + * GCC 3.0.3 Released. + 2001-10-23 Release Manager * GCC 3.0.2 Released. diff -Nrc3pad gcc-3.0.2/config/mpw/ChangeLog gcc-3.0.3/config/mpw/ChangeLog *** gcc-3.0.2/config/mpw/ChangeLog Tue Oct 23 10:18:55 2001 --- gcc-3.0.3/config/mpw/ChangeLog Thu Dec 20 11:21:07 2001 *************** *** 1,3 **** --- 1,7 ---- + 2001-12-20 Release Manager + + * GCC 3.0.3 Released. + 2001-10-23 Release Manager * GCC 3.0.2 Released. diff -Nrc3pad gcc-3.0.2/contrib/ChangeLog gcc-3.0.3/contrib/ChangeLog *** gcc-3.0.2/contrib/ChangeLog Tue Oct 23 10:19:03 2001 --- gcc-3.0.3/contrib/ChangeLog Thu Dec 20 11:21:15 2001 *************** *** 1,3 **** --- 1,26 ---- + 2001-12-20 Release Manager + + * GCC 3.0.3 Released. + + 2001-12-10 Franz Sirl + + * PR3145.patch: Update. + + 2001-12-01 Franz Sirl + + * PR3145.patch: Backported bugfix. + + 2001-11-18 Joseph S. Myers + + * gcc_update (files_and_dependencies): Add the new *.7 man pages. + + 2001-11-14 Joseph S. Myers + + * texi2pod.pl: Handle @ifnottex, @iftex and @display. Handle @var + in verbatim blocks specially. Handle @unnumbered, @unnumberedsec + and @center. Allow [a-z] after @enumerate. Handle 0 and numbers + greater than 9 in enumerations. + 2001-10-23 Release Manager * GCC 3.0.2 Released. diff -Nrc3pad gcc-3.0.2/contrib/PR3145.patch gcc-3.0.3/contrib/PR3145.patch *** gcc-3.0.2/contrib/PR3145.patch Wed Dec 31 16:00:00 1969 --- gcc-3.0.3/contrib/PR3145.patch Mon Dec 10 14:16:27 2001 *************** *** 0 **** --- 1,3818 ---- + + This patch is a quick backport of Nathan Sidwell's patch to fix PR c++/3145, + the infamous "virtual inheritance" bug. This affected especially KDE2 + (eg. artsd). + + Apply in the in GCC's toplevel source dir with: + + patch -p0 + + + + 2001-12-04 Jason Merrill + + * init.c (resolve_offset_ref): Don't check access for the base + conversion to access a FIELD_DECL. + + 2001-11-22 Nathan Sidwell + + PR g++/3145 + * class.c (build_vbase_pointer): Remove. + (build_vbase_path): Remove. + (build_base_path): New function. + * cp-tree.h (base_access, base_kind): New enumerations. + (build_base_path): Declare. + (convert_pointer_to_real): Remove. + (convert_pointer_to): Remove. + (lookup_base): Declare. + (convert_pointer_to_vbase): Remove. + * call.c (build_scoped_method_call): Use lookup_base & + build_base_path instead of convert_pointer_to_real, + get_base_distance & get_binfo. + (build_over_call): Likewise. + * cvt.c (cp_convert_to_pointer): Likewise. + (convert_to_pointer_force): Likewise. + (build_up_reference): Likewise. + (convert_pointer_to_real): Remove. + (convert_pointer_to): Remove. + * init.c (dfs_initialize_vtbl_ptrs): Use build_base_path + instead of convert_pointer_to_vbase & build_vbase_path. + (emit_base_init): Use build_base_path instead of + convert_pointer_to_real. + (expand_virtual_init): Lose unrequired conversions. + (resolve_offset_ref): Use lookup_base and build_base_path + instead of convert_pointer_to. + *rtti.c (build_dynamic_cast_1): Use lookup_base & + build_base_path instead of get_base_distance & build_vbase_path. + *search.c (get_vbase_1): Remove. + (get_vbase): Remove. + (convert_pointer_to_vbase): Remove. + (lookup_base_recursive): New function. + (lookup_base): New function. + * typeck.c (require_complete_type): Use lookup_base & + build_base_path instead of convert_pointer_to. + (build_component_ref): Likewise. + (build_x_function_call): Likewise. + (get_member_function_from_ptrfunc): Likewise. + (build_component_addr): Likewise. + * typeck2.c (build_scoped_ref): Likewise. + + 2001-07-31 Nathan Sidwell + + The 3.0 ABI no longer has vbase pointer fields. + * cp-tree.h (VBASE_NAME, VBASE_NAME_FORMAT, VBASE_NAME_P, + FORMAT_VBASE_NAME): Remove. + * method.c (do_build_copy_constructor): Adjust. + (do_build_assign_ref): Adjust. + * search.c (lookup_field_r): Adjust. + * typeck.c (build_component_ref): Adjust. + + The 3.0 ABI always has a vtable pointer at the start of every + polymorphic class. + * rtti.c (build_headof_sub): Remove. + (build_headof): Adjust. + (get_tinfo_decl_dynamic): No need to check flag_rtti + here. Adjust. + (create_real_tinfo_var): Explain why we need a hidden name. + + 2001-07-20 Nathan Sidwell + + Remove flag_vtable_thunk. It is always on for the 3.0 ABI. + * cp-tree.h (CPTI_DELTA2_IDENTIFIER): Remove. + (CPTI_INDEX_IDENTIFIER): Remove. + (CPT_PFN_OR_DELTA2_IDENTIFIER): Remove. + (delta2_identifier): Remove. + (index_identifier): Remove. + (pfn_or_delta2_identifier): Remove. + (flag_vtable_thunks): Remove. + (VTABLE_DELTA2_NAME): Remove. + (VTABLE_INDEX_NAME): Remove. + (FNADDR_FROM_VTABLE_ENTRY): Adjust. + (vfunc_ptr_type_node): Adjust. + (VTABLE_NAME_PREFIX): Adjust. + (build_vfn_ref): Lose first parameter. + (fixup_all_virtual_upcast_offsets): Remove. + * decl.c (initialize_predefined_identifiers): Remove + delta2_identifier, index_identifier, pfn_or_delta2_identifier. + (init_decl_processing): Remove no-vtable-thunk code. + * decl2.c (flag_vtable_thunks): Remove. + (mark_vtable_entries): Remove no-vtable-thunk code. + * error.c (dump_decl): Remove no-vtable-thunk code. + (dump_expr): Adjust ptr to member function code. + * init.c (initialize_vtable_ptrs): Remove no-vtable-thunk + code. + * rtti.c (build_headof): Remove no-vtable-thunk code. + (get_tinfo_decl_dynamic): Adjust build_vfn_ref call. + * search.c (get_base_distance): Remove expand_upcast_fixups case. + (virtual_context) Remove. + (expand_upcast_fixups): Remove. + (fixup_virtual_upcast_offsets): Remove. + (fixup_all_virtual_upcast_offsets): Remove. + * typeck.c (get_member_function_from_ptrfunc): Remove + no-vtable-thunk code. + * call.c (build_over_call): Adjust call to build_vfn_ref. + * class.c (build_vfn_ref): Lose first parameter. Remove + no-vtable-thunk code. + (build_rtti_vtbl_entries): Remove no-vtable-thunk code. + (build_vtable_entry): Remove no-vtable-thunk code. + + 2001-07-20 Nathan Sidwell + + Remove old-abi remnants. Remove comments about old abi + behaviour. Remove refences to 'new-abi' in comments. + * cp-tree.h: Adjust comments. + (vbase_offsets_in_vtable_p): Delete. + (vcall_offsets_in_vtable_p): Delete. + (vptrs_present_everywhere_p): Delete. + (all_overridden_vfuns_in_vtables_p): Delete. + (merge_primary_and_secondary_vtables_p): Delete. + (TYPE_CONTAINS_VPTR_P): Adjust. + (VTT_NAME_PREFIX): Remove. + (CTOR_VTBL_NAME_PREFIX): Remove. + (init_vbase_pointers): Remove. + * class.c: Adjust coments. + (build_vbase_pointer_fields): Delete. + (build_vbase_pointer): Remove old-abi code. + (build_secondary_vtable): Likewise. + (modify_all_vtables): Likewise. + (create_vtable_ptr): Likewise. + (layout_class_type): Likewise. + (finish_struct_1): Likewise. + (finish_vtbls): Likewise. + (dfs_finish_vtbls): Delete. + (build_vbase_offset_vtbl_entries): Remove old-abi code. + * cvt.c: Adjust comments. + * decl.c: Adjust comments. + * decl2.c: Adjust comments. + * init.c: Adjust comments. + (construct_virtual_bases): Remove old-abi code. + * lang-specs.h: Remove -fno-new-abi. + * mangle.c: Adjust comments. + * rtti.c: Adjust comments. + (get_base_offset): Remove old-abi-code. + * search.c: Adjust comments. + (dfs_init_vbase_pointers): Remove. + (dfs_vtable_path_unmark): Remove. + (init_vbase_pointers): Remove. + * semantics.c: Adjust comments. + (emit_associated_thunks): Remove old-abi code. + * typeck.c: Adjust comments. + + Index: gcc/cp/call.c + =================================================================== + RCS file: /cvs/gcc/gcc/gcc/cp/call.c,v + retrieving revision 1.255.2.20 + diff -u -p -r1.255.2.20 call.c + --- gcc/cp/call.c 2001/11/29 20:16:18 1.255.2.20 + +++ gcc/cp/call.c 2001/12/10 22:04:47 + @@ -288,7 +288,7 @@ build_scoped_method_call (exp, basetype, + + if (! binfo) + { + - binfo = get_binfo (basetype, type, 1); + + binfo = lookup_base (type, basetype, ba_check, NULL); + if (binfo == error_mark_node) + return error_mark_node; + if (! binfo) + @@ -298,9 +298,12 @@ build_scoped_method_call (exp, basetype, + if (binfo) + { + if (TREE_CODE (exp) == INDIRECT_REF) + - decl = build_indirect_ref + - (convert_pointer_to_real + - (binfo, build_unary_op (ADDR_EXPR, exp, 0)), NULL_PTR); + + { + + decl = build_base_path (PLUS_EXPR, + + build_unary_op (ADDR_EXPR, exp, 0), + + binfo, 1); + + decl = build_indirect_ref (decl, NULL); + + } + else + decl = build_scoped_ref (exp, basetype); + + @@ -4126,7 +4129,9 @@ build_over_call (cand, args, flags) + So we can assume that anything passed as 'this' is non-null, and + optimize accordingly. */ + my_friendly_assert (TREE_CODE (parmtype) == POINTER_TYPE, 19990811); + - t = convert_pointer_to_real (TREE_TYPE (parmtype), TREE_VALUE (arg)); + + t = lookup_base (TREE_TYPE (TREE_TYPE (TREE_VALUE (arg))), + + TREE_TYPE (parmtype), ba_ignore, NULL); + + t = build_base_path (PLUS_EXPR, TREE_VALUE (arg), t, 1); + converted_args = tree_cons (NULL_TREE, t, converted_args); + parm = TREE_CHAIN (parm); + arg = TREE_CHAIN (arg); + @@ -4300,16 +4305,19 @@ build_over_call (cand, args, flags) + if (DECL_VINDEX (fn) && (flags & LOOKUP_NONVIRTUAL) == 0) + { + tree t, *p = &TREE_VALUE (converted_args); + - tree binfo = get_binfo + - (DECL_VIRTUAL_CONTEXT (fn), TREE_TYPE (TREE_TYPE (*p)), 0); + - *p = convert_pointer_to_real (binfo, *p); + + tree binfo = lookup_base (TREE_TYPE (TREE_TYPE (*p)), + + DECL_VIRTUAL_CONTEXT (fn), + + ba_any, NULL); + + my_friendly_assert (binfo && binfo != error_mark_node, 20010730); + + + + *p = build_base_path (PLUS_EXPR, *p, binfo, 1); + if (TREE_SIDE_EFFECTS (*p)) + *p = save_expr (*p); + t = build_pointer_type (TREE_TYPE (fn)); + if (DECL_CONTEXT (fn) && TYPE_JAVA_INTERFACE (DECL_CONTEXT (fn))) + fn = build_java_interface_fn_ref (fn, *p); + else + - fn = build_vfn_ref (p, build_indirect_ref (*p, 0), DECL_VINDEX (fn)); + + fn = build_vfn_ref (build_indirect_ref (*p, 0), DECL_VINDEX (fn)); + TREE_TYPE (fn) = t; + } + else if (DECL_INLINE (fn)) + Index: gcc/cp/class.c + =================================================================== + RCS file: /cvs/gcc/gcc/gcc/cp/class.c,v + retrieving revision 1.358.2.38 + diff -u -p -r1.358.2.38 class.c + --- gcc/cp/class.c 2001/12/03 02:38:50 1.358.2.38 + +++ gcc/cp/class.c 2001/12/10 22:04:52 + @@ -106,13 +106,11 @@ varray_type local_classes; + + static tree get_vfield_name PARAMS ((tree)); + static void finish_struct_anon PARAMS ((tree)); + -static tree build_vbase_pointer PARAMS ((tree, tree)); + static tree build_vtable_entry PARAMS ((tree, tree, tree)); + static tree get_vtable_name PARAMS ((tree)); + static tree get_basefndecls PARAMS ((tree, tree)); + static int build_primary_vtable PARAMS ((tree, tree)); + static int build_secondary_vtable PARAMS ((tree, tree)); + -static tree dfs_finish_vtbls PARAMS ((tree, void *)); + static void finish_vtbls PARAMS ((tree)); + static void modify_vtable_entry PARAMS ((tree, tree, tree, tree, tree *)); + static void add_virtual_function PARAMS ((tree *, tree *, int *, tree, tree)); + @@ -146,7 +144,6 @@ static bool build_base_field PARAMS ((re + splay_tree, tree)); + static bool build_base_fields PARAMS ((record_layout_info, int *, + splay_tree, tree)); + -static tree build_vbase_pointer_fields PARAMS ((record_layout_info, int *)); + static tree build_vtbl_or_vbase_field PARAMS ((tree, tree, tree, tree, tree, + int *)); + static void check_methods PARAMS ((tree)); + @@ -237,277 +234,122 @@ int n_build_method_call = 0; + int n_inner_fields_searched = 0; + #endif + + -/* Virtual base class layout. */ + +/* Convert to or from a base subobject. EXPR is an expression of type + + `A' or `A*', an expression of type `B' or `B*' is returned. To + + convert A to a base B, CODE is PLUS_EXPR and BINFO is the binfo for + + the B base instance within A. To convert base A to derived B, CODE + + is MINUS_EXPR and BINFO is the binfo for the A instance within B. + + In this latter case, A must not be a morally virtual base of B. + + NONNULL is true if EXPR is known to be non-NULL (this is only + + needed when EXPR is of pointer type). CV qualifiers are preserved + + from EXPR. */ + + -/* Returns a list of virtual base class pointers as a chain of + - FIELD_DECLS. */ + - + -static tree + -build_vbase_pointer_fields (rli, empty_p) + - record_layout_info rli; + - int *empty_p; + -{ + - /* Chain to hold all the new FIELD_DECLs which point at virtual + - base classes. */ + - tree rec = rli->t; + - tree vbase_decls = NULL_TREE; + - tree binfos = TYPE_BINFO_BASETYPES (rec); + - int n_baseclasses = CLASSTYPE_N_BASECLASSES (rec); + - tree decl; + - int i; + - + - /* Under the new ABI, there are no vbase pointers in the object. + - Instead, the offsets are stored in the vtable. */ + - if (vbase_offsets_in_vtable_p ()) + - return NULL_TREE; + - + - /* Loop over the baseclasses, adding vbase pointers as needed. */ + - for (i = 0; i < n_baseclasses; i++) + - { + - register tree base_binfo = TREE_VEC_ELT (binfos, i); + - register tree basetype = BINFO_TYPE (base_binfo); + - + - if (!COMPLETE_TYPE_P (basetype)) + - /* This error is now reported in xref_tag, thus giving better + - location information. */ + - continue; + - + - /* All basetypes are recorded in the association list of the + - derived type. */ + - + - if (TREE_VIA_VIRTUAL (base_binfo)) + - { + - int j; + - const char *name; + - + - /* The offset for a virtual base class is only used in computing + - virtual function tables and for initializing virtual base + - pointers. It is built once `get_vbase_types' is called. */ + - + - /* If this basetype can come from another vbase pointer + - without an additional indirection, we will share + - that pointer. If an indirection is involved, we + - make our own pointer. */ + - for (j = 0; j < n_baseclasses; j++) + - { + - tree other_base_binfo = TREE_VEC_ELT (binfos, j); + - if (! TREE_VIA_VIRTUAL (other_base_binfo) + - && binfo_for_vbase (basetype, BINFO_TYPE (other_base_binfo))) + - goto got_it; + - } + - FORMAT_VBASE_NAME (name, basetype); + - decl = build_vtbl_or_vbase_field (get_identifier (name), + - get_identifier (VTABLE_BASE), + - build_pointer_type (basetype), + - rec, + - basetype, + - empty_p); + - BINFO_VPTR_FIELD (base_binfo) = decl; + - TREE_CHAIN (decl) = vbase_decls; + - place_field (rli, decl); + - vbase_decls = decl; + - *empty_p = 0; + - + - got_it: + - /* The space this decl occupies has already been accounted for. */ + - ; + - } + - } + - + - return vbase_decls; + -} + - + -/* Returns a pointer to the virtual base class of EXP that has the + - indicated TYPE. EXP is of class type, not a pointer type. */ + - + -static tree + -build_vbase_pointer (exp, type) + - tree exp, type; + -{ + - if (vbase_offsets_in_vtable_p ()) + - { + - tree vbase; + - tree vbase_ptr; + - + - /* Find the shared copy of TYPE; that's where the vtable offset + - is recorded. */ + - vbase = binfo_for_vbase (type, TREE_TYPE (exp)); + - /* Find the virtual function table pointer. */ + - vbase_ptr = build_vfield_ref (exp, TREE_TYPE (exp)); + - /* Compute the location where the offset will lie. */ + - vbase_ptr = build (PLUS_EXPR, + - TREE_TYPE (vbase_ptr), + - vbase_ptr, + - BINFO_VPTR_FIELD (vbase)); + - vbase_ptr = build1 (NOP_EXPR, + - build_pointer_type (ptrdiff_type_node), + - vbase_ptr); + - /* Add the contents of this location to EXP. */ + - return build (PLUS_EXPR, + - build_pointer_type (type), + - build_unary_op (ADDR_EXPR, exp, /*noconvert=*/0), + - build1 (INDIRECT_REF, ptrdiff_type_node, vbase_ptr)); + - } + - else + - { + - char *name; + - FORMAT_VBASE_NAME (name, type); + - return build_component_ref (exp, get_identifier (name), NULL_TREE, 0); + - } + -} + - + -/* Build multi-level access to EXPR using hierarchy path PATH. + - CODE is PLUS_EXPR if we are going with the grain, + - and MINUS_EXPR if we are not (in which case, we cannot traverse + - virtual baseclass links). + - + - TYPE is the type we want this path to have on exit. + - + - NONNULL is non-zero if we know (for any reason) that EXPR is + - not, in fact, zero. */ + - + tree + -build_vbase_path (code, type, expr, path, nonnull) + +build_base_path (code, expr, binfo, nonnull) + enum tree_code code; + - tree type, expr, path; + + tree expr; + + tree binfo; + int nonnull; + { + - register int changed = 0; + - tree last = NULL_TREE, last_virtual = NULL_TREE; + + tree v_binfo = NULL_TREE; + + tree t; + + tree probe; + + tree offset; + + tree target_type; + + tree null_test = NULL; + + tree ptr_target_type; + int fixed_type_p; + - tree null_expr = 0, nonnull_expr; + - tree basetype; + - tree offset = integer_zero_node; + + int want_pointer = TREE_CODE (TREE_TYPE (expr)) == POINTER_TYPE; + + - if (BINFO_INHERITANCE_CHAIN (path) == NULL_TREE) + - return build1 (NOP_EXPR, type, expr); + + if (expr == error_mark_node || binfo == error_mark_node || !binfo) + + return error_mark_node; + + + + for (probe = binfo; probe; + + t = probe, probe = BINFO_INHERITANCE_CHAIN (probe)) + + if (!v_binfo && TREE_VIA_VIRTUAL (probe)) + + v_binfo = probe; + + + + probe = TYPE_MAIN_VARIANT (TREE_TYPE (expr)); + + if (want_pointer) + + probe = TYPE_MAIN_VARIANT (TREE_TYPE (probe)); + + + + my_friendly_assert (code == MINUS_EXPR + + ? same_type_p (BINFO_TYPE (binfo), probe) + + : code == PLUS_EXPR + + ? same_type_p (BINFO_TYPE (t), probe) + + : false, 20010723); + + + + if (code == MINUS_EXPR && v_binfo) + + { + + cp_error ("cannot convert from base `%T' to derived type `%T' via virtual base `%T'", + + BINFO_TYPE (binfo), BINFO_TYPE (t), BINFO_TYPE (v_binfo)); + + return error_mark_node; + + } + + - /* We could do better if we had additional logic to convert back to the + - unconverted type (the static type of the complete object), and then + - convert back to the type we want. Until that is done, we only optimize + - if the complete type is the same type as expr has. */ + fixed_type_p = resolves_to_fixed_type_p (expr, &nonnull); + if (fixed_type_p < 0) + /* Virtual base layout is not fixed, even in ctors and dtors. */ + fixed_type_p = 0; + - + if (!fixed_type_p && TREE_SIDE_EFFECTS (expr)) + expr = save_expr (expr); + - nonnull_expr = expr; + - + - path = reverse_path (path); + - + - basetype = BINFO_TYPE (path); + - + - while (path) + + + + if (!want_pointer) + + expr = build_unary_op (ADDR_EXPR, expr, 0); + + else if (!nonnull) + + null_test = build (EQ_EXPR, boolean_type_node, expr, integer_zero_node); + + + + offset = BINFO_OFFSET (binfo); + + + + if (v_binfo && !fixed_type_p) + { + - if (TREE_VIA_VIRTUAL (TREE_VALUE (path))) + - { + - last_virtual = BINFO_TYPE (TREE_VALUE (path)); + - if (code == PLUS_EXPR) + - { + - changed = ! fixed_type_p; + - + - if (changed) + - { + - tree ind; + - + - /* We already check for ambiguous things in the caller, just + - find a path. */ + - if (last) + - { + - tree binfo = get_binfo (last, TYPE_MAIN_VARIANT (TREE_TYPE (TREE_TYPE (nonnull_expr))), 0); + - nonnull_expr = convert_pointer_to_real (binfo, nonnull_expr); + - } + - ind = build_indirect_ref (nonnull_expr, NULL_PTR); + - nonnull_expr = build_vbase_pointer (ind, last_virtual); + - if (nonnull == 0 + - && TREE_CODE (type) == POINTER_TYPE + - && null_expr == NULL_TREE) + - { + - null_expr = build1 (NOP_EXPR, build_pointer_type (last_virtual), integer_zero_node); + - expr = build (COND_EXPR, build_pointer_type (last_virtual), + - build (EQ_EXPR, boolean_type_node, expr, + - integer_zero_node), + - null_expr, nonnull_expr); + - } + - } + - /* else we'll figure out the offset below. */ + + /* Going via virtual base V_BINFO. We need the static offset + + from V_BINFO to BINFO, and the dynamic offset from T to + + V_BINFO. That offset is an entry in T's vtable. */ + + tree v_offset = build_vfield_ref (build_indirect_ref (expr, NULL), + + TREE_TYPE (TREE_TYPE (expr))); + + + + v_binfo = binfo_for_vbase (BINFO_TYPE (v_binfo), BINFO_TYPE (t)); + + + + v_offset = build (PLUS_EXPR, TREE_TYPE (v_offset), + + v_offset, BINFO_VPTR_FIELD (v_binfo)); + + v_offset = build1 (NOP_EXPR, + + build_pointer_type (ptrdiff_type_node), + + v_offset); + + v_offset = build_indirect_ref (v_offset, NULL); + + + + offset = cp_convert (ptrdiff_type_node, + + size_diffop (offset, BINFO_OFFSET (v_binfo))); + + - /* Happens in the case of parse errors. */ + - if (nonnull_expr == error_mark_node) + - return error_mark_node; + - } + - else + - { + - cp_error ("cannot cast up from virtual baseclass `%T'", + - last_virtual); + - return error_mark_node; + - } + - } + - last = TREE_VALUE (path); + - path = TREE_CHAIN (path); + + if (!integer_zerop (offset)) + + offset = build (code, ptrdiff_type_node, v_offset, offset); + + else + + offset = v_offset; + } + - /* LAST is now the last basetype assoc on the path. */ + + - /* A pointer to a virtual base member of a non-null object + - is non-null. Therefore, we only need to test for zeroness once. + - Make EXPR the canonical expression to deal with here. */ + - if (null_expr) + - { + - TREE_OPERAND (expr, 2) = nonnull_expr; + - TREE_TYPE (expr) = TREE_TYPE (TREE_OPERAND (expr, 1)) + - = TREE_TYPE (nonnull_expr); + - } + - else + - expr = nonnull_expr; + + target_type = code == PLUS_EXPR ? BINFO_TYPE (binfo) : BINFO_TYPE (t); + + + + target_type = cp_build_qualified_type + + (target_type, CP_TYPE_QUALS (TREE_TYPE (TREE_TYPE (expr)))); + + ptr_target_type = build_pointer_type (target_type); + + if (want_pointer) + + target_type = ptr_target_type; + + + + expr = build1 (NOP_EXPR, ptr_target_type, expr); + + - /* If we go through any virtual base pointers, make sure that + - casts to BASETYPE from the last virtual base class use + - the right value for BASETYPE. */ + - if (changed) + - { + - tree intype = TREE_TYPE (TREE_TYPE (expr)); + - + - if (TYPE_MAIN_VARIANT (intype) != BINFO_TYPE (last)) + - offset + - = BINFO_OFFSET (get_binfo (last, TYPE_MAIN_VARIANT (intype), 0)); + - } + + if (!integer_zerop (offset)) + + expr = build (code, ptr_target_type, expr, offset); + else + - offset = BINFO_OFFSET (last); + - + - if (! integer_zerop (offset)) + - { + - /* Bash types to make the backend happy. */ + - offset = cp_convert (type, offset); + - + - /* If expr might be 0, we need to preserve that zeroness. */ + - if (nonnull == 0) + - { + - if (null_expr) + - TREE_TYPE (null_expr) = type; + - else + - null_expr = build1 (NOP_EXPR, type, integer_zero_node); + - if (TREE_SIDE_EFFECTS (expr)) + - expr = save_expr (expr); + - + - return build (COND_EXPR, type, + - build (EQ_EXPR, boolean_type_node, expr, integer_zero_node), + - null_expr, + - build (code, type, expr, offset)); + - } + - else return build (code, type, expr, offset); + - } + + null_test = NULL; + + + + if (!want_pointer) + + expr = build_indirect_ref (expr, NULL); + + - /* Cannot change the TREE_TYPE of a NOP_EXPR here, since it may + - be used multiple times in initialization of multiple inheritance. */ + - if (null_expr) + - { + - TREE_TYPE (expr) = type; + - return expr; + - } + - else + - return build1 (NOP_EXPR, type, expr); + + if (null_test) + + expr = build (COND_EXPR, target_type, null_test, + + build1 (NOP_EXPR, target_type, integer_zero_node), + + expr); + + + + return expr; + } + + + @@ -533,8 +375,6 @@ build_vtable_entry_ref (basetype, vtbl, + s = build_tree_list (build_string (1, "s"), s); + + i = build_array_ref (vtbl, idx); + - if (!flag_vtable_thunks) + - i = build_component_ref (i, pfn_identifier, vtable_entry_type, 0); + i = build_c_cast (ptrdiff_type_node, build_unary_op (ADDR_EXPR, i, 0)); + i2 = build_array_ref (vtbl, build_int_2(0,0)); + i2 = build_c_cast (ptrdiff_type_node, build_unary_op (ADDR_EXPR, i2, 0)); + @@ -603,8 +443,8 @@ build_vtbl_ref (instance, idx) + { + vtbl = TYPE_BINFO_VTABLE (basetype); + /* Knowing the dynamic type of INSTANCE we can easily obtain + - the correct vtable entry. In the new ABI, we resolve + - this back to be in terms of the primary vtable. */ + + the correct vtable entry. We resolve this back to be in + + terms of the primary vtable. */ + if (TREE_CODE (vtbl) == PLUS_EXPR) + { + idx = fold (build (PLUS_EXPR, + @@ -632,45 +472,22 @@ build_vtbl_ref (instance, idx) + } + + /* Given an object INSTANCE, return an expression which yields the + - virtual function corresponding to INDEX. There are many special + - cases for INSTANCE which we take care of here, mainly to avoid + - creating extra tree nodes when we don't have to. */ + + virtual function corresponding to IDX. */ + + tree + -build_vfn_ref (ptr_to_instptr, instance, idx) + - tree *ptr_to_instptr, instance; + +build_vfn_ref (instance, idx) + + tree instance; + tree idx; + { + tree aref = build_vtbl_ref (instance, idx); + - + - /* When using thunks, there is no extra delta, and we get the pfn + - directly. */ + - if (flag_vtable_thunks) + - { + - /* When using function descriptors, the address of the + - vtable entry is treated as a function pointer. */ + - if (TARGET_VTABLE_USES_DESCRIPTORS) + - return build1 (NOP_EXPR, TREE_TYPE (aref), + - build_unary_op (ADDR_EXPR, aref, /*noconvert=*/1)); + - + - return aref; + - } + - + - if (ptr_to_instptr) + - { + - /* Save the intermediate result in a SAVE_EXPR so we don't have to + - compute each component of the virtual function pointer twice. */ + - if (TREE_CODE (aref) == INDIRECT_REF) + - TREE_OPERAND (aref, 0) = save_expr (TREE_OPERAND (aref, 0)); + + - *ptr_to_instptr + - = build (PLUS_EXPR, TREE_TYPE (*ptr_to_instptr), + - *ptr_to_instptr, + - cp_convert (ptrdiff_type_node, + - build_component_ref (aref, delta_identifier, NULL_TREE, 0))); + - } + + /* When using function descriptors, the address of the + + vtable entry is treated as a function pointer. */ + + if (TARGET_VTABLE_USES_DESCRIPTORS) + + return build1 (NOP_EXPR, TREE_TYPE (aref), + + build_unary_op (ADDR_EXPR, aref, /*noconvert=*/1)); + + - return build_component_ref (aref, pfn_identifier, NULL_TREE, 0); + + return aref; + } + + /* Return the name of the virtual function table (as an IDENTIFIER_NODE) + @@ -826,15 +643,15 @@ build_primary_vtable (binfo, type) + return 1; + } + + -/* Give TYPE a new virtual function table which is initialized + +/* Give BINFO a new virtual function table which is initialized + with a skeleton-copy of its original initialization. The only + entry that changes is the `delta' entry, so we can really + share a lot of structure. + + - FOR_TYPE is the derived type which caused this table to + + FOR_TYPE is the most derived type which caused this table to + be needed. + + - BINFO is the type association which provided TYPE for FOR_TYPE. + + Returns non-zero if we haven't met BINFO before. + + The order in which vtables are built (by calling this function) for + an object must remain the same, otherwise a binary incompatibility + @@ -844,143 +661,28 @@ static int + build_secondary_vtable (binfo, for_type) + tree binfo, for_type; + { + - tree basetype; + - tree orig_decl = BINFO_VTABLE (binfo); + - tree name; + - tree new_decl; + - tree offset; + - tree path = binfo; + - char *buf; + - const char *buf2; + - char joiner = '_'; + - int i; + - + -#ifdef JOINER + - joiner = JOINER; + -#endif + - + - if (TREE_VIA_VIRTUAL (binfo)) + - my_friendly_assert (binfo == binfo_for_vbase (BINFO_TYPE (binfo), + - current_class_type), + - 170); + + my_friendly_assert (binfo == CANONICAL_BINFO (binfo, for_type), 20010605); + + - if (BINFO_NEW_VTABLE_MARKED (binfo, current_class_type)) + + if (BINFO_NEW_VTABLE_MARKED (binfo, for_type)) + /* We already created a vtable for this base. There's no need to + do it again. */ + return 0; + + /* Remember that we've created a vtable for this BINFO, so that we + don't try to do so again. */ + - SET_BINFO_NEW_VTABLE_MARKED (binfo, current_class_type); + + SET_BINFO_NEW_VTABLE_MARKED (binfo, for_type); + + /* Make fresh virtual list, so we can smash it later. */ + BINFO_VIRTUALS (binfo) = copy_virtuals (binfo); + - + - my_friendly_assert (binfo == CANONICAL_BINFO (binfo, for_type), 20010605); + - offset = BINFO_OFFSET (binfo); + - + - /* In the new ABI, secondary vtables are laid out as part of the + - same structure as the primary vtable. */ + - if (merge_primary_and_secondary_vtables_p ()) + - { + - BINFO_VTABLE (binfo) = NULL_TREE; + - return 1; + - } + - + - /* Create the declaration for the secondary vtable. */ + - basetype = TYPE_MAIN_VARIANT (BINFO_TYPE (binfo)); + - buf2 = TYPE_ASSEMBLER_NAME_STRING (basetype); + - i = TYPE_ASSEMBLER_NAME_LENGTH (basetype) + 1; + - + - /* We know that the vtable that we are going to create doesn't exist + - yet in the global namespace, and when we finish, it will be + - pushed into the global namespace. In complex MI hierarchies, we + - have to loop while the name we are thinking of adding is globally + - defined, adding more name components to the vtable name as we + - loop, until the name is unique. This is because in complex MI + - cases, we might have the same base more than once. This means + - that the order in which this function is called for vtables must + - remain the same, otherwise binary compatibility can be + - compromised. */ + - + - while (1) + - { + - char *buf1 = (char *) alloca (TYPE_ASSEMBLER_NAME_LENGTH (for_type) + - + 1 + i); + - char *new_buf2; + - + - sprintf (buf1, "%s%c%s", TYPE_ASSEMBLER_NAME_STRING (for_type), joiner, + - buf2); + - buf = (char *) alloca (strlen (VTABLE_NAME_PREFIX) + strlen (buf1) + 1); + - sprintf (buf, "%s%s", VTABLE_NAME_PREFIX, buf1); + - name = get_identifier (buf); + - + - /* If this name doesn't clash, then we can use it, otherwise + - we add more to the name until it is unique. */ + - + - if (! IDENTIFIER_GLOBAL_VALUE (name)) + - break; + - + - /* Set values for next loop through, if the name isn't unique. */ + - + - path = BINFO_INHERITANCE_CHAIN (path); + - + - /* We better not run out of stuff to make it unique. */ + - my_friendly_assert (path != NULL_TREE, 368); + - + - basetype = TYPE_MAIN_VARIANT (BINFO_TYPE (path)); + - + - if (for_type == basetype) + - { + - /* If we run out of basetypes in the path, we have already + - found created a vtable with that name before, we now + - resort to tacking on _%d to distinguish them. */ + - int j = 2; + - i = TYPE_ASSEMBLER_NAME_LENGTH (basetype) + 1 + i + 1 + 3; + - buf1 = (char *) alloca (i); + - do { + - sprintf (buf1, "%s%c%s%c%d", + - TYPE_ASSEMBLER_NAME_STRING (basetype), joiner, + - buf2, joiner, j); + - buf = (char *) alloca (strlen (VTABLE_NAME_PREFIX) + - + strlen (buf1) + 1); + - sprintf (buf, "%s%s", VTABLE_NAME_PREFIX, buf1); + - name = get_identifier (buf); + - + - /* If this name doesn't clash, then we can use it, + - otherwise we add something different to the name until + - it is unique. */ + - } while (++j <= 999 && IDENTIFIER_GLOBAL_VALUE (name)); + - + - /* Hey, they really like MI don't they? Increase the 3 + - above to 6, and the 999 to 999999. :-) */ + - my_friendly_assert (j <= 999, 369); + - + - break; + - } + + - i = TYPE_ASSEMBLER_NAME_LENGTH (basetype) + 1 + i; + - new_buf2 = (char *) alloca (i); + - sprintf (new_buf2, "%s%c%s", + - TYPE_ASSEMBLER_NAME_STRING (basetype), joiner, buf2); + - buf2 = new_buf2; + - } + - + - new_decl = build_vtable (for_type, name, TREE_TYPE (orig_decl)); + - DECL_ALIGN (new_decl) = DECL_ALIGN (orig_decl); + - DECL_USER_ALIGN (new_decl) = DECL_USER_ALIGN (orig_decl); + - BINFO_VTABLE (binfo) = pushdecl_top_level (new_decl); + - + -#ifdef GATHER_STATISTICS + - n_vtables += 1; + - n_vtable_elems += list_length (BINFO_VIRTUALS (binfo)); + -#endif + - + + /* Secondary vtables are laid out as part of the same structure as + + the primary vtable. */ + + BINFO_VTABLE (binfo) = NULL_TREE; + return 1; + } + + /* Create a new vtable for BINFO which is the hierarchy dominated by + - T. */ + + T. Return non-zero if we actually created a new vtable. */ + + static int + make_new_vtable (t, binfo) + @@ -1949,9 +1651,8 @@ determine_primary_base (t, vfuns_p) + if (!CLASSTYPE_HAS_PRIMARY_BASE_P (t)) + CLASSTYPE_RTTI (t) = CLASSTYPE_RTTI (basetype); + + - /* A virtual baseclass can't be the primary base under the + - old ABI. And under the new ABI we still prefer a + - non-virtual base. */ + + /* We prefer a non-virtual base, although a virtual one will + + do. */ + if (TREE_VIA_VIRTUAL (base_binfo)) + continue; + + @@ -2020,9 +1721,8 @@ determine_primary_base (t, vfuns_p) + } + } + + - /* The new ABI allows for the use of a "nearly-empty" virtual base + - class as the primary base class if no non-virtual polymorphic + - base can be found. */ + + /* A "nearly-empty" virtual base class can be the primary base + + class, if no non-virtual polymorphic base can be found. */ + if (!CLASSTYPE_HAS_PRIMARY_BASE_P (t)) + { + /* If not NULL, this is the best primary base candidate we have + @@ -2805,9 +2505,8 @@ update_vtable_entry_for_fn (t, binfo, fn + the final overrider, and not to an intermediate virtual base. */ + virtual_base = NULL_TREE; + + - /* Under the new ABI, we will convert to an intermediate virtual + - base first, and then use the vcall offset located there to finish + - the conversion. */ + + /* We will convert to an intermediate virtual base first, and then + + use the vcall offset located there to finish the conversion. */ + while (b) + { + /* If we find the final overrider, then we can stop + @@ -2897,9 +2596,6 @@ dfs_modify_vtables (binfo, data) + + t = (tree) data; + + - /* If we're supporting RTTI then we always need a new vtable to + - point to the RTTI information. Under the new ABI we may need + - a new vtable to contain vcall and vbase offsets. */ + make_new_vtable (t, binfo); + + /* Now, go through each of the virtual functions in the virtual + @@ -2936,10 +2632,9 @@ modify_all_vtables (t, vfuns_p, overridd + int *vfuns_p; + tree overridden_virtuals; + { + - tree binfo; + + tree binfo = TYPE_BINFO (t); + + tree *fnsp; + + - binfo = TYPE_BINFO (t); + - + /* Update all of the vtables. */ + dfs_walk (binfo, + dfs_modify_vtables, + @@ -2947,43 +2642,35 @@ modify_all_vtables (t, vfuns_p, overridd + t); + dfs_walk (binfo, dfs_unmark, dfs_marked_real_bases_queue_p, t); + + - /* If we should include overriding functions for secondary vtables + - in our primary vtable, add them now. */ + - if (all_overridden_vfuns_in_vtables_p ()) + + /* Include overriding functions for secondary vtables in our primary + + vtable. */ + + for (fnsp = &overridden_virtuals; *fnsp; ) + { + - tree *fnsp = &overridden_virtuals; + + tree fn = TREE_VALUE (*fnsp); + + - while (*fnsp) + + if (!BINFO_VIRTUALS (binfo) + + || !value_member (fn, BINFO_VIRTUALS (binfo))) + { + - tree fn = TREE_VALUE (*fnsp); + - + - if (!BINFO_VIRTUALS (binfo) + - || !value_member (fn, BINFO_VIRTUALS (binfo))) + - { + - /* Set the vtable index. */ + - set_vindex (fn, vfuns_p); + - /* We don't need to convert to a base class when calling + - this function. */ + - DECL_VIRTUAL_CONTEXT (fn) = t; + - + - /* We don't need to adjust the `this' pointer when + - calling this function. */ + - BV_DELTA (*fnsp) = integer_zero_node; + - BV_VCALL_INDEX (*fnsp) = NULL_TREE; + - + - /* This is an overridden function not already in our + - vtable. Keep it. */ + - fnsp = &TREE_CHAIN (*fnsp); + - } + - else + - /* We've already got an entry for this function. Skip + - it. */ + - *fnsp = TREE_CHAIN (*fnsp); + + /* Set the vtable index. */ + + set_vindex (fn, vfuns_p); + + /* We don't need to convert to a base class when calling + + this function. */ + + DECL_VIRTUAL_CONTEXT (fn) = t; + + + + /* We don't need to adjust the `this' pointer when + + calling this function. */ + + BV_DELTA (*fnsp) = integer_zero_node; + + BV_VCALL_INDEX (*fnsp) = NULL_TREE; + + + + /* This is an overridden function not already in our + + vtable. Keep it. */ + + fnsp = &TREE_CHAIN (*fnsp); + } + + else + + /* We've already got an entry for this function. Skip it. */ + + *fnsp = TREE_CHAIN (*fnsp); + } + - else + - overridden_virtuals = NULL_TREE; + - + + + return overridden_virtuals; + } + + @@ -4198,8 +3885,7 @@ build_base_fields (rli, empty_p, offsets + int i; + bool atend = 0; + + - /* Under the new ABI, the primary base class is always allocated + - first. */ + + /* The primary base class is always allocated first. */ + if (CLASSTYPE_HAS_PRIMARY_BASE_P (rec)) + build_base_field (rli, CLASSTYPE_PRIMARY_BINFO (rec), + empty_p, offsets, t); + @@ -4211,8 +3897,8 @@ build_base_fields (rli, empty_p, offsets + + base_binfo = BINFO_BASETYPE (TYPE_BINFO (rec), i); + + - /* Under the new ABI, the primary base was already allocated + - above, so we don't need to allocate it again here. */ + + /* The primary base was already allocated above, so we don't + + need to allocate it again here. */ + if (base_binfo == CLASSTYPE_PRIMARY_BINFO (rec)) + continue; + + @@ -4698,9 +4384,7 @@ create_vtable_ptr (t, empty_p, vfuns_p, + here. Even if there weren't any new virtual functions, we might need a + new virtual function table if we're supposed to include vptrs in + all classes that need them. */ + - if (!TYPE_VFIELD (t) + - && (*vfuns_p + - || (TYPE_CONTAINS_VPTR_P (t) && vptrs_present_everywhere_p ()))) + + if (!TYPE_VFIELD (t) && (*vfuns_p || TYPE_CONTAINS_VPTR_P (t))) + { + /* We build this decl with vtbl_ptr_type_node, which is a + `vtable_entry_type*'. It might seem more precise to use + @@ -4905,10 +4589,8 @@ layout_virtual_bases (t, offsets) + TYPE_ALIGN (t) = MAX (TYPE_ALIGN (t), BITS_PER_UNIT); + + /* Go through the virtual bases, allocating space for each virtual + - base that is not already a primary base class. Under the old + - ABI, these are allocated according to a depth-first left-to-right + - postorder traversal; in the new ABI, inheritance graph order is + - used instead. */ + + base that is not already a primary base class. These are + + allocated in inheritance graph order. */ + for (vbases = TYPE_BINFO (t); + vbases; + vbases = TREE_CHAIN (vbases)) + @@ -4935,8 +4617,8 @@ layout_virtual_bases (t, offsets) + appropriately aligned offset. */ + dsize = CEIL (dsize, desired_align) * desired_align; + + - /* Under the new ABI, we try to squish empty virtual bases in + - just like ordinary empty bases. */ + + /* We try to squish empty virtual bases in just like + + ordinary empty bases. */ + if (is_empty_class (basetype)) + layout_empty_base (vbase, + size_int (CEIL (dsize, BITS_PER_UNIT)), + @@ -5118,8 +4800,7 @@ layout_class_type (t, empty_p, vfuns_p, + vptr = create_vtable_ptr (t, empty_p, vfuns_p, + new_virtuals_p, overridden_virtuals_p); + + - /* Under the new ABI, the vptr is always the first thing in the + - class. */ + + /* The vptr is always the first thing in the class. */ + if (vptr) + { + TYPE_FIELDS (t) = chainon (vptr, TYPE_FIELDS (t)); + @@ -5132,10 +4813,6 @@ layout_class_type (t, empty_p, vfuns_p, + if (build_base_fields (rli, empty_p, empty_base_offsets, t)) + CLASSTYPE_NEARLY_EMPTY_P (t) = 0; + + - /* Add pointers to all of our virtual base-classes. */ + - TYPE_FIELDS (t) = chainon (build_vbase_pointer_fields (rli, empty_p), + - TYPE_FIELDS (t)); + - + /* CLASSTYPE_INLINE_FRIENDS is really TYPE_NONCOPIED_PARTS. Thus, + we have to save this before we zap TYPE_NONCOPIED_PARTS. */ + fixup_inline_methods (t); + @@ -5157,10 +4834,8 @@ layout_class_type (t, empty_p, vfuns_p, + type = TREE_TYPE (field); + + /* If this field is a bit-field whose width is greater than its + - type, then there are some special rules for allocating it + - under the new ABI. Under the old ABI, there were no special + - rules, but the back-end can't handle bitfields longer than a + - `long long', so we use the same mechanism. */ + + type, then there are some special rules for allocating + + it. */ + if (DECL_C_BIT_FIELD (field) + && INT_CST_LT (TYPE_SIZE (type), DECL_SIZE (field))) + { + @@ -5225,10 +4900,10 @@ layout_class_type (t, empty_p, vfuns_p, + } + + /* We make all structures have at least one element, so that they + - have non-zero size. In the new ABI, the class may be empty even + - if it has basetypes. Therefore, we add the fake field after all + - the other fields; if there are already FIELD_DECLs on the list, + - their offsets will not be disturbed. */ + + have non-zero size. The class may be empty even if it has + + basetypes. Therefore, we add the fake field after all the other + + fields; if there are already FIELD_DECLs on the list, their + + offsets will not be disturbed. */ + if (!eoc && *empty_p) + { + tree padding; + @@ -5389,9 +5064,7 @@ finish_struct_1 (t) + = chainon (CLASSTYPE_VFIELDS (t), build_tree_list (NULL_TREE, t)); + + /* If necessary, create the primary vtable for this class. */ + - if (new_virtuals + - || overridden_virtuals + - || (TYPE_CONTAINS_VPTR_P (t) && vptrs_present_everywhere_p ())) + + if (new_virtuals || overridden_virtuals || TYPE_CONTAINS_VPTR_P (t)) + { + new_virtuals = nreverse (new_virtuals); + /* We must enter these virtuals into the table. */ + @@ -5703,11 +5376,12 @@ fixed_type_or_null (instance, nonnull, c + } + } + + -/* Return non-zero if the dynamic type of INSTANCE is known, and equivalent + - to the static type. We also handle the case where INSTANCE is really + - a pointer. Return negative if this is a ctor/dtor. There the dynamic type + - is known, but this might not be the most derived base of the original object, + - and hence virtual bases may not be layed out according to this type. + +/* Return non-zero if the dynamic type of INSTANCE is known, and + + equivalent to the static type. We also handle the case where + + INSTANCE is really a pointer. Return negative if this is a + + ctor/dtor. There the dynamic type is known, but this might not be + + the most derived base of the original object, and hence virtual + + bases may not be layed out according to this type. + + Used to determine whether the virtual function table is needed + or not. + @@ -6759,10 +6433,9 @@ note_name_declared_in_class (name, decl) + } + } + + -/* Returns the VAR_DECL for the complete vtable associated with + - BINFO. (Under the new ABI, secondary vtables are merged with + - primary vtables; this function will return the VAR_DECL for the + - primary vtable.) */ + +/* Returns the VAR_DECL for the complete vtable associated with BINFO. + + Secondary vtables are merged with primary vtables; this function + + will return the VAR_DECL for the primary vtable. */ + + tree + get_vtbl_decl_for_binfo (binfo) + @@ -7110,77 +6783,47 @@ static void + finish_vtbls (t) + tree t; + { + - if (merge_primary_and_secondary_vtables_p ()) + - { + - tree list; + - tree vbase; + - int i; + - + - /* Under the new ABI, we lay out the primary and secondary + - vtables in one contiguous vtable. The primary vtable is + - first, followed by the non-virtual secondary vtables in + - inheritance graph order. */ + - list = build_tree_list (TYPE_BINFO_VTABLE (t), NULL_TREE); + - accumulate_vtbl_inits (TYPE_BINFO (t), TYPE_BINFO (t), + - TYPE_BINFO (t), t, list); + - /* Then come the virtual bases, also in inheritance graph + - order. */ + - for (vbase = TYPE_BINFO (t); vbase; vbase = TREE_CHAIN (vbase)) + - { + - tree real_base; + - + - if (!TREE_VIA_VIRTUAL (vbase)) + - continue; + - + - /* Although we walk in inheritance order, that might not get the + - canonical base. */ + - real_base = binfo_for_vbase (BINFO_TYPE (vbase), t); + - + - accumulate_vtbl_inits (real_base, real_base, + - TYPE_BINFO (t), t, list); + - } + + tree list; + + tree vbase; + + int i; + + - /* Fill in BINFO_VPTR_FIELD in the immediate binfos for our virtual + - base classes, for the benefit of the debugging backends. */ + - for (i = 0; i < BINFO_N_BASETYPES (TYPE_BINFO (t)); ++i) + - { + - tree base = BINFO_BASETYPE (TYPE_BINFO (t), i); + - if (TREE_VIA_VIRTUAL (base)) + - { + - tree vbase = binfo_for_vbase (BINFO_TYPE (base), t); + - BINFO_VPTR_FIELD (base) = BINFO_VPTR_FIELD (vbase); + - } + - } + + /* We lay out the primary and secondary vtables in one contiguous + + vtable. The primary vtable is first, followed by the non-virtual + + secondary vtables in inheritance graph order. */ + + list = build_tree_list (TYPE_BINFO_VTABLE (t), NULL_TREE); + + accumulate_vtbl_inits (TYPE_BINFO (t), TYPE_BINFO (t), + + TYPE_BINFO (t), t, list); + + - if (TYPE_BINFO_VTABLE (t)) + - initialize_vtable (TYPE_BINFO (t), TREE_VALUE (list)); + - } + - else + + /* Then come the virtual bases, also in inheritance graph order. */ + + for (vbase = TYPE_BINFO (t); vbase; vbase = TREE_CHAIN (vbase)) + { + - dfs_walk (TYPE_BINFO (t), dfs_finish_vtbls, + - dfs_unmarked_real_bases_queue_p, t); + - dfs_walk (TYPE_BINFO (t), dfs_unmark, + - dfs_marked_real_bases_queue_p, t); + - } + -} + + tree real_base; + + -/* Called from finish_vtbls via dfs_walk. */ + + if (!TREE_VIA_VIRTUAL (vbase)) + + continue; + + -static tree + -dfs_finish_vtbls (binfo, data) + - tree binfo; + - void *data; + -{ + - tree t = (tree) data; + + /* Although we walk in inheritance order, that might not get the + + canonical base. */ + + real_base = binfo_for_vbase (BINFO_TYPE (vbase), t); + + - if (BINFO_NEW_VTABLE_MARKED (binfo, t)) + - initialize_vtable (binfo, + - build_vtbl_initializer (binfo, binfo, t, + - TYPE_BINFO (t), NULL)); + + accumulate_vtbl_inits (real_base, real_base, + + TYPE_BINFO (t), t, list); + + } + + - SET_BINFO_MARKED (binfo); + + /* Fill in BINFO_VPTR_FIELD in the immediate binfos for our virtual + + base classes, for the benefit of the debugging backends. */ + + for (i = 0; i < BINFO_N_BASETYPES (TYPE_BINFO (t)); ++i) + + { + + tree base = BINFO_BASETYPE (TYPE_BINFO (t), i); + + if (TREE_VIA_VIRTUAL (base)) + + { + + tree vbase = binfo_for_vbase (BINFO_TYPE (base), t); + + BINFO_VPTR_FIELD (base) = BINFO_VPTR_FIELD (vbase); + + } + + } + + - return NULL_TREE; + + if (TYPE_BINFO_VTABLE (t)) + + initialize_vtable (TYPE_BINFO (t), TREE_VALUE (list)); + } + + /* Initialize the vtable for BINFO with the INITS. */ + @@ -7653,9 +7296,8 @@ accumulate_vtbl_inits (binfo, orig_binfo + } + } + + -/* Called from accumulate_vtbl_inits when using the new ABI. + - Accumulates the vtable initializers for all of the vtables into + - TREE_VALUE (DATA). Returns the initializers for the BINFO vtable. */ + +/* Called from accumulate_vtbl_inits. Returns the initializers for + + the BINFO vtable. */ + + static tree + dfs_accumulate_vtbl_inits (binfo, orig_binfo, rtti_binfo, t, l) + @@ -7963,11 +7605,6 @@ build_vbase_offset_vtbl_entries (binfo, + tree t; + tree non_primary_binfo; + + - /* Under the old ABI, pointers to virtual bases are stored in each + - object. */ + - if (!vbase_offsets_in_vtable_p ()) + - return; + - + /* If there are no virtual baseclasses, then there is nothing to + do. */ + if (!TYPE_USES_VIRTUAL_BASECLASSES (BINFO_TYPE (binfo))) + @@ -8069,11 +7706,6 @@ build_vcall_offset_vtbl_entries (binfo, + tree binfo; + vtbl_init_data *vid; + { + - /* Under the old ABI, the adjustments to the `this' pointer were made + - elsewhere. */ + - if (!vcall_offsets_in_vtable_p ()) + - return; + - + /* We only need these entries if this base is a virtual base. */ + if (!TREE_VIA_VIRTUAL (binfo)) + return; + @@ -8328,16 +7960,12 @@ build_rtti_vtbl_entries (binfo, vid) + vid->last_init = &TREE_CHAIN (*vid->last_init); + + /* Add the offset-to-top entry. It comes earlier in the vtable that + - the the typeinfo entry. */ + - if (flag_vtable_thunks) + - { + - /* Convert the offset to look like a function pointer, so that + - we can put it in the vtable. */ + - init = build1 (NOP_EXPR, vfunc_ptr_type_node, offset); + - TREE_CONSTANT (init) = 1; + - *vid->last_init = build_tree_list (NULL_TREE, init); + - vid->last_init = &TREE_CHAIN (*vid->last_init); + - } + + the the typeinfo entry. Convert the offset to look like a + + function pointer, so that we can put it in the vtable. */ + + init = build1 (NOP_EXPR, vfunc_ptr_type_node, offset); + + TREE_CONSTANT (init) = 1; + + *vid->last_init = build_tree_list (NULL_TREE, init); + + vid->last_init = &TREE_CHAIN (*vid->last_init); + } + + /* Build an entry in the virtual function table. DELTA is the offset + @@ -8354,55 +7982,20 @@ build_vtable_entry (delta, vcall_index, + tree vcall_index; + tree entry; + { + - if (flag_vtable_thunks) + - { + - tree fn; + + tree fn; + + - fn = TREE_OPERAND (entry, 0); + - if ((!integer_zerop (delta) || vcall_index != NULL_TREE) + - && fn != abort_fndecl + - && !DECL_TINFO_FN_P (fn)) + - { + - entry = make_thunk (entry, delta, vcall_index); + - entry = build1 (ADDR_EXPR, vtable_entry_type, entry); + - TREE_READONLY (entry) = 1; + - TREE_CONSTANT (entry) = 1; + - } + -#ifdef GATHER_STATISTICS + - n_vtable_entries += 1; + -#endif + - return entry; + - } + - else + + fn = TREE_OPERAND (entry, 0); + + if ((!integer_zerop (delta) || vcall_index != NULL_TREE) + + && fn != abort_fndecl + + && !DECL_TINFO_FN_P (fn)) + { + - tree elems = tree_cons (NULL_TREE, delta, + - tree_cons (NULL_TREE, integer_zero_node, + - build_tree_list (NULL_TREE, entry))); + - tree entry = build (CONSTRUCTOR, vtable_entry_type, NULL_TREE, elems); + - + - /* We don't use vcall offsets when not using vtable thunks. */ + - my_friendly_assert (vcall_index == NULL_TREE, 20000125); + - + - /* DELTA used to be constructed by `size_int' and/or size_binop, + - which caused overflow problems when it was negative. That should + - be fixed now. */ + - + - if (! int_fits_type_p (delta, delta_type_node)) + - { + - if (flag_huge_objects) + - sorry ("object size exceeds built-in limit for virtual function table implementation"); + - else + - sorry ("object size exceeds normal limit for virtual function table implementation, recompile all source and use -fhuge-objects"); + - } + - + - TREE_CONSTANT (entry) = 1; + - TREE_STATIC (entry) = 1; + + entry = make_thunk (entry, delta, vcall_index); + + entry = build1 (ADDR_EXPR, vtable_entry_type, entry); + TREE_READONLY (entry) = 1; + - + + TREE_CONSTANT (entry) = 1; + + } + #ifdef GATHER_STATISTICS + - n_vtable_entries += 1; + + n_vtable_entries += 1; + #endif + - + - return entry; + - } + + return entry; + } + Index: gcc/cp/cp-tree.h + =================================================================== + RCS file: /cvs/gcc/gcc/gcc/cp/cp-tree.h,v + retrieving revision 1.572.2.36 + diff -u -p -r1.572.2.36 cp-tree.h + --- gcc/cp/cp-tree.h 2001/12/08 16:12:51 1.572.2.36 + +++ gcc/cp/cp-tree.h 2001/12/10 22:04:55 + @@ -135,11 +135,9 @@ Boston, MA 02111-1307, USA. */ + does not have a BV_FN; it is just an offset. + + BINFO_VTABLE + - Sometimes this is a VAR_DECL. Under the new ABI, it is instead + - an expression with POINTER_TYPE pointing that gives the value + + This is an expression with POINTER_TYPE that gives the value + to which the vptr should be initialized. Use get_vtbl_decl_for_binfo + - to extract the VAR_DECL for the complete vtable; that macro works + - in both ABIs. + + to extract the VAR_DECL for the complete vtable. + + DECL_ARGUMENTS + For a VAR_DECL this is DECL_ANON_UNION_ELEMS. + @@ -226,40 +224,6 @@ extern int flag_rtti; + + extern int flag_huge_objects; + + -/* Nonzero if virtual base class offsets are stored in the virtual + - function table. Zero if, instead, a pointer to the virtual base is + - stored in the object itself. */ + -#define vbase_offsets_in_vtable_p() (1) + - + -/* Nonzero if displacements to the `this' pointer to use when calling + - virtual functions in a virtual base class are present in the + - vtable. */ + -#define vcall_offsets_in_vtable_p() (1) + - + -/* Nonzero if a derived class that needs a vptr should always get one, + - even if a non-primary base class already has one. For example, + - given: + - + - struct S { int i; virtual void f(); }; + - struct T : virtual public S {}; + - + - one could either reuse the vptr in `S' for `T', or create a new + - vptr for `T'. If this flag is nonzero we choose the latter + - alternative; otherwise, we choose the former. */ + -#define vptrs_present_everywhere_p() (1) + - + -/* Nonzero if the vtable for a derived class should contain the + - virtual functions from the primary base and all virtual functions + - present in the class itself. Zero if, instead, it should contain + - only those virtual functions from the primary base together with + - the functions declared in the derived class (but not in any base + - class). */ + -#define all_overridden_vfuns_in_vtables_p() (1) + - + -/* Nonzero if primary and secondary vtables are combined into a single + - vtable. */ + -#define merge_primary_and_secondary_vtables_p() (1) + - + + /* Language-dependent contents of an identifier. */ + + @@ -601,15 +565,12 @@ enum cp_tree_index + CPTI_COMPLETE_DTOR_IDENTIFIER, + CPTI_BASE_DTOR_IDENTIFIER, + CPTI_DELETING_DTOR_IDENTIFIER, + - CPTI_DELTA2_IDENTIFIER, + CPTI_DELTA_IDENTIFIER, + CPTI_IN_CHARGE_IDENTIFIER, + CPTI_VTT_PARM_IDENTIFIER, + - CPTI_INDEX_IDENTIFIER, + CPTI_NELTS_IDENTIFIER, + CPTI_THIS_IDENTIFIER, + CPTI_PFN_IDENTIFIER, + - CPTI_PFN_OR_DELTA2_IDENTIFIER, + CPTI_VPTR_IDENTIFIER, + CPTI_STD_IDENTIFIER, + + @@ -643,8 +604,7 @@ extern tree cp_global_trees[CPTI_MAX]; + #define wchar_decl_node cp_global_trees[CPTI_WCHAR_DECL] + #define vtable_entry_type cp_global_trees[CPTI_VTABLE_ENTRY_TYPE] + /* The type used to represent an offset by which to adjust the `this' + - pointer in pointer-to-member types and, when not using vtable + - thunks, in vtables. */ + + pointer in pointer-to-member types. */ + #define delta_type_node cp_global_trees[CPTI_DELTA_TYPE] + /* The type used to represent an index into the vtable. */ + #define vtable_index_type cp_global_trees[CPTI_VTABLE_INDEX_TYPE] + @@ -720,20 +680,14 @@ extern tree cp_global_trees[CPTI_MAX]; + /* The name of a destructor that destroys virtual base classes, and + then deletes the entire object. */ + #define deleting_dtor_identifier cp_global_trees[CPTI_DELETING_DTOR_IDENTIFIER] + - + -#define delta2_identifier cp_global_trees[CPTI_DELTA2_IDENTIFIER] + #define delta_identifier cp_global_trees[CPTI_DELTA_IDENTIFIER] + #define in_charge_identifier cp_global_trees[CPTI_IN_CHARGE_IDENTIFIER] + - + /* The name of the parameter that contains a pointer to the VTT to use + for this subobject constructor or destructor. */ + #define vtt_parm_identifier cp_global_trees[CPTI_VTT_PARM_IDENTIFIER] + - + -#define index_identifier cp_global_trees[CPTI_INDEX_IDENTIFIER] + #define nelts_identifier cp_global_trees[CPTI_NELTS_IDENTIFIER] + #define this_identifier cp_global_trees[CPTI_THIS_IDENTIFIER] + #define pfn_identifier cp_global_trees[CPTI_PFN_IDENTIFIER] + -#define pfn_or_delta2_identifier cp_global_trees[CPTI_PFN_OR_DELTA2_IDENTIFIER] + #define vptr_identifier cp_global_trees[CPTI_VPTR_IDENTIFIER] + /* The name of the std namespace. */ + #define std_identifier cp_global_trees[CPTI_STD_IDENTIFIER] + @@ -1081,11 +1035,6 @@ extern int warn_reorder; + + extern int flag_signed_bitfields; + + -/* True for more efficient but incompatible (not fully tested) + - vtable implementation (using thunks). + - 0 is old behavior; 1 is new behavior. */ + -extern int flag_vtable_thunks; + - + /* INTERFACE_ONLY nonzero means that we are in an "interface" + section of the compiler. INTERFACE_UNKNOWN nonzero means + we cannot trust the value of INTERFACE_ONLY. If INTERFACE_UNKNOWN + @@ -1234,11 +1183,9 @@ enum languages { lang_c, lang_cplusplus, + /* Virtual function addresses can be gotten from a virtual function + table entry using this macro. */ + #define FNADDR_FROM_VTABLE_ENTRY(ENTRY) \ + - (!flag_vtable_thunks ? \ + - TREE_VALUE (TREE_CHAIN (TREE_CHAIN (CONSTRUCTOR_ELTS (ENTRY)))) \ + - : !DECL_THUNK_P (TREE_OPERAND ((ENTRY), 0)) \ + - ? (ENTRY) \ + - : DECL_INITIAL (TREE_OPERAND ((ENTRY), 0))) + + (DECL_THUNK_P (TREE_OPERAND ((ENTRY), 0)) \ + + : DECL_INITIAL (TREE_OPERAND ((ENTRY), 0)) \ + + ? (ENTRY)) + + #define FUNCTION_ARG_CHAIN(NODE) \ + (TREE_CHAIN (TYPE_ARG_TYPES (TREE_TYPE (NODE)))) + @@ -2478,8 +2425,7 @@ struct lang_decl + /* Nonzero if this class has a virtual function table pointer. */ + #define TYPE_CONTAINS_VPTR_P(NODE) \ + (TYPE_POLYMORPHIC_P (NODE) \ + - || (vbase_offsets_in_vtable_p () \ + - && TYPE_USES_VIRTUAL_BASECLASSES (NODE))) + + || TYPE_USES_VIRTUAL_BASECLASSES (NODE)) + + extern int flag_new_for_scope; + + @@ -2634,67 +2580,15 @@ extern int flag_new_for_scope; + + /* A pointer-to-function member type looks like: + + - struct { + - short __delta; + - short __index; + - union { + - P __pfn; + - short __delta2; + - } __pfn_or_delta2; + - }; + - + - where P is a POINTER_TYPE to a METHOD_TYPE appropriate for the + - pointer to member. The fields are used as follows: + - + - If __INDEX is -1, then the function to call is non-virtual, and + - is located at the address given by __PFN. + - + - If __INDEX is zero, then this a NULL pointer-to-member. + - + - Otherwise, the function to call is virtual. Then, __DELTA2 gives + - the offset from an instance of the object to the virtual function + - table, and __INDEX - 1 is the index into the vtable to use to + - find the function. + - + - The value to use for the THIS parameter is the address of the + - object plus __DELTA. + - + - For example, given: + - + - struct B1 { + - int i; + - }; + - + - struct B2 { + - double d; + - void f(); + - }; + - + - struct S : public B1, B2 {}; + - + - the pointer-to-member for `&S::f' looks like: + - + - { 4, -1, { &f__2B2 } }; + - + - The `4' means that given an `S*' you have to add 4 bytes to get to + - the address of the `B2*'. Then, the -1 indicates that this is a + - non-virtual function. Of course, `&f__2B2' is the name of that + - function. + - + - (Of course, the exact values may differ depending on the mangling + - scheme, sizes of types, and such.). + - + - Under the new ABI, we do: + - + struct { + __P __pfn; + ptrdiff_t __delta; + }; + + - (We don't need DELTA2, because the vtable is always the first thing + - in the object.) 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. + + (As the vtable is always the first thing in the object, we don't + + need an offset to it.) 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 + @@ -3201,6 +3095,29 @@ typedef enum instantiate_type_flags { + itf_ptrmem_ok = 1 << 2, /* pointers to member ok (internal use) */ + } instantiate_type_flags; + + +/* The kind of checking we can do looking in a class heirarchy. */ + +typedef enum base_access { + + ba_any = -2, /* Do not check access, allow an ambiguous base, + + prefer a non-virtual base */ + + ba_ignore = -1, /* Do not check access */ + + ba_check = 0, /* Check access */ + + ba_not_special /* Do not consider special privilege + + current_class_type might give. */ + +} base_access; + + + +/* The kind of base we can find, looking in a class heirarchy. + + values <0 indicate we failed. */ + +typedef enum base_kind { + + bk_inaccessible = -3, /* The base is inaccessible */ + + bk_ambig = -2, /* The base is ambiguous */ + + bk_not_base = -1, /* It is not a base */ + + bk_same_type = 0, /* It is the same type */ + + bk_proper_base = 1, /* It is a proper base */ + + bk_via_virtual = 2 /* It is a proper base, but via a virtual + + path. This might not be the canonical + + binfo. */ + +} base_kind; + + + /* Nonzero means allow Microsoft extensions without a pedwarn. */ + extern int flag_ms_extensions; + + @@ -3226,8 +3143,7 @@ extern tree pending_vtables; + + /* Node for "pointer to (virtual) function". + This may be distinct from ptr_type_node so gdb can distinguish them. */ + -#define vfunc_ptr_type_node \ + - (flag_vtable_thunks ? vtable_entry_type : ptr_type_node) + +#define vfunc_ptr_type_node vtable_entry_type + + + /* For building calls to `delete'. */ + @@ -3295,12 +3211,10 @@ extern varray_type local_classes; + #define AUTO_TEMP_NAME "_$tmp_" + #define AUTO_TEMP_FORMAT "_$tmp_%d" + #define VTABLE_BASE "$vb" + -#define VTABLE_NAME_PREFIX (flag_vtable_thunks ? "__vt_" : "_vt$") + +#define VTABLE_NAME_PREFIX "__vt_" + #define VFIELD_BASE "$vf" + #define VFIELD_NAME "_vptr$" + #define VFIELD_NAME_FORMAT "_vptr$%s" + -#define VBASE_NAME "_vb$" + -#define VBASE_NAME_FORMAT "_vb$%s" + #define STATIC_NAME_FORMAT "_%s$%s" + #define ANON_AGGRNAME_FORMAT "$_%d" + + @@ -3317,12 +3231,10 @@ extern varray_type local_classes; + #define AUTO_TEMP_NAME "_.tmp_" + #define AUTO_TEMP_FORMAT "_.tmp_%d" + #define VTABLE_BASE ".vb" + -#define VTABLE_NAME_PREFIX (flag_vtable_thunks ? "__vt_" : "_vt.") + +#define VTABLE_NAME_PREFIX "__vt_" + #define VFIELD_BASE ".vf" + #define VFIELD_NAME "_vptr." + #define VFIELD_NAME_FORMAT "_vptr.%s" + -#define VBASE_NAME "_vb." + -#define VBASE_NAME_FORMAT "_vb.%s" + #define STATIC_NAME_FORMAT "_%s.%s" + + #define ANON_AGGRNAME_FORMAT "._%d" + @@ -3346,7 +3258,7 @@ extern varray_type local_classes; + #define AUTO_TEMP_FORMAT "__tmp_%d" + #define VTABLE_BASE "__vtb" + #define VTABLE_NAME "__vt_" + -#define VTABLE_NAME_PREFIX (flag_vtable_thunks ? "__vt_" : "_vt_") + +#define VTABLE_NAME_PREFIX "__vt_" + #define VTABLE_NAME_P(ID_NODE) \ + (!strncmp (IDENTIFIER_POINTER (ID_NODE), VTABLE_NAME, \ + sizeof (VTABLE_NAME) - 1)) + @@ -3356,11 +3268,6 @@ extern varray_type local_classes; + (!strncmp (IDENTIFIER_POINTER (ID_NODE), VFIELD_NAME, \ + sizeof (VFIELD_NAME) - 1)) + #define VFIELD_NAME_FORMAT "_vptr_%s" + -#define VBASE_NAME "__vb_" + -#define VBASE_NAME_P(ID_NODE) \ + - (!strncmp (IDENTIFIER_POINTER (ID_NODE), VBASE_NAME, \ + - sizeof (VBASE_NAME) - 1)) + -#define VBASE_NAME_FORMAT "__vb_%s" + #define STATIC_NAME_FORMAT "__static_%s_%s" + + #define ANON_AGGRNAME_PREFIX "__anon_" + @@ -3386,21 +3293,10 @@ extern varray_type local_classes; + + #define VTBL_PTR_TYPE "__vtbl_ptr_type" + #define VTABLE_DELTA_NAME "__delta" + -#define VTABLE_INDEX_NAME "__index" + #define VTABLE_PFN_NAME "__pfn" + -#define VTABLE_DELTA2_NAME "__delta2" + + #define EXCEPTION_CLEANUP_NAME "exception cleanup" + + -/* The name used as a prefix for VTTs. When the new ABI mangling + - scheme is implemented, this should be removed. */ + - + -#define VTT_NAME_PREFIX "__vtt_" + - + -/* The name used as a prefix for construction vtables. */ + - + -#define CTOR_VTBL_NAME_PREFIX "__ctorvt_" + - + #define THIS_NAME_P(ID_NODE) (strcmp(IDENTIFIER_POINTER (ID_NODE), "this") == 0) + + #if !defined(NO_DOLLAR_IN_LABEL) || !defined(NO_DOT_IN_LABEL) + @@ -3414,10 +3310,6 @@ extern varray_type local_classes; + && IDENTIFIER_POINTER (ID_NODE)[2] == 't' \ + && IDENTIFIER_POINTER (ID_NODE)[3] == JOINER) + + -#define VBASE_NAME_P(ID_NODE) (IDENTIFIER_POINTER (ID_NODE)[1] == 'v' \ + - && IDENTIFIER_POINTER (ID_NODE)[2] == 'b' \ + - && IDENTIFIER_POINTER (ID_NODE)[3] == JOINER) + - + #define TEMP_NAME_P(ID_NODE) (!strncmp (IDENTIFIER_POINTER (ID_NODE), AUTO_TEMP_NAME, sizeof (AUTO_TEMP_NAME)-1)) + #define VFIELD_NAME_P(ID_NODE) (!strncmp (IDENTIFIER_POINTER (ID_NODE), VFIELD_NAME, sizeof(VFIELD_NAME)-1)) + + @@ -3431,14 +3323,6 @@ extern varray_type local_classes; + && IDENTIFIER_POINTER (ID_NODE)[1] <= '9') + #endif /* !defined(NO_DOLLAR_IN_LABEL) || !defined(NO_DOT_IN_LABEL) */ + + -/* Store the vbase pointer field name for type TYPE into pointer BUF. */ + -#define FORMAT_VBASE_NAME(BUF,TYPE) do { \ + - char *wbuf = (char *) alloca (TYPE_ASSEMBLER_NAME_LENGTH (TYPE) \ + - + sizeof (VBASE_NAME) + 1); \ + - sprintf (wbuf, VBASE_NAME_FORMAT, TYPE_ASSEMBLER_NAME_STRING (TYPE)); \ + - (BUF) = wbuf; \ + -} while (0) + - + /* Returns non-zero iff NODE is a declaration for the global function + `main'. */ + #define DECL_MAIN_P(NODE) \ + @@ -3742,9 +3626,10 @@ extern tree strip_top_quals + extern tree perform_implicit_conversion PARAMS ((tree, tree)); + + /* in class.c */ + +extern tree build_base_path PARAMS ((enum tree_code, tree, tree, int)); + extern tree build_vbase_path PARAMS ((enum tree_code, tree, tree, tree, int)); + extern tree build_vtbl_ref PARAMS ((tree, tree)); + -extern tree build_vfn_ref PARAMS ((tree *, tree, tree)); + +extern tree build_vfn_ref PARAMS ((tree, tree)); + extern tree get_vtable_decl PARAMS ((tree, int)); + extern void add_method PARAMS ((tree, tree, int)); + extern int currently_open_class PARAMS ((tree)); + @@ -3781,8 +3666,6 @@ extern tree get_primary_binfo + extern tree convert_to_reference PARAMS ((tree, tree, int, int, tree)); + extern tree convert_from_reference PARAMS ((tree)); + extern tree convert_lvalue PARAMS ((tree, tree)); + -extern tree convert_pointer_to_real PARAMS ((tree, tree)); + -extern tree convert_pointer_to PARAMS ((tree, tree)); + extern tree ocp_convert PARAMS ((tree, tree, int, int)); + extern tree cp_convert PARAMS ((tree, tree)); + extern tree convert_to_void PARAMS ((tree, const char */*implicit context*/)); + @@ -4216,6 +4099,7 @@ extern int tinfo_decl_p + extern int emit_tinfo_decl PARAMS((tree *, void *)); + + /* in search.c */ + +extern tree lookup_base PARAMS ((tree, tree, base_access, base_kind *)); + extern int types_overlap_p PARAMS ((tree, tree)); + extern tree get_vbase PARAMS ((tree, tree)); + extern tree get_binfo PARAMS ((tree, tree, int)); + @@ -4229,7 +4113,6 @@ extern tree lookup_fnfields PARAMS ((t + extern tree lookup_member PARAMS ((tree, tree, int, int)); + extern int look_for_overrides PARAMS ((tree, tree)); + extern void get_pure_virtuals PARAMS ((tree)); + -extern tree init_vbase_pointers PARAMS ((tree, tree)); + extern void get_vbase_types PARAMS ((tree)); + extern void maybe_suppress_debug_info PARAMS ((tree)); + extern void note_debug_info_needed PARAMS ((tree)); + @@ -4265,11 +4148,9 @@ extern tree dfs_marked_real_bases_queue_ + extern tree dfs_skip_vbases PARAMS ((tree, void *)); + extern tree marked_vtable_pathp PARAMS ((tree, void *)); + extern tree unmarked_vtable_pathp PARAMS ((tree, void *)); + -extern tree convert_pointer_to_vbase PARAMS ((tree, tree)); + extern tree find_vbase_instance PARAMS ((tree, tree)); + extern tree binfo_for_vbase PARAMS ((tree, tree)); + extern tree binfo_via_virtual PARAMS ((tree, tree)); + -extern void fixup_all_virtual_upcast_offsets PARAMS ((tree)); + + /* in semantics.c */ + extern void init_cp_semantics PARAMS ((void)); + Index: gcc/cp/cvt.c + =================================================================== + RCS file: /cvs/gcc/gcc/gcc/cp/cvt.c,v + retrieving revision 1.97.2.3 + diff -u -p -r1.97.2.3 cvt.c + --- gcc/cp/cvt.c 2001/08/17 04:31:27 1.97.2.3 + +++ gcc/cp/cvt.c 2001/12/10 22:04:56 + @@ -141,44 +141,35 @@ cp_convert_to_pointer (type, expr, force + && TREE_CODE (TREE_TYPE (type)) == RECORD_TYPE + && IS_AGGR_TYPE (TREE_TYPE (type)) + && IS_AGGR_TYPE (TREE_TYPE (intype)) + - && TREE_CODE (TREE_TYPE (intype)) == RECORD_TYPE + - /* If EXPR is NULL, then we don't need to do any arithmetic + - to convert it: + - + - [conv.ptr] + - + - The null pointer value is converted to the null pointer + - value of the destination type. */ + - && !integer_zerop (expr)) + + && TREE_CODE (TREE_TYPE (intype)) == RECORD_TYPE) + { + enum tree_code code = PLUS_EXPR; + - tree binfo = get_binfo (TREE_TYPE (type), TREE_TYPE (intype), 1); + - if (binfo == error_mark_node) + - return error_mark_node; + - if (binfo == NULL_TREE) + + tree binfo; + + + + /* Try derived to base conversion. */ + + binfo = lookup_base (TREE_TYPE (intype), TREE_TYPE (type), + + ba_check, NULL); + + if (!binfo) + { + - binfo = get_binfo (TREE_TYPE (intype), TREE_TYPE (type), 1); + - if (binfo == error_mark_node) + - return error_mark_node; + + /* Try base to derived conversion. */ + + binfo = lookup_base (TREE_TYPE (type), TREE_TYPE (intype), + + ba_check, NULL); + code = MINUS_EXPR; + } + + if (binfo == error_mark_node) + + return error_mark_node; + if (binfo) + { + - if (TYPE_USES_VIRTUAL_BASECLASSES (TREE_TYPE (type)) + - || TYPE_USES_VIRTUAL_BASECLASSES (TREE_TYPE (intype)) + - || ! BINFO_OFFSET_ZEROP (binfo)) + + expr = build_base_path (code, expr, binfo, 0); + + /* Add any qualifier conversions. */ + + if (!same_type_p (TREE_TYPE (TREE_TYPE (expr)), + + TREE_TYPE (type))) + { + - /* Need to get the path we took. */ + - tree path; + - + - if (code == PLUS_EXPR) + - get_base_distance (TREE_TYPE (type), TREE_TYPE (intype), + - 0, &path); + - else + - get_base_distance (TREE_TYPE (intype), TREE_TYPE (type), + - 0, &path); + - return build_vbase_path (code, type, expr, path, 0); + + expr = build1 (NOP_EXPR, type, expr); + + TREE_CONSTANT (expr) = + + TREE_CONSTANT (TREE_OPERAND (expr, 0)); + } + + return expr; + } + } + + @@ -187,36 +178,29 @@ cp_convert_to_pointer (type, expr, force + tree b1; + tree b2; + tree binfo; + - tree virt_binfo; + - enum tree_code code; + + enum tree_code code = PLUS_EXPR; + + base_kind bk; + + b1 = TYPE_OFFSET_BASETYPE (TREE_TYPE (type)); + b2 = TYPE_OFFSET_BASETYPE (TREE_TYPE (intype)); + - binfo = get_binfo (b2, b1, 1); + - + - if (binfo == NULL_TREE) + + binfo = lookup_base (b1, b2, ba_check, &bk); + + if (!binfo) + { + - binfo = get_binfo (b1, b2, 1); + + binfo = lookup_base (b2, b1, ba_check, &bk); + code = MINUS_EXPR; + } + - else + - code = PLUS_EXPR; + - + if (binfo == error_mark_node) + return error_mark_node; + + - virt_binfo = binfo_from_vbase (binfo); + - if (virt_binfo) + + if (bk == bk_via_virtual) + { + if (force) + - cp_warning ("pointer to member cast via virtual base `%T' of `%T'", + - BINFO_TYPE (virt_binfo), + - BINFO_TYPE (BINFO_INHERITANCE_CHAIN (virt_binfo))); + + cp_warning ("pointer to member cast from `%T' to `%T' is via virtual base", + + TREE_TYPE (intype), TREE_TYPE (type)); + else + { + - cp_error ("pointer to member cast via virtual base `%T' of `%T'", + - BINFO_TYPE (virt_binfo), + - BINFO_TYPE (BINFO_INHERITANCE_CHAIN (virt_binfo))); + + cp_error ("pointer to member cast from `%T' to `%T' is via virtual base", + + TREE_TYPE (intype), TREE_TYPE (type)); + return error_mark_node; + } + /* This is a reinterpret cast, whose result is unspecified. + @@ -259,8 +243,8 @@ cp_convert_to_pointer (type, expr, force + return build_ptrmemfunc (TYPE_PTRMEMFUNC_FN_TYPE (type), expr, 0); + + if (TYPE_PTRMEM_P (type)) + - /* Under the new ABI, a NULL pointer-to-member is represented + - by -1, not by zero. */ + + /* A NULL pointer-to-member is represented by -1, not by + + zero. */ + expr = build_int_2 (-1, -1); + else + expr = build_int_2 (0, 0); + @@ -319,34 +303,32 @@ convert_to_pointer_force (type, expr) + && TREE_CODE (TREE_TYPE (intype)) == RECORD_TYPE) + { + enum tree_code code = PLUS_EXPR; + - tree path; + - int distance = get_base_distance (TREE_TYPE (type), + - TREE_TYPE (intype), 0, &path); + - if (distance == -2) + + tree binfo; + + + + binfo = lookup_base (TREE_TYPE (intype), TREE_TYPE (type), + + ba_ignore, NULL); + + if (!binfo) + { + - cp_error ("type `%T' is ambiguous base of `%T'", + - TREE_TYPE (type), + - TREE_TYPE (intype)); + - return error_mark_node; + + binfo = lookup_base (TREE_TYPE (type), TREE_TYPE (intype), + + ba_ignore, NULL); + + code = MINUS_EXPR; + } + - if (distance == -1) + + if (binfo == error_mark_node) + + return error_mark_node; + + if (binfo) + { + - distance = get_base_distance (TREE_TYPE (intype), + - TREE_TYPE (type), 0, &path); + - if (distance == -2) + - { + - cp_error ("type `%T' is ambiguous base of `%T'", + - TREE_TYPE (intype), + - TREE_TYPE (type)); + - return error_mark_node; + - } + - if (distance < 0) + - /* Doesn't need any special help from us. */ + - return build1 (NOP_EXPR, type, expr); + - + - code = MINUS_EXPR; + + expr = build_base_path (code, expr, binfo, 0); + + /* Add any qualifier conversions. */ + + if (!same_type_p (TREE_TYPE (TREE_TYPE (expr)), + + TREE_TYPE (type))) + + { + + expr = build1 (NOP_EXPR, type, expr); + + TREE_CONSTANT (expr) = + + TREE_CONSTANT (TREE_OPERAND (expr, 0)); + + } + + return expr; + } + - return build_vbase_path (code, type, expr, path, 0); + + + } + } + + @@ -406,12 +388,12 @@ build_up_reference (type, arg, flags) + && IS_AGGR_TYPE (target_type)) + { + /* We go through get_binfo for the access control. */ + - tree binfo = get_binfo (target_type, argtype, 1); + + tree binfo = lookup_base (argtype, target_type, ba_check, NULL); + if (binfo == error_mark_node) + return error_mark_node; + if (binfo == NULL_TREE) + return error_not_base_type (target_type, argtype); + - rval = convert_pointer_to_real (binfo, rval); + + rval = build_base_path (PLUS_EXPR, rval, binfo, 1); + } + else + rval + @@ -610,87 +592,6 @@ convert_lvalue (totype, expr) + expr = convert_to_reference (totype, expr, CONV_IMPLICIT, LOOKUP_NORMAL, + NULL_TREE); + return convert_from_reference (expr); + -} + - + -/* Call this when we know (for any reason) that expr is not, in fact, + - zero. This routine is like convert_pointer_to, but it pays + - attention to which specific instance of what type we want to + - convert to. This routine should eventually become + - convert_to_pointer after all references to convert_to_pointer + - are removed. */ + - + -tree + -convert_pointer_to_real (binfo, expr) + - tree binfo, expr; + -{ + - register tree intype = TREE_TYPE (expr); + - tree ptr_type; + - tree type, rval; + - + - if (intype == error_mark_node) + - return error_mark_node; + - + - if (TREE_CODE (binfo) == TREE_VEC) + - type = BINFO_TYPE (binfo); + - else if (IS_AGGR_TYPE (binfo)) + - { + - type = binfo; + - } + - else + - { + - type = binfo; + - binfo = NULL_TREE; + - } + - + - ptr_type = cp_build_qualified_type (type, + - CP_TYPE_QUALS (TREE_TYPE (intype))); + - ptr_type = build_pointer_type (ptr_type); + - if (same_type_p (ptr_type, TYPE_MAIN_VARIANT (intype))) + - return expr; + - + - my_friendly_assert (!integer_zerop (expr), 191); + - + - intype = TYPE_MAIN_VARIANT (TREE_TYPE (intype)); + - if (TREE_CODE (type) == RECORD_TYPE + - && TREE_CODE (intype) == RECORD_TYPE + - && type != intype) + - { + - tree path; + - int distance + - = get_base_distance (binfo, intype, 0, &path); + - + - /* This function shouldn't be called with unqualified arguments + - but if it is, give them an error message that they can read. */ + - if (distance < 0) + - { + - cp_error ("cannot convert a pointer of type `%T' to a pointer of type `%T'", + - intype, type); + - + - if (distance == -2) + - cp_error ("because `%T' is an ambiguous base class", type); + - return error_mark_node; + - } + - + - return build_vbase_path (PLUS_EXPR, ptr_type, expr, path, 1); + - } + - rval = build1 (NOP_EXPR, ptr_type, + - TREE_CODE (expr) == NOP_EXPR ? TREE_OPERAND (expr, 0) : expr); + - TREE_CONSTANT (rval) = TREE_CONSTANT (expr); + - return rval; + -} + - + -/* Call this when we know (for any reason) that expr is + - not, in fact, zero. This routine gets a type out of the first + - argument and uses it to search for the type to convert to. If there + - is more than one instance of that type in the expr, the conversion is + - ambiguous. This routine should eventually go away, and all + - callers should use convert_to_pointer_real. */ + - + -tree + -convert_pointer_to (binfo, expr) + - tree binfo, expr; + -{ + - return convert_pointer_to_real (binfo, expr); + } + + /* C++ conversions, preference to static cast conversions. */ + Index: gcc/cp/decl.c + =================================================================== + RCS file: /cvs/gcc/gcc/gcc/cp/decl.c,v + retrieving revision 1.747.2.35 + diff -u -p -r1.747.2.35 decl.c + --- gcc/cp/decl.c 2001/12/06 12:54:12 1.747.2.35 + +++ gcc/cp/decl.c 2001/12/10 22:05:05 + @@ -51,8 +51,7 @@ extern tree global_namespace; + extern int (*valid_lang_attribute) PARAMS ((tree, tree, tree, tree)); + + #ifndef BOOL_TYPE_SIZE + -/* In the new ABI, `bool' has size and alignment `1', on all + - platforms. */ + +/* `bool' has size and alignment `1', on all platforms. */ + #define BOOL_TYPE_SIZE CHAR_TYPE_SIZE + #endif + + @@ -166,28 +165,13 @@ tree error_mark_list; + + tree vtable_entry_type; + tree delta_type_node; + -#if 0 + - Old rtti stuff. + - tree __baselist_desc_type_node; + - tree __i_desc_type_node, __m_desc_type_node; + - tree __t_desc_array_type, __i_desc_array_type, __m_desc_array_type; + -#endif + tree __t_desc_type_node; + -#if 0 + - tree __tp_desc_type_node; + -#endif + tree ti_desc_type_node; + tree bltn_desc_type_node, ptr_desc_type_node; + tree ary_desc_type_node, func_desc_type_node, enum_desc_type_node; + tree class_desc_type_node, si_class_desc_type_node, vmi_class_desc_type_node; + tree ptm_desc_type_node; + tree base_desc_type_node; + -#if 0 + - Not needed yet? May be needed one day? + - tree __bltn_desc_array_type, __user_desc_array_type, __class_desc_array_type; + - tree __ptr_desc_array_type, __attr_dec_array_type, __func_desc_array_type; + - tree __ptmf_desc_array_type, __ptmd_desc_array_type; + -#endif + + tree class_type_node, record_type_node, union_type_node, enum_type_node; + tree unknown_type_node; + @@ -6317,14 +6301,11 @@ initialize_predefined_identifiers () + { "__comp_dtor", &complete_dtor_identifier, 1 }, + { "__base_dtor", &base_dtor_identifier, 1 }, + { "__deleting_dtor", &deleting_dtor_identifier, 1 }, + - { VTABLE_DELTA2_NAME, &delta2_identifier, 0 }, + - { VTABLE_DELTA_NAME, &delta_identifier, 0 }, + { IN_CHARGE_NAME, &in_charge_identifier, 0 }, + - { VTABLE_INDEX_NAME, &index_identifier, 0 }, + { "nelts", &nelts_identifier, 0 }, + { THIS_NAME, &this_identifier, 0 }, + + { VTABLE_DELTA_NAME, &delta_identifier, 0 }, + { VTABLE_PFN_NAME, &pfn_identifier, 0 }, + - { "__pfn_or_delta2", &pfn_or_delta2_identifier, 0 }, + { "_vptr", &vptr_identifier, 0 }, + { "__vtt_parm", &vtt_parm_identifier, 0 }, + { "std", &std_identifier, 0 }, + @@ -6349,11 +6330,6 @@ init_decl_processing () + { + tree fields[20]; + + - /* Check to see that the user did not specify an invalid combination + - of command-line options. */ + - if (!flag_vtable_thunks) + - error ("the ABI requires vtable thunks"); + - + /* Create all the identifiers we need. */ + initialize_predefined_identifiers (); + + @@ -6493,41 +6469,16 @@ init_decl_processing () + TYPE_POINTER_TO (unknown_type_node) = unknown_type_node; + TYPE_REFERENCE_TO (unknown_type_node) = unknown_type_node; + + - if (flag_vtable_thunks) + - { + - /* Make sure we get a unique function type, so we can give + - its pointer type a name. (This wins for gdb.) */ + - tree vfunc_type = make_node (FUNCTION_TYPE); + - TREE_TYPE (vfunc_type) = integer_type_node; + - TYPE_ARG_TYPES (vfunc_type) = NULL_TREE; + - layout_type (vfunc_type); + - + - vtable_entry_type = build_pointer_type (vfunc_type); + - } + - else + - { + - vtable_entry_type = make_aggr_type (RECORD_TYPE); + - fields[0] = build_decl (FIELD_DECL, delta_identifier, + - delta_type_node); + - fields[1] = build_decl (FIELD_DECL, index_identifier, + - delta_type_node); + - fields[2] = build_decl (FIELD_DECL, pfn_identifier, + - ptr_type_node); + - finish_builtin_type (vtable_entry_type, VTBL_PTR_TYPE, fields, 2, + - double_type_node); + - + - /* Make this part of an invisible union. */ + - fields[3] = copy_node (fields[2]); + - TREE_TYPE (fields[3]) = delta_type_node; + - DECL_NAME (fields[3]) = delta2_identifier; + - DECL_MODE (fields[3]) = TYPE_MODE (delta_type_node); + - DECL_SIZE (fields[3]) = TYPE_SIZE (delta_type_node); + - DECL_SIZE_UNIT (fields[3]) = TYPE_SIZE_UNIT (delta_type_node); + - TREE_UNSIGNED (fields[3]) = 0; + - TREE_CHAIN (fields[2]) = fields[3]; + - vtable_entry_type = build_qualified_type (vtable_entry_type, + - TYPE_QUAL_CONST); + - } + + { + + /* Make sure we get a unique function type, so we can give + + its pointer type a name. (This wins for gdb.) */ + + tree vfunc_type = make_node (FUNCTION_TYPE); + + TREE_TYPE (vfunc_type) = integer_type_node; + + TYPE_ARG_TYPES (vfunc_type) = NULL_TREE; + + layout_type (vfunc_type); + + + + vtable_entry_type = build_pointer_type (vfunc_type); + + } + record_builtin_type (RID_MAX, VTBL_PTR_TYPE, vtable_entry_type); + + vtbl_type_node + @@ -9473,7 +9424,6 @@ check_special_function_return_type (sfk, + if (type) + cp_error ("return type specification for constructor invalid"); + + - /* In the new ABI constructors do not return a value. */ + type = void_type_node; + break; + + Index: gcc/cp/decl2.c + =================================================================== + RCS file: /cvs/gcc/gcc/gcc/cp/decl2.c,v + retrieving revision 1.437.2.29 + diff -u -p -r1.437.2.29 decl2.c + --- gcc/cp/decl2.c 2001/11/30 03:12:42 1.437.2.29 + +++ gcc/cp/decl2.c 2001/12/10 22:05:09 + @@ -200,11 +200,6 @@ int warn_long_long = 1; + + int warn_ctor_dtor_privacy = 1; + + -/* True if we want to implement vtables using "thunks". + - The default is off. */ + - + -int flag_vtable_thunks = 1; + - + /* Nonzero means generate separate instantiation control files and juggle + them at link time. */ + + @@ -2262,12 +2257,9 @@ mark_vtable_entries (decl) + + for (; entries; entries = TREE_CHAIN (entries)) + { + - tree fnaddr; + + tree fnaddr = TREE_VALUE (entries); + tree fn; + + - fnaddr = (flag_vtable_thunks ? TREE_VALUE (entries) + - : FNADDR_FROM_VTABLE_ENTRY (TREE_VALUE (entries))); + - + if (TREE_CODE (fnaddr) != ADDR_EXPR + && TREE_CODE (fnaddr) != FDESC_EXPR) + /* This entry is an offset: a virtual base class offset, a + @@ -2307,12 +2299,12 @@ comdat_linkage (decl) + address, and this will not hold when we emit multiple copies of + the function. However, there's little else we can do. + + - Also, by default, the typeinfo implementation for the new ABI + - assumes that there will be only one copy of the string used as + - the name for each type. Therefore, if weak symbols are + - unavailable, the run-time library should perform a more + - conservative check; it should perform a string comparison, + - rather than an address comparison. */ + + Also, by default, the typeinfo implementation assumes that + + there will be only one copy of the string used as the name for + + each type. Therefore, if weak symbols are unavailable, the + + run-time library should perform a more conservative check; it + + should perform a string comparison, rather than an address + + comparison. */ + TREE_PUBLIC (decl) = 0; + else + { + @@ -2751,8 +2743,8 @@ get_guard (decl) + { + tree guard_type; + + - /* Under the new ABI, we use a type that is big enough to + - contain a mutex as well as an integer counter. */ + + /* We use a type that is big enough to contain a mutex as well + + as an integer counter. */ + guard_type = long_long_integer_type_node; + guard = build_decl (VAR_DECL, sname, guard_type); + + @@ -2779,8 +2771,8 @@ static tree + get_guard_bits (guard) + tree guard; + { + - /* Under the new ABI, we only set the first byte of the guard, + - in order to leave room for a mutex in the high-order bits. */ + + /* We only set the first byte of the guard, in order to leave room + + for a mutex in the high-order bits. */ + guard = build1 (ADDR_EXPR, + build_pointer_type (TREE_TYPE (guard)), + guard); + Index: gcc/cp/error.c + =================================================================== + RCS file: /cvs/gcc/gcc/gcc/cp/error.c,v + retrieving revision 1.149.2.5 + diff -u -p -r1.149.2.5 error.c + --- gcc/cp/error.c 2001/09/15 19:43:41 1.149.2.5 + +++ gcc/cp/error.c 2001/12/10 22:05:10 + @@ -950,13 +950,8 @@ dump_decl (t, flags) + if (DECL_NAME (t) && VTABLE_NAME_P (DECL_NAME (t))) + { + output_add_string (scratch_buffer, "vtable for "); + - if (TYPE_P (DECL_CONTEXT (t))) + - dump_type (DECL_CONTEXT (t), flags); + - else + - /* This case can arise with -fno-vtable-thunks. See + - expand_upcast_fixups. It's not clear what to print + - here. */ + - print_identifier (scratch_buffer, ""); + + my_friendly_assert (TYPE_P (DECL_CONTEXT (t)), 20010720); + + dump_type (DECL_CONTEXT (t), flags); + break; + } + /* else fall through */ + @@ -1918,16 +1913,9 @@ dump_expr (t, flags) + case CONSTRUCTOR: + if (TREE_TYPE (t) && TYPE_PTRMEMFUNC_P (TREE_TYPE (t))) + { + - tree idx = build_component_ref (t, index_identifier, NULL_TREE, 0); + + tree idx = build_component_ref (t, pfn_identifier, NULL_TREE, 0); + + - if (integer_all_onesp (idx)) + - { + - tree pfn = PFN_FROM_PTRMEMFUNC (t); + - dump_unary_op ("&", pfn, flags | TFF_EXPR_IN_PARENS); + - break; + - } + - else if (TREE_CODE (idx) == INTEGER_CST + - && tree_int_cst_equal (idx, integer_zero_node)) + + if (integer_zerop (idx)) + { + /* A NULL pointer-to-member constant. */ + output_add_string (scratch_buffer, "(("); + Index: gcc/cp/init.c + =================================================================== + RCS file: /cvs/gcc/gcc/gcc/cp/init.c,v + retrieving revision 1.232.2.9 + diff -u -p -r1.232.2.9 init.c + --- gcc/cp/init.c 2001/05/22 00:29:08 1.232.2.9 + +++ gcc/cp/init.c 2001/12/10 22:05:12 + @@ -130,7 +130,9 @@ finish_init_stmts (stmt_expr, compound_s + + /* Constructors */ + + -/* Called from initialize_vtbl_ptrs via dfs_walk. */ + +/* Called from initialize_vtbl_ptrs via dfs_walk. BINFO is the base + + which we want to initialize the vtable pointer for, DATA is + + TREE_LIST whose TREE_VALUE is the this ptr expression. */ + + static tree + dfs_initialize_vtbl_ptrs (binfo, data) + @@ -142,16 +144,7 @@ dfs_initialize_vtbl_ptrs (binfo, data) + { + tree base_ptr = TREE_VALUE ((tree) data); + + - if (TREE_VIA_VIRTUAL (binfo)) + - base_ptr = convert_pointer_to_vbase (BINFO_TYPE (binfo), + - base_ptr); + - else + - base_ptr + - = build_vbase_path (PLUS_EXPR, + - build_pointer_type (BINFO_TYPE (binfo)), + - base_ptr, + - binfo, + - /*nonnull=*/1); + + base_ptr = build_base_path (PLUS_EXPR, base_ptr, binfo, /*nonnull=*/1); + + expand_virtual_init (binfo, base_ptr); + } + @@ -175,21 +168,13 @@ initialize_vtbl_ptrs (addr) + list = build_tree_list (type, addr); + + /* Walk through the hierarchy, initializing the vptr in each base + - class. We do these in pre-order because under the new ABI we + - can't find the virtual bases for a class until we've initialized + - the vtbl for that class. */ + + class. We do these in pre-order because can't find the virtual + + bases for a class until we've initialized the vtbl for that + + class. */ + dfs_walk_real (TYPE_BINFO (type), dfs_initialize_vtbl_ptrs, + NULL, dfs_unmarked_real_bases_queue_p, list); + dfs_walk (TYPE_BINFO (type), dfs_unmark, + dfs_marked_real_bases_queue_p, type); + - + - /* If we're not using thunks, we may need to adjust the deltas in + - the vtable to handle virtual base classes correctly. When we are + - using thunks, we either use construction vtables (which are + - preloaded with the right answers) or nothing (in which case + - vitual function calls sometimes don't work right.) */ + - if (TYPE_USES_VIRTUAL_BASECLASSES (type) && !flag_vtable_thunks) + - fixup_all_virtual_upcast_offsets (addr); + } + + /* [dcl.init]: + @@ -748,7 +733,8 @@ emit_base_init (mem_init_list, base_init + + if (init != void_list_node) + { + - member = convert_pointer_to_real (base_binfo, current_class_ptr); + + member = build_base_path (PLUS_EXPR, current_class_ptr, + + base_binfo, 1); + expand_aggr_init_1 (base_binfo, NULL_TREE, + build_indirect_ref (member, NULL_PTR), init, + LOOKUP_NORMAL); + @@ -839,20 +825,14 @@ static void + expand_virtual_init (binfo, decl) + tree binfo, decl; + { + - tree type = BINFO_TYPE (binfo); + tree vtbl, vtbl_ptr; + - tree vtype, vtype_binfo; + tree vtt_index; + + - /* Compute the location of the vtable. */ + - vtype = DECL_CONTEXT (TYPE_VFIELD (type)); + - vtype_binfo = get_binfo (vtype, TREE_TYPE (TREE_TYPE (decl)), 0); + - + /* Compute the initializer for vptr. */ + vtbl = build_vtbl_address (binfo); + + - /* Under the new ABI, we may get this vptr from a VTT, if this is a + - subobject constructor or subobject destructor. */ + + /* We may get this vptr from a VTT, if this is a subobject + + constructor or subobject destructor. */ + vtt_index = BINFO_VPTR_INDEX (binfo); + if (vtt_index) + { + @@ -879,10 +859,9 @@ expand_virtual_init (binfo, decl) + } + + /* Compute the location of the vtpr. */ + - decl = convert_pointer_to_real (vtype_binfo, decl); + - vtbl_ptr = build_vfield_ref (build_indirect_ref (decl, NULL_PTR), vtype); + - if (vtbl_ptr == error_mark_node) + - return; + + vtbl_ptr = build_vfield_ref (build_indirect_ref (decl, NULL), + + TREE_TYPE (binfo)); + + my_friendly_assert (vtbl_ptr != error_mark_node, 20010730); + + /* Assign the vtable to the vptr. */ + vtbl = convert_force (TREE_TYPE (vtbl_ptr), vtbl, 0); + @@ -951,22 +930,6 @@ construct_virtual_bases (type, this_ref, + /* If there are no virtual baseclasses, we shouldn't even be here. */ + my_friendly_assert (TYPE_USES_VIRTUAL_BASECLASSES (type), 19990621); + + - /* First set the pointers in our object that tell us where to find + - our virtual baseclasses. */ + - if (!vbase_offsets_in_vtable_p ()) + - { + - tree if_stmt; + - tree result; + - + - if_stmt = begin_if_stmt (); + - finish_if_stmt_cond (flag, if_stmt); + - result = init_vbase_pointers (type, this_ptr); + - if (result) + - finish_expr_stmt (build_compound_expr (result)); + - finish_then_clause (if_stmt); + - finish_if_stmt (); + - } + - + /* Now, run through the baseclasses, initializing each. */ + for (vbases = CLASSTYPE_VBASECLASSES (type); vbases; + vbases = TREE_CHAIN (vbases)) + @@ -1919,14 +1882,17 @@ resolve_offset_ref (exp) + if (TREE_CODE (exp) == OFFSET_REF && TREE_CODE (type) == OFFSET_TYPE) + base = build_scoped_ref (base, TYPE_OFFSET_BASETYPE (type)); + + - addr = build_unary_op (ADDR_EXPR, base, 0); + - addr = convert_pointer_to (basetype, addr); + + /* Don't check access on the conversion; we might be after a member + + promoted by an access- or using-declaration, and we have already + + checked access for the member itself. */ + + basetype = lookup_base (TREE_TYPE (base), basetype, ba_ignore, NULL); + + expr = build_base_path (PLUS_EXPR, base, basetype, 1); + + - if (addr == error_mark_node) + + if (expr == error_mark_node) + return error_mark_node; + + expr = build (COMPONENT_REF, TREE_TYPE (member), + - build_indirect_ref (addr, NULL_PTR), member); + + expr, member); + return convert_from_reference (expr); + } + + @@ -1949,7 +1915,10 @@ resolve_offset_ref (exp) + } + + basetype = TYPE_OFFSET_BASETYPE (TREE_TYPE (TREE_TYPE (member))); + - addr = convert_pointer_to (basetype, addr); + + basetype = lookup_base (TREE_TYPE (TREE_TYPE (addr)), + + basetype, ba_check, NULL); + + addr = build_base_path (PLUS_EXPR, addr, basetype, 1); + + + member = cp_convert (ptrdiff_type_node, member); + + return build1 (INDIRECT_REF, type, + @@ -2213,7 +2182,7 @@ build_java_class_ref (type) + jclass_node = TREE_TYPE (jclass_node); + } + + - /* Mangle the class$ field, new and old ABI */ + + /* Mangle the class$ field */ + { + tree field; + for (field = TYPE_FIELDS (type); field; field = TREE_CHAIN (field)) + @@ -2252,8 +2221,8 @@ get_cookie_size (type) + { + tree cookie_size; + + - /* Under the new ABI, we need to allocate an additional max + - (sizeof (size_t), alignof (true_type)) bytes. */ + + /* We need to allocate an additional max (sizeof (size_t), alignof + + (true_type)) bytes. */ + tree sizetype_size; + tree type_align; + + @@ -2360,9 +2329,7 @@ build_new_1 (exp) + if (!has_array || !TYPE_VEC_NEW_USES_COOKIE (true_type)) + use_cookie = 0; + /* When using placement new, users may not realize that they need + - the extra storage. Under the old ABI, we don't allocate the + - cookie whenever they use one placement argument of type `void + - *'. Under the new ABI, we require that the operator called be + + the extra storage. We require that the operator called be + the global placement operator delete[]. */ + else if (placement && !TREE_CHAIN (placement) + && same_type_p (TREE_TYPE (TREE_VALUE (placement)), + @@ -2479,9 +2446,8 @@ build_new_1 (exp) + tree cookie; + + /* Store the number of bytes allocated so that we can know how + - many elements to destroy later. Under the new ABI, we use + - the last sizeof (size_t) bytes to store the number of + - elements. */ + + many elements to destroy later. We use the last sizeof + + (size_t) bytes to store the number of elements. */ + cookie = build (MINUS_EXPR, build_pointer_type (sizetype), + alloc_node, size_in_bytes (sizetype)); + cookie = build_indirect_ref (cookie, NULL_PTR); + Index: gcc/cp/lang-specs.h + =================================================================== + RCS file: /cvs/gcc/gcc/gcc/cp/lang-specs.h,v + retrieving revision 1.39.2.4 + diff -u -p -r1.39.2.4 lang-specs.h + --- gcc/cp/lang-specs.h 2001/06/08 00:00:32 1.39.2.4 + +++ gcc/cp/lang-specs.h 2001/12/10 22:05:12 + @@ -38,14 +38,14 @@ Boston, MA 02111-1307, USA. */ + "%{E|M|MM:cpp0 -lang-c++ %{!no-gcc:-D__GNUG__=%v1}\ + %{!Wno-deprecated:-D__GXX_DEPRECATED}\ + %{!fno-exceptions:-D__EXCEPTIONS}\ + - %{!fno-new-abi:-D__GXX_ABI_VERSION=100}\ + + -D__GXX_ABI_VERSION=100\ + %{ansi:-D__STRICT_ANSI__ -trigraphs -$} %(cpp_options)}\ + %{!E:%{!M:%{!MM:\ + %{save-temps:cpp0 -lang-c++ \ + %{!no-gcc:-D__GNUG__=%v1}\ + %{!Wno-deprecated:-D__GXX_DEPRECATED}\ + %{!fno-exceptions:-D__EXCEPTIONS}\ + - %{!fno-new-abi:-D__GXX_ABI_VERSION=100}\ + + -D__GXX_ABI_VERSION=100\ + %{ansi:-D__STRICT_ANSI__ -trigraphs -$}\ + %(cpp_options) %b.ii \n}\ + cc1plus %{save-temps:-fpreprocessed %b.ii}\ + @@ -53,7 +53,7 @@ Boston, MA 02111-1307, USA. */ + %{!no-gcc:-D__GNUG__=%v1} \ + %{!Wno-deprecated:-D__GXX_DEPRECATED}\ + %{!fno-exceptions:-D__EXCEPTIONS}\ + - %{!fno-new-abi:-D__GXX_ABI_VERSION=100}\ + + -D__GXX_ABI_VERSION=100\ + %{ansi:-D__STRICT_ANSI__}}\ + %{ansi:-trigraphs -$}\ + %(cc1_options) %2 %{+e1*}\ + Index: gcc/cp/mangle.c + =================================================================== + RCS file: /cvs/gcc/gcc/gcc/cp/mangle.c,v + retrieving revision 1.26.4.9 + diff -u -p -r1.26.4.9 mangle.c + --- gcc/cp/mangle.c 2001/12/03 17:38:50 1.26.4.9 + +++ gcc/cp/mangle.c 2001/12/10 22:05:13 + @@ -1,4 +1,4 @@ + -/* Name mangling for the new standard C++ ABI. + +/* Name mangling for the 3.0 C++ ABI. + Copyright (C) 2000, 2001 Free Software Foundation, Inc. + Written by Alex Samuel + + @@ -1195,10 +1195,7 @@ write_special_name_constructor (ctor) + ::= D0 # deleting (in-charge) destructor + ::= D1 # complete object (in-charge) destructor + ::= D2 # base object (not-in-charge) destructor + - + - We also need to provide unique mngled names for old-ABI + - destructors, sometimes. These should only be used internally. We + - use "D*INTERNAL*" for these. */ + + */ + + static void + write_special_name_destructor (dtor) + Index: gcc/cp/method.c + =================================================================== + RCS file: /cvs/gcc/gcc/gcc/cp/method.c,v + retrieving revision 1.190.2.14 + diff -u -p -r1.190.2.14 method.c + --- gcc/cp/method.c 2001/07/25 09:32:46 1.190.2.14 + +++ gcc/cp/method.c 2001/12/10 22:05:14 + @@ -595,8 +595,6 @@ do_build_copy_constructor (fndecl) + { + if (VFIELD_NAME_P (DECL_NAME (field))) + continue; + - if (VBASE_NAME_P (DECL_NAME (field))) + - continue; + + /* True for duplicate members. */ + if (IDENTIFIER_CLASS_VALUE (DECL_NAME (field)) != field) + @@ -684,8 +682,6 @@ do_build_assign_ref (fndecl) + if (DECL_NAME (field)) + { + if (VFIELD_NAME_P (DECL_NAME (field))) + - continue; + - if (VBASE_NAME_P (DECL_NAME (field))) + continue; + + /* True for duplicate members. */ + Index: gcc/cp/rtti.c + =================================================================== + RCS file: /cvs/gcc/gcc/gcc/cp/rtti.c,v + retrieving revision 1.109.2.7 + diff -u -p -r1.109.2.7 rtti.c + --- gcc/cp/rtti.c 2001/12/06 12:54:19 1.109.2.7 + +++ gcc/cp/rtti.c 2001/12/10 22:05:15 + @@ -41,7 +41,6 @@ Boston, MA 02111-1307, USA. */ + + extern struct obstack permanent_obstack; + + -static tree build_headof_sub PARAMS((tree)); + static tree build_headof PARAMS((tree)); + static tree ifnonnull PARAMS((tree, tree)); + static tree tinfo_name PARAMS((tree)); + @@ -86,23 +85,6 @@ init_rtti_processing () + build_qualified_type (type_info_type_node, TYPE_QUAL_CONST); + } + + -/* Given a pointer to an object with at least one virtual table + - pointer somewhere, return a pointer to a possible sub-object that + - has a virtual table pointer in it that is the vtable parent for + - that sub-object. */ + - + -static tree + -build_headof_sub (exp) + - tree exp; + -{ + - tree type = TREE_TYPE (TREE_TYPE (exp)); + - tree basetype = CLASSTYPE_RTTI (type); + - tree binfo = get_binfo (basetype, type, 0); + - + - exp = convert_pointer_to_real (binfo, exp); + - return exp; + -} + - + /* Given the expression EXP of type `class *', return the head of the + object pointed to by EXP with type cv void*, if the class has any + virtual functions (TYPE_POLYMORPHIC_P), else just return the + @@ -113,7 +95,6 @@ build_headof (exp) + tree exp; + { + tree type = TREE_TYPE (exp); + - tree aref; + tree offset; + tree index; + + @@ -128,24 +109,14 @@ build_headof (exp) + return error_mark_node; + } + + - /* If we don't have rtti stuff, get to a sub-object that does. */ + - if (!CLASSTYPE_VFIELDS (TREE_TYPE (TREE_TYPE (exp)))) + - exp = build_headof_sub (exp); + - + /* We use this a couple of times below, protect it. */ + exp = save_expr (exp); + + - /* Under the new ABI, the offset-to-top field is at index -2 from + - the vptr. */ + + /* The offset-to-top field is at index -2 from the vptr. */ + index = build_int_2 (-2, -1); + + - aref = build_vtbl_ref (build_indirect_ref (exp, NULL_PTR), index); + + offset = build_vtbl_ref (build_indirect_ref (exp, NULL), index); + + - if (flag_vtable_thunks) + - offset = aref; + - else + - offset = build_component_ref (aref, delta_identifier, NULL_TREE, 0); + - + type = build_qualified_type (ptr_type_node, + CP_TYPE_QUALS (TREE_TYPE (exp))); + return build (PLUS_EXPR, type, exp, + @@ -220,22 +191,12 @@ get_tinfo_decl_dynamic (exp) + tree t; + tree index; + + - if (! flag_rtti) + - error ("taking dynamic typeid of object with -fno-rtti"); + if (CLASSTYPE_COM_INTERFACE (type)) + { + cp_error ("RTTI not supported for COM interface type `%T'", type); + return error_mark_node; + } + + - /* If we don't have rtti stuff, get to a sub-object that does. */ + - if (! CLASSTYPE_VFIELDS (type)) + - { + - exp = build_unary_op (ADDR_EXPR, exp, 0); + - exp = build_headof_sub (exp); + - exp = build_indirect_ref (exp, NULL_PTR); + - } + - + /* The RTTI information is at index -1. */ + index = integer_minus_one_node; + t = build_vtbl_ref (exp, index); + @@ -462,36 +423,12 @@ get_base_offset (binfo, parent) + { + if (! TREE_VIA_VIRTUAL (binfo)) + return BINFO_OFFSET (binfo); + - else if (! vbase_offsets_in_vtable_p ()) + - { + - const char *name; + - tree result; + - tree field; + - + - FORMAT_VBASE_NAME (name, BINFO_TYPE (binfo)); + - field = lookup_field (parent, get_identifier (name), 0, 0); + - result = byte_position (field); + - + - if (DECL_CONTEXT (field) != parent) + - { + - /* The vbase pointer might be in a non-virtual base of PARENT. + - * Adjust for the offset of that base in PARENT. */ + - tree path; + - + - get_base_distance (DECL_CONTEXT (field), parent, -1, &path); + - result = build (PLUS_EXPR, TREE_TYPE (result), + - result, BINFO_OFFSET (path)); + - result = fold (result); + - } + - return result; + - } + else + - /* Under the new ABI, we store the vtable offset at which + - the virtual base offset can be found. */ + + /* We store the vtable offset at which the virtual base offset can + + be found. */ + return convert (sizetype, + BINFO_VPTR_FIELD (binfo_for_vbase (BINFO_TYPE (binfo), + parent))); + - + } + + /* Execute a dynamic cast, as described in section 5.2.6 of the 9/93 working + @@ -600,28 +537,15 @@ build_dynamic_cast_1 (type, expr) + /* If *type is an unambiguous accessible base class of *exprtype, + convert statically. */ + { + - int distance; + - tree path; + - + - distance = get_base_distance (TREE_TYPE (type), TREE_TYPE (exprtype), 1, + - &path); + + tree binfo; + + - if (distance == -2) + - { + - cp_error ("dynamic_cast from `%T' to ambiguous base class `%T'", + - TREE_TYPE (exprtype), TREE_TYPE (type)); + - return error_mark_node; + - } + - if (distance == -3) + - { + - cp_error ("dynamic_cast from `%T' to private base class `%T'", + - TREE_TYPE (exprtype), TREE_TYPE (type)); + - return error_mark_node; + - } + + binfo = lookup_base (TREE_TYPE (exprtype), TREE_TYPE (type), + + ba_not_special, NULL); + + - if (distance >= 0) + + if (binfo) + { + - expr = build_vbase_path (PLUS_EXPR, type, expr, path, 0); + + expr = build_base_path (PLUS_EXPR, convert_from_reference (expr), + + binfo, 0); + if (TREE_CODE (exprtype) == POINTER_TYPE) + expr = non_lvalue (expr); + return expr; + @@ -843,8 +767,8 @@ tinfo_base_init (desc, target) + DECL_EXTERNAL (name_decl) = 0; + TREE_PUBLIC (name_decl) = 1; + comdat_linkage (name_decl); + - /* The new ABI specifies the external name of the string + - containing the type's name. */ + + /* External name of the string containing the type's name has a + + special name. */ + SET_DECL_ASSEMBLER_NAME (name_decl, + mangle_typeinfo_string_for_type (target)); + DECL_INITIAL (name_decl) = name_string; + @@ -1232,7 +1156,11 @@ create_real_tinfo_var (target_type, name + tree decl; + tree hidden_name; + char hidden[30]; + - + + + + /* We cannot give this the name NAME, as that already is globally + + bound to the tinfo_decl we originally created for this type in + + get_tinfo_decl. */ + + + sprintf (hidden, "%.*s_%d", + IDENTIFIER_LENGTH (tinfo_decl_id), IDENTIFIER_POINTER (tinfo_decl_id), + count++); + @@ -1314,8 +1242,7 @@ create_pseudo_type_info VPARAMS((const c + vtable_decl = get_vtable_decl (real_type, /*complete=*/1); + vtable_decl = build_unary_op (ADDR_EXPR, vtable_decl, 0); + + - /* Under the new ABI, we need to point into the middle of the + - vtable. */ + + /* We need to point into the middle of the vtable. */ + vtable_decl = build (PLUS_EXPR, + TREE_TYPE (vtable_decl), + vtable_decl, + Index: gcc/cp/search.c + =================================================================== + RCS file: /cvs/gcc/gcc/gcc/cp/search.c,v + retrieving revision 1.202.2.6 + diff -u -p -r1.202.2.6 search.c + --- gcc/cp/search.c 2001/06/08 17:12:41 1.202.2.6 + +++ gcc/cp/search.c 2001/12/10 22:05:17 + @@ -83,26 +83,21 @@ struct vbase_info + tree inits; + }; + + -static tree get_vbase_1 PARAMS ((tree, tree, unsigned int *)); + static tree lookup_field_1 PARAMS ((tree, tree)); + static int is_subobject_of_p PARAMS ((tree, tree, tree)); + -static tree virtual_context PARAMS ((tree, tree, tree)); + static tree dfs_check_overlap PARAMS ((tree, void *)); + static tree dfs_no_overlap_yet PARAMS ((tree, void *)); + static int get_base_distance_recursive + PARAMS ((tree, int, int, int, int *, tree *, tree, + int, int *, int, int)); + +static base_kind lookup_base_r + + PARAMS ((tree, tree, base_access, + + int, int, int, tree *)); + static int dynamic_cast_base_recurse PARAMS ((tree, tree, int, tree *)); + -static void expand_upcast_fixups + - PARAMS ((tree, tree, tree, tree, tree, tree, tree *)); + -static void fixup_virtual_upcast_offsets + - PARAMS ((tree, tree, int, int, tree, tree, tree, tree, + - tree *)); + static tree marked_pushdecls_p PARAMS ((tree, void *)); + static tree unmarked_pushdecls_p PARAMS ((tree, void *)); + static tree dfs_debug_unmarkedp PARAMS ((tree, void *)); + static tree dfs_debug_mark PARAMS ((tree, void *)); + -static tree dfs_init_vbase_pointers PARAMS ((tree, void *)); + static tree dfs_get_vbase_types PARAMS ((tree, void *)); + static tree dfs_push_type_decls PARAMS ((tree, void *)); + static tree dfs_push_decls PARAMS ((tree, void *)); + @@ -140,7 +135,6 @@ static tree get_shared_vbase_if_not_prim + static tree dfs_find_vbase_instance PARAMS ((tree, void *)); + static tree dfs_get_pure_virtuals PARAMS ((tree, void *)); + static tree dfs_build_inheritance_graph_order PARAMS ((tree, void *)); + -static tree dfs_vtable_path_unmark PARAMS ((tree, void *)); + + /* Allocate a level of searching. */ + + @@ -177,76 +171,6 @@ static int n_contexts_saved; + #endif /* GATHER_STATISTICS */ + + + -/* Get a virtual binfo that is found inside BINFO's hierarchy that is + - the same type as the type given in PARENT. To be optimal, we want + - the first one that is found by going through the least number of + - virtual bases. + - + - This uses a clever algorithm that updates *depth when we find the vbase, + - and cuts off other paths of search when they reach that depth. */ + - + -static tree + -get_vbase_1 (parent, binfo, depth) + - tree parent, binfo; + - unsigned int *depth; + -{ + - tree binfos; + - int i, n_baselinks; + - tree rval = NULL_TREE; + - int virtualp = TREE_VIA_VIRTUAL (binfo) != 0; + - + - *depth -= virtualp; + - if (virtualp && BINFO_TYPE (binfo) == parent) + - { + - *depth = 0; + - return binfo; + - } + - + - binfos = BINFO_BASETYPES (binfo); + - n_baselinks = binfos ? TREE_VEC_LENGTH (binfos) : 0; + - + - /* Process base types. */ + - for (i = 0; i < n_baselinks; i++) + - { + - tree base_binfo = TREE_VEC_ELT (binfos, i); + - tree nrval; + - + - if (*depth == 0) + - break; + - + - nrval = get_vbase_1 (parent, base_binfo, depth); + - if (nrval) + - rval = nrval; + - } + - *depth += virtualp; + - return rval; + -} + - + -/* Return the shortest path to vbase PARENT within BINFO, ignoring + - access and ambiguity. */ + - + -tree + -get_vbase (parent, binfo) + - tree parent; + - tree binfo; + -{ + - unsigned int d = (unsigned int)-1; + - return get_vbase_1 (parent, binfo, &d); + -} + - + -/* Convert EXPR to a virtual base class of type TYPE. We know that + - EXPR is a non-null POINTER_TYPE to RECORD_TYPE. We also know that + - the type of what expr points to has a virtual base of type TYPE. */ + - + -tree + -convert_pointer_to_vbase (type, expr) + - tree type; + - tree expr; + -{ + - tree vb = get_vbase (type, TYPE_BINFO (TREE_TYPE (TREE_TYPE (expr)))); + - return convert_pointer_to_real (vb, expr); + -} + - + /* Check whether the type given in BINFO is derived from PARENT. If + it isn't, return 0. If it is, but the derivation is MI-ambiguous + AND protect != 0, emit an error message and return error_mark_node. + @@ -414,9 +338,6 @@ get_base_distance_recursive (binfo, dept + If PROTECT is greater than 1, ignore any special access the current + scope might have when determining whether PARENT is inaccessible. + + - PARENT can also be a binfo, in which case that exact parent is found + - and no other. convert_pointer_to_real uses this functionality. + - + If BINFO is a binfo, its BINFO_INHERITANCE_CHAIN will be left alone. */ + + int + @@ -476,21 +397,198 @@ get_base_distance (parent, binfo, protec + if (rval && protect && rval_private) + return -3; + + - /* If they gave us the real vbase binfo, which isn't in the main binfo + - tree, deal with it. This happens when we are called from + - expand_upcast_fixups. */ + - if (rval == -1 && TREE_CODE (parent) == TREE_VEC + - && parent == binfo_for_vbase (BINFO_TYPE (parent), type)) + - { + - new_binfo = parent; + - rval = 1; + - } + - + if (path_ptr) + *path_ptr = new_binfo; + return rval; + } + + +/* Worker for lookup_base. BINFO is the binfo we are searching at, + + BASE is the RECORD_TYPE we are searching for. ACCESS is the + + required access checks. WITHIN_CURRENT_SCOPE, IS_NON_PUBLIC and + + IS_VIRTUAL indicate how BINFO was reached from the start of the + + search. WITHIN_CURRENT_SCOPE is true if we met the current scope, + + or friend thereof (this allows us to determine whether a protected + + base is accessible or not). IS_NON_PUBLIC indicates whether BINFO + + is accessible and IS_VIRTUAL indicates if it is morally virtual. + + + + If BINFO is of the required type, then *BINFO_PTR is examined to + + compare with any other instance of BASE we might have already + + discovered. *BINFO_PTR is initialized and a base_kind return value + + indicates what kind of base was located. + + + + Otherwise BINFO's bases are searched. */ + + + +static base_kind + +lookup_base_r (binfo, base, access, within_current_scope, + + is_non_public, is_virtual, binfo_ptr) + + tree binfo, base; + + base_access access; + + int within_current_scope; + + int is_non_public; /* inside a non-public part */ + + int is_virtual; /* inside a virtual part */ + + tree *binfo_ptr; + +{ + + int i; + + tree bases; + + base_kind found = bk_not_base; + + + + if (access == ba_check + + && !within_current_scope + + && is_friend (BINFO_TYPE (binfo), current_scope ())) + + { + + within_current_scope = 1; + + is_non_public = 0; + + } + + + + if (same_type_p (BINFO_TYPE (binfo), base)) + + { + + /* We have found a base. Check against what we have found + + already. */ + + found = bk_same_type; + + if (is_virtual) + + found = bk_via_virtual; + + if (is_non_public) + + found = bk_inaccessible; + + + + if (!*binfo_ptr) + + *binfo_ptr = binfo; + + else if (!is_virtual || !tree_int_cst_equal (BINFO_OFFSET (binfo), + + BINFO_OFFSET (*binfo_ptr))) + + { + + if (access != ba_any) + + *binfo_ptr = NULL; + + else if (found != is_virtual) + + /* Prefer a non-virtual base. */ + + *binfo_ptr = binfo; + + found = bk_ambig; + + } + + else if (found == bk_via_virtual) + + *binfo_ptr = binfo; + + + + return found; + + } + + + + bases = BINFO_BASETYPES (binfo); + + if (!bases) + + return bk_not_base; + + + + for (i = TREE_VEC_LENGTH (bases); i--;) + + { + + tree base_binfo = TREE_VEC_ELT (bases, i); + + int this_non_public = is_non_public; + + int this_virtual = is_virtual; + + + + if (access <= ba_ignore) + + ; /* no change */ + + else if (TREE_VIA_PUBLIC (base_binfo)) + + ; /* no change */ + + else if (access == ba_not_special) + + this_non_public = 1; + + else if (TREE_VIA_PROTECTED (base_binfo) && within_current_scope) + + ; /* no change */ + + else if (is_friend (BINFO_TYPE (binfo), current_scope ())) + + ; /* no change */ + + else + + this_non_public = 1; + + + + if (TREE_VIA_VIRTUAL (base_binfo)) + + this_virtual = 1; + + + + base_kind bk = lookup_base_r (base_binfo, base, + + access, within_current_scope, + + this_non_public, this_virtual, + + binfo_ptr); + + + + switch (bk) + + { + + case bk_ambig: + + if (access != ba_any) + + return bk; + + found = bk; + + break; + + + + case bk_inaccessible: + + if (found == bk_not_base) + + found = bk; + + my_friendly_assert (found == bk_via_virtual + + || found == bk_inaccessible, 20010723); + + + + break; + + + + case bk_same_type: + + bk = bk_proper_base; + + /* FALLTHROUGH */ + + case bk_proper_base: + + my_friendly_assert (found == bk_not_base, 20010723); + + found = bk; + + break; + + + + case bk_via_virtual: + + my_friendly_assert (found == bk_not_base + + || found == bk_via_virtual + + || found == bk_inaccessible, 20010723); + + found = bk; + + break; + + + + case bk_not_base: + + break; + + } + + } + + return found; + +} + + + +/* Lookup BASE in the hierarchy dominated by T. Do access checking as + + ACCESS specifies. Return the binfo we discover (which might not be + + canonical). If KIND_PTR is non-NULL, fill with information about + + what kind of base we discoveded. + + + + Issue an error message if an inaccessible or ambiguous base is + + discovered, and return error_mark_node. */ + + + +tree + +lookup_base (t, base, access, kind_ptr) + + tree t, base; + + base_access access; + + base_kind *kind_ptr; + +{ + + tree binfo = NULL; /* The binfo we've found so far. */ + + base_kind bk; + + + + if (t == error_mark_node || base == error_mark_node) + + { + + if (kind_ptr) + + *kind_ptr = bk_not_base; + + return error_mark_node; + + } + + + + t = TYPE_MAIN_VARIANT (t); + + base = TYPE_MAIN_VARIANT (base); + + + + bk = lookup_base_r (TYPE_BINFO (t), base, access, 0, 0, 0, &binfo); + + + + switch (bk) + + { + + case bk_inaccessible: + + cp_error ("`%T' is an inaccessible base of `%T'", base, t); + + binfo = error_mark_node; + + break; + + case bk_ambig: + + if (access != ba_any) + + { + + cp_error ("`%T' is an ambiguous base of `%T'", base, t); + + binfo = error_mark_node; + + } + + break; + + + + default:; + + } + + + + if (kind_ptr) + + *kind_ptr = bk; + + + + return binfo; + +} + + + /* Worker function for get_dynamic_cast_base_type. */ + + static int + @@ -1467,15 +1565,6 @@ lookup_field_r (binfo, data) + } + else + { + - /* If the thing we're looking for is a virtual base class, then + - we know we've got what we want at this point; there's no way + - to get an ambiguity. */ + - if (VBASE_NAME_P (lfi->name)) + - { + - lfi->rval = nval; + - return nval; + - } + - + if (from_dep_base_p && TREE_CODE (nval) != TYPE_DECL + /* We need to return a member template class so we can + define partial specializations. Is there a better + @@ -2333,391 +2422,6 @@ dfs_unmark (binfo, data) + } + + + -static tree + -dfs_init_vbase_pointers (binfo, data) + - tree binfo; + - void *data; + -{ + - struct vbase_info *vi = (struct vbase_info *) data; + - tree type = BINFO_TYPE (binfo); + - tree fields; + - tree this_vbase_ptr; + - + - /* Don't initialize the same base more than once. */ + - SET_BINFO_VTABLE_PATH_MARKED (binfo); + - + - /* We know that VI->DECL_PTR points to the complete object. So, + - finding a pointer to this subobject is easy. */ + - this_vbase_ptr = build (PLUS_EXPR, + - build_pointer_type (type), + - vi->decl_ptr, + - BINFO_OFFSET (binfo)); + - + - /* We're going to iterate through all the pointers to virtual + - base-classes. They come at the beginning of the class. */ + - fields = TYPE_FIELDS (type); + - + - if (fields == NULL_TREE + - || DECL_NAME (fields) == NULL_TREE + - || ! VBASE_NAME_P (DECL_NAME (fields))) + - return NULL_TREE; + - + - if (build_pointer_type (type) + - != TYPE_MAIN_VARIANT (TREE_TYPE (this_vbase_ptr))) + - my_friendly_abort (125); + - + - while (fields && DECL_NAME (fields) && VBASE_NAME_P (DECL_NAME (fields))) + - { + - tree ref = build (COMPONENT_REF, TREE_TYPE (fields), + - build_indirect_ref (this_vbase_ptr, NULL_PTR), fields); + - tree init; + - tree vbase_type; + - tree vbase_binfo; + - + - vbase_type = TREE_TYPE (TREE_TYPE (fields)); + - vbase_binfo = binfo_for_vbase (vbase_type, vi->type); + - init = build (PLUS_EXPR, + - build_pointer_type (vbase_type), + - vi->decl_ptr, + - BINFO_OFFSET (vbase_binfo)); + - vi->inits + - = tree_cons (vbase_binfo, + - build_modify_expr (ref, NOP_EXPR, init), + - vi->inits); + - fields = TREE_CHAIN (fields); + - } + - + - return NULL_TREE; + -} + - + -/* Call CLEAR_BINFO_VTABLE_PATH_MARKED for BINFO. */ + - + -static tree + -dfs_vtable_path_unmark (binfo, data) + - tree binfo; + - void *data ATTRIBUTE_UNUSED; + -{ + - CLEAR_BINFO_VTABLE_PATH_MARKED (binfo); + - return NULL_TREE; + -} + - + -tree + -init_vbase_pointers (type, decl_ptr) + - tree type; + - tree decl_ptr; + -{ + - my_friendly_assert (!vbase_offsets_in_vtable_p (), 20000516); + - + - if (TYPE_USES_VIRTUAL_BASECLASSES (type)) + - { + - struct vbase_info vi; + - tree binfo = TYPE_BINFO (type); + - + - /* Find all the virtual base classes, marking them for later + - initialization. */ + - vi.type = type; + - vi.decl_ptr = decl_ptr; + - vi.inits = NULL_TREE; + - + - /* Build up a list of the initializers. */ + - dfs_walk_real (binfo, + - dfs_init_vbase_pointers, 0, + - unmarked_vtable_pathp, + - &vi); + - dfs_walk (binfo, + - dfs_vtable_path_unmark, + - marked_vtable_pathp, + - NULL); + - + - return vi.inits; + - } + - + - return 0; + -} + - + -/* get the virtual context (the vbase that directly contains the + - DECL_CONTEXT of the FNDECL) that the given FNDECL is declared in, + - or NULL_TREE if there is none. + - + - FNDECL must come from a virtual table from a virtual base to ensure + - that there is only one possible DECL_CONTEXT. + - + - We know that if there is more than one place (binfo) the fndecl that the + - declared, they all refer to the same binfo. See get_class_offset_1 for + - the check that ensures this. */ + - + -static tree + -virtual_context (fndecl, t, vbase) + - tree fndecl, t, vbase; + -{ + - tree path; + - if (get_base_distance (DECL_CONTEXT (fndecl), t, 0, &path) < 0) + - { + - /* DECL_CONTEXT can be ambiguous in t. */ + - if (get_base_distance (DECL_CONTEXT (fndecl), vbase, 0, &path) >= 0) + - { + - while (path) + - { + - /* Not sure if checking path == vbase is necessary here, but just in + - case it is. */ + - if (TREE_VIA_VIRTUAL (path) || path == vbase) + - return binfo_for_vbase (BINFO_TYPE (path), t); + - path = BINFO_INHERITANCE_CHAIN (path); + - } + - } + - /* This shouldn't happen, I don't want errors! */ + - warning ("recoverable compiler error, fixups for virtual function"); + - return vbase; + - } + - while (path) + - { + - if (TREE_VIA_VIRTUAL (path)) + - return binfo_for_vbase (BINFO_TYPE (path), t); + - path = BINFO_INHERITANCE_CHAIN (path); + - } + - return 0; + -} + - + -/* Fixups upcast offsets for one vtable. + - Entries may stay within the VBASE given, or + - they may upcast into a direct base, or + - they may upcast into a different vbase. + - + - We only need to do fixups in case 2 and 3. In case 2, we add in + - the virtual base offset to effect an upcast, in case 3, we add in + - the virtual base offset to effect an upcast, then subtract out the + - offset for the other virtual base, to effect a downcast into it. + - + - This routine mirrors fixup_vtable_deltas in functionality, though + - this one is runtime based, and the other is compile time based. + - Conceivably that routine could be removed entirely, and all fixups + - done at runtime. + - + - VBASE_OFFSETS is an association list of virtual bases that contains + - offset information for the virtual bases, so the offsets are only + - calculated once. */ + - + -static void + -expand_upcast_fixups (binfo, addr, orig_addr, vbase, vbase_addr, t, + - vbase_offsets) + - tree binfo, addr, orig_addr, vbase, vbase_addr, t, *vbase_offsets; + -{ + - tree virtuals; + - tree vc; + - tree delta; + - HOST_WIDE_INT n; + - + - while (BINFO_PRIMARY_P (binfo)) + - { + - binfo = BINFO_INHERITANCE_CHAIN (binfo); + - if (TREE_VIA_VIRTUAL (binfo)) + - return; + - } + - + - delta = purpose_member (vbase, *vbase_offsets); + - if (! delta) + - { + - delta = build (PLUS_EXPR, + - build_pointer_type (BINFO_TYPE (vbase)), + - orig_addr, + - BINFO_OFFSET (vbase)); + - delta = build (MINUS_EXPR, ptrdiff_type_node, delta, vbase_addr); + - delta = save_expr (delta); + - delta = tree_cons (vbase, delta, *vbase_offsets); + - *vbase_offsets = delta; + - } + - + - for (virtuals = BINFO_VIRTUALS (binfo), n = 0; + - virtuals; + - virtuals = TREE_CHAIN (virtuals), ++n) + - { + - tree current_fndecl = TREE_VALUE (virtuals); + - + - if (current_fndecl + - && current_fndecl != abort_fndecl + - && (vc=virtual_context (current_fndecl, t, vbase)) != vbase) + - { + - /* This may in fact need a runtime fixup. */ + - tree idx = build_int_2 (n, 0); + - tree vtbl = BINFO_VTABLE (binfo); + - tree nvtbl = lookup_name (DECL_NAME (vtbl), 0); + - tree aref, ref, naref; + - tree old_delta, new_delta; + - tree init; + - + - if (nvtbl == NULL_TREE + - || nvtbl == IDENTIFIER_GLOBAL_VALUE (DECL_NAME (vtbl))) + - { + - /* Dup it if it isn't in local scope yet. */ + - nvtbl = build_decl + - (VAR_DECL, DECL_NAME (vtbl), + - TYPE_MAIN_VARIANT (TREE_TYPE (vtbl))); + - DECL_ALIGN (nvtbl) = MAX (TYPE_ALIGN (double_type_node), + - DECL_ALIGN (nvtbl)); + - TREE_READONLY (nvtbl) = 0; + - DECL_ARTIFICIAL (nvtbl) = 1; + - nvtbl = pushdecl (nvtbl); + - init = NULL_TREE; + - cp_finish_decl (nvtbl, init, NULL_TREE, + - LOOKUP_ONLYCONVERTING); + - + - /* We don't set DECL_VIRTUAL_P and DECL_CONTEXT on nvtbl + - because they wouldn't be useful; everything that wants to + - look at the vtable will look at the decl for the normal + - vtable. Setting DECL_CONTEXT also screws up + - decl_function_context. */ + - + - init = build (MODIFY_EXPR, TREE_TYPE (nvtbl), + - nvtbl, vtbl); + - finish_expr_stmt (init); + - /* Update the vtable pointers as necessary. */ + - ref = build_vfield_ref + - (build_indirect_ref (addr, NULL_PTR), + - DECL_CONTEXT (TYPE_VFIELD (BINFO_TYPE (binfo)))); + - finish_expr_stmt + - (build_modify_expr (ref, NOP_EXPR, nvtbl)); + - } + - assemble_external (vtbl); + - aref = build_array_ref (vtbl, idx); + - naref = build_array_ref (nvtbl, idx); + - old_delta = build_component_ref (aref, delta_identifier, + - NULL_TREE, 0); + - new_delta = build_component_ref (naref, delta_identifier, + - NULL_TREE, 0); + - + - /* This is a upcast, so we have to add the offset for the + - virtual base. */ + - old_delta = cp_build_binary_op (PLUS_EXPR, old_delta, + - TREE_VALUE (delta)); + - if (vc) + - { + - /* If this is set, we need to subtract out the delta + - adjustments for the other virtual base that we + - downcast into. */ + - tree vc_delta = purpose_member (vc, *vbase_offsets); + - if (! vc_delta) + - { + - tree vc_addr = convert_pointer_to_real (vc, orig_addr); + - vc_delta = build (PLUS_EXPR, + - build_pointer_type (BINFO_TYPE (vc)), + - orig_addr, + - BINFO_OFFSET (vc)); + - vc_delta = build (MINUS_EXPR, ptrdiff_type_node, + - vc_delta, vc_addr); + - vc_delta = save_expr (vc_delta); + - *vbase_offsets = tree_cons (vc, vc_delta, *vbase_offsets); + - } + - else + - vc_delta = TREE_VALUE (vc_delta); + - + - /* This is a downcast, so we have to subtract the offset + - for the virtual base. */ + - old_delta = cp_build_binary_op (MINUS_EXPR, old_delta, vc_delta); + - } + - + - TREE_READONLY (new_delta) = 0; + - TREE_TYPE (new_delta) = + - cp_build_qualified_type (TREE_TYPE (new_delta), + - CP_TYPE_QUALS (TREE_TYPE (new_delta)) + - & ~TYPE_QUAL_CONST); + - finish_expr_stmt (build_modify_expr (new_delta, NOP_EXPR, + - old_delta)); + - } + - } + -} + - + -/* Fixup upcast offsets for all direct vtables. Patterned after + - expand_direct_vtbls_init. */ + - + -static void + -fixup_virtual_upcast_offsets (real_binfo, binfo, init_self, can_elide, addr, orig_addr, type, vbase, vbase_offsets) + - tree real_binfo, binfo; + - int init_self, can_elide; + - tree addr, orig_addr, type, vbase, *vbase_offsets; + -{ + - tree real_binfos = BINFO_BASETYPES (real_binfo); + - tree binfos = BINFO_BASETYPES (binfo); + - int i, n_baselinks = real_binfos ? TREE_VEC_LENGTH (real_binfos) : 0; + - + - for (i = 0; i < n_baselinks; i++) + - { + - tree real_base_binfo = TREE_VEC_ELT (real_binfos, i); + - tree base_binfo = TREE_VEC_ELT (binfos, i); + - int is_not_base_vtable + - = !BINFO_PRIMARY_P (real_base_binfo); + - if (! TREE_VIA_VIRTUAL (real_base_binfo)) + - fixup_virtual_upcast_offsets (real_base_binfo, base_binfo, + - is_not_base_vtable, can_elide, addr, + - orig_addr, type, vbase, vbase_offsets); + - } + -#if 0 + - /* Before turning this on, make sure it is correct. */ + - if (can_elide && ! BINFO_MODIFIED (binfo)) + - return; + -#endif + - /* Should we use something besides CLASSTYPE_VFIELDS? */ + - if (init_self && CLASSTYPE_VFIELDS (BINFO_TYPE (real_binfo))) + - { + - tree new_addr = convert_pointer_to_real (binfo, addr); + - expand_upcast_fixups (real_binfo, new_addr, orig_addr, vbase, addr, + - type, vbase_offsets); + - } + -} + - + -/* Fixup all the virtual upcast offsets for TYPE. DECL_PTR is the + - address of the sub-object being initialized. */ + - + -void + -fixup_all_virtual_upcast_offsets (decl_ptr) + - tree decl_ptr; + -{ + - tree if_stmt; + - tree in_charge_node; + - tree vbases; + - tree type; + - + - /* Only tweak the vtables if we're in charge. */ + - in_charge_node = current_in_charge_parm; + - if (!in_charge_node) + - /* There's no need for any fixups in this case. */ + - return; + - in_charge_node = cp_build_binary_op (EQ_EXPR, + - in_charge_node, integer_zero_node); + - if_stmt = begin_if_stmt (); + - finish_if_stmt_cond (in_charge_node, if_stmt); + - + - /* Iterate through the virtual bases, fixing up the upcast offset + - for each one. */ + - type = TREE_TYPE (TREE_TYPE (decl_ptr)); + - for (vbases = CLASSTYPE_VBASECLASSES (type); + - vbases; + - vbases = TREE_CHAIN (vbases)) + - { + - if (flag_vtable_thunks) + - /* We don't have dynamic thunks yet! So for now, just fail + - silently. */ + - ; + - else + - { + - tree vbase; + - tree vbase_offsets; + - tree addr; + - + - vbase = find_vbase_instance (TREE_PURPOSE (vbases), type); + - vbase_offsets = NULL_TREE; + - addr = convert_pointer_to_vbase (TREE_PURPOSE (vbases), decl_ptr); + - fixup_virtual_upcast_offsets (vbase, + - TYPE_BINFO (TREE_PURPOSE (vbases)), + - 1, 0, addr, decl_ptr, + - type, vbase, &vbase_offsets); + - } + - } + - + - /* Close out the if-statement. */ + - finish_then_clause (if_stmt); + - finish_if_stmt (); + -} + - + /* get virtual base class types. + This adds type to the vbase_types list in reverse dfs order. + Ordering is very important, so don't change it. */ + Index: gcc/cp/semantics.c + =================================================================== + RCS file: /cvs/gcc/gcc/gcc/cp/semantics.c,v + retrieving revision 1.189.2.17 + diff -u -p -r1.189.2.17 semantics.c + --- gcc/cp/semantics.c 2001/12/08 16:12:52 1.189.2.17 + +++ gcc/cp/semantics.c 2001/12/10 22:05:19 + @@ -2346,7 +2346,7 @@ emit_associated_thunks (fn) + is so that you can know statically the entire set of thunks that + will ever be needed for a given virtual function, thereby + enabling you to output all the thunks with the function itself. */ + - if (vcall_offsets_in_vtable_p () && DECL_VIRTUAL_P (fn)) + + if (DECL_VIRTUAL_P (fn)) + { + tree binfo; + tree v; + @@ -2412,8 +2412,8 @@ expand_body (fn) + simplify_aggr_init_exprs_r, + NULL); + + - /* If this is a constructor or destructor body, we have to clone it + - under the new ABI. */ + + /* If this is a constructor or destructor body, we have to clone + + it. */ + if (maybe_clone_body (fn)) + { + /* We don't want to process FN again, so pretend we've written + Index: gcc/cp/tree.c + =================================================================== + RCS file: /cvs/gcc/gcc/gcc/cp/tree.c,v + retrieving revision 1.232.2.10 + diff -u -p -r1.232.2.10 tree.c + --- gcc/cp/tree.c 2001/11/30 03:12:44 1.232.2.10 + +++ gcc/cp/tree.c 2001/12/10 22:05:20 + @@ -2220,12 +2220,6 @@ cp_valid_lang_attribute (attr_name, attr + } + if (is_attribute_p ("com_interface", attr_name)) + { + - if (! flag_vtable_thunks) + - { + - error ("`com_interface' only supported with -fvtable-thunks"); + - return 0; + - } + - + if (attr_args != NULL_TREE + || decl != NULL_TREE + || ! CLASS_TYPE_P (type) + Index: gcc/cp/typeck.c + =================================================================== + RCS file: /cvs/gcc/gcc/gcc/cp/typeck.c,v + retrieving revision 1.337.2.11 + diff -u -p -r1.337.2.11 typeck.c + --- gcc/cp/typeck.c 2001/11/20 04:39:23 1.337.2.11 + +++ gcc/cp/typeck.c 2001/12/10 22:05:24 + @@ -114,8 +114,11 @@ require_complete_type (value) + { + tree base, member = TREE_OPERAND (value, 1); + tree basetype = TYPE_OFFSET_BASETYPE (type); + + + my_friendly_assert (TREE_CODE (member) == FIELD_DECL, 305); + - base = convert_pointer_to (basetype, current_class_ptr); + + basetype = lookup_base (current_class_type, basetype, ba_check, NULL); + + base = build_base_path (PLUS_EXPR, current_class_ptr, basetype, 1); + + + value = build (COMPONENT_REF, TREE_TYPE (member), + build_indirect_ref (base, NULL_PTR), member); + return require_complete_type (value); + @@ -2235,23 +2238,15 @@ build_component_ref (datum, component, b + /* Handle base classes here... */ + if (base != basetype && TYPE_BASE_CONVS_MAY_REQUIRE_CODE_P (basetype)) + { + - tree addr = build_unary_op (ADDR_EXPR, datum, 0); + - if (integer_zerop (addr)) + + tree binfo = lookup_base (TREE_TYPE (datum), base, ba_check, NULL); + + + + if (TREE_CODE (datum) == INDIRECT_REF + + && integer_zerop (TREE_OPERAND (datum, 0))) + { + error ("invalid reference to NULL ptr, use ptr-to-member instead"); + return error_mark_node; + - } + - if (VBASE_NAME_P (DECL_NAME (field))) + - { + - /* It doesn't matter which vbase pointer we grab, just + - find one of them. */ + - tree binfo = get_binfo (base, + - TREE_TYPE (TREE_TYPE (addr)), 0); + - addr = convert_pointer_to_real (binfo, addr); + } + - else + - addr = convert_pointer_to (base, addr); + - datum = build_indirect_ref (addr, NULL_PTR); + + datum = build_base_path (PLUS_EXPR, datum, binfo, 1); + if (datum == error_mark_node) + return error_mark_node; + } + @@ -2842,8 +2837,11 @@ build_x_function_call (function, params, + if (TREE_CODE (TREE_TYPE (decl)) != POINTER_TYPE + && ! TYPE_PTRMEMFUNC_P (TREE_TYPE (decl))) + { + + tree binfo = lookup_base (TREE_TYPE (decl), TREE_TYPE (ctypeptr), + + ba_check, NULL); + + + decl = build_unary_op (ADDR_EXPR, decl, 0); + - decl = convert_pointer_to (TREE_TYPE (ctypeptr), decl); + + decl = build_base_path (PLUS_EXPR, decl, binfo, 1); + } + else + decl = build_c_cast (ctypeptr, decl); + @@ -2862,13 +2860,11 @@ get_member_function_from_ptrfunc (instan + tree function; + { + if (TREE_CODE (function) == OFFSET_REF) + - { + - function = TREE_OPERAND (function, 1); + - } + + function = TREE_OPERAND (function, 1); + + if (TYPE_PTRMEMFUNC_P (TREE_TYPE (function))) + { + - tree fntype, idx, e1, delta, delta2, e2, e3, aref, vtbl; + + tree fntype, idx, e1, delta, delta2, e2, e3, vtbl; + tree instance, basetype; + + tree instance_ptr = *instance_ptrptr; + @@ -2893,14 +2889,18 @@ get_member_function_from_ptrfunc (instan + fntype = TYPE_PTRMEMFUNC_FN_TYPE (TREE_TYPE (function)); + basetype = TYPE_METHOD_BASETYPE (TREE_TYPE (fntype)); + + - /* Convert down to the right base, before using the instance. */ + - instance = convert_pointer_to_real (basetype, instance_ptr); + + /* Convert down to the right base, before using the instance. */ + + instance = lookup_base (TREE_TYPE (TREE_TYPE (instance_ptr)), basetype, + + ba_check, NULL); + + instance = build_base_path (PLUS_EXPR, instance_ptr, instance, 1); + if (instance == error_mark_node && instance_ptr != error_mark_node) + return instance; + + e3 = PFN_FROM_PTRMEMFUNC (function); + - + - vtbl = convert_pointer_to (ptr_type_node, instance); + + + + vtbl = build1 (NOP_EXPR, build_pointer_type (ptr_type_node), instance); + + TREE_CONSTANT (vtbl) = TREE_CONSTANT (instance); + + + delta = cp_convert (ptrdiff_type_node, + build_component_ref (function, delta_identifier, + NULL_TREE, 0)); + @@ -2950,27 +2950,8 @@ get_member_function_from_ptrfunc (instan + build_pointer_type (build_pointer_type (vtable_entry_type)), + vtbl, cp_convert (ptrdiff_type_node, delta2)); + vtbl = build_indirect_ref (vtbl, NULL_PTR); + - aref = build_array_ref (vtbl, idx); + - + - if (! flag_vtable_thunks) + - { + - aref = save_expr (aref); + - + - delta = cp_build_binary_op + - (PLUS_EXPR, + - build_conditional_expr (e1, + - build_component_ref (aref, + - delta_identifier, + - NULL_TREE, 0), + - integer_zero_node), + - delta); + - } + + e2 = build_array_ref (vtbl, idx); + + - if (flag_vtable_thunks) + - e2 = aref; + - else + - e2 = build_component_ref (aref, pfn_identifier, NULL_TREE, 0); + - + /* When using function descriptors, the address of the + vtable entry is treated as a function pointer. */ + if (TARGET_VTABLE_USES_DESCRIPTORS) + @@ -4277,8 +4258,11 @@ build_component_addr (arg, argtype) + /* Can't convert directly to ARGTYPE, since that + may have the same pointer type as one of our + baseclasses. */ + - rval = build1 (NOP_EXPR, argtype, + - convert_pointer_to (basetype, rval)); + + tree binfo = lookup_base (TREE_TYPE (TREE_TYPE (rval)), basetype, + + ba_check, NULL); + + + + rval = build_base_path (PLUS_EXPR, rval, binfo, 1); + + rval = build1 (NOP_EXPR, argtype, rval); + TREE_CONSTANT (rval) = TREE_CONSTANT (TREE_OPERAND (rval, 0)); + } + else + @@ -6107,8 +6091,7 @@ build_ptrmemfunc (type, pfn, force) + delta = build_component_ref (pfn, delta_identifier, NULL_TREE, 0); + } + + - /* Under the new ABI, the conversion is easy. Just adjust + - the DELTA field. */ + + /* Just adjust the DELTA field. */ + delta = cp_convert (ptrdiff_type_node, delta); + if (TARGET_PTRMEMFUNC_VBIT_LOCATION == ptrmemfunc_vbit_in_delta) + n = cp_build_binary_op (LSHIFT_EXPR, n, integer_one_node); + @@ -6173,10 +6156,9 @@ expand_ptrmemfunc_cst (cst, delta, pfn) + *delta = fold (build (PLUS_EXPR, TREE_TYPE (*delta), + *delta, BINFO_OFFSET (binfo))); + + - /* Under the new ABI, we set PFN to the vtable offset at + - which the function can be found, plus one (unless + - ptrmemfunc_vbit_in_delta, in which case delta is shifted + - left, and then incremented). */ + + /* We set PFN to the vtable offset at which the function can be + + found, plus one (unless ptrmemfunc_vbit_in_delta, in which + + case delta is shifted left, and then incremented). */ + *pfn = DECL_VINDEX (fn); + *pfn = fold (build (MULT_EXPR, integer_type_node, *pfn, + TYPE_SIZE_UNIT (vtable_entry_type))); + Index: gcc/cp/typeck2.c + =================================================================== + RCS file: /cvs/gcc/gcc/gcc/cp/typeck2.c,v + retrieving revision 1.97.2.2 + diff -u -p -r1.97.2.2 typeck2.c + --- gcc/cp/typeck2.c 2001/04/12 05:26:11 1.97.2.2 + +++ gcc/cp/typeck2.c 2001/12/10 22:05:25 + @@ -980,12 +980,17 @@ build_scoped_ref (datum, basetype) + tree basetype; + { + tree ref; + + tree binfo; + + if (datum == error_mark_node) + return error_mark_node; + + binfo = lookup_base (TREE_TYPE (datum), basetype, ba_check, NULL); + + + if (!binfo) + + return error_not_base_type (TREE_TYPE (datum), basetype); + + + ref = build_unary_op (ADDR_EXPR, datum, 0); + - ref = convert_pointer_to (basetype, ref); + + ref = build_base_path (PLUS_EXPR, ref, binfo, 1); + + return build_indirect_ref (ref, "(compiler error in build_scoped_ref)"); + } diff -Nrc3pad gcc-3.0.2/contrib/gcc_update gcc-3.0.3/contrib/gcc_update *** gcc-3.0.2/contrib/gcc_update Sat Jul 28 23:46:24 2001 --- gcc-3.0.3/contrib/gcc_update Sun Nov 18 12:11:47 2001 *************** gcc/fixinc/fixincl.x: gcc/fixinc/fixincl *** 69,74 **** --- 69,77 ---- gcc/doc/gcov.1: gcc/doc/gcov.texi gcc/doc/cpp.1: gcc/doc/cpp.texi gcc/doc/gcc.1: gcc/doc/invoke.texi + gcc/doc/fsf-funding.7: gcc/doc/include/funding.texi + gcc/doc/gfdl.7: gcc/doc/include/fdl.texi + gcc/doc/gpl.7: gcc/doc/include/gpl.texi # And then, language-specific files gcc/f/intdoc.texi: gcc/f/intdoc.in gcc/f/intdoc.c gcc/f/intrin.h gcc/f/intrin.def # And libraries, at last diff -Nrc3pad gcc-3.0.2/contrib/texi2pod.pl gcc-3.0.3/contrib/texi2pod.pl *** gcc-3.0.2/contrib/texi2pod.pl Mon Jul 2 17:50:41 2001 --- gcc-3.0.3/contrib/texi2pod.pl Wed Nov 14 14:33:28 2001 *************** while() *** 71,76 **** --- 71,77 ---- |(?:end\s+)?group # @group .. @end group: ditto |page # @page: ditto |node # @node: useful only in .info file + |(?:end\s+)?ifnottex # @ifnottex .. @end ifnottex: use contents )\b/x and next; chomp; *************** while() *** 102,118 **** # Ignore @end foo, where foo is not an operation which may # cause us to skip, if we are presently skipping. my $ended = $1; ! next if $skipping && $ended !~ /^(?:ifset|ifclear|ignore|menu)$/; die "\@end $ended without \@$ended at line $.\n" unless defined $endw; die "\@$endw ended by \@end $ended at line $.\n" unless $ended eq $endw; $endw = pop @endwstack; ! if ($ended =~ /^(?:ifset|ifclear|ignore|menu)$/) { $skipping = pop @skstack; next; ! } elsif ($ended =~ /^(?:example|smallexample)$/) { $shift = ""; $_ = ""; # need a paragraph break } elsif ($ended =~ /^(?:itemize|enumerate|table)$/) { --- 103,119 ---- # Ignore @end foo, where foo is not an operation which may # cause us to skip, if we are presently skipping. my $ended = $1; ! next if $skipping && $ended !~ /^(?:ifset|ifclear|ignore|menu|iftex)$/; die "\@end $ended without \@$ended at line $.\n" unless defined $endw; die "\@$endw ended by \@end $ended at line $.\n" unless $ended eq $endw; $endw = pop @endwstack; ! if ($ended =~ /^(?:ifset|ifclear|ignore|menu|iftex)$/) { $skipping = pop @skstack; next; ! } elsif ($ended =~ /^(?:example|smallexample|display)$/) { $shift = ""; $_ = ""; # need a paragraph break } elsif ($ended =~ /^(?:itemize|enumerate|table)$/) { *************** while() *** 142,148 **** next; }; ! /^\@(ignore|menu)\b/ and do { push @endwstack, $endw; push @skstack, $skipping; $endw = $1; --- 143,149 ---- next; }; ! /^\@(ignore|menu|iftex)\b/ and do { push @endwstack, $endw; push @skstack, $skipping; $endw = $1; *************** while() *** 171,176 **** --- 172,183 ---- s/\@\{/{/g; s/\@\}/}/g; s/\@\@/&at;/g; + + # Inside a verbatim block, handle @var specially. + if ($shift ne "") { + s/\@var\{([^\}]*)\}/<$1>/g; + } + # POD doesn't interpret E<> inside a verbatim block. if ($shift eq "") { s/) *** 184,190 **** /^\@set\s+([a-zA-Z0-9_-]+)\s*(.*)$/ and $defs{$1} = $2, next; /^\@clear\s+([a-zA-Z0-9_-]+)/ and delete $defs{$1}, next; ! /^\@section\s+(.+)$/ and $_ = "\n=head2 $1\n"; /^\@subsection\s+(.+)$/ and $_ = "\n=head3 $1\n"; # Block command handlers: --- 191,197 ---- /^\@set\s+([a-zA-Z0-9_-]+)\s*(.*)$/ and $defs{$1} = $2, next; /^\@clear\s+([a-zA-Z0-9_-]+)/ and delete $defs{$1}, next; ! /^\@(?:section|unnumbered|unnumberedsec|center)\s+(.+)$/ and $_ = "\n=head2 $1\n"; /^\@subsection\s+(.+)$/ and $_ = "\n=head3 $1\n"; # Block command handlers: *************** while() *** 196,202 **** $endw = "itemize"; }; ! /^\@enumerate(?:\s+([A-Z0-9]+))?/ and do { push @endwstack, $endw; push @icstack, $ic; if (defined $1) { --- 203,209 ---- $endw = "itemize"; }; ! /^\@enumerate(?:\s+([a-zA-Z0-9]+))?/ and do { push @endwstack, $endw; push @icstack, $ic; if (defined $1) { *************** while() *** 220,226 **** $endw = "table"; }; ! /^\@((?:small)?example)/ and do { push @endwstack, $endw; $endw = $1; $shift = "\t"; --- 227,233 ---- $endw = "table"; }; ! /^\@((?:small)?example|display)/ and do { push @endwstack, $endw; $endw = $1; $shift = "\t"; *************** while() *** 233,239 **** $_ = "\n=item $ic\<$1\>\n"; } else { $_ = "\n=item $ic\n"; ! $ic =~ y/A-Ya-y1-8/B-Zb-z2-9/; } }; --- 240,247 ---- $_ = "\n=item $ic\<$1\>\n"; } else { $_ = "\n=item $ic\n"; ! $ic =~ y/A-Ya-y/B-Zb-z/; ! $ic =~ s/(\d+)/$1 + 1/eg; } }; diff -Nrc3pad gcc-3.0.2/faq.html gcc-3.0.3/faq.html *** gcc-3.0.2/faq.html Tue Oct 23 10:56:16 2001 --- gcc-3.0.3/faq.html Thu Dec 20 11:56:10 2001 *************** page.

        *** 66,71 **** --- 66,72 ----
        1. Virtual memory exhausted
        2. Friend Templates
        3. +
        4. dynamic_cast, throw, typeid don't work with shared libraries
        5. Why do I need autoconf, bison, xgettext, automake, etc?
        6. Why can't I build a shared library?
        7. How to work around too long C++ symbol names? *************** friend declarations as template declarat *** 542,547 **** --- 543,607 ---- that the forward declaration was not necessary, but, according to the final version of the Standard, it is.

          + +
          +

          dynamic_cast, throw, typeid don't work with shared libraries

          + +

          The new C++ ABI in the GCC 3.0 series uses address comparisons, + rather than string compares, to determine type equality. This leads + to better performance. Like other objects that have to be present in the + final executable, these std::typeinfo_t objects have what + is called vague linkage because they are not tightly bound to any one + particular translation unit (object file). The compiler has to emit + them in any translation unit that requires their presence, and then + rely on the linking and loading process to make sure that only one of + them is active in the final executable. With static linking all of + these symbols are resolved at link time, but with dynamic linking, + further resolution occurs at load time. You have to ensure that + objects within a shared library are resolved against objects in the + executable and other shared libraries.

          + +
            +
          • For a program which is linked against a shared library, no additional + precautions need taking.
          • + +
          • You cannot create a shared library with the "-Bsymbolic" + option, as that prevents the resolution described above.
          • + +
          • If you use dlopen to explicitly load code from a shared + library, you must do several things. First, export global symbols from + the executable by linking it with the "-E" flag (you will + have to specify this as "-Wl,-E" if you are invoking + the linker in the usual manner from the compiler driver, g++). + You must also make the external symbols in the loaded library + available for subsequent libraries by providing the RTLD_GLOBAL + flag to dlopen. The symbol resolution can be immediate or + lazy.
          • + +
          + +

          Template instantiations are another, user visible, case of objects + with vague linkage, which needs similar resolution. If you do not take + the above precautions, you may discover that a template instantiation + with the same argument list, but instantiated in multiple translation + units, has several addresses, depending in which translation unit the + address is taken. (This is not an exhaustive list of the kind + of objects which have vague linkage and are expected to be resolved + during linking & loading.)

          + +

          If you are worried about different objects with the same name + colliding during the linking or loading process, then you should use + namespaces to disambiguate them. Giving distinct objects with global + linkage the same name is a violation of the One Definition Rule (ODR) + [basic.def.odr].

          + +

          For more details about the way that GCC implements these and other + C++ features, please read the 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, automake, etc?

          diff -Nrc3pad gcc-3.0.2/gcc/ChangeLog gcc-3.0.3/gcc/ChangeLog *** gcc-3.0.2/gcc/ChangeLog Tue Oct 23 10:19:18 2001 --- gcc-3.0.3/gcc/ChangeLog Thu Dec 20 11:21:30 2001 *************** *** 1,3 **** --- 1,547 ---- + 2001-12-20 Release Manager + + * GCC 3.0.3 Released. + + 2001-12-13 Richard Henderson + + * stmt.c (expand_asm_operands): Correct and simplify the + conditions for spilling an output operand to memory. + + 2001-12-12 Bruce Korb + Rodney Brown + + * fixinc/inclhack.def (strict_ansi_not_ctd): Update for UnixWare 2.1.3. + * fixinc/mkfixinc.sh: Use C fixincludes for UnixWare 2.1.3. + * fixinc/tests/base/math.h: update for new test text for rework + + 2001-12-13 Alan Modra + + * config/rs6000/rs6000.c (rs6000_unique_section): Simplify and + correct code selecting section. + + 2001-12-11 Richard Henderson + + * except.c (sjlj_find_directly_reachable_regions): Don't + consider RNL_BLOCKED a directly reachable region. + (sjlj_assign_call_site_values): Trust directly_reachable. + (sjlj_emit_dispatch_table): Likewise. + + 2001-12-11 Neil Booth + + * c-common.c (combine_strings): Complain if concatenating + __FUNCTION__. + * c-parse.in (yylexname): Flag artificial strings. + * tree.h (TREE_ARTIFICIAL_STRING_P): New. + doc: + * extend.texi: Update. + + 2001-12-09 David Edelsohn + + * stor-layout.c (place_union_field): Apply ADJUST_FIELD_ALIGN + to unions. + + 2001-12-08 Alan Modra + + * config/rs6000/rs6000.c (rs6000_unique_section): Add missing + parentheses. + + 2001-12-07 Craig Rodrigues + * expr.c (store_constructor): Handle zero-length arrays and + flexible arrays correctly. + + 2001-12-07 David O'Brien + + * elfos.h (_USING_ELFOS_H): Rename to USING_ELFOS_H, to match mainline. + * rs6000/rs6000.c (_USING_ELFOS_H): Likewise. + + 2001-12-06 Nick Clifton + + * config/arm/arm.h (STRUCT_VALUE): Suppress definition. + (STRUCT_VALUE_REGNUM): Restore definition. + + 2001-12-06 Richard Henderson + + * stmt.c (parse_input_constraint): Break out from ... + (expand_asm_operands): ... here. Loop over the operands twice, + the first time only calling mark_addressable. + + 2001-12-06 Rainer Orth + + * fixinc/inclhack.def (stdio_va_list): Handle __VA_LIST__ in Tru64 + UNIX V5.1A stdio.h. + * fixinc/fixincl.x: Regenerate. + Fixes PR libf2c/4826. + + 2001-12-05 Neil Booth + + * cppspec.c (lang_specific_driver): Set is_cpp_driver. + * gcc.c (process_command): Ensure the cpp driver sees + --help and --target-help, and that the help is printed + exactly once. + + 2001-12-04 DJ Delorie + + * fixinc/fixincl.c (initialize): Avoid problemsome macro + parameter names (PR 3388). + + 2001-12-04 Loren J. Rittle + + bootstrap/4422 + * configure.in: Setup ability to run ./stage[1234]/xgcc in + fixinc *as if* it were a proper lang subdirectory. + * configure: Rebuilt. + + 2001-12-04 Joseph S. Myers + + * doc/install.texi: Use the GFDL. Include years from old install + manual in copyright notice. Include copyright and GFDL notice on + HTML index page. Include usual footer on testing.html. + * doc/install.texi2html: Build gfdl.html. Use -I + $SOURCEDIR/include. + * doc/include/fdl.texi: Adapt for use in the install manual. + + 2001-12-04 Joseph S. Myers + + * doc/install.texi: Document that installed native compiler for + building cross compilers should be GCC 2.95 or later. + + 2001-12-03 Neil Booth + + PR c/4988 + * gcc.c (process_command): Don't add a preprocessor option for + --help and --target-help; cc1 is enough. + + 2001-12-03 Jason Merrill + + * dwarf2out.c (add_data_member_location_attribute): Do the + right thing for virtual bases. + * dbxout.c (dbxout_type): For a virtual base, print the offset + within the vtable. + + 2001-12-01 Olivier Hainque + + * unroll.c (loop_iterations): Give up on jumps with null JUMP_LABEL + while scanning for multiple back edges. + + 2001-12-01 Franz Sirl + + * ginclude/ppc-asm.h (JUMP_TARGET): New macro. + * config/rs6000/tramp.asm: Use it. + + 2001-11-30 Stephane Carrez + + * config/sparc/sparc.c (DF_MODES_NO_S): Fix pr/3623, define to + accept DFmode and DImode only. + + 2001-11-20 Zoltan Hidvegi + + * doloop.c (doloop_modify_runtime): Correct calculation of + iterations. + * unroll.c (unroll_loop): Correct special exit cases. + + 2001-11-30 Jakub Jelinek + + * config/sparc/sparc.md (movdf): Avoid calling validize_mem during + or after reload. + + 2001-11-27 John David Anglin + Bruce Korb + + * inclhack.def (AAA_time): Delete. + (hpux_size_t): Revise select and fix for HP-UX 11.11. + (hpux11_vsnprintf): Adapt to above hack. + + 2001-08-14 Steve Ellcey + + * tlink.c (scan_linker_output): Check string for unsatisfied in + addition to undefined and unresolved. + + 2001-11-29 Zoltan Hidvegi + + * doloop.c (doloop_valid_p): Check for LTU and GTU as well. + + 2001-11-29 Richard Henderson + + * ifcvt.c (noce_try_store_flag_constants): Test for overflow + in computing DIFF. + + 2001-11-29 Craig Rodrigues + + PR other/4932 + * config/i386/i386.c (print_operand): Verify that the + argument to %c is a constant and not a conditional which + needs to be reversed. + + 2001-11-27 Rainer Orth + + * gcc.c (set_input): Export. + Move declaration ... + gcc.h (set_input): ... here. + + 2001-11-27 Rainer Orth + + * gcc.c (set_collect_gcc_options): New function, split out from + main. + Ignore elided switches. + (do_spec): Invoke before executing command. + (do_spec_1): Likewise. + Fixes PR other/3968. + + 2001-11-27 Rainer Orth + + * config/i386/sol2.h (WINT_TYPE): Redefine. + (WINT_TYPE_SIZE): Likewise. + + 2001-11-26 Ian Lance Taylor + + * config/i386/i386.md (movstrsi): Use strmovqi rather than + strmovsi for final byte move. + + 2001-11-26 Alan Modra + + * final.c: (insn_lengths): Make it an int *, so that large jump + tables don't overflow. + + 2001-11-25 Stephane Carrez + + * config/m68hc11/m68hc11.md (peephole2): New peephole2 to optimize + address computations. + + 2001-11-25 Stephane Carrez + + * config/m68hc11/m68hc11.c (d_register_operand): Must accept + register b (low part of d). + + 2001-11-25 Stephane Carrez + + * config/m68hc11/m68hc11.h (FUNCTION_PROFILER): Fix label name + passed to mcount. + + 2001-11-24 Neil Booth + + * cppmacro.c (warn_of_redefinition): Warn regardless of -pedantic. + * cppinit.c (init_dependency_output): Suppress other stdout + output when dumping dependencies. + + 2001-11-19 Brad Kaiser + + * reload1.c (elimination_effects): Use function_invariant_p + instead of CONSTANT_P when considering register equivalences. + + 2001-11-18 Craig Rodrigues + + PR bootstrap/4020 + * mklibgcc.in: Add missing semi-colons. + * Makefile.in: Same. + + 2001-11-18 Craig Rodrigues + + PR c/4448 + * gthr-win32.h: (__gthread_objc_thread_exit): Fix variable + name __objc_thread_exit_status so that it matches the + variable defined in objc/thr.h. + + 2001-11-18 Craig Rodrigues + + PR optimization/4815 + * alias.c: Merge from mainline: + 2001-08-05 Bernd Schmidt + * alias.c (rtx_equal_for_memref_p): VALUEs are only identical + if their CSELIB_VAL_PTRs are. + 2001-07-25 Andrew Haley + * alias.c (rtx_equal_for_memref_p): Allow strings as types in + operands. + + 2001-11-17 Craig Rodrigues + + PR target/4606 + * config.gcc: Remove reference to va-clipper.h. + + 2001-11-17 Christopher Faylor + Corinna Vinschen + + * config/i386/cygwin.h: Search target specific include directory for + w32api stuff, if appropriate. + + 2001-11-15 Kazu Hirata + + * config/h8300/h8300.md: Fix insn length of bit insns. + + 2001-11-15 Richard Hodson + + * config/h8300/h8300.c (dosize): Avoid corrupting R3 in interrupt + routines. + + 2001-11-14 Joseph S. Myers + + * Makefile.in (POD2MAN): Don't include --section=1. + (manext): Rename to man1ext. All users changed. + (man7ext): New. + (man7dir): New. + (generated-manpages): Also depend on $(docdir)/gfdl.7, + $(docdir)/gpl.7, and $(docdir)/fsf-funding.7. + ($(docdir)/gcov.1, $(docdir)/cpp.1, $(docdir)/gcc.1): Include + --section=1 in calls to $(POD2MAN). + ($(docdir)/gfdl.7, $(docdir)/gpl.7, $(docdir)/fsf-funding.7): New. + (maintainer-clean, install, uninstall): Handle the new man pages. + ($(docdir)/cpp.info, cpp.dvi): Depend on fdl.texi. + (installdirs): Create man7dir. + * doc/cpp.texi: Include GFDL in this manual. In the man page, + refer to gfdl(7) for the GFDL. Apply Front Cover and Back Cover + texts to man page. Include gpl(7), gfdl(7) and fsf-funding(7) in + the SEE ALSO man page section. + * doc/gcov.texi: Apply GFDL to man page. Include gpl(7), gfdl(7) + and fsf-funding(7) in the SEE ALSO man page section. + * doc/invoke.texi: Apply GFDL to man page. Include gpl(7), + gfdl(7) and fsf-funding(7) in the SEE ALSO man page section. + * doc/include/fdl.texi, doc/include/funding.texi, + doc/include/gpl.texi: Adjust for conversion by texi2pod.pl. + * doc/cpp.1, doc/gcc.1, doc/gcov.1: Regenerate. + * doc/gpl.7, doc/gfdl.7, doc/fsf-funding.7: New. + + 2001-11-13 Jeff Sturm + + * doc/install.texi (sparc-*-linux*): Mention requirements for + binutils and glibc. + + 2001-11-12 Craig Rodrigues + + PR bootstrap/3451 + * c-pragma.c: Rename macros BAD, BAD2, BAD_ACTION to + GCC_BAD, GCC_BAD2, GCC_BAD_ACTION. + + 2001-11-12 David O'Brien + + * config/ia64/freebsd.h: Fix comment (sync with mainline). + + 2001-05-15 Geoffrey Keating + + * config/rs6000/sysv4.h (ASM_PREFERRED_EH_DATA_FORMAT): Treat + TARGET_RELOCATABLE like flag_pic for now. + + 2001-05-13 Geoff Keating + + * config/rs6000/rs6000.h (EXCEPTION_SECTION): Move to... + * config/rs6000/aix.h (EXCEPTION_SECTION): ... here. + * config/rs6000/sysv4.h (CONST_SECTION_ASM_OP): Delete. + (ASM_PREFERRED_EH_DATA_FORMAT): Define. + (EXCEPTION_SECTION): Define. + + 2001-11-09 Jason Eckhardt + + * config/mips/mips.c (mips_output_conditional_branch): Do not hard + code the branch target as ".+16/.+12", but rather use labels. + + 2001-11-09 Gerald Pfeifer + + * doc/install.texi2html: Use $MAKEINFO --no-split. + + 2001-11-08 Richard Henderson + + * Makefile.in (GCC_FOR_TARGET): Add build_tooldir/sys-include. + (CROSS_SYSTEM_HEADER_DIR): Use build_tooldir not tooldir. + (ORDINARY_FLAGS_TO_PASS, stmp-fixinc): Likewise. + + 2001-11-08 Richard Henderson + + 2001-07-11 Richard Sandiford , + H.J. Lu + * mips.md (call_internal1): Use CONSTANT_ADDRESS_P to check for + constant addresses. + (call_internal2): Likewise. + (call_value_internal1): Likewise. + (call_value_internal2): Likewise. + (call_value_multiple_internal1): Likewise. + (call_value_multiple_internal2): Likewise. + + * config/mips/mips.c (save_restore_insns): Remove GP from the + restore registers mask early instead of special casing it inside + the loop. + + * config/fp-bit.h (usi_to_float): Define for US_SOFTWARE_GOFAST + case as well. + + * Makefile.in (NM_FOR_TARGET): Single build tree uses nm-new. + + 2001-11-07 Neil Booth + Per Bothner + H.J. Lu + + * acconfig.h (PREFIX_INCLUDE_DIR): New variable. + * config.in: Rebuild. + * cppdefault.c (cpp_include_defaults): Also search PREFIX_INCLUDE_DIR. + * Makefile.in (includedir): Rename to local_includedir. + (includedir): Define as $(prefix)/include. + * config.in (PREFIX_INCLUDE_DIR): New variable. + * configure.in (PREFIX_INCLUDE_DIR): Test for new variable. + + 2001-11-07 Joseph S. Myers + + * doc/gcc.texi: Move terminology and spelling conventions to + htdocs/codingconventions.html. + + 2001-11-06 Joseph S. Myers + + * doc/install.texi: Document that configure options not listed in + this file are unsupported. Document --with-system-zlib. + + 2001-11-05 Alan Modra + + * config/rs6000/rs6000.md (load_toc_aix_{si,di}): Mark r2 as used. + + 2001-11-05 Zack Weinberg + + * configure.in: AC_SUBST xm_defines. + * configure: Regenerate. + * Makefile.in: Set DEFINES=$(xm_defines) when building + tconfig.h. + + 2001-09-15 Roman Lechtchinsky + + * c-common.c (c_promoting_integer_type_p): Handle ?Imode types. + + 2001-08-18 Zack Weinberg + + * combine.c (make_compound_operation, simplify_comparison): + Fix typos testing for this or that instruction. + + 2001-07-26 Kazu Hirata + + * regmove.c (regmove_optimize): Don't replace a reg with + another reg of a different mode. + + 2001-06-16 Franz Sirl + + * gccspec.c (lang_specific_driver): If compiling ObjC, add + -shared-libgcc when necessary. + * Makefile.in (gccspec.o): Compile with DRIVER_DEFINES. + + 2001-06-11 Aldy Hernandez + + * loop.c (scan_loop): Do not combine asm statements. + + 2001-11-03 David O'Brien + + * config.gcc: Add FreeBSD/IA-64 target. Move inclusion of IA-64 + target headers to tm_file. + * config/ia64/ia64.h (TARGET_VERSION,ASM_SPEC,LINK_SPEC): Remove, + they are OS specific. Use CPP_CPU_SPEC rather than CPP_PREDEFINES, + so OS specific files and use CPP_PREDEFINES for their needs. + * config/ia64/elf.h (TARGET_VERSION): Add. Also, move inclusion of + target headers to tm_file. + * config/ia64/linux.h (TARGET_VERSION): Likewise. + * config/ia64/freebsd.h: New file. + * config/freebsd.h: Tidy up. + (_USING_CONFIG_FREEBSD): Define. + (FBSD_CPP_PREDEFINES): Add __KPRINTF_ATTRIBUTE__. + (FBSD_CPP_SPEC): Define generic FreeBSD spec. + (FBSD_STARTFILE_SPEC): Likewise. + (FBSD_ENDFILE_SPEC): Likewise. + (FBSD_LIB_SPEC): Likewise. + (WCHAR_UNSIGNED): Undefine, FreeBSD's wchars are signed. + (USER_LABEL_PREFIX): Define to ELF compatible value as some CPU headers + set an ELF-improper one. + + 2001-11-03 Joseph S. Myers + + * doc/extend.texi, doc/gcc.texi, doc/install.texi, doc/tm.texi: + Use "invalid" instead of "illegal". Use @r in comments in + examples. + + 2001-11-01 Richard Sandiford + + * config/mips/mips.c (save_restore_insns): Don't mark any register + save slots as unchanging if current_function_calls_eh_return. + + 2001-11-01 Kazu Hirata + + * config/h8300/h8300.c (h8300_encode_label): Compute a string + before passing it to ggc_alloc_string. + + 2001-10-30 Jakub Jelinek + + * flow.c (merge_blocks): Don't merge blocks if second block is + nonlocal_goto handler. + + 2001-10-28 David Edelsohn + + * config/rs6000/rs6000.c (output_mi_thunk): Fix typo. + + 2001-10-28 David O'Brien + + * config/rs6000/sysv4.h (CPP_PREDEFINES): Quiet warning when overriden. + + 2001-10-28 Joseph S. Myers + + * toplev.c: Fix spelling errors. + + 2001-10-28 David O'Brien + + * config/elfos.h (_USING_ELFOS_H): Define. + * config/rs6000/rs6000.c: Test for _USING_ELFOS_H rather than + USING_SVR4_H to know when to turn on ELF support. + + 2001-10-28 Joseph S. Myers + + * doc/invoke.texi: Fix spelling. + + * doc/gcc.texi: Document use of "dependent" and American spelling. + + 2001-10-26 Andrew Cagney + + Import 2001-07-11 Andrew Cagney : + + * config.gcc: Recognize powerpc-*-netbsd*. + + * doc/install.texi (Host/target specific installation notes for + GCC): Mention powerpc-*-netbsd*. + + * config/rs6000/netbsd.h: New file. + (STANDARD_STARTFILE_PREFIX, LINK_SHLIB_SPEC): Redefine. + (LIB_DEFAULT_SPEC, STARTFILE_DEFAULT_SPEC): Redefine. + (ENDFILE_DEFAULT_SPEC, LINK_START_DEFAULT_SPEC): Redefine. + (LINK_OS_DEFAULT_SPEC, CPP_OS_DEFAULT_SPEC): Redefine. + (TARGET_VERSION): Redefine. + + * config/rs6000/t-ppccomm (MULTILIB_MATCHES_SYSV): Recognize + mcall-netbsd as a match for mcall-sysv. + (EXTRA_MULTILIB_PARTS): Add ncrti$(objext) and ncrtn$(objext). + (ncrti.S, ncrtn.S): New targets. + ($(T)ncrti$(objext), $(T)ncrtn$(objext)): New targets. + + * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Recognize + "netbsd' as a V4 ABI. + (ASM_SPEC): Check for -mcall-netbsd. + (CC1_SPEC, CC1_SPEC, LINK_START_SPEC, LINK_OS_SPEC): Ditto. + (CPP_ENDIAN_SPEC, CPP_SPEC, STARTFILE_SPEC): Ditto. + (LIB_SPEC, ENDFILE_SPEC): Ditto. + (LIB_NETBSD_SPEC, STARTFILE_NETBSD_SPEC): Define. + (ENDFILE_NETBSD_SPEC, LINK_START_NETBSD_SPEC): Define. + (LINK_OS_NETBSD_SPEC, CPP_OS_NETBSD_SPEC): Define. + (SUBTARGET_EXTRA_SPECS): Add NetBSD specs. + + * doc/invoke.texi (Option Summary): Add -mcall-netbsd. + (RS/6000 and PowerPC Options): Mention -mcall-netbsd. + + 2001-10-26 David Edelsohn + + * config/rs6000/rs6000.md (cr_logical): Swap order of CODE and + MODE arguments to gen_rtx and compare operand with const0_rtx. + + 2001-10-26 Christopher Faylor + + * config/i386/cygwin.h: Search target specfic include directory, if + appropriate. + + 2001-10-24 Christopher Faylor + + * config/i386/cygwin.h: Use proper path for mingw crt files when + -mno-cygwin. + 2001-10-23 Release Manager * GCC 3.0.2 Released. diff -Nrc3pad gcc-3.0.2/gcc/Makefile.in gcc-3.0.3/gcc/Makefile.in *** gcc-3.0.2/gcc/Makefile.in Thu Oct 4 15:59:02 2001 --- gcc-3.0.3/gcc/Makefile.in Sun Nov 18 16:46:43 2001 *************** MAKEINFO = @MAKEINFO@ *** 133,139 **** MAKEINFOFLAGS = TEXI2DVI = texi2dvi TEXI2POD = perl $(srcdir)/../contrib/texi2pod.pl ! POD2MAN = pod2man --center="GNU" --release="gcc-$(version)" --section=1 # For GNUmake: let us decide what gets passed to recursive makes. MAKEOVERRIDES = @SET_MAKE@ --- 133,139 ---- MAKEINFOFLAGS = TEXI2DVI = texi2dvi TEXI2POD = perl $(srcdir)/../contrib/texi2pod.pl ! POD2MAN = pod2man --center="GNU" --release="gcc-$(version)" # For GNUmake: let us decide what gets passed to recursive makes. MAKEOVERRIDES = @SET_MAKE@ *************** USER_H = $(srcdir)/ginclude/stdarg.h $(s *** 190,196 **** # The GCC to use for compiling libgcc.a, enquire, and libgcc1-test. # Usually the one we just built. # Don't use this as a dependency--use $(GCC_PASSES) or $(GCC_PARTS). ! GCC_FOR_TARGET = ./xgcc -B./ -B$(build_tooldir)/bin/ -isystem $(build_tooldir)/include # This is used instead of ALL_CFLAGS when compiling with GCC_FOR_TARGET. # It omits XCFLAGS, and specifies -B./. --- 190,196 ---- # The GCC to use for compiling libgcc.a, enquire, and libgcc1-test. # Usually the one we just built. # Don't use this as a dependency--use $(GCC_PASSES) or $(GCC_PARTS). ! GCC_FOR_TARGET = ./xgcc -B./ -B$(build_tooldir)/bin/ -isystem $(build_tooldir)/include -isystem $(build_tooldir)/sys-include # This is used instead of ALL_CFLAGS when compiling with GCC_FOR_TARGET. # It omits XCFLAGS, and specifies -B./. *************** RANLIB_TEST_FOR_TARGET = \ *** 241,248 **** || ( [ "$(host_canonical)" = "$(target)" ] \ && [ -f /usr/bin/ranlib -o -f /bin/ranlib ] ) NM_FOR_TARGET = ` \ ! if [ -f $(objdir)/../binutils/nm ] ; then \ ! echo $(objdir)/../binutils/nm ; \ else \ if [ "$(host_canonical)" = "$(target)" ] ; then \ echo nm; \ --- 241,248 ---- || ( [ "$(host_canonical)" = "$(target)" ] \ && [ -f /usr/bin/ranlib -o -f /bin/ranlib ] ) NM_FOR_TARGET = ` \ ! if [ -f $(objdir)/../binutils/nm-new ] ; then \ ! echo $(objdir)/../binutils/nm-new ; \ else \ if [ "$(host_canonical)" = "$(target)" ] ; then \ echo nm; \ *************** OBSTACK_H = $(srcdir)/../include/obsta *** 260,266 **** SPLAY_TREE_H= $(srcdir)/../include/splay-tree.h # Default cross SYSTEM_HEADER_DIR, to be overridden by targets. ! CROSS_SYSTEM_HEADER_DIR = $(tooldir)/sys-include # Control whether to run fixproto and fixincludes. STMP_FIXPROTO = stmp-fixproto --- 260,266 ---- SPLAY_TREE_H= $(srcdir)/../include/splay-tree.h # Default cross SYSTEM_HEADER_DIR, to be overridden by targets. ! CROSS_SYSTEM_HEADER_DIR = $(build_tooldir)/sys-include # Control whether to run fixproto and fixincludes. STMP_FIXPROTO = stmp-fixproto *************** host_xm_file_list=@host_xm_file_list@ *** 287,292 **** --- 287,293 ---- host_xm_file=@host_xm_file@ host_xm_defines=@host_xm_defines@ xm_file=@xm_file@ + xm_defines=@xm_defines@ lang_specs_files=@lang_specs_files@ lang_options_files=@lang_options_files@ lang_tree_files=@lang_tree_files@ *************** dollar = @dollar@ *** 324,335 **** gcc_tooldir = @gcc_tooldir@ # Used to install the shared libgcc. slibdir = @slibdir@ ! # Since tooldir does not exist at build-time, use -B$(build_tooldir)/bin/ build_tooldir = $(exec_prefix)/$(target_alias) # Directory in which the compiler finds target-independent g++ includes. gcc_gxx_include_dir = @gcc_gxx_include_dir@ # Directory to search for site-specific includes. ! includedir = $(local_prefix)/include # where the info files go infodir = @infodir@ # Where cpp should go besides $prefix/bin if necessary --- 325,337 ---- gcc_tooldir = @gcc_tooldir@ # Used to install the shared libgcc. slibdir = @slibdir@ ! # Since gcc_tooldir does not exist at build-time, use -B$(build_tooldir)/bin/ build_tooldir = $(exec_prefix)/$(target_alias) # Directory in which the compiler finds target-independent g++ includes. gcc_gxx_include_dir = @gcc_gxx_include_dir@ # Directory to search for site-specific includes. ! local_includedir = $(local_prefix)/include ! includedir = $(prefix)/include # where the info files go infodir = @infodir@ # Where cpp should go besides $prefix/bin if necessary *************** cpp_install_dir = @cpp_install_dir@ *** 338,344 **** datadir = $(prefix)/@DATADIRNAME@ localedir = $(datadir)/locale # Extension (if any) to put in installed man-page filename. ! manext = .1 objext = .o exeext = @host_exeext@ build_exeext = @build_exeext@ --- 340,347 ---- datadir = $(prefix)/@DATADIRNAME@ localedir = $(datadir)/locale # Extension (if any) to put in installed man-page filename. ! man1ext = .1 ! man7ext = .7 objext = .o exeext = @host_exeext@ build_exeext = @build_exeext@ *************** build_exeext = @build_exeext@ *** 346,351 **** --- 349,355 ---- # Directory in which to put man pages. mandir = @mandir@ man1dir = $(mandir)/man1 + man7dir = $(mandir)/man7 # Dir for temp files. tmpdir = /tmp *************** ORDINARY_FLAGS_TO_PASS = \ *** 747,753 **** "prefix=$(prefix)" \ "local_prefix=$(local_prefix)" \ "gxx_include_dir=$(gcc_gxx_include_dir)" \ ! "tooldir=$(tooldir)" \ "gcc_tooldir=$(gcc_tooldir)" \ "bindir=$(bindir)" \ "libsubdir=$(libsubdir)" \ --- 751,757 ---- "prefix=$(prefix)" \ "local_prefix=$(local_prefix)" \ "gxx_include_dir=$(gcc_gxx_include_dir)" \ ! "build_tooldir=$(build_tooldir)" \ "gcc_tooldir=$(gcc_tooldir)" \ "bindir=$(bindir)" \ "libsubdir=$(libsubdir)" \ *************** cs-hconfig.h: Makefile *** 913,919 **** $(SHELL) $(srcdir)/mkconfig.sh hconfig.h cs-tconfig.h: Makefile $(CONFIG_H) except.h ! HEADERS="$(xm_file)" DEFINES="" TARGET_CPU_DEFAULT="" \ $(SHELL) $(srcdir)/mkconfig.sh tconfig.h # ??? Need extra help to get this definition copied to where libgcc can # see it. It shouldn't matter which compiler we use to get there. --- 917,924 ---- $(SHELL) $(srcdir)/mkconfig.sh hconfig.h cs-tconfig.h: Makefile $(CONFIG_H) except.h ! HEADERS="$(xm_file)" DEFINES="$(xm_defines)" \ ! TARGET_CPU_DEFAULT="" \ $(SHELL) $(srcdir)/mkconfig.sh tconfig.h # ??? Need extra help to get this definition copied to where libgcc can # see it. It shouldn't matter which compiler we use to get there. *************** gcc.o: gcc.c $(CONFIG_H) system.h intl.h *** 1338,1343 **** --- 1343,1354 ---- -c $(srcdir)/gcc.c) gccspec.o: gccspec.c $(CONFIG_H) system.h $(GCC_H) + (SHLIB_LINK='$(SHLIB_LINK)' \ + SHLIB_MULTILIB='$(SHLIB_MULTILIB)'; \ + $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ + $(DRIVER_DEFINES) \ + -c $(srcdir)/gccspec.c) + cppspec.o: cppspec.c $(CONFIG_H) system.h $(GCC_H) tree-check.h: s-check ; @true *************** PREPROCESSOR_DEFINES = \ *** 1974,1980 **** -DGPLUSPLUS_INCLUDE_DIR=\"$(gcc_gxx_include_dir)\" \ -DGPLUSPLUS_TOOL_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/$(target_alias)\" \ -DGPLUSPLUS_BACKWARD_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/backward\" \ ! -DLOCAL_INCLUDE_DIR=\"$(includedir)\" \ -DCROSS_INCLUDE_DIR=\"$(gcc_tooldir)/sys-include\" \ -DTOOL_INCLUDE_DIR=\"$(gcc_tooldir)/include\" --- 1985,1991 ---- -DGPLUSPLUS_INCLUDE_DIR=\"$(gcc_gxx_include_dir)\" \ -DGPLUSPLUS_TOOL_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/$(target_alias)\" \ -DGPLUSPLUS_BACKWARD_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/backward\" \ ! -DLOCAL_INCLUDE_DIR=\"$(local_includedir)\" \ -DCROSS_INCLUDE_DIR=\"$(gcc_tooldir)/sys-include\" \ -DTOOL_INCLUDE_DIR=\"$(gcc_tooldir)/include\" *************** stmp-fixinc: fixinc.sh gsyslimits.h *** 2177,2191 **** cp $(srcdir)/gsyslimits.h include/syslimits.h; \ fi; \ chmod a+r include/syslimits.h) ! # If $(SYSTEM_HEADER_DIR) is $(tooldir)/sys-include, and # that directory exists, then make sure that $(libsubdir) exists. ! # This is because cpp is compiled to find $(tooldir)/include via # $(libsubdir)/$(unlibsubdir), which will only work if $(libsubdir) # exists. ! # We deliberately use tooldir instead of gcc_tooldir here. gcc_tooldir ! # won't work because libsubdir doesn't exist yet. ! if [ "$(SYSTEM_HEADER_DIR)" = "$(tooldir)/sys-include" ] \ ! && [ -d $(tooldir)/sys-include ]; then \ if [ -d $(libdir) ] ; then true ; else mkdir $(libdir) ; fi; \ if [ -d $(libdir)/gcc-lib ] ; then true ; else mkdir $(libdir)/gcc-lib; fi; \ if [ -d $(libdir)/gcc-lib/$(target_alias) ] ; then true ; else mkdir $(libdir)/gcc-lib/$(target_alias) ; fi; \ --- 2188,2202 ---- cp $(srcdir)/gsyslimits.h include/syslimits.h; \ fi; \ chmod a+r include/syslimits.h) ! # If $(SYSTEM_HEADER_DIR) is $(build_tooldir)/sys-include, and # that directory exists, then make sure that $(libsubdir) exists. ! # This is because cpp is compiled to find $(gcc_tooldir)/include via # $(libsubdir)/$(unlibsubdir), which will only work if $(libsubdir) # exists. ! # ??? Better would be to use -isystem $(build_tooldir)/sys-include, ! # but fixincludes does not take such arguments. ! if [ "$(SYSTEM_HEADER_DIR)" = "$(build_tooldir)/sys-include" ] \ ! && [ -d $(build_tooldir)/sys-include ]; then \ if [ -d $(libdir) ] ; then true ; else mkdir $(libdir) ; fi; \ if [ -d $(libdir)/gcc-lib ] ; then true ; else mkdir $(libdir)/gcc-lib; fi; \ if [ -d $(libdir)/gcc-lib/$(target_alias) ] ; then true ; else mkdir $(libdir)/gcc-lib/$(target_alias) ; fi; \ *************** docdir = $(srcdir)/doc *** 2280,2286 **** doc: $(BUILD_INFO) gccbug info: $(docdir)/cpp.info $(docdir)/gcc.info lang.info $(docdir)/cppinternals.info ! $(docdir)/cpp.info: $(docdir)/cpp.texi cd $(srcdir) && $(MAKEINFO) $(MAKEINFOFLAGS) -I doc -I doc/include -o doc/cpp.info doc/cpp.texi $(docdir)/gcc.info: $(docdir)/gcc.texi $(docdir)/extend.texi \ --- 2291,2297 ---- doc: $(BUILD_INFO) gccbug info: $(docdir)/cpp.info $(docdir)/gcc.info lang.info $(docdir)/cppinternals.info ! $(docdir)/cpp.info: $(docdir)/cpp.texi $(docdir)/include/fdl.texi cd $(srcdir) && $(MAKEINFO) $(MAKEINFOFLAGS) -I doc -I doc/include -o doc/cpp.info doc/cpp.texi $(docdir)/gcc.info: $(docdir)/gcc.texi $(docdir)/extend.texi \ *************** $(docdir)/cppinternals.info: $(docdir)/c *** 2298,2304 **** dvi: gcc.dvi cpp.dvi lang.dvi cppinternals.dvi # This works with GNU Make's default rule. ! cpp.dvi: $(docdir)/cpp.texi $(TEXI2DVI) -I $(docdir) -I $(docdir)/include $(docdir)/cpp.texi gcc.dvi: $(docdir)/gcc.texi $(docdir)/extend.texi $(docdir)/install-old.texi \ --- 2309,2315 ---- dvi: gcc.dvi cpp.dvi lang.dvi cppinternals.dvi # This works with GNU Make's default rule. ! cpp.dvi: $(docdir)/cpp.texi $(docdir)/include/fdl.texi $(TEXI2DVI) -I $(docdir) -I $(docdir)/include $(docdir)/cpp.texi gcc.dvi: $(docdir)/gcc.texi $(docdir)/extend.texi $(docdir)/install-old.texi \ *************** gcc.dvi: $(docdir)/gcc.texi $(docdir)/ex *** 2312,2323 **** cppinternals.dvi: $(docdir)/cppinternals.texi $(TEXI2DVI) -I $(docdir) -I $(docdir)/include $(docdir)/cppinternals.texi ! generated-manpages: $(docdir)/gcov.1 $(docdir)/cpp.1 $(docdir)/gcc.1 $(docdir)/gcov.1: $(docdir)/gcov.texi $(STAMP) $(docdir)/gcov.1 -$(TEXI2POD) < $(docdir)/gcov.texi > gcov.pod ! -($(POD2MAN) gcov.pod > $(docdir)/gcov.1.T$$$$ && \ mv -f $(docdir)/gcov.1.T$$$$ $(docdir)/gcov.1) || \ (rm -f $(docdir)/gcov.1.T$$$$ && exit 1) -rm -f gcov.pod --- 2323,2335 ---- cppinternals.dvi: $(docdir)/cppinternals.texi $(TEXI2DVI) -I $(docdir) -I $(docdir)/include $(docdir)/cppinternals.texi ! generated-manpages: $(docdir)/gcov.1 $(docdir)/cpp.1 $(docdir)/gcc.1 \ ! $(docdir)/gfdl.7 $(docdir)/gpl.7 $(docdir)/fsf-funding.7 $(docdir)/gcov.1: $(docdir)/gcov.texi $(STAMP) $(docdir)/gcov.1 -$(TEXI2POD) < $(docdir)/gcov.texi > gcov.pod ! -($(POD2MAN) --section=1 gcov.pod > $(docdir)/gcov.1.T$$$$ && \ mv -f $(docdir)/gcov.1.T$$$$ $(docdir)/gcov.1) || \ (rm -f $(docdir)/gcov.1.T$$$$ && exit 1) -rm -f gcov.pod *************** $(docdir)/gcov.1: $(docdir)/gcov.texi *** 2325,2331 **** $(docdir)/cpp.1: $(docdir)/cpp.texi $(STAMP) $(docdir)/cpp.1 -$(TEXI2POD) < $(docdir)/cpp.texi > cpp.pod ! -($(POD2MAN) cpp.pod > $(docdir)/cpp.1.T$$$$ && \ mv -f $(docdir)/cpp.1.T$$$$ $(docdir)/cpp.1) || \ (rm -f $(docdir)/cpp.1.T$$$$ && exit 1) -rm -f cpp.pod --- 2337,2343 ---- $(docdir)/cpp.1: $(docdir)/cpp.texi $(STAMP) $(docdir)/cpp.1 -$(TEXI2POD) < $(docdir)/cpp.texi > cpp.pod ! -($(POD2MAN) --section=1 cpp.pod > $(docdir)/cpp.1.T$$$$ && \ mv -f $(docdir)/cpp.1.T$$$$ $(docdir)/cpp.1) || \ (rm -f $(docdir)/cpp.1.T$$$$ && exit 1) -rm -f cpp.pod *************** $(docdir)/cpp.1: $(docdir)/cpp.texi *** 2333,2343 **** $(docdir)/gcc.1: $(docdir)/invoke.texi $(STAMP) $(docdir)/gcc.1 -$(TEXI2POD) < $(docdir)/invoke.texi > gcc.pod ! -($(POD2MAN) gcc.pod > $(docdir)/gcc.1.T$$$$ && \ mv -f $(docdir)/gcc.1.T$$$$ $(docdir)/gcc.1) || \ (rm -f $(docdir)/gcc.1.T$$$$ && exit 1) -rm -f gcc.pod # # Deletion of files made during compilation. # There are four levels of this: --- 2345,2380 ---- $(docdir)/gcc.1: $(docdir)/invoke.texi $(STAMP) $(docdir)/gcc.1 -$(TEXI2POD) < $(docdir)/invoke.texi > gcc.pod ! -($(POD2MAN) --section=1 gcc.pod > $(docdir)/gcc.1.T$$$$ && \ mv -f $(docdir)/gcc.1.T$$$$ $(docdir)/gcc.1) || \ (rm -f $(docdir)/gcc.1.T$$$$ && exit 1) -rm -f gcc.pod + $(docdir)/gfdl.7: $(docdir)/include/fdl.texi + $(STAMP) $(docdir)/gfdl.7 + -$(TEXI2POD) < $(docdir)/include/fdl.texi > gfdl.pod + -($(POD2MAN) --section=7 gfdl.pod > $(docdir)/gfdl.7.T$$$$ && \ + mv -f $(docdir)/gfdl.7.T$$$$ $(docdir)/gfdl.7) || \ + (rm -f $(docdir)/gfdl.7.T$$$$ && exit 1) + -rm -f gfdl.pod + + $(docdir)/gpl.7: $(docdir)/include/gpl.texi + $(STAMP) $(docdir)/gpl.7 + -$(TEXI2POD) < $(docdir)/include/gpl.texi > gpl.pod + -($(POD2MAN) --section=7 gpl.pod > $(docdir)/gpl.7.T$$$$ && \ + mv -f $(docdir)/gpl.7.T$$$$ $(docdir)/gpl.7) || \ + (rm -f $(docdir)/gpl.7.T$$$$ && exit 1) + -rm -f gpl.pod + + $(docdir)/fsf-funding.7: $(docdir)/include/funding.texi + $(STAMP) $(docdir)/fsf-funding.7 + -$(TEXI2POD) < $(docdir)/include/funding.texi > fsf-funding.pod + -($(POD2MAN) --section=7 fsf-funding.pod \ + > $(docdir)/fsf-funding.7.T$$$$ && \ + mv -f $(docdir)/fsf-funding.7.T$$$$ $(docdir)/fsf-funding.7) || \ + (rm -f $(docdir)/fsf-funding.7.T$$$$ && exit 1) + -rm -f fsf-funding.pod + # # Deletion of files made during compilation. # There are four levels of this: *************** maintainer-clean: *** 2469,2474 **** --- 2506,2512 ---- -rm -f $(docdir)/cpp.info* $(docdir)/gcc.info* -rm -f $(docdir)/cppinternals.info* -rm -f $(docdir)/gcov.1 $(docdir)/cpp.1 $(docdir)/gcc.1 + -rm -f $(docdir)/fsf-funding.7 $(docdir)/gfdl.7 $(docdir)/gpl.7 # # Entry points `install' and `uninstall'. # Also use `install-collect2' to install collect2 when the config files don't. *************** installdirs: *** 2556,2561 **** --- 2594,2600 ---- -parent=`echo $(man1dir)|sed -e 's@/[^/]*$$@@'`; \ if [ -d $$parent ] ; then true ; else mkdir $$parent ; chmod a+rx $$parent ; fi -if [ -d $(man1dir) ] ; then true ; else mkdir $(man1dir) ; chmod a+rx $(man1dir) ; fi + -if [ -d $(man7dir) ] ; then true ; else mkdir $(man7dir) ; chmod a+rx $(man7dir) ; fi # Install the compiler executables built during cross compilation. install-common: native installdirs $(EXTRA_PARTS) lang.install-common *************** install-info: doc installdirs lang.insta *** 2651,2657 **** for f in cpp.info gcc.info cppinternals.info; do \ if [ -f $(infodir)/$$f ]; then \ install-info --dir-file=$(infodir)/dir $(infodir)/$$f; \ ! else true; fi \ done; \ else true; fi; \ else true; fi; --- 2690,2696 ---- for f in cpp.info gcc.info cppinternals.info; do \ if [ -f $(infodir)/$$f ]; then \ install-info --dir-file=$(infodir)/dir $(infodir)/$$f; \ ! else true; fi; \ done; \ else true; fi; \ else true; fi; *************** install-info: doc installdirs lang.insta *** 2661,2680 **** # Install the man pages. install-man: installdirs $(GENERATED_MANPAGES) lang.install-man -if [ -f gcc-cross$(exeext) ] ; then \ ! rm -f $(man1dir)/$(GCC_CROSS_NAME)$(manext); \ ! $(INSTALL_DATA) $(docdir)/gcc.1 $(man1dir)/$(GCC_CROSS_NAME)$(manext); \ ! chmod a-x $(man1dir)/$(GCC_CROSS_NAME)$(manext); \ else \ ! rm -f $(man1dir)/$(GCC_INSTALL_NAME)$(manext); \ ! $(INSTALL_DATA) $(docdir)/gcc.1 $(man1dir)/$(GCC_INSTALL_NAME)$(manext); \ ! chmod a-x $(man1dir)/$(GCC_INSTALL_NAME)$(manext); \ fi ! -rm -f $(man1dir)/cpp$(manext) ! -$(INSTALL_DATA) $(docdir)/cpp.1 $(man1dir)/cpp$(manext) ! -chmod a-x $(man1dir)/cpp$(manext) ! -rm -f $(man1dir)/gcov$(manext) ! -$(INSTALL_DATA) $(docdir)/gcov.1 $(man1dir)/gcov$(manext) ! -chmod a-x $(man1dir)/gcov$(manext) # Install the library. install-libgcc: libgcc.mk libgcc.a installdirs --- 2700,2728 ---- # Install the man pages. install-man: installdirs $(GENERATED_MANPAGES) lang.install-man -if [ -f gcc-cross$(exeext) ] ; then \ ! rm -f $(man1dir)/$(GCC_CROSS_NAME)$(man1ext); \ ! $(INSTALL_DATA) $(docdir)/gcc.1 $(man1dir)/$(GCC_CROSS_NAME)$(man1ext); \ ! chmod a-x $(man1dir)/$(GCC_CROSS_NAME)$(man1ext); \ else \ ! rm -f $(man1dir)/$(GCC_INSTALL_NAME)$(man1ext); \ ! $(INSTALL_DATA) $(docdir)/gcc.1 $(man1dir)/$(GCC_INSTALL_NAME)$(man1ext); \ ! chmod a-x $(man1dir)/$(GCC_INSTALL_NAME)$(man1ext); \ fi ! -rm -f $(man1dir)/cpp$(man1ext) ! -$(INSTALL_DATA) $(docdir)/cpp.1 $(man1dir)/cpp$(man1ext) ! -chmod a-x $(man1dir)/cpp$(man1ext) ! -rm -f $(man1dir)/gcov$(man1ext) ! -$(INSTALL_DATA) $(docdir)/gcov.1 $(man1dir)/gcov$(man1ext) ! -chmod a-x $(man1dir)/gcov$(man1ext) ! -rm -f $(man7dir)/fsf-funding$(man7ext) ! -$(INSTALL_DATA) $(docdir)/fsf-funding.7 $(man7dir)/fsf-funding$(man7ext) ! -chmod a-x $(man7dir)/fsf-funding$(man7ext) ! -rm -f $(man7dir)/gfdl$(man7ext) ! -$(INSTALL_DATA) $(docdir)/gfdl.7 $(man7dir)/gfdl$(man7ext) ! -chmod a-x $(man7dir)/gfdl$(man7ext) ! -rm -f $(man7dir)/gpl$(man7ext) ! -$(INSTALL_DATA) $(docdir)/gpl.7 $(man7dir)/gpl$(man7ext) ! -chmod a-x $(man7dir)/gpl$(man7ext) # Install the library. install-libgcc: libgcc.mk libgcc.a installdirs *************** uninstall: intl.uninstall lang.uninstall *** 2787,2797 **** -rm -rf $(bindir)/$(UNPROTOIZE_INSTALL_NAME)$(exeext) -rm -rf $(bindir)/$(UNPROTOIZE_CROSS_NAME)$(exeext) -rm -rf $(bindir)/$(GCOV_INSTALL_NAME)$(exeext) ! -rm -rf $(man1dir)/$(GCC_INSTALL_NAME)$(manext) ! -rm -rf $(man1dir)/$(GCC_CROSS_NAME)$(manext) ! -rm -rf $(man1dir)/cpp$(manext) ! -rm -rf $(man1dir)/protoize$(manext) ! -rm -rf $(man1dir)/unprotoize$(manext) -rm -f $(infodir)/cpp.info* $(infodir)/gcc.info* -rm -f $(infodir)/cppinternals.info* # --- 2835,2845 ---- -rm -rf $(bindir)/$(UNPROTOIZE_INSTALL_NAME)$(exeext) -rm -rf $(bindir)/$(UNPROTOIZE_CROSS_NAME)$(exeext) -rm -rf $(bindir)/$(GCOV_INSTALL_NAME)$(exeext) ! -rm -rf $(man1dir)/$(GCC_INSTALL_NAME)$(man1ext) ! -rm -rf $(man1dir)/$(GCC_CROSS_NAME)$(man1ext) ! -rm -rf $(man1dir)/cpp$(man1ext) ! -rm -rf $(man1dir)/protoize$(man1ext) ! -rm -rf $(man1dir)/unprotoize$(man1ext) -rm -f $(infodir)/cpp.info* $(infodir)/gcc.info* -rm -f $(infodir)/cppinternals.info* # *************** unstage1 unstage2 unstage3 unstage4: *** 3038,3044 **** mv $$stage/$$i/* $$i/. 2>/dev/null; \ else \ mv $$stage/$$i .; \ ! fi \ done \ fi ; \ rm -f $${stage}_build $${stage}_copy ;\ --- 3086,3092 ---- mv $$stage/$$i/* $$i/. 2>/dev/null; \ else \ mv $$stage/$$i .; \ ! fi; \ done \ fi ; \ rm -f $${stage}_build $${stage}_copy ;\ diff -Nrc3pad gcc-3.0.2/gcc/NEWS gcc-3.0.3/gcc/NEWS *** gcc-3.0.2/gcc/NEWS Tue Oct 23 10:56:23 2001 --- gcc-3.0.3/gcc/NEWS Thu Dec 20 11:56:18 2001 *************** on the line of development that led to G *** 8,22 **** http://gcc.gnu.org/gcc-3.0/gcc-3.0.html June 18, 2001: GCC 3.0 has been released. _________________________________________________________________ ! GCC 3.0.1 ! August 20, 2001 The [1]GNU project and the GCC developers are pleased to announce the ! release of GCC 3.0.1, which is a bug-fix release following GCC 3.0 ! released on June 18, 2001. 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 --- 8,26 ---- http://gcc.gnu.org/gcc-3.0/gcc-3.0.html June 18, 2001: GCC 3.0 has been released. + August 20, 2001: GCC 3.0.1 has been released. + October 25, 2001: GCC 3.0.2 has been released. + December 20, 2001: GCC 3.0.3 has been released. _________________________________________________________________ ! GCC 3.0.3 ! December 20, 2001 The [1]GNU project and the GCC developers are pleased to announce the ! release of GCC 3.0.3, which is a bug-fix release following GCC 3.0.2 ! released on October 25, 2001, GCC 3.0.1 released on August 20, 2001, ! and GCC 3.0 released on June 18, 2001. 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 *************** http://gcc.gnu.org/gcc-3.0/gcc-3.0.html *** 47,59 **** 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 ! [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. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-10-18. References --- 51,63 ---- 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 [14]gcc@gnu.org ! or [15]gcc@gcc.gnu.org, send other questions to [16]gnu@gnu.org. Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-12-20. References *************** References *** 70,77 **** 11. mailto:gnu@gnu.org 12. http://www.gnu.org/home.html#ContactInfo 13. http://gcc.gnu.org/about.html ! 14. mailto:gcc@gcc.gnu.org ! 15. mailto:gnu@gnu.org ====================================================================== http://gcc.gnu.org/gcc-3.0/features.html --- 74,82 ---- 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 ====================================================================== http://gcc.gnu.org/gcc-3.0/features.html *************** http://gcc.gnu.org/gcc-3.0/features.html *** 195,213 **** but not in GCC 3.0. + Fixes for various exception-handling bugs. + A port to the S/390 architecture. _________________________________________________________________ Please send FSF & GNU inquiries & questions to [13]gnu@gnu.org. There are also [14]other ways to contact the FSF. These pages are maintained by [15]The GCC team. ! Please send comments on these web pages and GCC to ! [16]gcc@gcc.gnu.org, send other questions to [17]gnu@gnu.org. Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-10-18. References --- 200,235 ---- but not in GCC 3.0. + Fixes for various exception-handling bugs. + A port to the S/390 architecture. + * Additional changes in GCC 3.0.2 + + Fixes for bad code generation during loop unrolling. + + Fixes for bad code generation by the sibling call + optimization. + + Minor improvements to x86 code generation. + + Implemenation of function descriptors in C++ vtables for + IA64. + + Numerous minor bug-fixes. + * Additional changes in GCC 3.0.3 + + A fix to correct an accidental change to the PowerPC ABI. + + Fixes for bad code generation on a variety of architectures. + + Improvements to the debugging information generated for C++ + classes. + + Fixes for bad code generation in C++. + + A fix to avoid crashes in the C++ demangler. + + A fix to the C++ standard library to avoid buffer overflows. + + Miscellaneous improvements for a variety of architectures. _________________________________________________________________ Please send FSF & GNU inquiries & questions to [13]gnu@gnu.org. There are also [14]other ways to contact the FSF. These pages are maintained by [15]The GCC team. ! Please send comments on these web pages and GCC to [16]gcc@gnu.org ! or [17]gcc@gcc.gnu.org, send other questions to [18]gnu@gnu.org. Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-12-20. References *************** References *** 226,233 **** 13. mailto:gnu@gnu.org 14. http://www.gnu.org/home.html#ContactInfo 15. http://gcc.gnu.org/about.html ! 16. mailto:gcc@gcc.gnu.org ! 17. mailto:gnu@gnu.org ====================================================================== http://gcc.gnu.org/gcc-3.0/caveats.html --- 248,256 ---- 13. mailto:gnu@gnu.org 14. http://www.gnu.org/home.html#ContactInfo 15. http://gcc.gnu.org/about.html ! 16. mailto:gcc@gnu.org ! 17. mailto:gcc@gcc.gnu.org ! 18. mailto:gnu@gnu.org ====================================================================== http://gcc.gnu.org/gcc-3.0/caveats.html *************** http://gcc.gnu.org/gcc-3.0/caveats.html *** 266,278 **** 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@gcc.gnu.org, send other questions to [8]gnu@gnu.org. Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-10-18. References --- 289,301 ---- 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. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-12-12. References *************** References *** 282,289 **** 4. mailto:gnu@gnu.org 5. http://www.gnu.org/home.html#ContactInfo 6. http://gcc.gnu.org/about.html ! 7. mailto:gcc@gcc.gnu.org ! 8. mailto:gnu@gnu.org ====================================================================== http://gcc.gnu.org/gcc-2.95/gcc-2.95.3.html --- 305,313 ---- 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 ====================================================================== http://gcc.gnu.org/gcc-2.95/gcc-2.95.3.html *************** http://gcc.gnu.org/gcc-2.95/gcc-2.95.3.h *** 359,371 **** Please send FSF & GNU inquiries & questions to [15]gnu@gnu.org. There are also [16]other ways to contact the FSF. These pages are maintained by [17]The GCC team. ! Please send comments on these web pages and GCC to ! [18]gcc@gcc.gnu.org, send other questions to [19]gnu@gnu.org. Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-10-18. References --- 383,395 ---- Please send FSF & GNU inquiries & questions to [15]gnu@gnu.org. There are also [16]other ways to contact the FSF. These pages are maintained by [17]The GCC team. ! Please send comments on these web pages and GCC to [18]gcc@gnu.org ! or [19]gcc@gcc.gnu.org, send other questions to [20]gnu@gnu.org. Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-12-12. References *************** References *** 386,393 **** 15. mailto:gnu@gnu.org 16. http://www.gnu.org/home.html#ContactInfo 17. http://gcc.gnu.org/about.html ! 18. mailto:gcc@gcc.gnu.org ! 19. mailto:gnu@gnu.org ====================================================================== http://gcc.gnu.org/gcc-2.95/gcc-2.95.2.html --- 410,418 ---- 15. mailto:gnu@gnu.org 16. http://www.gnu.org/home.html#ContactInfo 17. http://gcc.gnu.org/about.html ! 18. mailto:gcc@gnu.org ! 19. mailto:gcc@gcc.gnu.org ! 20. mailto:gnu@gnu.org ====================================================================== http://gcc.gnu.org/gcc-2.95/gcc-2.95.2.html *************** http://gcc.gnu.org/gcc-2.95/gcc-2.95.2.h *** 519,531 **** Please send FSF & GNU inquiries & questions to [14]gnu@gnu.org. There are also [15]other ways to contact the FSF. These pages are maintained by [16]The GCC team. ! Please send comments on these web pages and GCC to ! [17]gcc@gcc.gnu.org, send other questions to [18]gnu@gnu.org. Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-10-18. References --- 544,556 ---- Please send FSF & GNU inquiries & questions to [14]gnu@gnu.org. There are also [15]other ways to contact the FSF. These pages are maintained by [16]The GCC team. ! Please send comments on these web pages and GCC to [17]gcc@gnu.org ! or [18]gcc@gcc.gnu.org, send other questions to [19]gnu@gnu.org. Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-12-12. References *************** References *** 545,552 **** 14. mailto:gnu@gnu.org 15. http://www.gnu.org/home.html#ContactInfo 16. http://gcc.gnu.org/about.html ! 17. mailto:gcc@gcc.gnu.org ! 18. mailto:gnu@gnu.org ====================================================================== http://gcc.gnu.org/gcc-2.95/gcc-2.95.1.html --- 570,578 ---- 14. mailto:gnu@gnu.org 15. http://www.gnu.org/home.html#ContactInfo 16. http://gcc.gnu.org/about.html ! 17. mailto:gcc@gnu.org ! 18. mailto:gcc@gcc.gnu.org ! 19. mailto:gnu@gnu.org ====================================================================== http://gcc.gnu.org/gcc-2.95/gcc-2.95.1.html *************** http://gcc.gnu.org/gcc-2.95/gcc-2.95.1.h *** 652,664 **** Please send FSF & GNU inquiries & questions to [14]gnu@gnu.org. There are also [15]other ways to contact the FSF. These pages are maintained by [16]The GCC team. ! Please send comments on these web pages and GCC to ! [17]gcc@gcc.gnu.org, send other questions to [18]gnu@gnu.org. Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-10-18. References --- 678,690 ---- Please send FSF & GNU inquiries & questions to [14]gnu@gnu.org. There are also [15]other ways to contact the FSF. These pages are maintained by [16]The GCC team. ! Please send comments on these web pages and GCC to [17]gcc@gnu.org ! or [18]gcc@gcc.gnu.org, send other questions to [19]gnu@gnu.org. Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-12-12. References *************** References *** 678,685 **** 14. mailto:gnu@gnu.org 15. http://www.gnu.org/home.html#ContactInfo 16. http://gcc.gnu.org/about.html ! 17. mailto:gcc@gcc.gnu.org ! 18. mailto:gnu@gnu.org ====================================================================== http://gcc.gnu.org/gcc-2.95/gcc-2.95.html --- 704,712 ---- 14. mailto:gnu@gnu.org 15. http://www.gnu.org/home.html#ContactInfo 16. http://gcc.gnu.org/about.html ! 17. mailto:gcc@gnu.org ! 18. mailto:gcc@gcc.gnu.org ! 19. mailto:gnu@gnu.org ====================================================================== http://gcc.gnu.org/gcc-2.95/gcc-2.95.html *************** http://gcc.gnu.org/gcc-2.95/gcc-2.95.htm *** 718,743 **** [7]caveats to using GCC 2.95. Download GCC 2.95 from the [8]GNU FTP server (ftp://ftp.gnu.org) ! Download GCC 2.95 from the [9]GCC/EGCS FTP server ! (ftp://go.cygnus.com) ! [10]Find a GNU mirror site ! [11]Find a GCC/EGCS mirror site ! For additional information about GCC please see the [12]GCC project ! web server or contact the [13]GCC development mailing list. _________________________________________________________________ ! Please send FSF & GNU inquiries & questions to [14]gnu@gnu.org. ! There are also [15]other ways to contact the FSF. ! These pages are maintained by [16]The GCC team. ! Please send comments on these web pages and GCC to ! [17]gcc@gcc.gnu.org, send other questions to [18]gnu@gnu.org. Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-10-18. References --- 745,768 ---- [7]caveats to using GCC 2.95. Download GCC 2.95 from the [8]GNU FTP server (ftp://ftp.gnu.org) ! [9]Find a GNU mirror site ! [10]Find a GCC/EGCS mirror site ! For additional information about GCC please see the [11]GCC project ! web server or contact the [12]GCC development mailing list. _________________________________________________________________ ! Please send FSF & GNU inquiries & questions to [13]gnu@gnu.org. ! There are also [14]other ways to contact the FSF. ! These pages are maintained by [15]The GCC team. ! Please send comments on these web pages and GCC to [16]gcc@gnu.org ! or [17]gcc@gcc.gnu.org, send other questions to [18]gnu@gnu.org. Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-12-12. References *************** References *** 749,762 **** 6. http://gcc.gnu.org/thanks.html 7. http://gcc.gnu.org/gcc-2.95/caveats.html 8. ftp://ftp.gnu.org/pub/gnu/gcc/ ! 9. ftp://go.cygnus.com/pub/sourceware.cygnus.com/pub/egcs/releases/index.html ! 10. http://www.gnu.org/order/ftp.html ! 11. http://gcc.gnu.org/mirrors.html ! 12. http://gcc.gnu.org/index.html ! 13. mailto:gcc@gcc.gnu.org ! 14. mailto:gnu@gnu.org ! 15. http://www.gnu.org/home.html#ContactInfo ! 16. http://gcc.gnu.org/about.html 17. mailto:gcc@gcc.gnu.org 18. mailto:gnu@gnu.org ====================================================================== --- 774,787 ---- 6. http://gcc.gnu.org/thanks.html 7. http://gcc.gnu.org/gcc-2.95/caveats.html 8. ftp://ftp.gnu.org/pub/gnu/gcc/ ! 9. http://www.gnu.org/order/ftp.html ! 10. http://gcc.gnu.org/mirrors.html ! 11. http://gcc.gnu.org/index.html ! 12. mailto:gcc@gcc.gnu.org ! 13. mailto:gnu@gnu.org ! 14. http://www.gnu.org/home.html#ContactInfo ! 15. http://gcc.gnu.org/about.html ! 16. mailto:gcc@gnu.org 17. mailto:gcc@gcc.gnu.org 18. mailto:gnu@gnu.org ====================================================================== *************** http://gcc.gnu.org/gcc-2.95/features.htm *** 832,844 **** Please send FSF & GNU inquiries & questions to [18]gnu@gnu.org. There are also [19]other ways to contact the FSF. These pages are maintained by [20]The GCC team. ! Please send comments on these web pages and GCC to ! [21]gcc@gcc.gnu.org, send other questions to [22]gnu@gnu.org. Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-10-18. References --- 857,869 ---- Please send FSF & GNU inquiries & questions to [18]gnu@gnu.org. There are also [19]other ways to contact the FSF. These pages are maintained by [20]The GCC team. ! Please send comments on these web pages and GCC to [21]gcc@gnu.org ! or [22]gcc@gcc.gnu.org, send other questions to [23]gnu@gnu.org. Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-12-12. References *************** References *** 862,869 **** 18. mailto:gnu@gnu.org 19. http://www.gnu.org/home.html#ContactInfo 20. http://gcc.gnu.org/about.html ! 21. mailto:gcc@gcc.gnu.org ! 22. mailto:gnu@gnu.org ====================================================================== http://gcc.gnu.org/gcc-2.95/caveats.html --- 887,895 ---- 18. mailto:gnu@gnu.org 19. http://www.gnu.org/home.html#ContactInfo 20. http://gcc.gnu.org/about.html ! 21. mailto:gcc@gnu.org ! 22. mailto:gcc@gcc.gnu.org ! 23. mailto:gnu@gnu.org ====================================================================== http://gcc.gnu.org/gcc-2.95/caveats.html *************** http://gcc.gnu.org/gcc-2.95/caveats.html *** 914,926 **** 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@gcc.gnu.org, send other questions to [8]gnu@gnu.org. Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-10-18. References --- 940,952 ---- 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. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-12-12. References *************** References *** 930,937 **** 4. mailto:gnu@gnu.org 5. http://www.gnu.org/home.html#ContactInfo 6. http://gcc.gnu.org/about.html ! 7. mailto:gcc@gcc.gnu.org ! 8. mailto:gnu@gnu.org ====================================================================== http://gcc.gnu.org/egcs-1.1/egcs-1.1.2.html --- 956,964 ---- 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 ====================================================================== http://gcc.gnu.org/egcs-1.1/egcs-1.1.2.html *************** http://gcc.gnu.org/egcs-1.1/egcs-1.1.2.h *** 1068,1080 **** Please send FSF & GNU inquiries & questions to [7]gnu@gnu.org. There are also [8]other ways to contact the FSF. These pages are maintained by [9]The GCC team. ! Please send comments on these web pages and GCC to ! [10]gcc@gcc.gnu.org, send other questions to [11]gnu@gnu.org. Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-10-18. References --- 1095,1107 ---- Please send FSF & GNU inquiries & questions to [7]gnu@gnu.org. There are also [8]other ways to contact the FSF. These pages are maintained by [9]The GCC team. ! Please send comments on these web pages and GCC to [10]gcc@gnu.org ! or [11]gcc@gcc.gnu.org, send other questions to [12]gnu@gnu.org. Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-12-12. References *************** References *** 1087,1094 **** 7. mailto:gnu@gnu.org 8. http://www.gnu.org/home.html#ContactInfo 9. http://gcc.gnu.org/about.html ! 10. mailto:gcc@gcc.gnu.org ! 11. mailto:gnu@gnu.org ====================================================================== http://gcc.gnu.org/egcs-1.1/egcs-1.1.1.html --- 1114,1122 ---- 7. mailto:gnu@gnu.org 8. http://www.gnu.org/home.html#ContactInfo 9. http://gcc.gnu.org/about.html ! 10. mailto:gcc@gnu.org ! 11. mailto:gcc@gcc.gnu.org ! 12. mailto:gnu@gnu.org ====================================================================== http://gcc.gnu.org/egcs-1.1/egcs-1.1.1.html *************** http://gcc.gnu.org/egcs-1.1/egcs-1.1.1.h *** 1196,1208 **** Please send FSF & GNU inquiries & questions to [7]gnu@gnu.org. There are also [8]other ways to contact the FSF. These pages are maintained by [9]The GCC team. ! Please send comments on these web pages and GCC to ! [10]gcc@gcc.gnu.org, send other questions to [11]gnu@gnu.org. Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-10-18. References --- 1224,1236 ---- Please send FSF & GNU inquiries & questions to [7]gnu@gnu.org. There are also [8]other ways to contact the FSF. These pages are maintained by [9]The GCC team. ! Please send comments on these web pages and GCC to [10]gcc@gnu.org ! or [11]gcc@gcc.gnu.org, send other questions to [12]gnu@gnu.org. Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-12-12. References *************** References *** 1215,1222 **** 7. mailto:gnu@gnu.org 8. http://www.gnu.org/home.html#ContactInfo 9. http://gcc.gnu.org/about.html ! 10. mailto:gcc@gcc.gnu.org ! 11. mailto:gnu@gnu.org ====================================================================== http://gcc.gnu.org/egcs-1.1/egcs-1.1.html --- 1243,1251 ---- 7. mailto:gnu@gnu.org 8. http://www.gnu.org/home.html#ContactInfo 9. http://gcc.gnu.org/about.html ! 10. mailto:gcc@gnu.org ! 11. mailto:gcc@gcc.gnu.org ! 12. mailto:gnu@gnu.org ====================================================================== http://gcc.gnu.org/egcs-1.1/egcs-1.1.html *************** http://gcc.gnu.org/egcs-1.1/egcs-1.1.htm *** 1278,1290 **** 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 ! [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. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-10-18. References --- 1307,1319 ---- 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 [14]gcc@gnu.org ! or [15]gcc@gcc.gnu.org, send other questions to [16]gnu@gnu.org. Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-12-12. References *************** References *** 1301,1308 **** 11. mailto:gnu@gnu.org 12. http://www.gnu.org/home.html#ContactInfo 13. http://gcc.gnu.org/about.html ! 14. mailto:gcc@gcc.gnu.org ! 15. mailto:gnu@gnu.org ====================================================================== http://gcc.gnu.org/egcs-1.1/features.html --- 1330,1338 ---- 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 ====================================================================== http://gcc.gnu.org/egcs-1.1/features.html *************** http://gcc.gnu.org/egcs-1.1/features.htm *** 1377,1389 **** Please send FSF & GNU inquiries & questions to [6]gnu@gnu.org. There are also [7]other ways to contact the FSF. These pages are maintained by [8]The GCC team. ! Please send comments on these web pages and GCC to ! [9]gcc@gcc.gnu.org, send other questions to [10]gnu@gnu.org. Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-10-18. References --- 1407,1419 ---- Please send FSF & GNU inquiries & questions to [6]gnu@gnu.org. There are also [7]other ways to contact the FSF. These pages are maintained by [8]The GCC team. ! Please send comments on these web pages and GCC to [9]gcc@gnu.org or ! [10]gcc@gcc.gnu.org, send other questions to [11]gnu@gnu.org. Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-12-12. References *************** References *** 1395,1402 **** 6. mailto:gnu@gnu.org 7. http://www.gnu.org/home.html#ContactInfo 8. http://gcc.gnu.org/about.html ! 9. mailto:gcc@gcc.gnu.org ! 10. mailto:gnu@gnu.org ====================================================================== http://gcc.gnu.org/egcs-1.1/caveats.html --- 1425,1433 ---- 6. mailto:gnu@gnu.org 7. http://www.gnu.org/home.html#ContactInfo 8. http://gcc.gnu.org/about.html ! 9. mailto:gcc@gnu.org ! 10. mailto:gcc@gcc.gnu.org ! 11. mailto:gnu@gnu.org ====================================================================== http://gcc.gnu.org/egcs-1.1/caveats.html *************** http://gcc.gnu.org/egcs-1.1/caveats.html *** 1430,1442 **** Please send FSF & GNU inquiries & questions to [2]gnu@gnu.org. There are also [3]other ways to contact the FSF. These pages are maintained by [4]The GCC team. ! Please send comments on these web pages and GCC to ! [5]gcc@gcc.gnu.org, send other questions to [6]gnu@gnu.org. Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-10-18. References --- 1461,1473 ---- Please send FSF & GNU inquiries & questions to [2]gnu@gnu.org. There are also [3]other ways to contact the FSF. These pages are maintained by [4]The GCC team. ! Please send comments on these web pages and GCC to [5]gcc@gnu.org or ! [6]gcc@gcc.gnu.org, send other questions to [7]gnu@gnu.org. Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-12-12. References *************** References *** 1444,1451 **** 2. mailto:gnu@gnu.org 3. http://www.gnu.org/home.html#ContactInfo 4. http://gcc.gnu.org/about.html ! 5. mailto:gcc@gcc.gnu.org ! 6. mailto:gnu@gnu.org ====================================================================== http://gcc.gnu.org/egcs-1.0/egcs-1.0.3.html --- 1475,1483 ---- 2. mailto:gnu@gnu.org 3. http://www.gnu.org/home.html#ContactInfo 4. http://gcc.gnu.org/about.html ! 5. mailto:gcc@gnu.org ! 6. mailto:gcc@gcc.gnu.org ! 7. mailto:gnu@gnu.org ====================================================================== http://gcc.gnu.org/egcs-1.0/egcs-1.0.3.html *************** http://gcc.gnu.org/egcs-1.0/egcs-1.0.3.h *** 1527,1539 **** Please send FSF & GNU inquiries & questions to [7]gnu@gnu.org. There are also [8]other ways to contact the FSF. These pages are maintained by [9]The GCC team. ! Please send comments on these web pages and GCC to ! [10]gcc@gcc.gnu.org, send other questions to [11]gnu@gnu.org. Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-10-18. References --- 1559,1571 ---- Please send FSF & GNU inquiries & questions to [7]gnu@gnu.org. There are also [8]other ways to contact the FSF. These pages are maintained by [9]The GCC team. ! Please send comments on these web pages and GCC to [10]gcc@gnu.org ! or [11]gcc@gcc.gnu.org, send other questions to [12]gnu@gnu.org. Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-12-12. References *************** References *** 1546,1553 **** 7. mailto:gnu@gnu.org 8. http://www.gnu.org/home.html#ContactInfo 9. http://gcc.gnu.org/about.html ! 10. mailto:gcc@gcc.gnu.org ! 11. mailto:gnu@gnu.org ====================================================================== http://gcc.gnu.org/egcs-1.0/egcs-1.0.2.html --- 1578,1586 ---- 7. mailto:gnu@gnu.org 8. http://www.gnu.org/home.html#ContactInfo 9. http://gcc.gnu.org/about.html ! 10. mailto:gcc@gnu.org ! 11. mailto:gcc@gcc.gnu.org ! 12. mailto:gnu@gnu.org ====================================================================== http://gcc.gnu.org/egcs-1.0/egcs-1.0.2.html *************** http://gcc.gnu.org/egcs-1.0/egcs-1.0.2.h *** 1660,1672 **** Please send FSF & GNU inquiries & questions to [7]gnu@gnu.org. There are also [8]other ways to contact the FSF. These pages are maintained by [9]The GCC team. ! Please send comments on these web pages and GCC to ! [10]gcc@gcc.gnu.org, send other questions to [11]gnu@gnu.org. Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-10-18. References --- 1693,1705 ---- Please send FSF & GNU inquiries & questions to [7]gnu@gnu.org. There are also [8]other ways to contact the FSF. These pages are maintained by [9]The GCC team. ! Please send comments on these web pages and GCC to [10]gcc@gnu.org ! or [11]gcc@gcc.gnu.org, send other questions to [12]gnu@gnu.org. Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-12-12. References *************** References *** 1679,1686 **** 7. mailto:gnu@gnu.org 8. http://www.gnu.org/home.html#ContactInfo 9. http://gcc.gnu.org/about.html ! 10. mailto:gcc@gcc.gnu.org ! 11. mailto:gnu@gnu.org ====================================================================== http://gcc.gnu.org/egcs-1.0/egcs-1.0.1.html --- 1712,1720 ---- 7. mailto:gnu@gnu.org 8. http://www.gnu.org/home.html#ContactInfo 9. http://gcc.gnu.org/about.html ! 10. mailto:gcc@gnu.org ! 11. mailto:gcc@gcc.gnu.org ! 12. mailto:gnu@gnu.org ====================================================================== http://gcc.gnu.org/egcs-1.0/egcs-1.0.1.html *************** http://gcc.gnu.org/egcs-1.0/egcs-1.0.1.h *** 1702,1708 **** Many programs failed to link when compiled with EGCS 1.0 on Red Hat 5.0 or on systems with newer versions of glibc2. EGCS 1.0.1 should fix these problems. ! * Compatability with both EGCS 1.0 and GCC 2.8 libgcc exception handling interfaces. To avoid future compatibility problems, we strongly urge anyone who is planning on distributing shared libraries that contain C++ --- 1736,1742 ---- Many programs failed to link when compiled with EGCS 1.0 on Red Hat 5.0 or on systems with newer versions of glibc2. EGCS 1.0.1 should fix these problems. ! * Compatibility with both EGCS 1.0 and GCC 2.8 libgcc exception handling interfaces. To avoid future compatibility problems, we strongly urge anyone who is planning on distributing shared libraries that contain C++ *************** http://gcc.gnu.org/egcs-1.0/egcs-1.0.1.h *** 1793,1805 **** Please send FSF & GNU inquiries & questions to [7]gnu@gnu.org. There are also [8]other ways to contact the FSF. These pages are maintained by [9]The GCC team. ! Please send comments on these web pages and GCC to ! [10]gcc@gcc.gnu.org, send other questions to [11]gnu@gnu.org. Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-10-18. References --- 1827,1839 ---- Please send FSF & GNU inquiries & questions to [7]gnu@gnu.org. There are also [8]other ways to contact the FSF. These pages are maintained by [9]The GCC team. ! Please send comments on these web pages and GCC to [10]gcc@gnu.org ! or [11]gcc@gcc.gnu.org, send other questions to [12]gnu@gnu.org. Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-12-12. References *************** References *** 1812,1819 **** 7. mailto:gnu@gnu.org 8. http://www.gnu.org/home.html#ContactInfo 9. http://gcc.gnu.org/about.html ! 10. mailto:gcc@gcc.gnu.org ! 11. mailto:gnu@gnu.org ====================================================================== http://gcc.gnu.org/egcs-1.0/egcs-1.0.html --- 1846,1854 ---- 7. mailto:gnu@gnu.org 8. http://www.gnu.org/home.html#ContactInfo 9. http://gcc.gnu.org/about.html ! 10. mailto:gcc@gnu.org ! 11. mailto:gcc@gcc.gnu.org ! 12. mailto:gnu@gnu.org ====================================================================== http://gcc.gnu.org/egcs-1.0/egcs-1.0.html *************** http://gcc.gnu.org/egcs-1.0/egcs-1.0.htm *** 1883,1895 **** Please send FSF & GNU inquiries & questions to [7]gnu@gnu.org. There are also [8]other ways to contact the FSF. These pages are maintained by [9]The GCC team. ! Please send comments on these web pages and GCC to ! [10]gcc@gcc.gnu.org, send other questions to [11]gnu@gnu.org. Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-10-18. References --- 1918,1930 ---- Please send FSF & GNU inquiries & questions to [7]gnu@gnu.org. There are also [8]other ways to contact the FSF. These pages are maintained by [9]The GCC team. ! Please send comments on these web pages and GCC to [10]gcc@gnu.org ! or [11]gcc@gcc.gnu.org, send other questions to [12]gnu@gnu.org. Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-12-12. References *************** References *** 1902,1909 **** 7. mailto:gnu@gnu.org 8. http://www.gnu.org/home.html#ContactInfo 9. http://gcc.gnu.org/about.html ! 10. mailto:gcc@gcc.gnu.org ! 11. mailto:gnu@gnu.org ====================================================================== http://gcc.gnu.org/egcs-1.0/features.html --- 1937,1945 ---- 7. mailto:gnu@gnu.org 8. http://www.gnu.org/home.html#ContactInfo 9. http://gcc.gnu.org/about.html ! 10. mailto:gcc@gnu.org ! 11. mailto:gcc@gcc.gnu.org ! 12. mailto:gnu@gnu.org ====================================================================== http://gcc.gnu.org/egcs-1.0/features.html *************** http://gcc.gnu.org/egcs-1.0/features.htm *** 1950,1962 **** Please send FSF & GNU inquiries & questions to [3]gnu@gnu.org. There are also [4]other ways to contact the FSF. These pages are maintained by [5]The GCC team. ! Please send comments on these web pages and GCC to ! [6]gcc@gcc.gnu.org, send other questions to [7]gnu@gnu.org. Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-10-18. References --- 1986,1998 ---- Please send FSF & GNU inquiries & questions to [3]gnu@gnu.org. There are also [4]other ways to contact the FSF. These pages are maintained by [5]The GCC team. ! Please send comments on these web pages and GCC to [6]gcc@gnu.org or ! [7]gcc@gcc.gnu.org, send other questions to [8]gnu@gnu.org. Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-12-12. References *************** References *** 1965,1972 **** 3. mailto:gnu@gnu.org 4. http://www.gnu.org/home.html#ContactInfo 5. http://gcc.gnu.org/about.html ! 6. mailto:gcc@gcc.gnu.org ! 7. mailto:gnu@gnu.org ====================================================================== http://gcc.gnu.org/egcs-1.0/caveats.html --- 2001,2009 ---- 3. mailto:gnu@gnu.org 4. http://www.gnu.org/home.html#ContactInfo 5. http://gcc.gnu.org/about.html ! 6. mailto:gcc@gnu.org ! 7. mailto:gcc@gcc.gnu.org ! 8. mailto:gnu@gnu.org ====================================================================== http://gcc.gnu.org/egcs-1.0/caveats.html *************** http://gcc.gnu.org/egcs-1.0/caveats.html *** 2002,2014 **** Please send FSF & GNU inquiries & questions to [2]gnu@gnu.org. There are also [3]other ways to contact the FSF. These pages are maintained by [4]The GCC team. ! Please send comments on these web pages and GCC to ! [5]gcc@gcc.gnu.org, send other questions to [6]gnu@gnu.org. Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-10-18. References --- 2039,2051 ---- Please send FSF & GNU inquiries & questions to [2]gnu@gnu.org. There are also [3]other ways to contact the FSF. These pages are maintained by [4]The GCC team. ! Please send comments on these web pages and GCC to [5]gcc@gnu.org or ! [6]gcc@gcc.gnu.org, send other questions to [7]gnu@gnu.org. Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-12-12. References *************** References *** 2016,2021 **** 2. mailto:gnu@gnu.org 3. http://www.gnu.org/home.html#ContactInfo 4. http://gcc.gnu.org/about.html ! 5. mailto:gcc@gcc.gnu.org ! 6. mailto:gnu@gnu.org ====================================================================== --- 2053,2059 ---- 2. mailto:gnu@gnu.org 3. http://www.gnu.org/home.html#ContactInfo 4. http://gcc.gnu.org/about.html ! 5. mailto:gcc@gnu.org ! 6. mailto:gcc@gcc.gnu.org ! 7. mailto:gnu@gnu.org ====================================================================== diff -Nrc3pad gcc-3.0.2/gcc/acconfig.h gcc-3.0.3/gcc/acconfig.h *** gcc-3.0.2/gcc/acconfig.h Thu Jan 25 13:56:21 2001 --- gcc-3.0.3/gcc/acconfig.h Wed Nov 7 10:42:04 2001 *************** *** 26,31 **** --- 26,34 ---- /* Define to `int' if doesn't define. */ #undef ssize_t + /* Define if cpp should also search $prefix/include. */ + #undef PREFIX_INCLUDE_DIR + @BOTTOM@ /* Bison unconditionally undefines `const' if neither `__STDC__' nor diff -Nrc3pad gcc-3.0.2/gcc/alias.c gcc-3.0.3/gcc/alias.c *** gcc-3.0.2/gcc/alias.c Tue Sep 11 14:39:24 2001 --- gcc-3.0.3/gcc/alias.c Sun Nov 18 00:16:38 2001 *************** rtx_equal_for_memref_p (x, y) *** 1041,1046 **** --- 1041,1049 ---- /* Some RTL can be compared without a recursive examination. */ switch (code) { + case VALUE: + return CSELIB_VAL_PTR (x) == CSELIB_VAL_PTR (y); + case REG: return REGNO (x) == REGNO (y); *************** rtx_equal_for_memref_p (x, y) *** 1109,1114 **** --- 1112,1123 ---- if (rtx_equal_for_memref_p (XEXP (x, i), XEXP (y, i)) == 0) return 0; break; + + /* This can happen for asm operands. */ + case 's': + if (strcmp (XSTR (x, i), XSTR (y, i))) + return 0; + break; /* This can happen for an asm which clobbers memory. */ case '0': diff -Nrc3pad gcc-3.0.2/gcc/c-common.c gcc-3.0.3/gcc/c-common.c *** gcc-3.0.2/gcc/c-common.c Fri Jun 22 12:23:23 2001 --- gcc-3.0.3/gcc/c-common.c Tue Dec 11 14:16:06 2001 *************** combine_strings (strings) *** 401,407 **** wide_flag = 1; } else ! length += (TREE_STRING_LENGTH (t) - 1); } /* If anything is wide, the non-wides will be converted, --- 401,411 ---- wide_flag = 1; } else ! { ! length += (TREE_STRING_LENGTH (t) - 1); ! if (C_ARTIFICIAL_STRING_P (t) && !in_system_header) ! warning ("concatenation of string literals with __FUNCTION__ is deprecated. This feature will be removed in future"); ! } } /* If anything is wide, the non-wides will be converted, *************** c_promoting_integer_type_p (t) *** 3554,3560 **** || TYPE_MAIN_VARIANT (t) == signed_char_type_node || TYPE_MAIN_VARIANT (t) == unsigned_char_type_node || TYPE_MAIN_VARIANT (t) == short_integer_type_node ! || TYPE_MAIN_VARIANT (t) == short_unsigned_type_node); case ENUMERAL_TYPE: /* ??? Technically all enumerations not larger than an int --- 3558,3565 ---- || TYPE_MAIN_VARIANT (t) == signed_char_type_node || TYPE_MAIN_VARIANT (t) == unsigned_char_type_node || TYPE_MAIN_VARIANT (t) == short_integer_type_node ! || TYPE_MAIN_VARIANT (t) == short_unsigned_type_node ! || TYPE_PRECISION (t) < TYPE_PRECISION (integer_type_node)); case ENUMERAL_TYPE: /* ??? Technically all enumerations not larger than an int diff -Nrc3pad gcc-3.0.2/gcc/c-common.h gcc-3.0.3/gcc/c-common.h *** gcc-3.0.2/gcc/c-common.h Tue Jun 5 00:46:57 2001 --- gcc-3.0.3/gcc/c-common.h Tue Dec 11 14:16:07 2001 *************** extern tree c_global_trees[CTI_MAX]; *** 215,220 **** --- 215,224 ---- These may be shadowed, and may be referenced from nested functions. */ #define C_DECLARED_LABEL_FLAG(label) TREE_LANG_FLAG_1 (label) + /* Flag strings given by __FUNCTION__ and __PRETTY_FUNCTION__ for a + warning if they undergo concatenation. */ + #define C_ARTIFICIAL_STRING_P(NODE) TREE_LANG_FLAG_0 (NODE) + typedef enum c_language_kind { clk_c, /* A dialect of C: K&R C, ANSI/ISO C89, C2000, diff -Nrc3pad gcc-3.0.2/gcc/c-parse.c gcc-3.0.3/gcc/c-parse.c *** gcc-3.0.2/gcc/c-parse.c Tue Oct 23 10:57:23 2001 --- gcc-3.0.3/gcc/c-parse.c Thu Dec 20 11:57:03 2001 *************** yylexname () *** 4299,4310 **** && DECL_INITIAL (decl) != 0 && TREE_CODE (DECL_INITIAL (decl)) == STRING_CST) { ! tree stringval = DECL_INITIAL (decl); /* Copy the string value so that we won't clobber anything if we put something in the TREE_CHAIN of this one. */ ! yylval.ttype = build_string (TREE_STRING_LENGTH (stringval), ! TREE_STRING_POINTER (stringval)); return STRING; } } --- 4299,4313 ---- && DECL_INITIAL (decl) != 0 && TREE_CODE (DECL_INITIAL (decl)) == STRING_CST) { ! tree stringval = DECL_INITIAL (decl), str; /* Copy the string value so that we won't clobber anything if we put something in the TREE_CHAIN of this one. */ ! str = build_string (TREE_STRING_LENGTH (stringval), ! TREE_STRING_POINTER (stringval)); ! if (yylval.ttype != func_id_node) ! C_ARTIFICIAL_STRING_P (str) = 1; ! yylval.ttype = str; return STRING; } } diff -Nrc3pad gcc-3.0.2/gcc/c-parse.in gcc-3.0.3/gcc/c-parse.in *** gcc-3.0.2/gcc/c-parse.in Tue Mar 6 17:19:55 2001 --- gcc-3.0.3/gcc/c-parse.in Tue Dec 11 14:17:13 2001 *************** yylexname () *** 3245,3256 **** && DECL_INITIAL (decl) != 0 && TREE_CODE (DECL_INITIAL (decl)) == STRING_CST) { ! tree stringval = DECL_INITIAL (decl); /* Copy the string value so that we won't clobber anything if we put something in the TREE_CHAIN of this one. */ ! yylval.ttype = build_string (TREE_STRING_LENGTH (stringval), ! TREE_STRING_POINTER (stringval)); return STRING; } } --- 3245,3259 ---- && DECL_INITIAL (decl) != 0 && TREE_CODE (DECL_INITIAL (decl)) == STRING_CST) { ! tree stringval = DECL_INITIAL (decl), str; /* Copy the string value so that we won't clobber anything if we put something in the TREE_CHAIN of this one. */ ! str = build_string (TREE_STRING_LENGTH (stringval), ! TREE_STRING_POINTER (stringval)); ! if (yylval.ttype != func_id_node) ! C_ARTIFICIAL_STRING_P (str) = 1; ! yylval.ttype = str; return STRING; } } diff -Nrc3pad gcc-3.0.2/gcc/c-parse.y gcc-3.0.3/gcc/c-parse.y *** gcc-3.0.2/gcc/c-parse.y Tue Oct 23 10:57:23 2001 --- gcc-3.0.3/gcc/c-parse.y Thu Dec 20 11:57:03 2001 *************** yylexname () *** 2424,2435 **** && DECL_INITIAL (decl) != 0 && TREE_CODE (DECL_INITIAL (decl)) == STRING_CST) { ! tree stringval = DECL_INITIAL (decl); /* Copy the string value so that we won't clobber anything if we put something in the TREE_CHAIN of this one. */ ! yylval.ttype = build_string (TREE_STRING_LENGTH (stringval), ! TREE_STRING_POINTER (stringval)); return STRING; } } --- 2424,2438 ---- && DECL_INITIAL (decl) != 0 && TREE_CODE (DECL_INITIAL (decl)) == STRING_CST) { ! tree stringval = DECL_INITIAL (decl), str; /* Copy the string value so that we won't clobber anything if we put something in the TREE_CHAIN of this one. */ ! str = build_string (TREE_STRING_LENGTH (stringval), ! TREE_STRING_POINTER (stringval)); ! if (yylval.ttype != func_id_node) ! C_ARTIFICIAL_STRING_P (str) = 1; ! yylval.ttype = str; return STRING; } } diff -Nrc3pad gcc-3.0.2/gcc/c-pragma.c gcc-3.0.3/gcc/c-pragma.c *** gcc-3.0.2/gcc/c-pragma.c Sat Jan 27 17:50:04 2001 --- gcc-3.0.3/gcc/c-pragma.c Mon Nov 12 19:44:36 2001 *************** *** 2,23 **** Copyright (C) 1992, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. ! This file is part of GNU CC. ! GNU CC is free software; you can redistribute it and/or modify ! it under the terms of the GNU General Public License as published by ! the Free Software Foundation; either version 2, or (at your option) ! any later version. ! GNU CC is distributed in the hope that it will be useful, ! but WITHOUT ANY WARRANTY; without even the implied warranty of ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! GNU General Public License for more details. You should have received a copy of the GNU General Public License ! along with GNU CC; see the file COPYING. If not, write to ! the Free Software Foundation, 59 Temple Place - Suite 330, ! Boston, MA 02111-1307, USA. */ #include "config.h" #include "system.h" --- 2,23 ---- Copyright (C) 1992, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. ! This file is part of GCC. ! GCC is free software; you can redistribute it and/or modify it under ! the terms of the GNU General Public License as published by the Free ! Software Foundation; either version 2, or (at your option) any later ! version. ! GCC is distributed in the hope that it will be useful, but WITHOUT ANY ! WARRANTY; without even the implied warranty of MERCHANTABILITY or ! FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ! for more details. You should have received a copy of the GNU General Public License ! along with GCC; see the file COPYING. If not, write to the Free ! Software Foundation, 59 Temple Place - Suite 330, Boston, MA ! 02111-1307, USA. */ #include "config.h" #include "system.h" *************** Boston, MA 02111-1307, USA. */ *** 30,39 **** #include "toplev.h" #include "ggc.h" #include "c-lex.h" #include "tm_p.h" ! #define BAD(msgid) do { warning (msgid); return; } while (0) ! #define BAD2(msgid, arg) do { warning (msgid, arg); return; } while (0) #ifdef HANDLE_PRAGMA_PACK static void handle_pragma_pack PARAMS ((cpp_reader *)); --- 30,40 ---- #include "toplev.h" #include "ggc.h" #include "c-lex.h" + #include "output.h" #include "tm_p.h" ! #define GCC_BAD(msgid) do { warning (msgid); return; } while (0) ! #define GCC_BAD2(msgid, arg) do { warning (msgid, arg); return; } while (0) #ifdef HANDLE_PRAGMA_PACK static void handle_pragma_pack PARAMS ((cpp_reader *)); *************** static struct align_stack * alignment_st *** 53,59 **** #pragma pack(push,) is encountered, this stores the value of maximum_field_alignment in effect. When the final pop_alignment() happens, we restore the value to this, not to a value of 0 for ! maximum_field_alignment. Value is in bits. */ static int default_alignment; #define SET_GLOBAL_ALIGNMENT(ALIGN) \ (default_alignment = maximum_field_alignment = (ALIGN)) --- 54,60 ---- #pragma pack(push,) is encountered, this stores the value of maximum_field_alignment in effect. When the final pop_alignment() happens, we restore the value to this, not to a value of 0 for ! maximum_field_alignment. Value is in bits. */ static int default_alignment; #define SET_GLOBAL_ALIGNMENT(ALIGN) \ (default_alignment = maximum_field_alignment = (ALIGN)) *************** push_alignment (alignment, id) *** 84,90 **** /* The current value of maximum_field_alignment is not necessarily 0 since there may be a #pragma pack() in effect; remember it ! so that we can restore it after the final #pragma pop(). */ if (alignment_stack == NULL) default_alignment = maximum_field_alignment; --- 85,91 ---- /* The current value of maximum_field_alignment is not necessarily 0 since there may be a #pragma pack() in effect; remember it ! so that we can restore it after the final #pragma pop(). */ if (alignment_stack == NULL) default_alignment = maximum_field_alignment; *************** mark_align_stack (p) *** 158,166 **** #else /* not HANDLE_PRAGMA_PACK_PUSH_POP */ #define SET_GLOBAL_ALIGNMENT(ALIGN) (maximum_field_alignment = (ALIGN)) #define push_alignment(ID, N) \ ! BAD("#pragma pack(push[, id], ) is not supported on this target") #define pop_alignment(ID) \ ! BAD("#pragma pack(pop[, id], ) is not supported on this target") #endif /* HANDLE_PRAGMA_PACK_PUSH_POP */ /* #pragma pack () --- 159,167 ---- #else /* not HANDLE_PRAGMA_PACK_PUSH_POP */ #define SET_GLOBAL_ALIGNMENT(ALIGN) (maximum_field_alignment = (ALIGN)) #define push_alignment(ID, N) \ ! GCC_BAD("#pragma pack(push[, id], ) is not supported on this target") #define pop_alignment(ID) \ ! GCC_BAD("#pragma pack(pop[, id], ) is not supported on this target") #endif /* HANDLE_PRAGMA_PACK_PUSH_POP */ /* #pragma pack () *************** handle_pragma_pack (dummy) *** 180,186 **** enum { set, push, pop } action; if (c_lex (&x) != CPP_OPEN_PAREN) ! BAD ("missing '(' after '#pragma pack' - ignored"); token = c_lex (&x); if (token == CPP_CLOSE_PAREN) --- 181,187 ---- enum { set, push, pop } action; if (c_lex (&x) != CPP_OPEN_PAREN) ! GCC_BAD ("missing '(' after '#pragma pack' - ignored"); token = c_lex (&x); if (token == CPP_CLOSE_PAREN) *************** handle_pragma_pack (dummy) *** 193,206 **** align = TREE_INT_CST_LOW (x); action = set; if (c_lex (&x) != CPP_CLOSE_PAREN) ! BAD ("malformed '#pragma pack' - ignored"); } else if (token == CPP_NAME) { ! #define BAD_ACTION do { if (action == push) \ ! BAD ("malformed '#pragma pack(push[, id], )' - ignored"); \ else \ ! BAD ("malformed '#pragma pack(pop[, id])' - ignored"); \ } while (0) const char *op = IDENTIFIER_POINTER (x); --- 194,207 ---- align = TREE_INT_CST_LOW (x); action = set; if (c_lex (&x) != CPP_CLOSE_PAREN) ! GCC_BAD ("malformed '#pragma pack' - ignored"); } else if (token == CPP_NAME) { ! #define GCC_BAD_ACTION do { if (action == push) \ ! GCC_BAD ("malformed '#pragma pack(push[, id], )' - ignored"); \ else \ ! GCC_BAD ("malformed '#pragma pack(pop[, id])' - ignored"); \ } while (0) const char *op = IDENTIFIER_POINTER (x); *************** handle_pragma_pack (dummy) *** 209,219 **** else if (!strcmp (op, "pop")) action = pop; else ! BAD2 ("unknown action '%s' for '#pragma pack' - ignored", op); token = c_lex (&x); if (token != CPP_COMMA && action == push) ! BAD_ACTION; if (token == CPP_COMMA) { --- 210,220 ---- else if (!strcmp (op, "pop")) action = pop; else ! GCC_BAD2 ("unknown action '%s' for '#pragma pack' - ignored", op); token = c_lex (&x); if (token != CPP_COMMA && action == push) ! GCC_BAD_ACTION; if (token == CPP_COMMA) { *************** handle_pragma_pack (dummy) *** 222,228 **** { id = x; if (action == push && c_lex (&x) != CPP_COMMA) ! BAD_ACTION; token = c_lex (&x); } --- 223,229 ---- { id = x; if (action == push && c_lex (&x) != CPP_COMMA) ! GCC_BAD_ACTION; token = c_lex (&x); } *************** handle_pragma_pack (dummy) *** 234,249 **** token = c_lex (&x); } else ! BAD_ACTION; } } if (token != CPP_CLOSE_PAREN) ! BAD_ACTION; ! #undef BAD_ACTION } else ! BAD ("malformed '#pragma pack' - ignored"); if (c_lex (&x) != CPP_EOF) warning ("junk at end of '#pragma pack'"); --- 235,250 ---- token = c_lex (&x); } else ! GCC_BAD_ACTION; } } if (token != CPP_CLOSE_PAREN) ! GCC_BAD_ACTION; ! #undef GCC_BAD_ACTION } else ! GCC_BAD ("malformed '#pragma pack' - ignored"); if (c_lex (&x) != CPP_EOF) warning ("junk at end of '#pragma pack'"); *************** handle_pragma_pack (dummy) *** 260,266 **** align *= BITS_PER_UNIT; break; default: ! BAD2 ("alignment must be a small power of two, not %d", align); } switch (action) --- 261,267 ---- align *= BITS_PER_UNIT; break; default: ! GCC_BAD2 ("alignment must be a small power of two, not %d", align); } switch (action) *************** handle_pragma_weak (dummy) *** 286,297 **** value = 0; if (c_lex (&name) != CPP_NAME) ! BAD ("malformed #pragma weak, ignored"); t = c_lex (&x); if (t == CPP_EQ) { if (c_lex (&value) != CPP_NAME) ! BAD ("malformed #pragma weak, ignored"); t = c_lex (&x); } if (t != CPP_EOF) --- 287,298 ---- value = 0; if (c_lex (&name) != CPP_NAME) ! GCC_BAD ("malformed #pragma weak, ignored"); t = c_lex (&x); if (t == CPP_EQ) { if (c_lex (&value) != CPP_NAME) ! GCC_BAD ("malformed #pragma weak, ignored"); t = c_lex (&x); } if (t != CPP_EOF) diff -Nrc3pad gcc-3.0.2/gcc/combine.c gcc-3.0.3/gcc/combine.c *** gcc-3.0.2/gcc/combine.c Fri Jul 13 09:39:35 2001 --- gcc-3.0.3/gcc/combine.c Mon Nov 5 11:10:32 2001 *************** make_compound_operation (x, in_code) *** 6559,6566 **** case LSHIFTRT: /* If the sign bit is known to be zero, replace this with an arithmetic shift. */ ! if (ashr_optab->handlers[(int) mode].insn_code == CODE_FOR_nothing ! && lshr_optab->handlers[(int) mode].insn_code != CODE_FOR_nothing && mode_width <= HOST_BITS_PER_WIDE_INT && (nonzero_bits (XEXP (x, 0), mode) & (1 << (mode_width - 1))) == 0) { --- 6559,6566 ---- case LSHIFTRT: /* If the sign bit is known to be zero, replace this with an arithmetic shift. */ ! if (ashr_optab->handlers[(int) mode].insn_code != CODE_FOR_nothing ! && lshr_optab->handlers[(int) mode].insn_code == CODE_FOR_nothing && mode_width <= HOST_BITS_PER_WIDE_INT && (nonzero_bits (XEXP (x, 0), mode) & (1 << (mode_width - 1))) == 0) { *************** simplify_comparison (code, pop0, pop1) *** 11140,11146 **** /* If OP0 is an AND and we don't have an AND in MODE either, make a new AND in the proper mode. */ if (GET_CODE (op0) == AND ! && (add_optab->handlers[(int) mode].insn_code == CODE_FOR_nothing)) op0 = gen_binary (AND, tmode, gen_lowpart_for_combine (tmode, --- 11140,11146 ---- /* If OP0 is an AND and we don't have an AND in MODE either, make a new AND in the proper mode. */ if (GET_CODE (op0) == AND ! && (and_optab->handlers[(int) mode].insn_code == CODE_FOR_nothing)) op0 = gen_binary (AND, tmode, gen_lowpart_for_combine (tmode, diff -Nrc3pad gcc-3.0.2/gcc/config/arm/arm.h gcc-3.0.3/gcc/config/arm/arm.h *** gcc-3.0.2/gcc/config/arm/arm.h Thu May 24 14:03:58 2001 --- gcc-3.0.3/gcc/config/arm/arm.h Fri Dec 7 01:49:23 2001 *************** extern const char * structure_size_strin *** 896,903 **** --- 896,914 ---- /* Return the regiser number of the N'th (integer) argument. */ #define ARG_REGISTER(N) (N - 1) + #if 0 /* FIXME: The ARM backend has special code to handle structure + returns, and will reserve its own hidden first argument. So + if this macro is enabled a *second* hidden argument will be + reserved, which will break binary compatability with old + toolchains and also thunk handling. One day this should be + fixed. */ /* RTX for structure returns. NULL means use a hidden first argument. */ #define STRUCT_VALUE 0 + #else + /* Register in which address to store a structure value + is passed to a function. */ + #define STRUCT_VALUE_REGNUM ARG_REGISTER (1) + #endif /* Specify the registers used for certain standard purposes. The values of these macros are register numbers. */ diff -Nrc3pad gcc-3.0.2/gcc/config/elfos.h gcc-3.0.3/gcc/config/elfos.h *** gcc-3.0.2/gcc/config/elfos.h Mon Apr 16 11:25:40 2001 --- gcc-3.0.3/gcc/config/elfos.h Fri Dec 7 13:10:58 2001 *************** along with GNU CC; see the file COPYING. *** 21,26 **** --- 21,30 ---- the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + + /* Define a symbol indicating that we are using elfos.h. */ + #define USING_ELFOS_H + /* The prefix to add to user-visible assembler symbols. For ELF systems the convention is *not* to prepend a leading diff -Nrc3pad gcc-3.0.2/gcc/config/fp-bit.h gcc-3.0.3/gcc/config/fp-bit.h *** gcc-3.0.2/gcc/config/fp-bit.h Fri Feb 2 03:02:05 2001 --- gcc-3.0.3/gcc/config/fp-bit.h Thu Nov 8 10:56:00 2001 *************** typedef unsigned int UDItype __attribute *** 163,168 **** --- 163,169 ---- # define multiply fpmul # define divide fpdiv # define compare fpcmp + # define usi_to_float __floatunsisf # define si_to_float sitofp # define float_to_si fptosi # define float_to_usi fptoui *************** typedef unsigned int UDItype __attribute *** 175,180 **** --- 176,182 ---- # define multiply dpmul # define divide dpdiv # define compare dpcmp + # define usi_to_float __floatunsidf # define si_to_float litodp # define float_to_si dptoli # define float_to_usi dptoul diff -Nrc3pad gcc-3.0.2/gcc/config/freebsd.h gcc-3.0.3/gcc/config/freebsd.h *** gcc-3.0.2/gcc/config/freebsd.h Wed May 30 16:05:30 2001 --- gcc-3.0.3/gcc/config/freebsd.h Sat Nov 3 12:28:24 2001 *************** Boston, MA 02111-1307, USA. */ *** 27,32 **** --- 27,35 ---- Loren J. Rittle . */ + /* To help with rs6000/sysv4.h carnal knowledge problem. */ + #define _USING_CONFIG_FREEBSD 1 + /* This defines which switch letters take arguments. On FreeBSD, most of the normal cases (defined in gcc.c) apply, and we also have -h* and -z* options (for the linker) (coming from SVR4). *************** Boston, MA 02111-1307, USA. */ *** 38,78 **** || (CHAR) == 'z' /* ignored by ld */ \ || (CHAR) == 'R') ! #undef SWITCH_TAKES_ARG #define SWITCH_TAKES_ARG(CHAR) (FBSD_SWITCH_TAKES_ARG(CHAR)) #define FBSD_WORD_SWITCH_TAKES_ARG(STR) \ (DEFAULT_WORD_SWITCH_TAKES_ARG (STR) \ || !strcmp ((STR), "rpath") || !strcmp ((STR), "rpath-link") \ || !strcmp ((STR), "soname") || !strcmp ((STR), "defsym") \ || !strcmp ((STR), "assert") || !strcmp ((STR), "dynamic-linker")) ! #undef WORD_SWITCH_TAKES_ARG #define WORD_SWITCH_TAKES_ARG(STR) (FBSD_WORD_SWITCH_TAKES_ARG(STR)) #if FBSD_MAJOR == 6 #define FBSD_CPP_PREDEFINES \ ! "-D__FreeBSD__=6 -Dunix -D__ELF__ -Asystem=unix -Asystem=bsd -Asystem=FreeBSD" #endif #if FBSD_MAJOR == 5 #define FBSD_CPP_PREDEFINES \ ! "-D__FreeBSD__=5 -Dunix -D__ELF__ -Asystem=unix -Asystem=bsd -Asystem=FreeBSD" #endif #if FBSD_MAJOR == 4 #define FBSD_CPP_PREDEFINES \ ! "-D__FreeBSD__=4 -Dunix -D__ELF__ -Asystem=unix -Asystem=bsd -Asystem=FreeBSD" #endif #if FBSD_MAJOR == 3 #define FBSD_CPP_PREDEFINES \ ! "-D__FreeBSD__=3 -Dunix -D__ELF__ -Asystem=unix -Asystem=bsd -Asystem=FreeBSD" #endif #ifndef FBSD_CPP_PREDEFINES #define FBSD_CPP_PREDEFINES \ ! "-D__FreeBSD__ -Dunix -D__ELF__ -Asystem=unix -Asystem=bsd -Asystem=FreeBSD" #endif #undef CPP_PREDEFINES --- 41,83 ---- || (CHAR) == 'z' /* ignored by ld */ \ || (CHAR) == 'R') ! #undef SWITCH_TAKES_ARG #define SWITCH_TAKES_ARG(CHAR) (FBSD_SWITCH_TAKES_ARG(CHAR)) + /* This defines which multi-letter switches take arguments. */ + #define FBSD_WORD_SWITCH_TAKES_ARG(STR) \ (DEFAULT_WORD_SWITCH_TAKES_ARG (STR) \ || !strcmp ((STR), "rpath") || !strcmp ((STR), "rpath-link") \ || !strcmp ((STR), "soname") || !strcmp ((STR), "defsym") \ || !strcmp ((STR), "assert") || !strcmp ((STR), "dynamic-linker")) ! #undef WORD_SWITCH_TAKES_ARG #define WORD_SWITCH_TAKES_ARG(STR) (FBSD_WORD_SWITCH_TAKES_ARG(STR)) #if FBSD_MAJOR == 6 #define FBSD_CPP_PREDEFINES \ ! "-D__FreeBSD__=6 -Dunix -D__ELF__ -D__KPRINTF_ATTRIBUTE__ -Asystem=unix -Asystem=bsd -Asystem=FreeBSD" #endif #if FBSD_MAJOR == 5 #define FBSD_CPP_PREDEFINES \ ! "-D__FreeBSD__=5 -Dunix -D__ELF__ -D__KPRINTF_ATTRIBUTE__ -Asystem=unix -Asystem=bsd -Asystem=FreeBSD" #endif #if FBSD_MAJOR == 4 #define FBSD_CPP_PREDEFINES \ ! "-D__FreeBSD__=4 -Dunix -D__ELF__ -D__KPRINTF_ATTRIBUTE__ -Asystem=unix -Asystem=bsd -Asystem=FreeBSD" #endif #if FBSD_MAJOR == 3 #define FBSD_CPP_PREDEFINES \ ! "-D__FreeBSD__=3 -Dunix -D__ELF__ -D__KPRINTF_ATTRIBUTE__ -Asystem=unix -Asystem=bsd -Asystem=FreeBSD" #endif #ifndef FBSD_CPP_PREDEFINES #define FBSD_CPP_PREDEFINES \ ! "-D__FreeBSD__ -Dunix -D__ELF__ -D__KPRINTF_ATTRIBUTE__ -Asystem=unix -Asystem=bsd -Asystem=FreeBSD" #endif #undef CPP_PREDEFINES *************** Boston, MA 02111-1307, USA. */ *** 81,91 **** /* Provide a CPP_SPEC appropriate for FreeBSD. We just deal with the GCC option `-posix', and PIC issues. */ ! #undef CPP_SPEC ! #define CPP_SPEC "%(cpp_cpu) \ %{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} \ %{posix:-D_POSIX_SOURCE}" /* Provide a LIB_SPEC appropriate for FreeBSD as configured and as required by the user-land thread model. Before __FreeBSD_version 500016, select the appropriate libc, depending on whether we're --- 86,120 ---- /* Provide a CPP_SPEC appropriate for FreeBSD. We just deal with the GCC option `-posix', and PIC issues. */ ! #define FBSD_CPP_SPEC " \ ! %(cpp_cpu) \ %{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} \ %{posix:-D_POSIX_SOURCE}" + #undef CPP_SPEC + #define CPP_SPEC FBSD_CPP_SPEC + + /* Provide a STARTFILE_SPEC appropriate for FreeBSD. Here we add + the magical crtbegin.o file (see crtstuff.c) which provides part + of the support for getting C++ file-scope static object constructed + before entering `main'. */ + + #define FBSD_STARTFILE_SPEC \ + "%{!shared: \ + %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} \ + %{!p:%{profile:gcrt1.o%s} \ + %{!profile:crt1.o%s}}}} \ + crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}" + + /* Provide a ENDFILE_SPEC appropriate for FreeBSD. Here we tack on + the magical crtend.o file (see crtstuff.c) which provides part of + the support for getting C++ file-scope static object constructed + before entering `main', followed by a normal "finalizer" file, + `crtn.o'. */ + + #define FBSD_ENDFILE_SPEC \ + "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s" + /* Provide a LIB_SPEC appropriate for FreeBSD as configured and as required by the user-land thread model. Before __FreeBSD_version 500016, select the appropriate libc, depending on whether we're *************** Boston, MA 02111-1307, USA. */ *** 100,108 **** misconfigured the gcc bootstrap but are later consulting FreeBSD manual pages that refer to the mythical -pthread option). */ ! #undef LIB_SPEC #ifdef FBSD_NO_THREADS ! #define LIB_SPEC " \ %{pthread: %eThe -pthread option is only supported on FreeBSD when gcc \ is built with the --enable-threads configure-time option.} \ %{!shared: \ --- 129,140 ---- misconfigured the gcc bootstrap but are later consulting FreeBSD manual pages that refer to the mythical -pthread option). */ ! /* Provide a LIB_SPEC appropriate for FreeBSD. Just select the appropriate ! libc, depending on whether we're doing profiling or need threads support. ! (simular to the default, except no -lg, and no -p). */ ! #ifdef FBSD_NO_THREADS ! #define FBSD_LIB_SPEC " \ %{pthread: %eThe -pthread option is only supported on FreeBSD when gcc \ is built with the --enable-threads configure-time option.} \ %{!shared: \ *************** is built with the --enable-threads confi *** 111,123 **** }" #else #if FBSD_MAJOR >= 5 ! #define LIB_SPEC " \ %{!shared: \ %{!pg: %{pthread:-lc_r} -lc} \ %{pg: %{pthread:-lc_r_p} -lc_p} \ }" #else ! #define LIB_SPEC " \ %{!shared: \ %{!pg: \ %{!pthread:-lc} \ --- 143,155 ---- }" #else #if FBSD_MAJOR >= 5 ! #define FBSD_LIB_SPEC " \ %{!shared: \ %{!pg: %{pthread:-lc_r} -lc} \ %{pg: %{pthread:-lc_r_p} -lc_p} \ }" #else ! #define FBSD_LIB_SPEC " \ %{!shared: \ %{!pg: \ %{!pthread:-lc} \ *************** is built with the --enable-threads confi *** 129,181 **** #endif #endif ! /* Code generation parameters. */ - /* Make gcc agree with . */ ! #undef WCHAR_TYPE #define WCHAR_TYPE "int" ! #undef WCHAR_UNSIGNED ! #define WCHAR_UNSIGNED 0 /* Don't default to pcc-struct-return, because gcc is the only compiler, and we want to retain compatibility with older gcc versions (even though the SVR4 ABI for the i386 says that records and unions are returned in memory). */ ! #undef DEFAULT_PCC_STRUCT_RETURN #define DEFAULT_PCC_STRUCT_RETURN 0 ! /* Ensure we the configuration knows our system correctly so we can link with ! libraries compiled with the native cc. */ #undef NO_DOLLAR_IN_LABEL /* Use more efficient ``thunks'' to implement C++ vtables. */ #undef DEFAULT_VTABLE_THUNKS #define DEFAULT_VTABLE_THUNKS 1 ! /* The GNU tools operate better with dwarf2 than stabs. Since we ! don't have any native tools to be compatible with, default to ! dwarf2. */ ! #undef PREFERRED_DEBUGGING_TYPE ! #define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG ! #undef IDENT_ASM_OP #define IDENT_ASM_OP "\t.ident\t" /* Output #ident as a .ident. */ ! #undef ASM_OUTPUT_IDENT #define ASM_OUTPUT_IDENT(FILE, NAME) \ fprintf ((FILE), "%s\"%s\"\n", IDENT_ASM_OP, (NAME)); ! /* Miscellaneous parameters. */ ! /* Don't assume anything about the header files. */ ! #undef NO_IMPLICIT_EXTERN_C ! #define NO_IMPLICIT_EXTERN_C ! /* Allow #sccs in preprocessor. */ ! #define SCCS_DIRECTIVE ! /* Handle #pragma weak and #pragma pack. */ ! #define HANDLE_SYSV_PRAGMA --- 161,238 ---- #endif #endif ! #undef LIB_SPEC ! #define LIB_SPEC FBSD_LIB_SPEC ! /************************[ Target stuff ]***********************************/ ! ! /* Don't assume anything about the header files. */ ! #undef NO_IMPLICIT_EXTERN_C ! #define NO_IMPLICIT_EXTERN_C ! ! /* Allow #sccs in preprocessor. */ ! #undef SCCS_DIRECTIVE ! #define SCCS_DIRECTIVE ! ! /* Make gcc agree with FreeBSD's standard headers (, etc...) */ ! ! #undef WCHAR_TYPE #define WCHAR_TYPE "int" ! /* Code generation parameters. */ /* Don't default to pcc-struct-return, because gcc is the only compiler, and we want to retain compatibility with older gcc versions (even though the SVR4 ABI for the i386 says that records and unions are returned in memory). */ ! #undef DEFAULT_PCC_STRUCT_RETURN #define DEFAULT_PCC_STRUCT_RETURN 0 ! /* Use periods rather than dollar signs in special g++ assembler names. ! This ensures the configuration knows our system correctly so we can link ! with libraries compiled with the native cc. */ #undef NO_DOLLAR_IN_LABEL + /* The prefix to add to user-visible assembler symbols. + For System V Release 4 & ELF the convention is *not* to prepend a leading + underscore onto user-level symbol names. Some CPU files such as + config/sparc/sparc.h set this wrong for ELF. */ + + #undef USER_LABEL_PREFIX + #define USER_LABEL_PREFIX "" + + /* Handle #pragma weak and #pragma pack. */ + #undef HANDLE_SYSV_PRAGMA + #define HANDLE_SYSV_PRAGMA + /* Use more efficient ``thunks'' to implement C++ vtables. */ #undef DEFAULT_VTABLE_THUNKS #define DEFAULT_VTABLE_THUNKS 1 ! /************************[ Assembler stuff ]********************************/ ! #undef IDENT_ASM_OP #define IDENT_ASM_OP "\t.ident\t" /* Output #ident as a .ident. */ ! ! #undef ASM_OUTPUT_IDENT #define ASM_OUTPUT_IDENT(FILE, NAME) \ fprintf ((FILE), "%s\"%s\"\n", IDENT_ASM_OP, (NAME)); ! /************************[ Debugger stuff ]*********************************/ ! /* All ELF targets can support DWARF-2. */ ! #undef DWARF2_DEBUGGING_INFO ! #define DWARF2_DEBUGGING_INFO ! /* This is BSD, so we want the DBX format. */ ! #undef DBX_DEBUGGING_INFO ! #define DBX_DEBUGGING_INFO ! /* Even though this is BSD, ELF and the GNU tools operates better with dwarf2 ! than stabs. Since we don't have any native tools to be compatible with, ! defaulting to dwarf2 is OK. */ ! #undef PREFERRED_DEBUGGING_TYPE ! #define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG diff -Nrc3pad gcc-3.0.2/gcc/config/h8300/h8300.c gcc-3.0.3/gcc/config/h8300/h8300.c *** gcc-3.0.2/gcc/config/h8300/h8300.c Thu Aug 30 11:06:05 2001 --- gcc-3.0.3/gcc/config/h8300/h8300.c Thu Nov 15 06:50:57 2001 *************** dosize (file, op, size) *** 167,172 **** --- 167,173 ---- subs since this shouldn't happen often. */ if ((TARGET_H8300 && size <= 4) || ((TARGET_H8300H || TARGET_H8300S) && size <= 8) + || (TARGET_H8300 && interrupt_handler) || (TARGET_H8300 && current_function_needs_context && ! strcmp (op, "sub"))) { *************** h8300_encode_label (decl) *** 3072,3084 **** { const char *str = XSTR (XEXP (DECL_RTL (decl), 0), 0); int len = strlen (str); ! char *newstr; ! newstr = ggc_alloc_string (NULL, len + 1); ! strcpy (newstr + 1, str); ! *newstr = '&'; ! XSTR (XEXP (DECL_RTL (decl), 0), 0) = newstr; } const char * --- 3073,3085 ---- { const char *str = XSTR (XEXP (DECL_RTL (decl), 0), 0); int len = strlen (str); ! char *newstr = alloca (len + 2); ! newstr[0] = '&'; ! strcpy (&newstr[1], str); ! XSTR (XEXP (DECL_RTL (decl), 0), 0) = ! ggc_alloc_string (newstr, len + 1); } const char * diff -Nrc3pad gcc-3.0.2/gcc/config/h8300/h8300.md gcc-3.0.3/gcc/config/h8300/h8300.md *** gcc-3.0.2/gcc/config/h8300/h8300.md Wed Aug 29 09:22:51 2001 --- gcc-3.0.3/gcc/config/h8300/h8300.md Thu Nov 15 12:52:24 2001 *************** *** 480,510 **** ;; ---------------------------------------------------------------------- (define_insn "" ! [(set (cc0) (zero_extract:QI (match_operand:QI 0 "bit_memory_operand" "rU") (const_int 1) ! (match_operand:QI 1 "const_int_operand" "n")))] "" "btst %Z1,%R0" ! [(set_attr "length" "2") ! (set_attr "cc" "set_zn")]) (define_insn "" ! [(set (cc0) (zero_extract:HI (match_operand:QI 0 "bit_memory_operand" "rU") (const_int 1) ! (match_operand:QI 1 "const_int_operand" "n")))] "" "btst %Z1,%Y0" ! [(set_attr "length" "2") ! (set_attr "cc" "set_zn")]) (define_insn "" ! [(set (cc0) (zero_extract:SI (match_operand:QI 0 "bit_memory_operand" "rU") (const_int 1) ! (match_operand:QI 1 "const_int_operand" "n")))] "" "btst %Z1,%Y0" ! [(set_attr "length" "2") ! (set_attr "cc" "set_zn")]) (define_insn "" [(set (cc0) (zero_extract:QI (match_operand:HI 0 "register_operand" "r") --- 480,510 ---- ;; ---------------------------------------------------------------------- (define_insn "" ! [(set (cc0) (zero_extract:QI (match_operand:QI 0 "bit_memory_operand" "r,U") (const_int 1) ! (match_operand:QI 1 "const_int_operand" "n,n")))] "" "btst %Z1,%R0" ! [(set_attr "length" "2,8") ! (set_attr "cc" "set_zn,set_zn")]) (define_insn "" ! [(set (cc0) (zero_extract:HI (match_operand:QI 0 "bit_memory_operand" "r,U") (const_int 1) ! (match_operand:QI 1 "const_int_operand" "n,n")))] "" "btst %Z1,%Y0" ! [(set_attr "length" "2,8") ! (set_attr "cc" "set_zn,set_zn")]) (define_insn "" ! [(set (cc0) (zero_extract:SI (match_operand:QI 0 "bit_memory_operand" "r,U") (const_int 1) ! (match_operand:QI 1 "const_int_operand" "n,n")))] "" "btst %Z1,%Y0" ! [(set_attr "length" "2,8") ! (set_attr "cc" "set_zn,set_zn")]) (define_insn "" [(set (cc0) (zero_extract:QI (match_operand:HI 0 "register_operand" "r") *************** *** 953,959 **** "@ and %X2,%X0 bclr %W2,%R0" ! [(set_attr "length" "2,4") (set_attr "adjust_length" "no") (set_attr "cc" "set_znv,none_0hit")]) --- 953,959 ---- "@ and %X2,%X0 bclr %W2,%R0" ! [(set_attr "length" "2,8") (set_attr "adjust_length" "no") (set_attr "cc" "set_znv,none_0hit")]) *************** *** 1058,1064 **** "@ or %X2,%X0 bset %V2,%R0" ! [(set_attr "length" "2,4") (set_attr "adjust_length" "no") (set_attr "cc" "set_znv,none_0hit")]) --- 1058,1064 ---- "@ or %X2,%X0 bset %V2,%R0" ! [(set_attr "length" "2,8") (set_attr "adjust_length" "no") (set_attr "cc" "set_znv,none_0hit")]) *************** *** 1145,1151 **** "@ xor %X2,%X0 bnot %V2,%R0" ! [(set_attr "length" "2,4") (set_attr "adjust_length" "no") (set_attr "cc" "set_znv,none_0hit")]) --- 1145,1151 ---- "@ xor %X2,%X0 bnot %V2,%R0" ! [(set_attr "length" "2,8") (set_attr "adjust_length" "no") (set_attr "cc" "set_znv,none_0hit")]) diff -Nrc3pad gcc-3.0.2/gcc/config/i386/cygwin.h gcc-3.0.3/gcc/config/i386/cygwin.h *** gcc-3.0.2/gcc/config/i386/cygwin.h Sun Oct 14 08:45:00 2001 --- gcc-3.0.3/gcc/config/i386/cygwin.h Sat Nov 17 09:39:20 2001 *************** Boston, MA 02111-1307, USA. */ *** 64,87 **** #define CPP_PREDEFINES "-D_X86_=1 -Asystem=winnt" #ifdef CROSS_COMPILE ! #define CYGWIN_INCLUDES "-idirafter " CYGWIN_CROSS_DIR "/include" ! #define W32API_INC "-idirafter " CYGWIN_CROSS_DIR "/include/w32api" #define W32API_LIB "-L" CYGWIN_CROSS_DIR "/lib/w32api/" #define CYGWIN_LIB CYGWIN_CROSS_DIR "/lib" #define MINGW_LIBS "-L" CYGWIN_CROSS_DIR "/lib/mingw" ! #define MINGW_INCLUDES "-isystem " CYGWIN_CROSS_DIR "/include/mingw/g++-3 "\ "-isystem " CYGWIN_CROSS_DIR "/include/mingw/g++ "\ ! "-idirafter " CYGWIN_CROSS_DIR "/include/mingw" #else ! #define CYGWIN_INCLUDES "-isystem /usr/local/include -idirafter /usr/include" ! #define W32API_INC "-idirafter /usr/include/w32api" ! #define W32API_LIB "-L/usr/lib/w32api/" #define CYGWIN_LIB "/usr/lib" #define MINGW_LIBS "-L/usr/local/lib/mingw -L/usr/lib/mingw" ! #define MINGW_INCLUDES "-isystem /usr/include/mingw/g++-3 "\ "-isystem /usr/include/mingw/g++ "\ ! "-isystem /usr/local/include/mingw " \ ! "-idirafter /usr/include/mingw" #endif /* Support the __declspec keyword by turning them into attributes. --- 64,92 ---- #define CPP_PREDEFINES "-D_X86_=1 -Asystem=winnt" #ifdef CROSS_COMPILE ! #define CYGWIN_INCLUDES "%{!nostdinc:-idirafter " CYGWIN_CROSS_DIR "/include}" ! #define W32API_INC "%{!nostdinc:-idirafter " CYGWIN_CROSS_DIR "/include/w32api}" #define W32API_LIB "-L" CYGWIN_CROSS_DIR "/lib/w32api/" #define CYGWIN_LIB CYGWIN_CROSS_DIR "/lib" #define MINGW_LIBS "-L" CYGWIN_CROSS_DIR "/lib/mingw" ! #define MINGW_INCLUDES "%{!nostdinc:-isystem " CYGWIN_CROSS_DIR "/include/mingw/g++-3 "\ "-isystem " CYGWIN_CROSS_DIR "/include/mingw/g++ "\ ! "-idirafter " CYGWIN_CROSS_DIR "/include/mingw}" #else ! #define CYGWIN_INCLUDES "%{!nostdinc:-isystem /usr/local/include "\ ! "-idirafter " CYGWIN_CROSS_DIR "/include "\ ! "-idirafter /usr/include}" ! #define W32API_INC "%{!nostdinc:"\ ! "-idirafter " CYGWIN_CROSS_DIR "/include/w32api "\ ! "-idirafter /usr/include/w32api}" ! #define W32API_LIB "-L" CYGWIN_CROSS_DIR "/lib/w32api/ -L/usr/lib/w32api/" #define CYGWIN_LIB "/usr/lib" #define MINGW_LIBS "-L/usr/local/lib/mingw -L/usr/lib/mingw" ! #define MINGW_INCLUDES "%{!nostdinc:-isystem /usr/include/mingw/g++-3 "\ "-isystem /usr/include/mingw/g++ "\ ! "-isystem /usr/local/include/mingw "\ ! "-idirafter " CYGWIN_CROSS_DIR "/include/mingw "\ ! "-idirafter /usr/include/mingw}" #endif /* Support the __declspec keyword by turning them into attributes. *************** Boston, MA 02111-1307, USA. */ *** 111,118 **** #undef STARTFILE_SPEC #define STARTFILE_SPEC "\ ! %{shared|mdll: %{mno-cygwin:" MINGW_LIBS " mingw/dllcrt2%O%s}}\ ! %{!shared: %{!mdll: %{!mno-cygwin:crt0%O%s} %{mno-cygwin:" MINGW_LIBS " mingw/crt2%O%s}\ %{pg:gcrt0%O%s}}}\ " --- 116,123 ---- #undef STARTFILE_SPEC #define STARTFILE_SPEC "\ ! %{shared|mdll: %{mno-cygwin:" MINGW_LIBS " dllcrt2%O%s}}\ ! %{!shared: %{!mdll: %{!mno-cygwin:crt0%O%s} %{mno-cygwin:" MINGW_LIBS " crt2%O%s}\ %{pg:gcrt0%O%s}}}\ " diff -Nrc3pad gcc-3.0.2/gcc/config/i386/i386.c gcc-3.0.3/gcc/config/i386/i386.c *** gcc-3.0.2/gcc/config/i386/i386.c Fri Sep 14 10:11:12 2001 --- gcc-3.0.3/gcc/config/i386/i386.c Thu Nov 29 13:48:41 2001 *************** print_operand (file, x, code) *** 3566,3571 **** --- 3566,3578 ---- /* Like above, but reverse condition */ case 'c': + /* Check to see if argument to %c is really a constant + and not a condition code which needs to be reversed. */ + if (GET_RTX_CLASS (GET_CODE (x)) != '<') + { + output_operand_lossage ("operand is neither a constant nor a condition code, invalid operand code 'c'"); + return; + } put_condition_code (GET_CODE (x), GET_MODE (XEXP (x, 0)), 1, 0, file); return; case 'f': diff -Nrc3pad gcc-3.0.2/gcc/config/i386/i386.md gcc-3.0.3/gcc/config/i386/i386.md *** gcc-3.0.2/gcc/config/i386/i386.md Fri Oct 5 12:45:34 2001 --- gcc-3.0.3/gcc/config/i386/i386.md Mon Nov 26 13:59:47 2001 *************** *** 10917,10923 **** LABEL_NUSES (label) = 1; } if (align > 1 && count > 0 && (count & 1)) ! emit_insn (gen_strmovsi (destreg, srcreg)); if (align <= 1 || count < 0) { rtx label = gen_label_rtx (); --- 10917,10923 ---- LABEL_NUSES (label) = 1; } if (align > 1 && count > 0 && (count & 1)) ! emit_insn (gen_strmovqi (destreg, srcreg)); if (align <= 1 || count < 0) { rtx label = gen_label_rtx (); diff -Nrc3pad gcc-3.0.2/gcc/config/i386/sol2.h gcc-3.0.3/gcc/config/i386/sol2.h *** gcc-3.0.2/gcc/config/i386/sol2.h Fri Sep 28 14:31:01 2001 --- gcc-3.0.3/gcc/config/i386/sol2.h Tue Nov 27 08:11:34 2001 *************** Boston, MA 02111-1307, USA. */ *** 69,74 **** --- 69,81 ---- (flag_pic ? (GLOBAL ? DW_EH_PE_indirect : 0) | DW_EH_PE_datarel \ : DW_EH_PE_absptr) + /* Solaris 2/Intel uses a wint_t different from the default, as on SPARC. */ + #undef WINT_TYPE + #define WINT_TYPE "long int" + + #undef WINT_TYPE_SIZE + #define WINT_TYPE_SIZE BITS_PER_WORD + /* Add "sun" to the list of symbols defined for SVR4. */ #undef CPP_PREDEFINES #define CPP_PREDEFINES \ diff -Nrc3pad gcc-3.0.2/gcc/config/ia64/elf.h gcc-3.0.3/gcc/config/ia64/elf.h *** gcc-3.0.2/gcc/config/ia64/elf.h Wed Mar 8 16:26:04 2000 --- gcc-3.0.3/gcc/config/ia64/elf.h Sat Nov 3 12:28:24 2001 *************** *** 1,8 **** /* Definitions for embedded ia64-elf target. */ ! #include "ia64/ia64.h" ! #include "elfos.h" ! #include "sysv4.h" /* svr4.h links with crti.o/crtn.o, but elfos.h does not. We override elfos.h so that we can use the standard ELF Unix method. */ --- 1,44 ---- /* Definitions for embedded ia64-elf target. */ ! /* This macro is a C statement to print on `stderr' a string describing the ! particular machine description choice. */ ! ! #define TARGET_VERSION fprintf (stderr, " (IA-64) ELF"); ! ! /* Define this to be a string constant containing `-D' options to define the ! predefined macros that identify this machine and system. These macros will ! be predefined unless the `-ansi' option is specified. */ ! /* ??? This is undefed in svr4.h. */ ! #define CPP_PREDEFINES "-Dia64 -Amachine=ia64" ! ! /* A C string constant that tells the GNU CC driver program options to pass to ! the assembler. It can also specify how to translate options you give to GNU ! CC into options for GNU CC to pass to the assembler. */ ! ! #if ((TARGET_CPU_DEFAULT | TARGET_DEFAULT) & MASK_GNU_AS) != 0 ! /* GNU AS. */ ! #define ASM_SPEC \ ! "%{mno-gnu-as:-N so} %{!mno-gnu-as:-x} %{mconstant-gp} %{mauto-pic}" ! #else ! /* Intel ias. */ ! #define ASM_SPEC \ ! "%{!mgnu-as:-N so} %{mgnu-as:-x} %{mconstant-gp:-M const_gp}\ ! %{mauto-pic:-M no_plabel}" ! #endif ! ! /* A C string constant that tells the GNU CC driver program options to pass to ! the linker. It can also specify how to translate options you give to GNU CC ! into options for GNU CC to pass to the linker. */ ! ! /* The Intel linker does not support dynamic linking, so we need -dn. ! The Intel linker gives annoying messages unless -N so is used. */ ! #if ((TARGET_CPU_DEFAULT | TARGET_DEFAULT) & MASK_GNU_LD) != 0 ! /* GNU LD. */ ! #define LINK_SPEC "%{mno-gnu-ld:-dn -N so}" ! #else ! /* Intel ild. */ ! #define LINK_SPEC "%{!mgnu-ld:-dn -N so}" ! #endif /* svr4.h links with crti.o/crtn.o, but elfos.h does not. We override elfos.h so that we can use the standard ELF Unix method. */ diff -Nrc3pad gcc-3.0.2/gcc/config/ia64/freebsd.h gcc-3.0.3/gcc/config/ia64/freebsd.h *** gcc-3.0.2/gcc/config/ia64/freebsd.h Wed Dec 31 16:00:00 1969 --- gcc-3.0.3/gcc/config/ia64/freebsd.h Mon Nov 12 08:30:39 2001 *************** *** 0 **** --- 1,89 ---- + /* Definitions for Intel IA-64 running FreeBSD using the ELF format + Copyright (C) 2001 Free Software Foundation, Inc. + Contributed by David E. O'Brien and BSDi. + + This file is part of GNU CC. + + GNU CC is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + GNU CC is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with GNU CC; see the file COPYING. If not, write to + the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ + + + #undef LINK_SPEC + #define LINK_SPEC \ + "%{p:%e`-p' not supported; use `-pg' and gprof(1)} \ + %{Wl,*:%*} \ + %{assert*} %{R*} %{rpath*} %{defsym*} \ + %{shared:-Bshareable %{h*} %{soname*}} \ + %{symbolic:-Bsymbolic} \ + %{!shared: \ + %{!static: \ + %{rdynamic:-export-dynamic} \ + %{!dynamic-linker:-dynamic-linker /usr/libexec/ld-elf.so.1}} \ + %{static:-Bstatic}}" + + #undef ASM_SPEC + #define ASM_SPEC "-x %{mconstant-gp} %{mauto-pic}" + + + /************************[ Target stuff ]***********************************/ + + /* Define the actual types of some ANSI-mandated types. + Needs to agree with . GCC defaults come from c-decl.c, + c-common.c, and config//.h. */ + + /* Earlier headers may get this wrong for FreeBSD. + We use the GCC defaults instead. */ + #undef WCHAR_TYPE + + #undef WCHAR_UNSIGNED + #define WCHAR_UNSIGNED 0 + + #undef WCHAR_TYPE_SIZE + #define WCHAR_TYPE_SIZE 32 + + #undef TARGET_VERSION + #define TARGET_VERSION fprintf (stderr, " (FreeBSD/IA-64 ELF)"); + + #define TARGET_ELF 1 + + #define DONT_USE_BUILTIN_SETJMP + #define JMP_BUF_SIZE 76 + + /* Output any profiling code before the prologue. */ + + #undef PROFILE_BEFORE_PROLOGUE + #define PROFILE_BEFORE_PROLOGUE 1 + + /* A C statement or compound statement to output to FILE some assembler code to + call the profiling subroutine `mcount'. */ + + #undef FUNCTION_PROFILER + #define FUNCTION_PROFILER(FILE, LABELNO) \ + do { \ + char buf[20]; \ + ASM_GENERATE_INTERNAL_LABEL (buf, "LP", LABELNO); \ + fputs ("\talloc out0 = ar.pfs, 8, 0, 4, 0\n", FILE); \ + if (TARGET_AUTO_PIC) \ + fputs ("\tmovl out3 = @gprel(", FILE); \ + else \ + fputs ("\taddl out3 = @ltoff(", FILE); \ + assemble_name (FILE, buf); \ + if (TARGET_AUTO_PIC) \ + fputs (");;\n", FILE); \ + else \ + fputs ("), r1;;\n", FILE); \ + fputs ("\tmov out1 = r1\n", FILE); \ + fputs ("\tmov out2 = b0\n", FILE); \ + fputs ("\tbr.call.sptk.many b0 = _mcount;;\n", FILE); \ + } while (0) diff -Nrc3pad gcc-3.0.2/gcc/config/ia64/hpux.h gcc-3.0.3/gcc/config/ia64/hpux.h *** gcc-3.0.2/gcc/config/ia64/hpux.h Thu Mar 15 20:42:09 2001 --- gcc-3.0.3/gcc/config/ia64/hpux.h Sat Nov 3 12:28:24 2001 *************** along with GNU CC; see the file COPYING. *** 20,25 **** --- 20,30 ---- the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + /* This macro is a C statement to print on `stderr' a string describing the + particular machine description choice. */ + + #define TARGET_VERSION fprintf (stderr, " (IA-64) HP-UX"); + #undef CPP_PREDEFINES #define CPP_PREDEFINES "\ -D__IA64__ -D__ia64 -D__ia64__ -D__hpux -D__hpux__ -Dhpux -Dunix \ diff -Nrc3pad gcc-3.0.2/gcc/config/ia64/ia64.h gcc-3.0.3/gcc/config/ia64/ia64.h *** gcc-3.0.2/gcc/config/ia64/ia64.h Fri Sep 21 18:33:20 2001 --- gcc-3.0.3/gcc/config/ia64/ia64.h Sat Nov 3 12:28:24 2001 *************** Boston, MA 02111-1307, USA. */ *** 31,41 **** /* Run-time target specifications */ ! /* Define this to be a string constant containing `-D' options to define the ! predefined macros that identify this machine and system. These macros will ! be predefined unless the `-ansi' option is specified. */ ! /* ??? This is undefed in svr4.h. */ ! #define CPP_PREDEFINES "-Dia64 -Amachine=ia64" /* This declaration should be present. */ extern int target_flags; --- 31,41 ---- /* Run-time target specifications */ ! #define CPP_CPU_SPEC "\ ! -Acpu=ia64 -Amachine=ia64 \ ! %{!ansi:%{!std=c*:%{!std=i*:-Dia64}}} -D__ia64 -D__ia64__" ! ! #define CC1_SPEC "%(cc1_cpu) " /* This declaration should be present. */ extern int target_flags; *************** extern const char *ia64_fixed_range_stri *** 169,179 **** N_("Specify range of registers to make fixed.")}, \ } - /* This macro is a C statement to print on `stderr' a string describing the - particular machine description choice. */ - - #define TARGET_VERSION fprintf (stderr, " (IA-64)"); - /* Sometimes certain combinations of command options do not make sense on a particular target machine. You can define a macro `OVERRIDE_OPTIONS' to take account of this. This macro, if defined, is executed once just after --- 169,174 ---- *************** extern const char *ia64_fixed_range_stri *** 201,206 **** --- 196,202 ---- defines in other tm.h files. */ #define CPP_SPEC \ "%{mcpu=itanium:-D__itanium__} %{mbig-endian:-D__BIG_ENDIAN__} \ + %{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} \ -D__LONG_MAX__=9223372036854775807L" /* If this macro is defined, the preprocessor will not define the builtin macro *************** extern const char *ia64_fixed_range_stri *** 235,270 **** into options for GNU CC to pass to the `cc1plus'. */ /* #define CC1PLUS_SPEC "" */ - - /* A C string constant that tells the GNU CC driver program options to pass to - the assembler. It can also specify how to translate options you give to GNU - CC into options for GNU CC to pass to the assembler. */ - - #if ((TARGET_CPU_DEFAULT | TARGET_DEFAULT) & MASK_GNU_AS) != 0 - /* GNU AS. */ - #define ASM_SPEC \ - "%{mno-gnu-as:-N so} %{!mno-gnu-as:-x} %{mconstant-gp} %{mauto-pic}" - #else - /* Intel ias. */ - #define ASM_SPEC \ - "%{!mgnu-as:-N so} %{mgnu-as:-x} %{mconstant-gp:-M const_gp}\ - %{mauto-pic:-M no_plabel}" - #endif - - /* A C string constant that tells the GNU CC driver program options to pass to - the linker. It can also specify how to translate options you give to GNU CC - into options for GNU CC to pass to the linker. */ - - /* The Intel linker does not support dynamic linking, so we need -dn. - The Intel linker gives annoying messages unless -N so is used. */ - #if ((TARGET_CPU_DEFAULT | TARGET_DEFAULT) & MASK_GNU_LD) != 0 - /* GNU LD. */ - #define LINK_SPEC "%{mno-gnu-ld:-dn -N so}" - #else - /* Intel ild. */ - #define LINK_SPEC "%{!mgnu-ld:-dn -N so}" - #endif - /* Storage Layout */ --- 231,236 ---- diff -Nrc3pad gcc-3.0.2/gcc/config/ia64/linux.h gcc-3.0.3/gcc/config/ia64/linux.h *** gcc-3.0.2/gcc/config/ia64/linux.h Fri Jun 8 10:10:35 2001 --- gcc-3.0.3/gcc/config/ia64/linux.h Sat Nov 3 12:28:24 2001 *************** *** 1,7 **** /* Definitions for ia64-linux target. */ ! #include "ia64/ia64.h" ! #include ! #include "sysv4.h" /* This is for -profile to use -lc_p instead of -lc. */ #undef CC1_SPEC --- 1,9 ---- /* Definitions for ia64-linux target. */ ! ! /* This macro is a C statement to print on `stderr' a string describing the ! particular machine description choice. */ ! ! #define TARGET_VERSION fprintf (stderr, " (IA-64) Linux"); /* This is for -profile to use -lc_p instead of -lc. */ #undef CC1_SPEC diff -Nrc3pad gcc-3.0.2/gcc/config/m68hc11/m68hc11.c gcc-3.0.3/gcc/config/m68hc11/m68hc11.c *** gcc-3.0.2/gcc/config/m68hc11/m68hc11.c Sun Sep 30 05:53:26 2001 --- gcc-3.0.3/gcc/config/m68hc11/m68hc11.c Sun Nov 25 08:39:26 2001 *************** d_register_operand (operand, mode) *** 912,918 **** return GET_CODE (operand) == REG && (REGNO (operand) >= FIRST_PSEUDO_REGISTER ! || REGNO (operand) == HARD_D_REGNUM); } int --- 912,919 ---- return GET_CODE (operand) == REG && (REGNO (operand) >= FIRST_PSEUDO_REGISTER ! || REGNO (operand) == HARD_D_REGNUM ! || (mode == QImode && REGNO (operand) == HARD_B_REGNUM)); } int diff -Nrc3pad gcc-3.0.2/gcc/config/m68hc11/m68hc11.h gcc-3.0.3/gcc/config/m68hc11/m68hc11.h *** gcc-3.0.2/gcc/config/m68hc11/m68hc11.h Sun Sep 30 05:47:16 2001 --- gcc-3.0.3/gcc/config/m68hc11/m68hc11.h Sun Nov 25 08:32:05 2001 *************** typedef struct m68hc11_args *** 1134,1140 **** /* Output assembler code to FILE to increment profiler label # LABELNO for profiling a function entry. */ #define FUNCTION_PROFILER(FILE, LABELNO) \ ! asm_fprintf (FILE, "\tldy LP%d\n\tjsr mcount\n", (LABELNO)) /* Output assembler code to FILE to initialize this source file's basic block profiling info, if that has not already been done. */ --- 1134,1140 ---- /* Output assembler code to FILE to increment profiler label # LABELNO for profiling a function entry. */ #define FUNCTION_PROFILER(FILE, LABELNO) \ ! asm_fprintf (FILE, "\tldy\t.LP%d\n\tjsr mcount\n", (LABELNO)) /* Output assembler code to FILE to initialize this source file's basic block profiling info, if that has not already been done. */ diff -Nrc3pad gcc-3.0.2/gcc/config/m68hc11/m68hc11.md gcc-3.0.3/gcc/config/m68hc11/m68hc11.md *** gcc-3.0.2/gcc/config/m68hc11/m68hc11.md Mon Oct 1 06:38:13 2001 --- gcc-3.0.3/gcc/config/m68hc11/m68hc11.md Sun Nov 25 08:48:15 2001 *************** *** 6105,6110 **** --- 6105,6136 ---- ;;-------------------------------------------------------------------- ;; + ;; Reorganize to optimize address computations. + ;; + (define_peephole2 + [(set (match_operand:HI 0 "hard_reg_operand" "") + (match_operand:HI 1 "const_int_operand" "")) + (set (match_dup 0) + (plus:HI (match_dup 0) + (match_operand:HI 2 "general_operand" "")))] + "(INTVAL (operands[1]) >= -2 && INTVAL (operands[1]) <= 2)" + [(set (match_dup 0) (match_dup 2)) + (set (match_dup 0) (plus:HI (match_dup 0) (match_dup 1)))] + "") + + ;; + ;; Reorganize address computation based on stack pointer. + ;; + (define_peephole2 + [(set (match_operand:HI 0 "hard_reg_operand" "") + (match_operand:HI 1 "const_int_operand" "")) + (set (match_dup 0) (plus:HI (match_dup 0) (reg:HI SP_REGNUM)))] + "" + [(set (match_dup 0) (reg:HI SP_REGNUM)) + (set (match_dup 0) (plus:HI (match_dup 0) (match_dup 1)))] + "") + + ;; ;; This peephole catches the address computations generated by the reload ;; pass. (define_peephole diff -Nrc3pad gcc-3.0.2/gcc/config/mips/mips.c gcc-3.0.3/gcc/config/mips/mips.c *** gcc-3.0.2/gcc/config/mips/mips.c Sat May 19 17:31:43 2001 --- gcc-3.0.3/gcc/config/mips/mips.c Fri Nov 9 14:08:44 2001 *************** save_restore_insns (store_p, large_reg, *** 6416,6421 **** --- 6416,6422 ---- { long mask = current_frame_info.mask; long fmask = current_frame_info.fmask; + long real_mask = mask; int regno; rtx base_reg_rtx; HOST_WIDE_INT base_offset; *************** save_restore_insns (store_p, large_reg, *** 6428,6433 **** --- 6429,6440 ---- && ! BITSET_P (mask, HARD_FRAME_POINTER_REGNUM - GP_REG_FIRST)) abort (); + /* Do not restore GP under certain conditions. */ + if (! store_p + && TARGET_ABICALLS + && (mips_abi == ABI_32 || mips_abi == ABI_O64)) + mask &= ~(1 << (PIC_OFFSET_TABLE_REGNUM - GP_REG_FIRST)); + if (mask == 0 && fmask == 0) return; *************** save_restore_insns (store_p, large_reg, *** 6567,6573 **** gen_rtx (PLUS, Pmode, base_reg_rtx, GEN_INT (gp_offset - base_offset))); ! RTX_UNCHANGING_P (mem_rtx) = 1; /* The mips16 does not have an instruction to load $31, so we load $7 instead, and work things out --- 6574,6581 ---- gen_rtx (PLUS, Pmode, base_reg_rtx, GEN_INT (gp_offset - base_offset))); ! if (! current_function_calls_eh_return) ! RTX_UNCHANGING_P (mem_rtx) = 1; /* The mips16 does not have an instruction to load $31, so we load $7 instead, and work things out *************** save_restore_insns (store_p, large_reg, *** 6596,6604 **** insn = emit_move_insn (mem_rtx, reg_rtx); RTX_FRAME_RELATED_P (insn) = 1; } ! else if (!TARGET_ABICALLS ! || (mips_abi != ABI_32 && mips_abi != ABI_O64) ! || regno != (PIC_OFFSET_TABLE_REGNUM - GP_REG_FIRST)) { emit_move_insn (reg_rtx, mem_rtx); if (TARGET_MIPS16 --- 6604,6610 ---- insn = emit_move_insn (mem_rtx, reg_rtx); RTX_FRAME_RELATED_P (insn) = 1; } ! else { emit_move_insn (reg_rtx, mem_rtx); if (TARGET_MIPS16 *************** save_restore_insns (store_p, large_reg, *** 6610,6659 **** } else { ! if (store_p || !TARGET_ABICALLS ! || (mips_abi != ABI_32 && mips_abi != ABI_O64) ! || regno != (PIC_OFFSET_TABLE_REGNUM - GP_REG_FIRST)) ! { ! int r = regno; ! /* The mips16 does not have an instruction to ! load $31, so we load $7 instead, and work ! things out in the caller. */ ! if (TARGET_MIPS16 && ! store_p && r == GP_REG_FIRST + 31) ! r = GP_REG_FIRST + 7; ! /* The mips16 sometimes needs to save $18. */ ! if (TARGET_MIPS16 ! && regno != GP_REG_FIRST + 31 ! && ! M16_REG_P (regno)) { ! if (! store_p) ! r = GP_REG_FIRST + 6; ! else ! { ! r = GP_REG_FIRST + 3; ! fprintf (file, "\tmove\t%s,%s\n", ! reg_names[r], reg_names[regno]); ! } } - fprintf (file, "\t%s\t%s,", - (TARGET_64BIT - ? (store_p) ? "sd" : "ld" - : (store_p) ? "sw" : "lw"), - reg_names[r]); - fprintf (file, HOST_WIDE_INT_PRINT_DEC, - gp_offset - base_offset); - fprintf (file, "(%s)\n", reg_names[REGNO(base_reg_rtx)]); - if (! store_p - && TARGET_MIPS16 - && regno != GP_REG_FIRST + 31 - && ! M16_REG_P (regno)) - fprintf (file, "\tmove\t%s,%s\n", - reg_names[regno], reg_names[r]); } ! } gp_offset -= GET_MODE_SIZE (gpr_mode); } } else base_reg_rtx = 0, base_offset = 0; --- 6616,6666 ---- } else { ! int r = regno; ! /* The mips16 does not have an instruction to ! load $31, so we load $7 instead, and work ! things out in the caller. */ ! if (TARGET_MIPS16 && ! store_p && r == GP_REG_FIRST + 31) ! r = GP_REG_FIRST + 7; ! ! /* The mips16 sometimes needs to save $18. */ ! if (TARGET_MIPS16 ! && regno != GP_REG_FIRST + 31 ! && ! M16_REG_P (regno)) ! { ! if (! store_p) ! r = GP_REG_FIRST + 6; ! else { ! r = GP_REG_FIRST + 3; ! fprintf (file, "\tmove\t%s,%s\n", ! reg_names[r], reg_names[regno]); } } ! fprintf (file, "\t%s\t%s,", ! (TARGET_64BIT ! ? (store_p) ? "sd" : "ld" ! : (store_p) ? "sw" : "lw"), ! reg_names[r]); ! fprintf (file, HOST_WIDE_INT_PRINT_DEC, ! gp_offset - base_offset); ! fprintf (file, "(%s)\n", reg_names[REGNO(base_reg_rtx)]); ! if (! store_p ! && TARGET_MIPS16 ! && regno != GP_REG_FIRST + 31 ! && ! M16_REG_P (regno)) ! fprintf (file, "\tmove\t%s,%s\n", ! reg_names[regno], reg_names[r]); } gp_offset -= GET_MODE_SIZE (gpr_mode); } + /* If the restore is being supressed, still take into account + the offset at which it is stored. */ + else if (BITSET_P (real_mask, regno - GP_REG_FIRST)) + { + gp_offset -= GET_MODE_SIZE (gpr_mode); + } } else base_reg_rtx = 0, base_offset = 0; *************** save_restore_insns (store_p, large_reg, *** 6779,6785 **** gen_rtx (PLUS, Pmode, base_reg_rtx, GEN_INT (fp_offset - base_offset))); ! RTX_UNCHANGING_P (mem_rtx) = 1; if (store_p) { --- 6786,6793 ---- gen_rtx (PLUS, Pmode, base_reg_rtx, GEN_INT (fp_offset - base_offset))); ! if (! current_function_calls_eh_return) ! RTX_UNCHANGING_P (mem_rtx) = 1; if (store_p) { *************** mips_output_conditional_branch (insn, *** 9521,9567 **** .set macro .set reorder l: ! Because we have to jump four bytes *past* the following ! instruction if this branch was annulled, we can't just use ! a label, as in the picture above; there's no way to put the ! label after the next instruction, as the assembler does not ! accept `.L+4' as the target of a branch. (We can't just ! wait until the next instruction is output; it might be a ! macro and take up more than four bytes. Once again, we see ! why we want to eliminate macros.) ! ! If the branch is annulled, we jump four more bytes that we ! would otherwise; that way we skip the annulled instruction ! in the delay slot. */ ! ! const char *target ! = ((mips_branch_likely || length == 16) ? ".+16" : ".+12"); ! char *c; ! strcpy (buffer, "%(%<"); ! c = strchr (buffer, '\0'); ! /* Generate the reversed comparision. This takes four ! bytes. */ if (float_p) ! sprintf (c, "%%*b%s\t%%Z2%s", inverted_p ? comp : inverted_comp, target); else ! sprintf (c, "%%*b%s%s\t%s%s,%s", inverted_p ? comp : inverted_comp, need_z_p ? "z" : "", op1, op2, target); ! strcat (c, "\n\tnop\n\tj\t%1"); if (length == 16) /* The delay slot was unfilled. Since we're inside .noreorder, the assembler will not fill in the NOP for us, so we must do it ourselves. */ ! strcat (buffer, "\n\tnop"); ! strcat (buffer, "%>%)"); ! return buffer; } /* We do not currently use this code. It handles jumps to --- 9529,9576 ---- .set macro .set reorder l: + */ ! rtx orig_target; ! rtx target = gen_label_rtx (); ! output_asm_insn ("%(%<", NULL); ! orig_target = operands[1]; ! operands[1] = target; ! /* Generate the reversed comparision. This takes four bytes. */ if (float_p) ! sprintf (buffer, "%%*b%s\t%%Z2%s", inverted_p ? comp : inverted_comp, target); else ! sprintf (buffer, "%%*b%s%s\t%s%s,%s", inverted_p ? comp : inverted_comp, need_z_p ? "z" : "", op1, op2, target); ! output_asm_insn (buffer, operands); ! operands[1] = orig_target; ! ! output_asm_insn ("nop\n\tj\t%1", operands); ! if (length == 16) /* The delay slot was unfilled. Since we're inside .noreorder, the assembler will not fill in the NOP for us, so we must do it ourselves. */ ! output_asm_insn ("nop", 0); ! else ! { ! /* Output delay slot instruction. */ ! rtx insn = final_sequence; ! final_scan_insn (XVECEXP (insn, 0, 1), asm_out_file, ! optimize, 0, 1); ! INSN_DELETED_P (XVECEXP (insn, 0, 1)) = 1; ! } ! output_asm_insn ("%>%)", 0); ! ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, "L", ! CODE_LABEL_NUMBER (target)); ! return ""; } /* We do not currently use this code. It handles jumps to diff -Nrc3pad gcc-3.0.2/gcc/config/mips/mips.md gcc-3.0.3/gcc/config/mips/mips.md *** gcc-3.0.2/gcc/config/mips/mips.md Thu Jun 14 13:42:18 2001 --- gcc-3.0.3/gcc/config/mips/mips.md Thu Nov 8 11:27:10 2001 *************** ld\\t%2,%1-%S1(%2)\;daddu\\t%2,%2,$31\;j *** 9668,9677 **** { register rtx target = operands[0]; ! if (GET_CODE (target) == SYMBOL_REF) ! return \"%*jal\\t%0\"; ! else if (GET_CODE (target) == CONST_INT) return \"%[li\\t%@,%0\\n\\t%*jal\\t%2,%@%]\"; else return \"%*jal\\t%2,%0\"; }" --- 9668,9677 ---- { register rtx target = operands[0]; ! if (GET_CODE (target) == CONST_INT) return \"%[li\\t%@,%0\\n\\t%*jal\\t%2,%@%]\"; + else if (CONSTANT_ADDRESS_P (target)) + return \"%*jal\\t%0\"; else return \"%*jal\\t%2,%0\"; }" *************** ld\\t%2,%1-%S1(%2)\;daddu\\t%2,%2,$31\;j *** 9687,9701 **** { register rtx target = operands[0]; ! if (GET_CODE (target) == SYMBOL_REF) { if (GET_MODE (target) == SImode) return \"la\\t%^,%0\\n\\tjal\\t%2,%^\"; else return \"dla\\t%^,%0\\n\\tjal\\t%2,%^\"; } - else if (GET_CODE (target) == CONST_INT) - return \"li\\t%^,%0\\n\\tjal\\t%2,%^\"; else if (REGNO (target) != PIC_FUNCTION_ADDR_REGNUM) return \"move\\t%^,%0\\n\\tjal\\t%2,%^\"; else --- 9687,9701 ---- { register rtx target = operands[0]; ! if (GET_CODE (target) == CONST_INT) ! return \"li\\t%^,%0\\n\\tjal\\t%2,%^\"; ! else if (CONSTANT_ADDRESS_P (target)) { if (GET_MODE (target) == SImode) return \"la\\t%^,%0\\n\\tjal\\t%2,%^\"; else return \"dla\\t%^,%0\\n\\tjal\\t%2,%^\"; } else if (REGNO (target) != PIC_FUNCTION_ADDR_REGNUM) return \"move\\t%^,%0\\n\\tjal\\t%2,%^\"; else *************** ld\\t%2,%1-%S1(%2)\;daddu\\t%2,%2,$31\;j *** 9875,9884 **** { register rtx target = operands[1]; ! if (GET_CODE (target) == SYMBOL_REF) ! return \"%*jal\\t%1\"; ! else if (GET_CODE (target) == CONST_INT) return \"%[li\\t%@,%1\\n\\t%*jal\\t%3,%@%]\"; else return \"%*jal\\t%3,%1\"; }" --- 9875,9884 ---- { register rtx target = operands[1]; ! if (GET_CODE (target) == CONST_INT) return \"%[li\\t%@,%1\\n\\t%*jal\\t%3,%@%]\"; + else if (CONSTANT_ADDRESS_P (target)) + return \"%*jal\\t%1\"; else return \"%*jal\\t%3,%1\"; }" *************** ld\\t%2,%1-%S1(%2)\;daddu\\t%2,%2,$31\;j *** 9895,9909 **** { register rtx target = operands[1]; ! if (GET_CODE (target) == SYMBOL_REF) { if (GET_MODE (target) == SImode) return \"la\\t%^,%1\\n\\tjal\\t%3,%^\"; else return \"dla\\t%^,%1\\n\\tjal\\t%3,%^\"; } - else if (GET_CODE (target) == CONST_INT) - return \"li\\t%^,%1\\n\\tjal\\t%3,%^\"; else if (REGNO (target) != PIC_FUNCTION_ADDR_REGNUM) return \"move\\t%^,%1\\n\\tjal\\t%3,%^\"; else --- 9895,9909 ---- { register rtx target = operands[1]; ! if (GET_CODE (target) == CONST_INT) ! return \"li\\t%^,%1\\n\\tjal\\t%3,%^\"; ! else if (CONSTANT_ADDRESS_P (target)) { if (GET_MODE (target) == SImode) return \"la\\t%^,%1\\n\\tjal\\t%3,%^\"; else return \"dla\\t%^,%1\\n\\tjal\\t%3,%^\"; } else if (REGNO (target) != PIC_FUNCTION_ADDR_REGNUM) return \"move\\t%^,%1\\n\\tjal\\t%3,%^\"; else *************** ld\\t%2,%1-%S1(%2)\;daddu\\t%2,%2,$31\;j *** 10007,10016 **** { register rtx target = operands[1]; ! if (GET_CODE (target) == SYMBOL_REF) ! return \"%*jal\\t%1\"; ! else if (GET_CODE (target) == CONST_INT) return \"%[li\\t%@,%1\\n\\t%*jal\\t%4,%@%]\"; else return \"%*jal\\t%4,%1\"; }" --- 10007,10016 ---- { register rtx target = operands[1]; ! if (GET_CODE (target) == CONST_INT) return \"%[li\\t%@,%1\\n\\t%*jal\\t%4,%@%]\"; + else if (CONSTANT_ADDRESS_P (target)) + return \"%*jal\\t%1\"; else return \"%*jal\\t%4,%1\"; }" *************** ld\\t%2,%1-%S1(%2)\;daddu\\t%2,%2,$31\;j *** 10030,10044 **** { register rtx target = operands[1]; ! if (GET_CODE (target) == SYMBOL_REF) { if (GET_MODE (target) == SImode) return \"la\\t%^,%1\\n\\tjal\\t%4,%^\"; else return \"la\\t%^,%1\\n\\tjal\\t%4,%^\"; } - else if (GET_CODE (target) == CONST_INT) - return \"li\\t%^,%1\\n\\tjal\\t%4,%^\"; else if (REGNO (target) != PIC_FUNCTION_ADDR_REGNUM) return \"move\\t%^,%1\\n\\tjal\\t%4,%^\"; else --- 10030,10044 ---- { register rtx target = operands[1]; ! if (GET_CODE (target) == CONST_INT) ! return \"li\\t%^,%1\\n\\tjal\\t%4,%^\"; ! else if (CONSTANT_ADDRESS_P (target)) { if (GET_MODE (target) == SImode) return \"la\\t%^,%1\\n\\tjal\\t%4,%^\"; else return \"la\\t%^,%1\\n\\tjal\\t%4,%^\"; } else if (REGNO (target) != PIC_FUNCTION_ADDR_REGNUM) return \"move\\t%^,%1\\n\\tjal\\t%4,%^\"; else diff -Nrc3pad gcc-3.0.2/gcc/config/rs6000/aix.h gcc-3.0.3/gcc/config/rs6000/aix.h *** gcc-3.0.2/gcc/config/rs6000/aix.h Fri May 25 14:16:12 2001 --- gcc-3.0.3/gcc/config/rs6000/aix.h Fri Nov 9 15:00:30 2001 *************** toc_section () \ *** 591,596 **** --- 591,602 ---- putc ('\n', ASM_OUT_FILE); \ } while (0) + /* Define the name of the section to use for the exception tables. + TODO: test and see if we can use read_only_data_section, if so, + remove this. */ + + #define EXCEPTION_SECTION data_section + /* __throw will restore its own return address to be the same as the return address of the function that the throw is being made to. This is unfortunate, because we want to check the original diff -Nrc3pad gcc-3.0.2/gcc/config/rs6000/netbsd.h gcc-3.0.3/gcc/config/rs6000/netbsd.h *** gcc-3.0.2/gcc/config/rs6000/netbsd.h Wed Dec 31 16:00:00 1969 --- gcc-3.0.3/gcc/config/rs6000/netbsd.h Sat Oct 27 11:59:58 2001 *************** *** 0 **** --- 1,61 ---- + /* Definitions of target machine for GNU compiler, + for PowerPC NetBSD systems. + Copyright 2001 Free Software Foundation, Inc. + + This file is part of GNU CC. + + GNU CC is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + GNU CC is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with GNU CC; see the file COPYING. If not, write to + the Free Software Foundation, 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + + /* Under NetBSD, the normal location of the various *crt*.o files is + the /usr/lib directory [from config/netbsd.h]. */ + + #undef STANDARD_STARTFILE_PREFIX + #define STANDARD_STARTFILE_PREFIX "/usr/lib/" + + /* FIXME: Should this macro be treated the same as for the other + spec's? */ + /* NOTE: -dc and -dp are equivalent yet NetBSD's CC passes both both! + NetBSD's CC also passes -O1 but we can skip that. NetBSD explictly + sets ``-e _start'', since LD knows this, skip it. */ + + #undef LINK_SHLIB_SPEC + #define LINK_SHLIB_SPEC "\ + %{shared:-shared} \ + %{!shared: %{static:-dc -dp -static}} \ + %{!shared: %{!static:-dc -dp}} \ + " + + /* Override the defaults. */ + #undef LIB_DEFAULT_SPEC + #define LIB_DEFAULT_SPEC "%(lib_netbsd)" + + #undef STARTFILE_DEFAULT_SPEC + #define STARTFILE_DEFAULT_SPEC "%(startfile_netbsd)" + + #undef ENDFILE_DEFAULT_SPEC + #define ENDFILE_DEFAULT_SPEC "%(endfile_netbsd)" + + #undef LINK_START_DEFAULT_SPEC + #define LINK_START_DEFAULT_SPEC "%(link_start_netbsd)" + + #undef LINK_OS_DEFAULT_SPEC + #define LINK_OS_DEFAULT_SPEC "%(link_os_netbsd)" + + #undef CPP_OS_DEFAULT_SPEC + #define CPP_OS_DEFAULT_SPEC "%(cpp_os_netbsd)" + + #undef TARGET_VERSION + #define TARGET_VERSION fprintf (stderr, " (PowerPC NetBSD/ELF)"); diff -Nrc3pad gcc-3.0.2/gcc/config/rs6000/rs6000.c gcc-3.0.3/gcc/config/rs6000/rs6000.c *** gcc-3.0.2/gcc/config/rs6000/rs6000.c Tue Sep 25 10:59:04 2001 --- gcc-3.0.3/gcc/config/rs6000/rs6000.c Wed Dec 12 16:41:22 2001 *************** int rs6000_compare_fp_p; *** 75,81 **** get the address of the GOT section */ int rs6000_pic_labelno; ! #ifdef USING_SVR4_H /* Which abi to adhere to */ const char *rs6000_abi_name = RS6000_ABI_NAME; --- 75,81 ---- get the address of the GOT section */ int rs6000_pic_labelno; ! #ifdef USING_ELFOS_H /* Which abi to adhere to */ const char *rs6000_abi_name = RS6000_ABI_NAME; *************** rs6000_file_start (file, default_cpu) *** 442,448 **** } } ! #ifdef USING_SVR4_H switch (rs6000_sdata) { case SDATA_NONE: fprintf (file, "%s -msdata=none", start); start = ""; break; --- 442,448 ---- } } ! #ifdef USING_ELFOS_H switch (rs6000_sdata) { case SDATA_NONE: fprintf (file, "%s -msdata=none", start); start = ""; break; *************** output_mi_thunk (file, thunk_fndecl, del *** 6952,6958 **** assemble_name (file, buf); putc ('\n', file); text_section (); ! asm_fprintf (file, (TARGET_32BIT) ? "\t{l|lwz} %s," : "\tld %s", r12); assemble_name (file, buf); asm_fprintf (file, "(%s)\n", reg_names[2]); asm_fprintf (file, --- 6952,6958 ---- assemble_name (file, buf); putc ('\n', file); text_section (); ! asm_fprintf (file, (TARGET_32BIT) ? "\t{l|lwz} %s," : "\tld %s,", r12); assemble_name (file, buf); asm_fprintf (file, "(%s)\n", reg_names[2]); asm_fprintf (file, *************** rs6000_longcall_ref (call_ref) *** 7930,7936 **** Do not define this macro if you put all constants in the read-only data section. */ ! #ifdef USING_SVR4_H void rs6000_select_rtx_section (mode, x) --- 7930,7936 ---- Do not define this macro if you put all constants in the read-only data section. */ ! #ifdef USING_ELFOS_H void rs6000_select_rtx_section (mode, x) *************** rs6000_select_section (decl, reloc) *** 7990,7996 **** RELOC indicates whether the initial value of EXP requires link-time relocations. If you do not define this macro, GCC will use the symbol name prefixed by `.' as the section name. Note - this ! macro can now be called for unitialised data items as well as initialised data and functions. */ void --- 7990,7996 ---- RELOC indicates whether the initial value of EXP requires link-time relocations. If you do not define this macro, GCC will use the symbol name prefixed by `.' as the section name. Note - this ! macro can now be called for uninitialized data items as well as initialised data and functions. */ void *************** rs6000_unique_section (decl, reloc) *** 7998,8006 **** tree decl; int reloc; { - int size = int_size_in_bytes (TREE_TYPE (decl)); - int needs_sdata; - int readonly; int len; int sec; const char *name; --- 7998,8003 ---- *************** rs6000_unique_section (decl, reloc) *** 8009,8048 **** static const char *const prefixes[7][2] = { - { ".text.", ".gnu.linkonce.t." }, { ".rodata.", ".gnu.linkonce.r." }, { ".sdata2.", ".gnu.linkonce.s2." }, { ".data.", ".gnu.linkonce.d." }, { ".sdata.", ".gnu.linkonce.s." }, { ".bss.", ".gnu.linkonce.b." }, ! { ".sbss.", ".gnu.linkonce.sb." } }; - - needs_sdata = (TREE_CODE (decl) != FUNCTION_DECL - && size > 0 - && size <= g_switch_value - && rs6000_sdata != SDATA_NONE - && (rs6000_sdata != SDATA_DATA || TREE_PUBLIC (decl))); ! 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 ! readonly = 1; ! if (needs_sdata && rs6000_sdata != SDATA_EABI) ! readonly = 0; ! sec = ((TREE_CODE (decl) == FUNCTION_DECL ? 0 : 1) ! + (readonly ? 0 : 2) ! + (needs_sdata ? 1 : 0) ! + (DECL_INITIAL (decl) == 0 ! || DECL_INITIAL (decl) == error_mark_node) ? 4 : 0); STRIP_NAME_ENCODING (name, IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl))); prefix = prefixes[sec][DECL_ONE_ONLY (decl)]; --- 8006,8059 ---- static const char *const prefixes[7][2] = { { ".rodata.", ".gnu.linkonce.r." }, { ".sdata2.", ".gnu.linkonce.s2." }, { ".data.", ".gnu.linkonce.d." }, { ".sdata.", ".gnu.linkonce.s." }, { ".bss.", ".gnu.linkonce.b." }, ! { ".sbss.", ".gnu.linkonce.sb." }, ! { ".text.", ".gnu.linkonce.t." } }; ! if (TREE_CODE (decl) == FUNCTION_DECL) ! sec = 6; else ! { ! int readonly; ! 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 ! && size <= g_switch_value ! && rs6000_sdata != SDATA_NONE ! && (rs6000_sdata != SDATA_DATA || TREE_PUBLIC (decl))); ! ! if (DECL_INITIAL (decl) == 0 ! || DECL_INITIAL (decl) == error_mark_node) ! sec = 4; ! else if (! readonly) ! sec = 2; ! else ! sec = 0; ! ! if (needs_sdata) ! { ! /* .sdata2 is only for EABI. */ ! if (sec == 0 && rs6000_sdata != SDATA_EABI) ! sec = 2; ! sec += 1; ! } ! } STRIP_NAME_ENCODING (name, IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl))); prefix = prefixes[sec][DECL_ONE_ONLY (decl)]; *************** rs6000_encode_section_info (decl) *** 8132,8138 **** } } ! #endif /* USING_SVR4_H */ /* Return a REG that occurs in ADDR with coefficient 1. --- 8143,8149 ---- } } ! #endif /* USING_ELFOS_H */ /* Return a REG that occurs in ADDR with coefficient 1. diff -Nrc3pad gcc-3.0.2/gcc/config/rs6000/rs6000.h gcc-3.0.3/gcc/config/rs6000/rs6000.h *** gcc-3.0.2/gcc/config/rs6000/rs6000.h Mon Sep 10 11:06:28 2001 --- gcc-3.0.3/gcc/config/rs6000/rs6000.h Fri Nov 9 15:00:30 2001 *************** extern int rs6000_compare_fp_p; *** 2308,2319 **** #define TARGET_MEM_FUNCTIONS - /* Define the name of the section to use for the exception tables. - TODO: test and see if we can use read_only_data_section, if so, - remove this. */ - - #define EXCEPTION_SECTION data_section - /* Flag to say the TOC is initialized */ extern int toc_initialized; --- 2308,2313 ---- diff -Nrc3pad gcc-3.0.2/gcc/config/rs6000/rs6000.md gcc-3.0.3/gcc/config/rs6000/rs6000.md *** gcc-3.0.2/gcc/config/rs6000/rs6000.md Mon Sep 10 11:06:29 2001 --- gcc-3.0.3/gcc/config/rs6000/rs6000.md Mon Nov 5 18:11:00 2001 *************** operands[2] = GEN_INT (INTVAL (operands[ *** 9115,9122 **** ;; Code to initialize the TOC register... (define_insn "load_toc_aix_si" ! [(set (match_operand:SI 0 "register_operand" "=r") ! (unspec:SI [(const_int 0)] 7))] "! TARGET_ELF && TARGET_32BIT" "* { --- 9115,9123 ---- ;; Code to initialize the TOC register... (define_insn "load_toc_aix_si" ! [(parallel [(set (match_operand:SI 0 "register_operand" "=r") ! (unspec:SI [(const_int 0)] 7)) ! (use (reg:SI 2))])] "! TARGET_ELF && TARGET_32BIT" "* { *************** operands[2] = GEN_INT (INTVAL (operands[ *** 9129,9136 **** [(set_attr "type" "load")]) (define_insn "load_toc_aix_di" ! [(set (match_operand:DI 0 "register_operand" "=r") ! (unspec:DI [(const_int 0)] 7))] "! TARGET_ELF && TARGET_64BIT" "* { --- 9130,9138 ---- [(set_attr "type" "load")]) (define_insn "load_toc_aix_di" ! [(parallel [(set (match_operand:DI 0 "register_operand" "=r") ! (unspec:DI [(const_int 0)] 7)) ! (use (reg:DI 2))])] "! TARGET_ELF && TARGET_64BIT" "* { *************** operands[2] = GEN_INT (INTVAL (operands[ *** 12532,12555 **** positive_2 = branch_positive_comparison_operator (operands[3], CCEQmode); if (! positive_1) ! operands[1] = gen_rtx (SImode, ! rs6000_reverse_condition (GET_MODE (operands[2]), GET_CODE (operands[1])), ! operands[2]); else if (GET_MODE (operands[1]) != SImode) ! operands[1] = gen_rtx (SImode, ! GET_CODE (operands[1]), ! operands[2]); if (! positive_2) ! operands[3] = gen_rtx (SImode, ! rs6000_reverse_condition (GET_MODE (operands[4]), GET_CODE (operands[3])), ! operands[4]); else if (GET_MODE (operands[3]) != SImode) ! operands[3] = gen_rtx (SImode, ! GET_CODE (operands[3]), ! operands[4]); if (positive_1 == positive_2) { --- 12534,12557 ---- positive_2 = branch_positive_comparison_operator (operands[3], CCEQmode); if (! positive_1) ! operands[1] = gen_rtx (rs6000_reverse_condition (GET_MODE (operands[2]), GET_CODE (operands[1])), ! SImode, ! operands[2], const0_rtx); else if (GET_MODE (operands[1]) != SImode) ! operands[1] = gen_rtx (GET_CODE (operands[1]), ! SImode, ! operands[2], const0_rtx); if (! positive_2) ! operands[3] = gen_rtx (rs6000_reverse_condition (GET_MODE (operands[4]), GET_CODE (operands[3])), ! SImode, ! operands[4], const0_rtx); else if (GET_MODE (operands[3]) != SImode) ! operands[3] = gen_rtx (GET_CODE (operands[3]), ! SImode, ! operands[4], const0_rtx); if (positive_1 == positive_2) { diff -Nrc3pad gcc-3.0.2/gcc/config/rs6000/sysv4.h gcc-3.0.3/gcc/config/rs6000/sysv4.h *** gcc-3.0.2/gcc/config/rs6000/sysv4.h Sun May 13 00:10:12 2001 --- gcc-3.0.3/gcc/config/rs6000/sysv4.h Fri Nov 9 15:00:31 2001 *************** do { \ *** 197,202 **** --- 197,204 ---- rs6000_current_abi = ABI_AIX; \ else if (!strcmp (rs6000_abi_name, "linux")) \ rs6000_current_abi = ABI_V4; \ + else if (!strcmp (rs6000_abi_name, "netbsd")) \ + rs6000_current_abi = ABI_V4; \ else if (!strcmp (rs6000_abi_name, "solaris")) \ rs6000_current_abi = ABI_SOLARIS; \ else \ *************** do { \ *** 418,430 **** #define MINIMAL_TOC_SECTION_ASM_OP \ ((TARGET_RELOCATABLE || flag_pic) ? "\t.section\t\".got2\",\"aw\"" : "\t.section\t\".got1\",\"aw\"") - /* Put relocatable data in .data, not .rodata so initialized pointers can be updated. */ - /* Override elfos.h definition. */ - #undef CONST_SECTION_ASM_OP - #define CONST_SECTION_ASM_OP \ - ((TARGET_RELOCATABLE || flag_pic) ? "\t.section\t\".data\"\t# .rodata" : "\t.section\t\".rodata\"") - - #define SDATA_SECTION_ASM_OP "\t.section\t\".sdata\",\"aw\"" #define SDATA2_SECTION_ASM_OP "\t.section\t\".sdata2\",\"a\"" #define SBSS_SECTION_ASM_OP \ --- 420,425 ---- *************** do { \ *** 1017,1023 **** #undef TARGET_VERSION #define TARGET_VERSION fprintf (stderr, " (PowerPC System V.4)"); ! #define CPP_PREDEFINES \ "-DPPC -Dunix -D__svr4__ -Asystem=unix -Asystem=svr4 -Acpu=powerpc -Amachine=powerpc" /* Pass various options to the assembler. */ --- 1012,1019 ---- #undef TARGET_VERSION #define TARGET_VERSION fprintf (stderr, " (PowerPC System V.4)"); ! #undef CPP_PREDEFINES ! #define CPP_PREDEFINES \ "-DPPC -Dunix -D__svr4__ -Asystem=unix -Asystem=svr4 -Acpu=powerpc -Amachine=powerpc" /* Pass various options to the assembler. */ *************** do { \ *** 1031,1037 **** %{mlittle} %{mlittle-endian} %{mbig} %{mbig-endian} \ %{!mlittle: %{!mlittle-endian: %{!mbig: %{!mbig-endian: \ %{mcall-solaris: -mlittle -msolaris} \ ! %{mcall-linux: -mbig} }}}}" #define CC1_ENDIAN_BIG_SPEC "" --- 1027,1034 ---- %{mlittle} %{mlittle-endian} %{mbig} %{mbig-endian} \ %{!mlittle: %{!mlittle-endian: %{!mbig: %{!mbig-endian: \ %{mcall-solaris: -mlittle -msolaris} \ ! %{mcall-linux: -mbig} \ ! %{mcall-netbsd: -mbig} }}}}" #define CC1_ENDIAN_BIG_SPEC "" *************** do { \ *** 1050,1058 **** %{mcall-aixdesc: -mbig %(cc1_endian_big) } \ %{mcall-solaris: -mlittle %(cc1_endian_little) } \ %{mcall-linux: -mbig %(cc1_endian_big) } \ ! %{!mcall-aixdesc: %{!mcall-solaris: %{!mcall-linux: \ %(cc1_endian_default) \ ! }}} \ }}}} \ %{mcall-solaris: -mregnames } \ %{mno-sdata: -msdata=none } \ --- 1047,1056 ---- %{mcall-aixdesc: -mbig %(cc1_endian_big) } \ %{mcall-solaris: -mlittle %(cc1_endian_little) } \ %{mcall-linux: -mbig %(cc1_endian_big) } \ ! %{mcall-netbsd: -mbig %(cc1_endian_big) } \ ! %{!mcall-aixdesc: %{!mcall-solaris: %{!mcall-linux: %{!mcall-netbsd: \ %(cc1_endian_default) \ ! }}}} \ }}}} \ %{mcall-solaris: -mregnames } \ %{mno-sdata: -msdata=none } \ *************** do { \ *** 1060,1066 **** %{!meabi: %{!mno-eabi: \ %{mrelocatable: -meabi } \ %{mcall-solaris: -mno-eabi } \ ! %{mcall-linux: -mno-eabi }}} \ %{msdata: -msdata=default} \ %{mno-sdata: -msdata=none} \ %{profile: -p}" --- 1058,1065 ---- %{!meabi: %{!mno-eabi: \ %{mrelocatable: -meabi } \ %{mcall-solaris: -mno-eabi } \ ! %{mcall-linux: -mno-eabi } \ ! %{mcall-netbsd: -mno-eabi }}} \ %{msdata: -msdata=default} \ %{mno-sdata: -msdata=none} \ %{profile: -p}" *************** do { \ *** 1089,1096 **** %{mmvme: %(link_start_mvme) } \ %{msim: %(link_start_sim) } \ %{mcall-linux: %(link_start_linux) } \ %{mcall-solaris: %(link_start_solaris) } \ ! %{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mcall-linux: %{!mcall-solaris: %(link_start_default) }}}}}}" #define LINK_START_DEFAULT_SPEC "" --- 1088,1096 ---- %{mmvme: %(link_start_mvme) } \ %{msim: %(link_start_sim) } \ %{mcall-linux: %(link_start_linux) } \ + %{mcall-netbsd: %(link_start_netbsd) } \ %{mcall-solaris: %(link_start_solaris) } \ ! %{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mcall-linux: %{!mcall-netbsd: %{!mcall-solaris: %(link_start_default) }}}}}}}" #define LINK_START_DEFAULT_SPEC "" *************** do { \ *** 1143,1150 **** %{mmvme: %(link_os_mvme) } \ %{msim: %(link_os_sim) } \ %{mcall-linux: %(link_os_linux) } \ %{mcall-solaris: %(link_os_solaris) } \ ! %{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mcall-linux: %{!mcall-solaris: %(link_os_default) }}}}}}" #define LINK_OS_DEFAULT_SPEC "" --- 1143,1151 ---- %{mmvme: %(link_os_mvme) } \ %{msim: %(link_os_sim) } \ %{mcall-linux: %(link_os_linux) } \ + %{mcall-netbsd: %(link_os_netbsd) } \ %{mcall-solaris: %(link_os_solaris) } \ ! %{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mcall-linux: %{!mcall-netbsd: %{!mcall-solaris: %(link_os_default) }}}}}}}" #define LINK_OS_DEFAULT_SPEC "" *************** do { \ *** 1191,1198 **** %{!mlittle: %{!mlittle-endian: %{!mbig: %{!mbig-endian: \ %{mcall-solaris: %(cpp_endian_solaris) } \ %{mcall-linux: %(cpp_endian_big) } \ %{mcall-aixdesc: %(cpp_endian_big) } \ ! %{!mcall-solaris: %{!mcall-linux: %{!mcall-aixdesc: %(cpp_endian_default) }}}}}}}" #define CPP_ENDIAN_DEFAULT_SPEC "%(cpp_endian_big)" --- 1192,1200 ---- %{!mlittle: %{!mlittle-endian: %{!mbig: %{!mbig-endian: \ %{mcall-solaris: %(cpp_endian_solaris) } \ %{mcall-linux: %(cpp_endian_big) } \ + %{mcall-netbsd: %(cpp_endian_big) } \ %{mcall-aixdesc: %(cpp_endian_big) } \ ! %{!mcall-solaris: %{!mcall-linux: %{!mcall-netbsd: %{!mcall-aixdesc: %(cpp_endian_default) }}}}}}}}" #define CPP_ENDIAN_DEFAULT_SPEC "%(cpp_endian_big)" *************** do { \ *** 1204,1211 **** %{mmvme: %(cpp_os_mvme) } \ %{msim: %(cpp_os_sim) } \ %{mcall-linux: %(cpp_os_linux) } \ %{mcall-solaris: %(cpp_os_solaris) } \ ! %{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mcall-linux: %{!mcall-solaris: %(cpp_os_default) }}}}}}" #define CPP_OS_DEFAULT_SPEC "" --- 1206,1214 ---- %{mmvme: %(cpp_os_mvme) } \ %{msim: %(cpp_os_sim) } \ %{mcall-linux: %(cpp_os_linux) } \ + %{mcall-netbsd: %(cpp_os_netbsd) } \ %{mcall-solaris: %(cpp_os_solaris) } \ ! %{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mcall-linux: %{!mcall-netbsd: %{!mcall-solaris: %(cpp_os_default) }}}}}}}" #define CPP_OS_DEFAULT_SPEC "" *************** do { \ *** 1217,1224 **** %{mmvme: %(startfile_mvme) } \ %{msim: %(startfile_sim) } \ %{mcall-linux: %(startfile_linux) } \ %{mcall-solaris: %(startfile_solaris) } \ ! %{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mcall-linux: %{!mcall-solaris: %(startfile_default) }}}}}}" #define STARTFILE_DEFAULT_SPEC "" --- 1220,1228 ---- %{mmvme: %(startfile_mvme) } \ %{msim: %(startfile_sim) } \ %{mcall-linux: %(startfile_linux) } \ + %{mcall-netbsd: %(startfile_netbsd) } \ %{mcall-solaris: %(startfile_solaris) } \ ! %{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mcall-linux: %{!mcall-netbsd: %{!mcall-solaris: %(startfile_default) }}}}}}}" #define STARTFILE_DEFAULT_SPEC "" *************** do { \ *** 1230,1237 **** %{mmvme: %(lib_mvme) } \ %{msim: %(lib_sim) } \ %{mcall-linux: %(lib_linux) } \ %{mcall-solaris: %(lib_solaris) } \ ! %{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mcall-linux: %{!mcall-solaris: %(lib_default) }}}}}}" #define LIB_DEFAULT_SPEC "" --- 1234,1242 ---- %{mmvme: %(lib_mvme) } \ %{msim: %(lib_sim) } \ %{mcall-linux: %(lib_linux) } \ + %{mcall-netbsd: %(lib_netbsd) } \ %{mcall-solaris: %(lib_solaris) } \ ! %{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mcall-linux: %{!mcall-netbsd: %{!mcall-solaris: %(lib_default) }}}}}}}" #define LIB_DEFAULT_SPEC "" *************** do { \ *** 1243,1251 **** %{mmvme: %(endfile_mvme)} \ %{msim: %(endfile_sim)} \ %{mcall-linux: %(endfile_linux) } \ %{mcall-solaris: %(endfile_solaris)} \ %{mvxworks: %(endfile_vxworks) } \ ! %{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mcall-linux: %{!mcall-solaris: %{!mvxworks: %(endfile_default) }}}}}}}" #define ENDFILE_DEFAULT_SPEC "" --- 1248,1257 ---- %{mmvme: %(endfile_mvme)} \ %{msim: %(endfile_sim)} \ %{mcall-linux: %(endfile_linux) } \ + %{mcall-netbsd: %(endfile_netbsd) } \ %{mcall-solaris: %(endfile_solaris)} \ %{mvxworks: %(endfile_vxworks) } \ ! %{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mcall-linux: %{!mcall-netbsd: %{!mcall-solaris: %{!mvxworks: %(endfile_default) }}}}}}}}" #define ENDFILE_DEFAULT_SPEC "" *************** do { \ *** 1341,1346 **** --- 1347,1375 ---- -Asystem=unix -Asystem=posix %{pthread:-D_REENTRANT}" #endif + /* NetBSD support. */ + #define LIB_NETBSD_SPEC "\ + %{profile:-lgmon -lc_p} %{!profile:-lc}" + + #define STARTFILE_NETBSD_SPEC "\ + ncrti.o%s crt0.o%s \ + %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}" + + #define ENDFILE_NETBSD_SPEC "\ + %{!shared:crtend.o%s} %{shared:crtendS.o%s} \ + ncrtn.o%s" + + #define LINK_START_NETBSD_SPEC "\ + " + + #define LINK_OS_NETBSD_SPEC "\ + %{!shared: %{!static: \ + %{rdynamic:-export-dynamic} \ + %{!dynamic-linker:-dynamic-linker /usr/libexec/ld.elf_so}}}" + + #define CPP_OS_NETBSD_SPEC "\ + -D__powerpc__ -D__NetBSD__ -D__ELF__ -D__KPRINTF_ATTRIBUTE__" + /* Solaris support. */ /* For Solaris, Gcc automatically adds in one of the files /usr/ccs/lib/values-Xc.o, /usr/ccs/lib/values-Xa.o, or *************** do { \ *** 1436,1441 **** --- 1465,1471 ---- { "lib_mvme", LIB_MVME_SPEC }, \ { "lib_sim", LIB_SIM_SPEC }, \ { "lib_linux", LIB_LINUX_SPEC }, \ + { "lib_netbsd", LIB_NETBSD_SPEC }, \ { "lib_solaris", LIB_SOLARIS_SPEC }, \ { "lib_vxworks", LIB_VXWORKS_SPEC }, \ { "lib_default", LIB_DEFAULT_SPEC }, \ *************** do { \ *** 1444,1449 **** --- 1474,1480 ---- { "startfile_mvme", STARTFILE_MVME_SPEC }, \ { "startfile_sim", STARTFILE_SIM_SPEC }, \ { "startfile_linux", STARTFILE_LINUX_SPEC }, \ + { "startfile_netbsd", STARTFILE_NETBSD_SPEC }, \ { "startfile_solaris", STARTFILE_SOLARIS_SPEC }, \ { "startfile_vxworks", STARTFILE_VXWORKS_SPEC }, \ { "startfile_default", STARTFILE_DEFAULT_SPEC }, \ *************** do { \ *** 1452,1457 **** --- 1483,1489 ---- { "endfile_mvme", ENDFILE_MVME_SPEC }, \ { "endfile_sim", ENDFILE_SIM_SPEC }, \ { "endfile_linux", ENDFILE_LINUX_SPEC }, \ + { "endfile_netbsd", ENDFILE_NETBSD_SPEC }, \ { "endfile_solaris", ENDFILE_SOLARIS_SPEC }, \ { "endfile_vxworks", ENDFILE_VXWORKS_SPEC }, \ { "endfile_default", ENDFILE_DEFAULT_SPEC }, \ *************** do { \ *** 1464,1469 **** --- 1496,1502 ---- { "link_start_mvme", LINK_START_MVME_SPEC }, \ { "link_start_sim", LINK_START_SIM_SPEC }, \ { "link_start_linux", LINK_START_LINUX_SPEC }, \ + { "link_start_netbsd", LINK_START_NETBSD_SPEC }, \ { "link_start_solaris", LINK_START_SOLARIS_SPEC }, \ { "link_start_vxworks", LINK_START_VXWORKS_SPEC }, \ { "link_start_default", LINK_START_DEFAULT_SPEC }, \ *************** do { \ *** 1473,1478 **** --- 1506,1512 ---- { "link_os_mvme", LINK_OS_MVME_SPEC }, \ { "link_os_sim", LINK_OS_SIM_SPEC }, \ { "link_os_linux", LINK_OS_LINUX_SPEC }, \ + { "link_os_netbsd", LINK_OS_NETBSD_SPEC }, \ { "link_os_solaris", LINK_OS_SOLARIS_SPEC }, \ { "link_os_vxworks", LINK_OS_VXWORKS_SPEC }, \ { "link_os_default", LINK_OS_DEFAULT_SPEC }, \ *************** do { \ *** 1489,1494 **** --- 1523,1529 ---- { "cpp_os_mvme", CPP_OS_MVME_SPEC }, \ { "cpp_os_sim", CPP_OS_SIM_SPEC }, \ { "cpp_os_linux", CPP_OS_LINUX_SPEC }, \ + { "cpp_os_netbsd", CPP_OS_NETBSD_SPEC }, \ { "cpp_os_solaris", CPP_OS_SOLARIS_SPEC }, \ { "cpp_os_vxworks", CPP_OS_VXWORKS_SPEC }, \ { "cpp_os_default", CPP_OS_DEFAULT_SPEC }, *************** do { \ *** 1580,1582 **** --- 1615,1627 ---- = init_one_libfunc (SQRTTF_LIBCALL); \ } \ } while (0) + + /* 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. */ + #define ASM_PREFERRED_EH_DATA_FORMAT(CODE,GLOBAL) \ + ((flag_pic || TARGET_RELOCATABLE) \ + ? (((GLOBAL) ? DW_EH_PE_indirect : 0) | DW_EH_PE_pcrel | DW_EH_PE_sdata4) \ + : DW_EH_PE_absptr) + + #define EXCEPTION_SECTION readonly_data_section diff -Nrc3pad gcc-3.0.2/gcc/config/rs6000/t-ppccomm gcc-3.0.3/gcc/config/rs6000/t-ppccomm *** gcc-3.0.2/gcc/config/rs6000/t-ppccomm Mon Apr 9 16:52:50 2001 --- gcc-3.0.3/gcc/config/rs6000/t-ppccomm Sat Oct 27 11:59:59 2001 *************** MULTILIB_MATCHES_FLOAT = msoft-float=mcp *** 39,54 **** msoft-float=mcpu?823 \ msoft-float=mcpu?860 MULTILIB_MATCHES_ENDIAN = mlittle=mlittle-endian mbig=mbig-endian ! MULTILIB_MATCHES_SYSV = mcall-sysv=mcall-sysv-eabi mcall-sysv=mcall-sysv-noeabi mcall-sysv=mcall-linux LIBGCC = stmp-multilib INSTALL_LIBGCC = install-multilib EXTRA_MULTILIB_PARTS = crtbegin$(objext) crtend$(objext) \ crtbeginS$(objext) crtendS$(objext) \ ! ecrti$(objext) ecrtn$(objext) scrt0$(objext) scrti$(objext) scrtn$(objext) ! # We build {e,s}crti.o, {e,s}crtn.o, and scrt0.o which serve to add begin and ! # end labels to all of the special sections used when we link using gcc. # Assemble startup files. ecrti.S: $(srcdir)/config/rs6000/eabi-ci.asm --- 39,57 ---- msoft-float=mcpu?823 \ msoft-float=mcpu?860 MULTILIB_MATCHES_ENDIAN = mlittle=mlittle-endian mbig=mbig-endian ! MULTILIB_MATCHES_SYSV = mcall-sysv=mcall-sysv-eabi mcall-sysv=mcall-sysv-noeabi mcall-sysv=mcall-linux mcall-sysv=mcall-netbsd LIBGCC = stmp-multilib INSTALL_LIBGCC = install-multilib EXTRA_MULTILIB_PARTS = crtbegin$(objext) crtend$(objext) \ crtbeginS$(objext) crtendS$(objext) \ ! ecrti$(objext) ecrtn$(objext) \ ! scrt0$(objext) scrti$(objext) scrtn$(objext) \ ! ncrti$(objext) ncrtn$(objext) ! # We build {e,s}crti.o, {e,s}crtn.o, and {s,n}crt0.o which serve to ! # add begin and end labels to all of the special sections used when we ! # link using gcc. # Assemble startup files. ecrti.S: $(srcdir)/config/rs6000/eabi-ci.asm *************** ecrti.S: $(srcdir)/config/rs6000/eabi-ci *** 57,62 **** --- 60,73 ---- ecrtn.S: $(srcdir)/config/rs6000/eabi-cn.asm cat $(srcdir)/config/rs6000/eabi-cn.asm >ecrtn.S + ncrti.S: $(srcdir)/config/rs6000/sol-ci.asm + sed -e 's/__init/_init/' -e 's/__fini/_fini/' \ + $(srcdir)/config/rs6000/sol-ci.asm >ncrti.S + + ncrtn.S: $(srcdir)/config/rs6000/sol-cn.asm + sed -e 's/__init/_init/' -e 's/__fini/_fini/' \ + $(srcdir)/config/rs6000/sol-cn.asm >ncrtn.S + scrti.S: $(srcdir)/config/rs6000/sol-ci.asm cat $(srcdir)/config/rs6000/sol-ci.asm >scrti.S *************** $(T)ecrti$(objext): ecrti.S *** 72,77 **** --- 83,94 ---- $(T)ecrtn$(objext): ecrtn.S $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c ecrtn.S -o $(T)ecrtn$(objext) + + $(T)ncrti$(objext): ncrti.S + $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c ncrti.S -o $(T)ncrti$(objext) + + $(T)ncrtn$(objext): ncrtn.S + $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c ncrtn.S -o $(T)ncrtn$(objext) $(T)scrti$(objext): scrti.S $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c scrti.S -o $(T)scrti$(objext) diff -Nrc3pad gcc-3.0.2/gcc/config/rs6000/tramp.asm gcc-3.0.3/gcc/config/rs6000/tramp.asm *** gcc-3.0.2/gcc/config/rs6000/tramp.asm Wed Mar 15 19:16:41 2000 --- gcc-3.0.3/gcc/config/rs6000/tramp.asm Sat Dec 1 05:29:21 2001 *************** FUNC_START(__trampoline_setup) *** 104,109 **** blr .Labort: ! bl FUNC_NAME(abort) FUNC_END(__trampoline_setup) --- 104,109 ---- blr .Labort: ! bl JUMP_TARGET(abort) FUNC_END(__trampoline_setup) diff -Nrc3pad gcc-3.0.2/gcc/config/sparc/sparc.c gcc-3.0.3/gcc/config/sparc/sparc.c *** gcc-3.0.2/gcc/config/sparc/sparc.c Sun May 13 00:10:12 2001 --- gcc-3.0.3/gcc/config/sparc/sparc.c Fri Nov 30 15:27:26 2001 *************** enum sparc_mode_class { *** 2982,2988 **** #define DF_MODES (S_MODES | D_MODES) /* Modes for double-float only quantities. */ ! #define DF_MODES_NO_S (D_MODES) /* Modes for quad-float only quantities. */ #define TF_ONLY_MODES (1 << (int) TF_MODE) --- 2982,2988 ---- #define DF_MODES (S_MODES | D_MODES) /* Modes for double-float only quantities. */ ! #define DF_MODES_NO_S ((1 << (int) D_MODE) | (1 << (int) DF_MODE)) /* Modes for quad-float only quantities. */ #define TF_ONLY_MODES (1 << (int) TF_MODE) diff -Nrc3pad gcc-3.0.2/gcc/config/sparc/sparc.md gcc-3.0.3/gcc/config/sparc/sparc.md *** gcc-3.0.2/gcc/config/sparc/sparc.md Wed Jul 25 06:35:00 2001 --- gcc-3.0.3/gcc/config/sparc/sparc.md Fri Nov 30 11:44:02 2001 *************** *** 3269,3274 **** --- 3269,3279 ---- && fp_zero_operand (operands[1], DFmode)) goto movdf_is_ok; + /* We are able to build any DF constant in integer registers. */ + if (REGNO (operands[0]) < 32 + && (reload_completed || reload_in_progress)) + goto movdf_is_ok; + operands[1] = validize_mem (force_const_mem (GET_MODE (operands[0]), operands[1])); } diff -Nrc3pad gcc-3.0.2/gcc/config.gcc gcc-3.0.3/gcc/config.gcc *** gcc-3.0.2/gcc/config.gcc Tue Oct 9 17:25:25 2001 --- gcc-3.0.3/gcc/config.gcc Sat Nov 17 16:29:45 2001 *************** clipper-intergraph-clix*) *** 667,673 **** tm_file="${tm_file} svr3.h clipper/clix.h" xm_file=clipper/xm-clix.h xmake_file=clipper/x-clix - extra_headers=va-clipper.h extra_parts="crtbegin.o crtend.o" install_headers_dir=install-headers-cpio ;; --- 667,672 ---- *************** i960-*-*) # Default i960 environment. *** 1623,1629 **** use_collect2=yes ;; ia64*-*-elf*) ! tm_file=ia64/elf.h tmake_file="ia64/t-ia64" target_cpu_default="0" if test x$gas = xyes --- 1622,1628 ---- use_collect2=yes ;; ia64*-*-elf*) ! tm_file="${tm_file} elfos.h ia64/sysv4.h ia64/elf.h" tmake_file="ia64/t-ia64" target_cpu_default="0" if test x$gas = xyes *************** ia64*-*-elf*) *** 1636,1643 **** fi float_format=i386 ;; ia64*-*-linux*) ! tm_file=ia64/linux.h tmake_file="t-slibgcc-elf-ver t-linux ia64/t-ia64 ia64/t-glibc" target_cpu_default="MASK_GNU_AS|MASK_GNU_LD" if test x$enable_threads = xyes; then --- 1635,1649 ---- fi float_format=i386 ;; + ia64*-*-freebsd*) + tm_file="${tm_file} ${fbsd_tm_file} elfos.h ia64/sysv4.h ia64/freebsd.h" + target_cpu_default="MASK_GNU_AS|MASK_GNU_LD" + tmake_file="${tmake_file} ia64/t-ia64" + xmake_file=none + float_format=i386 + ;; ia64*-*-linux*) ! tm_file="${tm_file} linux.h ia64/sysv4.h ia64/linux.h" tmake_file="t-slibgcc-elf-ver t-linux ia64/t-ia64 ia64/t-glibc" target_cpu_default="MASK_GNU_AS|MASK_GNU_LD" if test x$enable_threads = xyes; then *************** powerpc-*-sysv*) *** 2788,2793 **** --- 2794,2807 ---- extra_headers=ppc-asm.h tmake_file="rs6000/t-ppcos rs6000/t-ppccomm" xmake_file=rs6000/x-sysv4 + ;; + powerpc-*-netbsd*) + tm_file="${tm_file} svr4.h rs6000/sysv4.h rs6000/netbsd.h" + xm_file=rs6000/xm-sysv4.h + xm_defines=POSIX + extra_headers=ppc-asm.h + tmake_file="rs6000/t-ppcos rs6000/t-ppccomm" + xmake_file=none ;; powerpc-*-chorusos*) tm_file="${tm_file} svr4.h rs6000/sysv4.h rs6000/chorus.h" diff -Nrc3pad gcc-3.0.2/gcc/config.in gcc-3.0.3/gcc/config.in *** gcc-3.0.2/gcc/config.in Tue Oct 23 10:56:01 2001 --- gcc-3.0.3/gcc/config.in Thu Dec 20 11:55:55 2001 *************** *** 1,4 **** ! /* config.in. Generated automatically from configure.in by autoheader. */ /* Define if using alloca.c. */ #undef C_ALLOCA --- 1,4 ---- ! /* config.in. Generated automatically from configure.in by autoheader 2.13. */ /* Define if using alloca.c. */ #undef C_ALLOCA *************** *** 101,106 **** --- 101,109 ---- /* Define to `int' if doesn't define. */ #undef ssize_t + + /* Define if cpp should also search $prefix/include. */ + #undef PREFIX_INCLUDE_DIR /* Define if you have the __argz_count function. */ #undef HAVE___ARGZ_COUNT diff -Nrc3pad gcc-3.0.2/gcc/configure gcc-3.0.3/gcc/configure *** gcc-3.0.2/gcc/configure Wed Aug 1 11:17:00 2001 --- gcc-3.0.3/gcc/configure Tue Dec 4 11:42:41 2001 *************** ${CONFIG_SHELL-/bin/sh} $srcdir/configur *** 7214,7219 **** --- 7214,7220 ---- + # Echo that links are built if test x$host = x$target then *************** s%@tm_file@%$tm_file%g *** 7521,7526 **** --- 7522,7528 ---- s%@tm_p_file_list@%$tm_p_file_list%g s%@tm_p_file@%$tm_p_file%g s%@xm_file@%$xm_file%g + s%@xm_defines@%$xm_defines%g s%@will_use_collect2@%$will_use_collect2%g s%@c_target_objs@%$c_target_objs%g s%@cxx_target_objs@%$cxx_target_objs%g *************** esac *** 7839,7845 **** # This is virtually a duplicate of what happens in configure.lang; we do # an extra check to make sure this only happens if ln -s can be used. if test "$symbolic_link" = "ln -s"; then ! for d in .. ${subdirs} ; do if test $d != ..; then STARTDIR=`pwd` cd $d --- 7841,7847 ---- # This is virtually a duplicate of what happens in configure.lang; we do # an extra check to make sure this only happens if ln -s can be used. if test "$symbolic_link" = "ln -s"; then ! for d in .. ${subdirs} fixinc ; do if test $d != ..; then STARTDIR=`pwd` cd $d diff -Nrc3pad gcc-3.0.2/gcc/configure.in gcc-3.0.3/gcc/configure.in *** gcc-3.0.2/gcc/configure.in Tue Jul 24 18:46:30 2001 --- gcc-3.0.3/gcc/configure.in Tue Dec 4 11:42:38 2001 *************** if test x"$gcc_cv_as_dwarf2_debug_line" *** 1612,1617 **** --- 1612,1621 ---- fi AC_MSG_RESULT($gcc_cv_as_dwarf2_debug_line) + if test "$prefix" != "/usr" && test "$prefix" != "/usr/local" ; then + AC_DEFINE_UNQUOTED(PREFIX_INCLUDE_DIR, "$prefix/include") + fi + # Figure out what language subdirectories are present. # Look if the user specified --enable-languages="..."; if not, use # the environment variable $LANGUAGES if defined. $LANGUAGES might *************** AC_SUBST(tm_file) *** 2026,2031 **** --- 2030,2036 ---- AC_SUBST(tm_p_file_list) AC_SUBST(tm_p_file) AC_SUBST(xm_file) + AC_SUBST(xm_defines) AC_SUBST(will_use_collect2) AC_SUBST(c_target_objs) AC_SUBST(cxx_target_objs) *************** esac *** 2088,2094 **** # This is virtually a duplicate of what happens in configure.lang; we do # an extra check to make sure this only happens if ln -s can be used. if test "$symbolic_link" = "ln -s"; then ! for d in .. ${subdirs} ; do if test $d != ..; then STARTDIR=`pwd` cd $d --- 2093,2099 ---- # This is virtually a duplicate of what happens in configure.lang; we do # an extra check to make sure this only happens if ln -s can be used. if test "$symbolic_link" = "ln -s"; then ! for d in .. ${subdirs} fixinc ; do if test $d != ..; then STARTDIR=`pwd` cd $d diff -Nrc3pad gcc-3.0.2/gcc/cppdefault.c gcc-3.0.3/gcc/cppdefault.c *** gcc-3.0.2/gcc/cppdefault.c Mon May 14 12:46:13 2001 --- gcc-3.0.3/gcc/cppdefault.c Wed Nov 7 10:42:04 2001 *************** const struct default_include cpp_include *** 47,52 **** --- 47,55 ---- /* /usr/local/include comes before the fixincluded header files. */ { LOCAL_INCLUDE_DIR, 0, 0, 1 }, #endif + #ifdef PREFIX_INCLUDE_DIR + { PREFIX_INCLUDE_DIR, 0, 0, 1 }, + #endif #ifdef GCC_INCLUDE_DIR /* This is the dir for fixincludes and for gcc's private headers. */ { GCC_INCLUDE_DIR, "GCC", 0, 0 }, diff -Nrc3pad gcc-3.0.2/gcc/cppinit.c gcc-3.0.3/gcc/cppinit.c *** gcc-3.0.2/gcc/cppinit.c Sat Jun 9 16:05:32 2001 --- gcc-3.0.3/gcc/cppinit.c Sat Nov 24 05:44:14 2001 *************** init_dependency_output (pfile) *** 1781,1792 **** } /* If dependencies go to standard output, or -MG is used, we should ! suppress output. The user may be requesting other stuff to ! stdout, with -dM, -v etc. We let them shoot themselves in the ! foot. */ if (CPP_OPTION (pfile, deps_file) == 0 || CPP_OPTION (pfile, print_deps_missing_files)) ! CPP_OPTION (pfile, no_output) = 1; } static void --- 1781,1794 ---- } /* If dependencies go to standard output, or -MG is used, we should ! suppress output, including -dM, -dI etc. */ if (CPP_OPTION (pfile, deps_file) == 0 || CPP_OPTION (pfile, print_deps_missing_files)) ! { ! CPP_OPTION (pfile, no_output) = 1; ! CPP_OPTION (pfile, dump_macros) = 0; ! CPP_OPTION (pfile, dump_includes) = 0; ! } } static void diff -Nrc3pad gcc-3.0.2/gcc/cppmacro.c gcc-3.0.3/gcc/cppmacro.c *** gcc-3.0.2/gcc/cppmacro.c Mon Oct 8 14:56:36 2001 --- gcc-3.0.3/gcc/cppmacro.c Sat Nov 24 05:44:13 2001 *************** warn_of_redefinition (pfile, node, macro *** 1180,1188 **** if (node->flags & NODE_WARN) return 1; - if (! CPP_PEDANTIC (pfile)) - return 0; - /* Redefinition of a macro is allowed if and only if the old and new definitions are the same. (6.10.3 paragraph 2). */ macro1 = node->value.macro; --- 1180,1185 ---- diff -Nrc3pad gcc-3.0.2/gcc/cppspec.c gcc-3.0.3/gcc/cppspec.c *** gcc-3.0.2/gcc/cppspec.c Thu Jan 11 14:10:49 2001 --- gcc-3.0.3/gcc/cppspec.c Tue Dec 4 23:19:34 2001 *************** lang_specific_driver (in_argc, in_argv, *** 103,108 **** --- 103,111 ---- int i, j, quote = 0; const char **new_argv; int new_argc; + extern int is_cpp_driver; + + is_cpp_driver = 1; /* First pass. If we see an -S or -c, barf. If we see an input file, turn off read_stdin. If we see a second input file, it is actually diff -Nrc3pad gcc-3.0.2/gcc/dbxout.c gcc-3.0.3/gcc/dbxout.c *** gcc-3.0.2/gcc/dbxout.c Fri Jun 8 11:18:26 2001 --- gcc-3.0.3/gcc/dbxout.c Sun Dec 2 18:38:46 2001 *************** dbxout_type (type, full, show_arg_types) *** 1442,1450 **** have_used_extensions = 1; putc (TREE_VIA_VIRTUAL (child) ? '1' : '0', asmfile); putc (TREE_VIA_PUBLIC (child) ? '2' : '0', asmfile); ! fprintf (asmfile, HOST_WIDE_INT_PRINT_DEC, ! (tree_low_cst (BINFO_OFFSET (child), 0) ! * BITS_PER_UNIT)); fputc (',', asmfile); CHARS (15); dbxout_type (BINFO_TYPE (child), 0, 0); --- 1442,1458 ---- have_used_extensions = 1; putc (TREE_VIA_VIRTUAL (child) ? '1' : '0', asmfile); putc (TREE_VIA_PUBLIC (child) ? '2' : '0', asmfile); ! if (TREE_VIA_VIRTUAL (child) && strcmp (language_string, "GNU C++") == 0) ! /* For a virtual base, print the (negative) offset within ! the vtable where we must look to find the necessary ! adjustment. */ ! fprintf (asmfile, HOST_WIDE_INT_PRINT_DEC, ! (tree_low_cst (BINFO_VPTR_FIELD (child), 0) ! * BITS_PER_UNIT)); ! else ! fprintf (asmfile, HOST_WIDE_INT_PRINT_DEC, ! (tree_low_cst (BINFO_OFFSET (child), 0) ! * BITS_PER_UNIT)); fputc (',', asmfile); CHARS (15); dbxout_type (BINFO_TYPE (child), 0, 0); diff -Nrc3pad gcc-3.0.2/gcc/doc/cpp.1 gcc-3.0.3/gcc/doc/cpp.1 *** gcc-3.0.2/gcc/doc/cpp.1 Tue Oct 23 10:56:01 2001 --- gcc-3.0.3/gcc/doc/cpp.1 Wed Nov 14 14:33:38 2001 *************** *** 1,5 **** ! .\" Automatically generated by Pod::Man version 1.19 ! .\" Fri Oct 12 11:20:12 2001 .\" .\" Standard preamble: .\" ======================================================================== --- 1,5 ---- ! .\" Automatically generated by Pod::Man version 1.22 ! .\" Wed Nov 14 22:27:21 2001 .\" .\" Standard preamble: .\" ======================================================================== *************** *** 131,137 **** .\" ======================================================================== .\" .IX Title "CPP 1" ! .TH CPP 1 "gcc-3.0.2" "2001-10-12" "GNU" .UC .SH "NAME" cpp \- The C Preprocessor --- 131,137 ---- .\" ======================================================================== .\" .IX Title "CPP 1" ! .TH CPP 1 "gcc-3.0.3" "2001-11-14" "GNU" .UC .SH "NAME" cpp \- The C Preprocessor *************** added in the future. *** 427,437 **** \&\fIstandard\fR may be one of: .RS 4 ! .if n .IP """iso9899:1990""" 4 .el .IP "\f(CWiso9899:1990\fR" 4 .IX Item "iso9899:1990" .PD 0 ! .if n .IP """c89""" 4 .el .IP "\f(CWc89\fR" 4 .IX Item "c89" .PD --- 427,437 ---- \&\fIstandard\fR may be one of: .RS 4 ! .ie n .IP """iso9899:1990""" 4 .el .IP "\f(CWiso9899:1990\fR" 4 .IX Item "iso9899:1990" .PD 0 ! .ie n .IP """c89""" 4 .el .IP "\f(CWc89\fR" 4 .IX Item "c89" .PD *************** The \s-1ISO\s0 C standard from 1990. \f *** 439,473 **** this version of the standard. .Sp The \fB\-ansi\fR option is equivalent to \fB\-std=c89\fR. ! .if n .IP """iso9899:199409""" 4 .el .IP "\f(CWiso9899:199409\fR" 4 .IX Item "iso9899:199409" The 1990 C standard, as amended in 1994. ! .if n .IP """iso9899:1999""" 4 .el .IP "\f(CWiso9899:1999\fR" 4 .IX Item "iso9899:1999" .PD 0 ! .if n .IP """c99""" 4 .el .IP "\f(CWc99\fR" 4 .IX Item "c99" ! .if n .IP """iso9899:199x""" 4 .el .IP "\f(CWiso9899:199x\fR" 4 .IX Item "iso9899:199x" ! .if n .IP """c9x""" 4 .el .IP "\f(CWc9x\fR" 4 .IX Item "c9x" .PD The revised \s-1ISO\s0 C standard, published in December 1999. Before publication, this was known as C9X. ! .if n .IP """gnu89""" 4 .el .IP "\f(CWgnu89\fR" 4 .IX Item "gnu89" The 1990 C standard plus \s-1GNU\s0 extensions. This is the default. ! .if n .IP """gnu99""" 4 .el .IP "\f(CWgnu99\fR" 4 .IX Item "gnu99" .PD 0 ! .if n .IP """gnu9x""" 4 .el .IP "\f(CWgnu9x\fR" 4 .IX Item "gnu9x" .PD --- 439,473 ---- this version of the standard. .Sp The \fB\-ansi\fR option is equivalent to \fB\-std=c89\fR. ! .ie n .IP """iso9899:199409""" 4 .el .IP "\f(CWiso9899:199409\fR" 4 .IX Item "iso9899:199409" The 1990 C standard, as amended in 1994. ! .ie n .IP """iso9899:1999""" 4 .el .IP "\f(CWiso9899:1999\fR" 4 .IX Item "iso9899:1999" .PD 0 ! .ie n .IP """c99""" 4 .el .IP "\f(CWc99\fR" 4 .IX Item "c99" ! .ie n .IP """iso9899:199x""" 4 .el .IP "\f(CWiso9899:199x\fR" 4 .IX Item "iso9899:199x" ! .ie n .IP """c9x""" 4 .el .IP "\f(CWc9x\fR" 4 .IX Item "c9x" .PD The revised \s-1ISO\s0 C standard, published in December 1999. Before publication, this was known as C9X. ! .ie n .IP """gnu89""" 4 .el .IP "\f(CWgnu89\fR" 4 .IX Item "gnu89" The 1990 C standard plus \s-1GNU\s0 extensions. This is the default. ! .ie n .IP """gnu99""" 4 .el .IP "\f(CWgnu99\fR" 4 .IX Item "gnu99" .PD 0 ! .ie n .IP """gnu9x""" 4 .el .IP "\f(CWgnu9x\fR" 4 .IX Item "gnu9x" .PD *************** Print out \s-1GNU\s0 \s-1CPP\s0's versio *** 689,694 **** --- 689,695 ---- preprocess as normal. With two dashes, exit immediately. .SH "SEE ALSO" .IX Header "SEE ALSO" + \&\fIgpl\fR\|(7), \fIgfdl\fR\|(7), \fIfsf-funding\fR\|(7), \&\fIgcc\fR\|(1), \fIas\fR\|(1), \fIld\fR\|(1), and the Info entries for \fIcpp\fR, \fIgcc\fR, and \&\fIbinutils\fR. .SH "COPYRIGHT" *************** Free Software Foundation, Inc. *** 700,706 **** Permission is granted to copy, distribute and/or modify this document under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation. A copy of ! the license is included in the accompanying manual for \s-1GCC\s0, in the ! section ``\s-1GNU\s0 Free Documentation License''. ! This manual contains no Invariant Sections, and has no Front-Cover Texts ! or Back-Cover Texts. --- 701,720 ---- Permission is granted to copy, distribute and/or modify this document under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation. A copy of ! the license is included in the ! man page \fIgfdl\fR\|(7). ! This manual contains no Invariant Sections. The Front-Cover Texts are ! (a) (see below), and the Back-Cover Texts are (b) (see below). ! .PP ! (a) The \s-1FSF\s0's Front-Cover Text is: ! .PP ! .Vb 1 ! \& A GNU Manual ! .Ve ! (b) The \s-1FSF\s0's Back-Cover Text is: ! .PP ! .Vb 3 ! \& You have freedom to copy and modify this GNU Manual, like GNU ! \& software. Copies published by the Free Software Foundation raise ! \& funds for GNU development. ! .Ve diff -Nrc3pad gcc-3.0.2/gcc/doc/cpp.info gcc-3.0.3/gcc/doc/cpp.info *** gcc-3.0.2/gcc/doc/cpp.info Tue Oct 23 11:00:26 2001 --- gcc-3.0.3/gcc/doc/cpp.info Thu Dec 20 11:59:47 2001 *************** END-INFO-DIR-ENTRY *** 9,80 ****  Indirect: cpp.info-1: 191 ! cpp.info-2: 49230 ! cpp.info-3: 98558 ! cpp.info-4: 138540  Tag Table: (Indirect) Node: Top191 ! Node: Overview2745 ! Node: Initial processing5113 ! Node: Tokenization11570 ! Ref: Tokenization-Footnote-118741 ! Node: The preprocessing language18852 ! Node: Header Files21725 ! Node: Include Syntax23603 ! Node: Include Operation25105 ! Node: Search Path27001 ! Node: Once-Only Headers29553 ! Node: Computed Includes31207 ! Node: Wrapper Headers34346 ! Node: System Headers36765 ! Node: Macros38789 ! Node: Object-like Macros39889 ! Node: Function-like Macros43475 ! Node: Macro Arguments45085 ! Node: Stringification49230 ! Node: Concatenation52431 ! Node: Variadic Macros55545 ! Node: Predefined Macros59882 ! Node: Standard Predefined Macros60465 ! Node: Common Predefined Macros65887 ! Node: System-specific Predefined Macros72087 ! Node: C++ Named Operators74099 ! Node: Undefining and Redefining Macros75054 ! Node: Macro Pitfalls77132 ! Node: Misnesting77657 ! Node: Operator Precedence Problems78758 ! Node: Swallowing the Semicolon80613 ! Node: Duplication of Side Effects82625 ! Node: Self-Referential Macros84797 ! Node: Argument Prescan87207 ! Node: Newlines in Arguments90950 ! Node: Conditionals91895 ! Node: Conditional Uses93724 ! Node: Conditional Syntax95077 ! Node: Ifdef95392 ! Node: If98558 ! Node: Defined100971 ! Node: Else102244 ! Node: Elif102805 ! Node: Deleted Code104085 ! Node: Diagnostics105327 ! Node: Line Control106944 ! Node: Pragmas109058 ! Node: Other Directives113326 ! Node: Preprocessor Output114520 ! Node: Traditional Mode117616 ! Node: Implementation Details123195 ! Node: Implementation-defined behavior123818 ! Node: Implementation limits126091 ! Node: Obsolete Features128798 ! Node: Assertions129285 ! Node: Obsolete once-only headers131816 ! Node: Miscellaneous obsolete features133584 ! Node: Differences from previous versions134917 ! Node: Invocation138540 ! Node: Index of Directives157052 ! Node: Concept Index158413  End Tag Table --- 9,81 ----  Indirect: cpp.info-1: 191 ! cpp.info-2: 49238 ! cpp.info-3: 98566 ! cpp.info-4: 138548  Tag Table: (Indirect) Node: Top191 ! Node: Overview2753 ! Node: Initial processing5121 ! Node: Tokenization11578 ! Ref: Tokenization-Footnote-118749 ! Node: The preprocessing language18860 ! Node: Header Files21733 ! Node: Include Syntax23611 ! Node: Include Operation25113 ! Node: Search Path27009 ! Node: Once-Only Headers29561 ! Node: Computed Includes31215 ! Node: Wrapper Headers34354 ! Node: System Headers36773 ! Node: Macros38797 ! Node: Object-like Macros39897 ! Node: Function-like Macros43483 ! Node: Macro Arguments45093 ! Node: Stringification49238 ! Node: Concatenation52439 ! Node: Variadic Macros55553 ! Node: Predefined Macros59890 ! Node: Standard Predefined Macros60473 ! Node: Common Predefined Macros65895 ! Node: System-specific Predefined Macros72095 ! Node: C++ Named Operators74107 ! Node: Undefining and Redefining Macros75062 ! Node: Macro Pitfalls77140 ! Node: Misnesting77665 ! Node: Operator Precedence Problems78766 ! Node: Swallowing the Semicolon80621 ! Node: Duplication of Side Effects82633 ! Node: Self-Referential Macros84805 ! Node: Argument Prescan87215 ! Node: Newlines in Arguments90958 ! Node: Conditionals91903 ! Node: Conditional Uses93732 ! Node: Conditional Syntax95085 ! Node: Ifdef95400 ! Node: If98566 ! Node: Defined100979 ! Node: Else102252 ! Node: Elif102813 ! Node: Deleted Code104093 ! Node: Diagnostics105335 ! Node: Line Control106952 ! Node: Pragmas109066 ! Node: Other Directives113334 ! Node: Preprocessor Output114528 ! Node: Traditional Mode117624 ! Node: Implementation Details123203 ! Node: Implementation-defined behavior123826 ! Node: Implementation limits126099 ! Node: Obsolete Features128806 ! Node: Assertions129293 ! Node: Obsolete once-only headers131824 ! Node: Miscellaneous obsolete features133592 ! Node: Differences from previous versions134925 ! Node: Invocation138548 ! Node: GNU Free Documentation License157071 ! Node: Index of Directives176966 ! Node: Concept Index178347  End Tag Table diff -Nrc3pad gcc-3.0.2/gcc/doc/cpp.info-1 gcc-3.0.3/gcc/doc/cpp.info-1 *** gcc-3.0.2/gcc/doc/cpp.info-1 Tue Oct 23 11:00:26 2001 --- gcc-3.0.3/gcc/doc/cpp.info-1 Thu Dec 20 11:59:47 2001 *************** useful on its own. *** 29,34 **** --- 29,35 ---- * Traditional Mode:: * Implementation Details:: * Invocation:: + * GNU Free Documentation License:: * Index of Directives:: * Concept Index:: *************** Obsolete Features *** 112,119 **** Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation. A copy of ! the license is included in the accompanying manual for GCC, in the ! section "GNU Free Documentation License". This manual contains no Invariant Sections. The Front-Cover Texts are (a) (see below), and the Back-Cover Texts are (b) (see below). --- 113,120 ---- Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation. A copy of ! the license is included in the section entitled "GNU Free Documentation ! License". This manual contains no Invariant Sections. The Front-Cover Texts are (a) (see below), and the Back-Cover Texts are (b) (see below). diff -Nrc3pad gcc-3.0.2/gcc/doc/cpp.info-4 gcc-3.0.3/gcc/doc/cpp.info-4 *** gcc-3.0.2/gcc/doc/cpp.info-4 Tue Oct 23 11:00:26 2001 --- gcc-3.0.3/gcc/doc/cpp.info-4 Thu Dec 20 11:59:47 2001 *************** START-INFO-DIR-ENTRY *** 7,13 **** END-INFO-DIR-ENTRY  ! File: cpp.info, Node: Invocation, Next: Index of Directives, Prev: Implementation Details, Up: Top Invocation ********** --- 7,13 ---- END-INFO-DIR-ENTRY  ! File: cpp.info, Node: Invocation, Next: GNU Free Documentation License, Prev: Implementation Details, Up: Top Invocation ********** *************** single-letter options may _not_ be group *** 473,479 **** preprocess as normal. With two dashes, exit immediately.  ! File: cpp.info, Node: Index of Directives, Next: Concept Index, Prev: Invocation, Up: Top Index of Directives ******************* --- 473,865 ---- preprocess as normal. With two dashes, exit immediately.  ! File: cpp.info, Node: GNU Free Documentation License, Next: Index of Directives, Prev: Invocation, Up: Top ! ! GNU Free Documentation License ! ****************************** ! ! Version 1.1, March 2000 ! ! Copyright (C) 2000 Free Software Foundation, Inc. ! 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA ! ! Everyone is permitted to copy and distribute verbatim copies ! of this license document, but changing it is not allowed. ! ! 0. PREAMBLE ! ! The purpose of this License is to make a manual, textbook, or other ! written document "free" in the sense of freedom: to assure everyone ! the effective freedom to copy and redistribute it, with or without ! modifying it, either commercially or noncommercially. Secondarily, ! this License preserves for the author and publisher a way to get ! credit for their work, while not being considered responsible for ! modifications made by others. ! ! This License is a kind of "copyleft", which means that derivative ! works of the document must themselves be free in the same sense. ! It complements the GNU General Public License, which is a copyleft ! license designed for free software. ! ! We have designed this License in order to use it for manuals for ! free software, because free software needs free documentation: a ! free program should come with manuals providing the same freedoms ! that the software does. But this License is not limited to ! software manuals; it can be used for any textual work, regardless ! of subject matter or whether it is published as a printed book. ! We recommend this License principally for works whose purpose is ! instruction or reference. ! ! 1. APPLICABILITY AND DEFINITIONS ! ! This License applies to any manual or other work that contains a ! notice placed by the copyright holder saying it can be distributed ! under the terms of this License. The "Document", below, refers to ! any such manual or work. Any member of the public is a licensee, ! and is addressed as "you". ! ! A "Modified Version" of the Document means any work containing the ! Document or a portion of it, either copied verbatim, or with ! modifications and/or translated into another language. ! ! A "Secondary Section" is a named appendix or a front-matter ! section of the Document that deals exclusively with the ! relationship of the publishers or authors of the Document to the ! Document's overall subject (or to related matters) and contains ! nothing that could fall directly within that overall subject. ! (For example, if the Document is in part a textbook of ! mathematics, a Secondary Section may not explain any mathematics.) ! The relationship could be a matter of historical connection with ! the subject or with related matters, or of legal, commercial, ! philosophical, ethical or political position regarding them. ! ! The "Invariant Sections" are certain Secondary Sections whose ! titles are designated, as being those of Invariant Sections, in ! the notice that says that the Document is released under this ! License. ! ! The "Cover Texts" are certain short passages of text that are ! listed, as Front-Cover Texts or Back-Cover Texts, in the notice ! that says that the Document is released under this License. ! ! A "Transparent" copy of the Document means a machine-readable copy, ! represented in a format whose specification is available to the ! general public, whose contents can be viewed and edited directly ! and straightforwardly with generic text editors or (for images ! composed of pixels) generic paint programs or (for drawings) some ! widely available drawing editor, and that is suitable for input to ! text formatters or for automatic translation to a variety of ! formats suitable for input to text formatters. A copy made in an ! otherwise Transparent file format whose markup has been designed ! to thwart or discourage subsequent modification by readers is not ! Transparent. A copy that is not "Transparent" is called "Opaque". ! ! Examples of suitable formats for Transparent copies include plain ! ASCII without markup, Texinfo input format, LaTeX input format, ! SGML or XML using a publicly available DTD, and ! standard-conforming simple HTML designed for human modification. ! Opaque formats include PostScript, PDF, proprietary formats that ! can be read and edited only by proprietary word processors, SGML ! or XML for which the DTD and/or processing tools are not generally ! available, and the machine-generated HTML produced by some word ! processors for output purposes only. ! ! The "Title Page" means, for a printed book, the title page itself, ! plus such following pages as are needed to hold, legibly, the ! material this License requires to appear in the title page. For ! works in formats which do not have any title page as such, "Title ! Page" means the text near the most prominent appearance of the ! work's title, preceding the beginning of the body of the text. ! ! 2. VERBATIM COPYING ! ! You may copy and distribute the Document in any medium, either ! commercially or noncommercially, provided that this License, the ! copyright notices, and the license notice saying this License ! applies to the Document are reproduced in all copies, and that you ! add no other conditions whatsoever to those of this License. You ! may not use technical measures to obstruct or control the reading ! or further copying of the copies you make or distribute. However, ! you may accept compensation in exchange for copies. If you ! distribute a large enough number of copies you must also follow ! the conditions in section 3. ! ! You may also lend copies, under the same conditions stated above, ! and you may publicly display copies. ! ! 3. COPYING IN QUANTITY ! ! If you publish printed copies of the Document numbering more than ! 100, and the Document's license notice requires Cover Texts, you ! must enclose the copies in covers that carry, clearly and legibly, ! all these Cover Texts: Front-Cover Texts on the front cover, and ! Back-Cover Texts on the back cover. Both covers must also clearly ! and legibly identify you as the publisher of these copies. The ! front cover must present the full title with all words of the ! title equally prominent and visible. You may add other material ! on the covers in addition. Copying with changes limited to the ! covers, as long as they preserve the title of the Document and ! satisfy these conditions, can be treated as verbatim copying in ! other respects. ! ! If the required texts for either cover are too voluminous to fit ! legibly, you should put the first ones listed (as many as fit ! reasonably) on the actual cover, and continue the rest onto ! adjacent pages. ! ! If you publish or distribute Opaque copies of the Document ! numbering more than 100, you must either include a ! machine-readable Transparent copy along with each Opaque copy, or ! state in or with each Opaque copy a publicly-accessible ! computer-network location containing a complete Transparent copy ! of the Document, free of added material, which the general ! network-using public has access to download anonymously at no ! charge using public-standard network protocols. If you use the ! latter option, you must take reasonably prudent steps, when you ! begin distribution of Opaque copies in quantity, to ensure that ! this Transparent copy will remain thus accessible at the stated ! location until at least one year after the last time you ! distribute an Opaque copy (directly or through your agents or ! retailers) of that edition to the public. ! ! It is requested, but not required, that you contact the authors of ! the Document well before redistributing any large number of ! copies, to give them a chance to provide you with an updated ! version of the Document. ! ! 4. MODIFICATIONS ! ! You may copy and distribute a Modified Version of the Document ! under the conditions of sections 2 and 3 above, provided that you ! release the Modified Version under precisely this License, with ! the Modified Version filling the role of the Document, thus ! licensing distribution and modification of the Modified Version to ! whoever possesses a copy of it. In addition, you must do these ! things in the Modified Version: ! ! A. Use in the Title Page (and on the covers, if any) a title ! distinct from that of the Document, and from those of ! previous versions (which should, if there were any, be listed ! in the History section of the Document). You may use the ! same title as a previous version if the original publisher of ! that version gives permission. ! ! B. List on the Title Page, as authors, one or more persons or ! entities responsible for authorship of the modifications in ! the Modified Version, together with at least five of the ! principal authors of the Document (all of its principal ! authors, if it has less than five). ! ! C. State on the Title page the name of the publisher of the ! Modified Version, as the publisher. ! ! D. Preserve all the copyright notices of the Document. ! ! E. Add an appropriate copyright notice for your modifications ! adjacent to the other copyright notices. ! ! F. Include, immediately after the copyright notices, a license ! notice giving the public permission to use the Modified ! Version under the terms of this License, in the form shown in ! the Addendum below. ! ! G. Preserve in that license notice the full lists of Invariant ! Sections and required Cover Texts given in the Document's ! license notice. ! ! H. Include an unaltered copy of this License. ! ! I. Preserve the section entitled "History", and its title, and ! add to it an item stating at least the title, year, new ! authors, and publisher of the Modified Version as given on ! the Title Page. If there is no section entitled "History" in ! the Document, create one stating the title, year, authors, ! and publisher of the Document as given on its Title Page, ! then add an item describing the Modified Version as stated in ! the previous sentence. ! ! J. Preserve the network location, if any, given in the Document ! for public access to a Transparent copy of the Document, and ! likewise the network locations given in the Document for ! previous versions it was based on. These may be placed in ! the "History" section. You may omit a network location for a ! work that was published at least four years before the ! Document itself, or if the original publisher of the version ! it refers to gives permission. ! ! K. In any section entitled "Acknowledgments" or "Dedications", ! preserve the section's title, and preserve in the section all ! the substance and tone of each of the contributor ! acknowledgments and/or dedications given therein. ! ! L. Preserve all the Invariant Sections of the Document, ! unaltered in their text and in their titles. Section numbers ! or the equivalent are not considered part of the section ! titles. ! ! M. Delete any section entitled "Endorsements". Such a section ! may not be included in the Modified Version. ! ! N. Do not retitle any existing section as "Endorsements" or to ! conflict in title with any Invariant Section. ! ! If the Modified Version includes new front-matter sections or ! appendices that qualify as Secondary Sections and contain no ! material copied from the Document, you may at your option ! designate some or all of these sections as invariant. To do this, ! add their titles to the list of Invariant Sections in the Modified ! Version's license notice. These titles must be distinct from any ! other section titles. ! ! You may add a section entitled "Endorsements", provided it contains ! nothing but endorsements of your Modified Version by various ! parties--for example, statements of peer review or that the text ! has been approved by an organization as the authoritative ! definition of a standard. ! ! You may add a passage of up to five words as a Front-Cover Text, ! and a passage of up to 25 words as a Back-Cover Text, to the end ! of the list of Cover Texts in the Modified Version. Only one ! passage of Front-Cover Text and one of Back-Cover Text may be ! added by (or through arrangements made by) any one entity. If the ! Document already includes a cover text for the same cover, ! previously added by you or by arrangement made by the same entity ! you are acting on behalf of, you may not add another; but you may ! replace the old one, on explicit permission from the previous ! publisher that added the old one. ! ! The author(s) and publisher(s) of the Document do not by this ! License give permission to use their names for publicity for or to ! assert or imply endorsement of any Modified Version. ! ! 5. COMBINING DOCUMENTS ! ! You may combine the Document with other documents released under ! this License, under the terms defined in section 4 above for ! modified versions, provided that you include in the combination ! all of the Invariant Sections of all of the original documents, ! unmodified, and list them all as Invariant Sections of your ! combined work in its license notice. ! ! The combined work need only contain one copy of this License, and ! multiple identical Invariant Sections may be replaced with a single ! copy. If there are multiple Invariant Sections with the same name ! but different contents, make the title of each such section unique ! by adding at the end of it, in parentheses, the name of the ! original author or publisher of that section if known, or else a ! unique number. Make the same adjustment to the section titles in ! the list of Invariant Sections in the license notice of the ! combined work. ! ! In the combination, you must combine any sections entitled ! "History" in the various original documents, forming one section ! entitled "History"; likewise combine any sections entitled ! "Acknowledgments", and any sections entitled "Dedications". You ! must delete all sections entitled "Endorsements." ! ! 6. COLLECTIONS OF DOCUMENTS ! ! You may make a collection consisting of the Document and other ! documents released under this License, and replace the individual ! copies of this License in the various documents with a single copy ! that is included in the collection, provided that you follow the ! rules of this License for verbatim copying of each of the ! documents in all other respects. ! ! You may extract a single document from such a collection, and ! distribute it individually under this License, provided you insert ! a copy of this License into the extracted document, and follow ! this License in all other respects regarding verbatim copying of ! that document. ! ! 7. AGGREGATION WITH INDEPENDENT WORKS ! ! A compilation of the Document or its derivatives with other ! separate and independent documents or works, in or on a volume of ! a storage or distribution medium, does not as a whole count as a ! Modified Version of the Document, provided no compilation ! copyright is claimed for the compilation. Such a compilation is ! called an "aggregate", and this License does not apply to the ! other self-contained works thus compiled with the Document, on ! account of their being thus compiled, if they are not themselves ! derivative works of the Document. ! ! If the Cover Text requirement of section 3 is applicable to these ! copies of the Document, then if the Document is less than one ! quarter of the entire aggregate, the Document's Cover Texts may be ! placed on covers that surround only the Document within the ! aggregate. Otherwise they must appear on covers around the whole ! aggregate. ! ! 8. TRANSLATION ! ! Translation is considered a kind of modification, so you may ! distribute translations of the Document under the terms of section ! 4. Replacing Invariant Sections with translations requires special ! permission from their copyright holders, but you may include ! translations of some or all Invariant Sections in addition to the ! original versions of these Invariant Sections. You may include a ! translation of this License provided that you also include the ! original English version of this License. In case of a ! disagreement between the translation and the original English ! version of this License, the original English version will prevail. ! ! 9. TERMINATION ! ! You may not copy, modify, sublicense, or distribute the Document ! except as expressly provided for under this License. Any other ! attempt to copy, modify, sublicense or distribute the Document is ! void, and will automatically terminate your rights under this ! License. However, parties who have received copies, or rights, ! from you under this License will not have their licenses ! terminated so long as such parties remain in full compliance. ! ! 10. FUTURE REVISIONS OF THIS LICENSE ! ! The Free Software Foundation may publish new, revised versions of ! the GNU Free Documentation License from time to time. Such new ! versions will be similar in spirit to the present version, but may ! differ in detail to address new problems or concerns. See ! `http://www.gnu.org/copyleft/'. ! ! Each version of the License is given a distinguishing version ! number. If the Document specifies that a particular numbered ! version of this License "or any later version" applies to it, you ! have the option of following the terms and conditions either of ! that specified version or of any later version that has been ! published (not as a draft) by the Free Software Foundation. If ! the Document does not specify a version number of this License, ! you may choose any version ever published (not as a draft) by the ! Free Software Foundation. ! ! ADDENDUM: How to use this License for your documents ! ==================================================== ! ! To use this License in a document you have written, include a copy of ! the License in the document and put the following copyright and license ! notices just after the title page: ! ! Copyright (C) YEAR YOUR NAME. ! Permission is granted to copy, distribute and/or modify this document ! under the terms of the GNU Free Documentation License, Version 1.1 ! or any later version published by the Free Software Foundation; ! with the Invariant Sections being LIST THEIR TITLES, with the ! Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. ! A copy of the license is included in the section entitled ``GNU ! Free Documentation License''. ! ! If you have no Invariant Sections, write "with no Invariant Sections" ! instead of saying which ones are invariant. If you have no Front-Cover ! Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts being ! LIST"; likewise for Back-Cover Texts. ! ! If your document contains nontrivial examples of program code, we ! recommend releasing these examples in parallel under your choice of ! free software license, such as the GNU General Public License, to ! permit their use in free software. ! !  ! File: cpp.info, Node: Index of Directives, Next: Concept Index, Prev: GNU Free Documentation License, Up: Top Index of Directives ******************* *************** Concept Index *** 543,548 **** --- 929,935 ---- * directives: The preprocessing language. * empty macro arguments: Macro Arguments. * 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. diff -Nrc3pad gcc-3.0.2/gcc/doc/cpp.texi gcc-3.0.3/gcc/doc/cpp.texi *** gcc-3.0.2/gcc/doc/cpp.texi Wed Oct 17 02:06:42 2001 --- gcc-3.0.3/gcc/doc/cpp.texi Wed Nov 14 14:33:36 2001 *************** Free Software Foundation, Inc. *** 15,36 **** Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation. A copy of ! the license is included in the accompanying manual for GCC, in the ! section ``GNU Free Documentation License''. @c man end ! @end macro ! ! @c The manpage doesn't have Front-Cover and Back-Cover Texts, but the ! @c complete manual does. -zw ! @ignore @c man begin COPYRIGHT ! This manual contains no Invariant Sections, and has no Front-Cover Texts ! or Back-Cover Texts. @c man end @end ignore @macro covertexts This manual contains no Invariant Sections. The Front-Cover Texts are (a) (see below), and the Back-Cover Texts are (b) (see below). --- 15,32 ---- Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation. A copy of ! the license is included in the @c man end ! section entitled ``GNU Free Documentation License''. @ignore @c man begin COPYRIGHT ! man page gfdl(7). @c man end @end ignore + @end macro @macro covertexts + @c man begin COPYRIGHT This manual contains no Invariant Sections. The Front-Cover Texts are (a) (see below), and the Back-Cover Texts are (b) (see below). *************** This manual contains no Invariant Sectio *** 43,48 **** --- 39,45 ---- You have freedom to copy and modify this GNU Manual, like GNU software. Copies published by the Free Software Foundation raise funds for GNU development. + @c man end @end macro @macro gcctabopt{body} *************** useful on its own. *** 92,97 **** --- 89,95 ---- * Traditional Mode:: * Implementation Details:: * Invocation:: + * GNU Free Documentation License:: * Index of Directives:: * Concept Index:: *************** cpp [@option{-D}@var{macro}[=@var{defn}] *** 3800,3805 **** --- 3798,3804 ---- Only the most useful options are listed here; see below for the remainder. @c man end @c man begin SEEALSO + gpl(7), gfdl(7), fsf-funding(7), gcc(1), as(1), ld(1), and the Info entries for @file{cpp}, @file{gcc}, and @file{binutils}. @c man end *************** Print out GNU CPP's version number. Wit *** 4273,4278 **** --- 4272,4279 ---- preprocess as normal. With two dashes, exit immediately. @end table @c man end + + @include fdl.texi @page @node Index of Directives diff -Nrc3pad gcc-3.0.2/gcc/doc/extend.texi gcc-3.0.3/gcc/doc/extend.texi *** gcc-3.0.2/gcc/doc/extend.texi Tue Oct 9 16:14:16 2001 --- gcc-3.0.3/gcc/doc/extend.texi Tue Dec 11 14:17:25 2001 *************** object. For example: *** 987,996 **** struct foo @{ int x; int y[]; @}; struct bar @{ struct foo z; @}; ! struct foo a = @{ 1, @{ 2, 3, 4 @} @}; // Legal. ! struct bar b = @{ @{ 1, @{ 2, 3, 4 @} @} @}; // Illegal. ! struct bar c = @{ @{ 1, @{ @} @} @}; // Legal. ! struct foo d[1] = @{ @{ 1 @{ 2, 3, 4 @} @} @}; // Illegal. @end example @node Variable Length --- 987,996 ---- struct foo @{ int x; int y[]; @}; struct bar @{ struct foo z; @}; ! struct foo a = @{ 1, @{ 2, 3, 4 @} @}; // @r{Valid.} ! struct bar b = @{ @{ 1, @{ 2, 3, 4 @} @} @}; // @r{Invalid.} ! struct bar c = @{ @{ 1, @{ @} @} @}; // @r{Valid.} ! struct foo d[1] = @{ @{ 1 @{ 2, 3, 4 @} @} @}; // @r{Invalid.} @end example @node Variable Length *************** __PRETTY_FUNCTION__ = int a::sub (int) *** 3648,3655 **** The compiler automagically replaces the identifiers with a string literal containing the appropriate name. Thus, they are neither preprocessor macros, like @code{__FILE__} and @code{__LINE__}, nor ! variables. This means that they catenate with other string literals, and ! that they can be used to initialize char arrays. For example @smallexample char here[] = "Function " __FUNCTION__ " in " __FILE__; --- 3648,3655 ---- The compiler automagically replaces the identifiers with a string literal containing the appropriate name. Thus, they are neither preprocessor macros, like @code{__FILE__} and @code{__LINE__}, nor ! variables. This means that they catenate with other string literals, ! and that they can be used to initialize char arrays. For example @smallexample char here[] = "Function " __FUNCTION__ " in " __FILE__; *************** On the other hand, @samp{#ifdef __FUNCTI *** 3659,3666 **** meaning inside a function, since the preprocessor does not do anything special with the identifier @code{__FUNCTION__}. ! GCC also supports the magic word @code{__func__}, defined by the ! ISO standard C99: @display The identifier @code{__func__} is implicitly declared by the translator --- 3659,3667 ---- meaning inside a function, since the preprocessor does not do anything special with the identifier @code{__FUNCTION__}. ! Note that these semantics are deprecated, and that GCC 3.2 will handle ! @code{__FUNCTION__} and @code{__PRETTY_FUNCTION__} the same way as ! @code{__func__}. @code{__func__} is defined by the ISO standard C99: @display The identifier @code{__func__} is implicitly declared by the translator diff -Nrc3pad gcc-3.0.2/gcc/doc/fsf-funding.7 gcc-3.0.3/gcc/doc/fsf-funding.7 *** gcc-3.0.2/gcc/doc/fsf-funding.7 Wed Dec 31 16:00:00 1969 --- gcc-3.0.3/gcc/doc/fsf-funding.7 Thu Dec 20 11:55:55 2001 *************** *** 0 **** --- 1,188 ---- + .\" Automatically generated by Pod::Man version 1.22 + .\" Wed Nov 14 22:27:25 2001 + .\" + .\" Standard preamble: + .\" ======================================================================== + .de Sh \" Subsection heading + .br + .if t .Sp + .ne 5 + .PP + \fB\\$1\fR + .PP + .. + .de Sp \" Vertical space (when we can't use .PP) + .if t .sp .5v + .if n .sp + .. + .de Vb \" Begin verbatim text + .ft CW + .nf + .ne \\$1 + .. + .de Ve \" End verbatim text + .ft R + + .fi + .. + .\" Set up some character translations and predefined strings. \*(-- will + .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left + .\" double quote, and \*(R" will give a right double quote. | will give a + .\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to + .\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' + .\" expand to `' in nroff, nothing in troff, for use with C<>. + .tr \(*W-|\(bv\*(Tr + .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' + .ie n \{\ + . ds -- \(*W- + . ds PI pi + . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch + . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch + . ds L" "" + . ds R" "" + . ds C` "" + . ds C' "" + 'br\} + .el\{\ + . ds -- \|\(em\| + . ds PI \(*p + . ds L" `` + . ds R" '' + 'br\} + .\" + .\" If the F register is turned on, we'll generate index entries on stderr for + .\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index + .\" entries marked with X<> in POD. Of course, you'll have to process the + .\" output yourself in some meaningful fashion. + .if \nF \{\ + . de IX + . tm Index:\\$1\t\\n%\t"\\$2" + .. + . nr % 0 + . rr F + .\} + .\" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .hy 0 + .if n .na + .\" + .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). + .\" Fear. Run. Save yourself. No user-serviceable parts. + . \" fudge factors for nroff and troff + .if n \{\ + . ds #H 0 + . ds #V .8m + . ds #F .3m + . ds #[ \f1 + . ds #] \fP + .\} + .if t \{\ + . ds #H ((1u-(\\\\n(.fu%2u))*.13m) + . ds #V .6m + . ds #F 0 + . ds #[ \& + . ds #] \& + .\} + . \" simple accents for nroff and troff + .if n \{\ + . ds ' \& + . ds ` \& + . ds ^ \& + . ds , \& + . ds ~ ~ + . ds / + .\} + .if t \{\ + . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" + . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' + . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' + . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' + . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' + . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' + .\} + . \" troff and (daisy-wheel) nroff accents + .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' + .ds 8 \h'\*(#H'\(*b\h'-\*(#H' + .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] + .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' + .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' + .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] + .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] + .ds ae a\h'-(\w'a'u*4/10)'e + .ds Ae A\h'-(\w'A'u*4/10)'E + . \" corrections for vroff + .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' + .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' + . \" for low resolution devices (crt and lpr) + .if \n(.H>23 .if \n(.V>19 \ + \{\ + . ds : e + . ds 8 ss + . ds o a + . ds d- d\h'-1'\(ga + . ds D- D\h'-1'\(hy + . ds th \o'bp' + . ds Th \o'LP' + . ds ae ae + . ds Ae AE + .\} + .rm #[ #] #H #V #F C + .\" ======================================================================== + .\" + .IX Title "fsf-funding 7" + .TH fsf-funding 7 "gcc-3.0.3" "2001-11-14" "GNU" + .UC + .SH "NAME" + fsf-funding \- Funding Free Software + .SH "DESCRIPTION" + .IX Header "DESCRIPTION" + .Sh "Funding Free Software" + .IX Subsection "Funding Free Software" + If you want to have more free software a few years from now, it makes + sense for you to help encourage people to contribute funds for its + development. The most effective approach known is to encourage + commercial redistributors to donate. + .PP + Users of free software systems can boost the pace of development by + encouraging for-a-fee distributors to donate part of their selling price + to free software developers\-\-\-the Free Software Foundation, and others. + .PP + The way to convince distributors to do this is to demand it and expect + it from them. So when you compare distributors, judge them partly by + how much they give to free software development. Show distributors + they must compete to be the one who gives the most. + .PP + To make this approach work, you must insist on numbers that you can + compare, such as, ``We will donate ten dollars to the Frobnitz project + for each disk sold.'' Don't be satisfied with a vague promise, such as + ``A portion of the profits are donated,'' since it doesn't give a basis + for comparison. + .PP + Even a precise fraction ``of the profits from this disk'' is not very + meaningful, since creative accounting and unrelated business decisions + can greatly alter what fraction of the sales price counts as profit. + If the price you pay is \f(CW$50\fR, ten percent of the profit is probably + less than a dollar; it might be a few cents, or nothing at all. + .PP + Some redistributors do development work themselves. This is useful too; + but to keep everyone honest, you need to inquire how much they do, and + what kind. Some kinds of development make much more long-term + difference than others. For example, maintaining a separate version of + a program contributes very little; maintaining the standard version of a + program for the whole community contributes much. Easy new ports + contribute little, since someone else would surely do them; difficult + ports such as adding a new \s-1CPU\s0 to the \s-1GNU\s0 Compiler Collection contribute more; + major new features or packages contribute the most. + .PP + By establishing the idea that supporting further development is ``the + proper thing to do'' when distributing free software for a fee, we can + assure a steady flow of resources into making more free software. + .SH "SEE ALSO" + .IX Header "SEE ALSO" + \&\fIgpl\fR\|(7), \fIgfdl\fR\|(7). + .SH "COPYRIGHT" + .IX Header "COPYRIGHT" + Copyright (c) 1994 Free Software Foundation, Inc. + Verbatim copying and redistribution of this section is permitted + without royalty; alteration is not permitted. diff -Nrc3pad gcc-3.0.2/gcc/doc/gcc.1 gcc-3.0.3/gcc/doc/gcc.1 *** gcc-3.0.2/gcc/doc/gcc.1 Wed Oct 17 06:14:31 2001 --- gcc-3.0.3/gcc/doc/gcc.1 Wed Nov 14 14:33:38 2001 *************** *** 1,5 **** ! .\" Automatically generated by Pod::Man version 1.19 ! .\" Wed Oct 17 11:39:25 2001 .\" .\" Standard preamble: .\" ======================================================================== --- 1,5 ---- ! .\" Automatically generated by Pod::Man version 1.22 ! .\" Wed Nov 14 22:27:22 2001 .\" .\" Standard preamble: .\" ======================================================================== *************** *** 131,137 **** .\" ======================================================================== .\" .IX Title "GCC 1" ! .TH GCC 1 "gcc-3.0.2" "2001-10-17" "GNU" .UC .SH "NAME" gcc \- \s-1GNU\s0 project C and \*(C+ compiler --- 131,137 ---- .\" ======================================================================== .\" .IX Title "GCC 1" ! .TH GCC 1 "gcc-3.0.3" "2001-11-14" "GNU" .UC .SH "NAME" gcc \- \s-1GNU\s0 project C and \*(C+ compiler *************** in the following sections. *** 444,450 **** \&\-mstrict-align \-mno-strict-align \-mrelocatable \&\-mno-relocatable \-mrelocatable-lib \-mno-relocatable-lib \&\-mtoc \-mno-toc \-mlittle \-mlittle-endian \-mbig \-mbig-endian ! \&\-mcall-aix \-mcall-sysv \-mprototype \-mno-prototype \&\-msim \-mmvme \-mads \-myellowknife \-memb \-msdata \&\-msdata=\fR\fIopt\fR \fB\-mvxworks \-G\fR \fInum\fR .Sp --- 444,450 ---- \&\-mstrict-align \-mno-strict-align \-mrelocatable \&\-mno-relocatable \-mrelocatable-lib \-mno-relocatable-lib \&\-mtoc \-mno-toc \-mlittle \-mlittle-endian \-mbig \-mbig-endian ! \&\-mcall-aix \-mcall-sysv \-mcall-netbsd \-mprototype \-mno-prototype \&\-msim \-mmvme \-mads \-myellowknife \-memb \-msdata \&\-msdata=\fR\fIopt\fR \fB\-mvxworks \-G\fR \fInum\fR .Sp *************** available paths and filenames in file \f *** 2378,2396 **** .Sp Several function names have a special meaning: .RS 4 ! .if n .IP """_\|_bb_jumps_\|_""" 4 .el .IP "\f(CW_\|_bb_jumps_\|_\fR" 4 .IX Item "__bb_jumps__" Write source, target and frequency of jumps to file \fIbb.out\fR. ! .if n .IP """_\|_bb_hidecall_\|_""" 4 .el .IP "\f(CW_\|_bb_hidecall_\|_\fR" 4 .IX Item "__bb_hidecall__" Exclude function calls from frequency count. ! .if n .IP """_\|_bb_showret_\|_""" 4 .el .IP "\f(CW_\|_bb_showret_\|_\fR" 4 .IX Item "__bb_showret__" Include function returns in frequency count. ! .if n .IP """_\|_bb_trace_\|_""" 4 .el .IP "\f(CW_\|_bb_trace_\|_\fR" 4 .IX Item "__bb_trace__" Write the sequence of basic blocks executed to file \fIbbtrace.gz\fR. --- 2378,2396 ---- .Sp Several function names have a special meaning: .RS 4 ! .ie n .IP """_\|_bb_jumps_\|_""" 4 .el .IP "\f(CW_\|_bb_jumps_\|_\fR" 4 .IX Item "__bb_jumps__" Write source, target and frequency of jumps to file \fIbb.out\fR. ! .ie n .IP """_\|_bb_hidecall_\|_""" 4 .el .IP "\f(CW_\|_bb_hidecall_\|_\fR" 4 .IX Item "__bb_hidecall__" Exclude function calls from frequency count. ! .ie n .IP """_\|_bb_showret_\|_""" 4 .el .IP "\f(CW_\|_bb_showret_\|_\fR" 4 .IX Item "__bb_showret__" Include function returns in frequency count. ! .ie n .IP """_\|_bb_trace_\|_""" 4 .el .IP "\f(CW_\|_bb_trace_\|_\fR" 4 .IX Item "__bb_trace__" Write the sequence of basic blocks executed to file \fIbbtrace.gz\fR. *************** This is useful when you use \fB\-nostdli *** 2747,2753 **** but you do want to link with \fIlibgcc.a\fR. You can do .Sp .Vb 1 ! \& gcc -nostdlib I... `gcc -print-libgcc-file-name` .Ve .IP "\fB\-print-search-dirs\fR" 4 .IX Item "-print-search-dirs" --- 2747,2753 ---- but you do want to link with \fIlibgcc.a\fR. You can do .Sp .Vb 1 ! \& gcc -nostdlib ... `gcc -print-libgcc-file-name` .Ve .IP "\fB\-print-search-dirs\fR" 4 .IX Item "-print-search-dirs" *************** optimization. If more memory than speci *** 3320,3326 **** optimization will not be done. .IP "\fBmax-pending-list-length\fR" 4 .IX Item "max-pending-list-length" ! The maximum number of pending dependancies scheduling will allow before flushing the current state and starting over. Large functions with few branches or calls can create excessively large lists which needlessly consume memory and resources. --- 3320,3326 ---- optimization will not be done. .IP "\fBmax-pending-list-length\fR" 4 .IX Item "max-pending-list-length" ! The maximum number of pending dependencies scheduling will allow before flushing the current state and starting over. Large functions with few branches or calls can create excessively large lists which needlessly consume memory and resources. *************** operating system. *** 5539,5544 **** --- 5539,5548 ---- .IX Item "-mcall-linux" On System V.4 and embedded PowerPC systems compile code for the Linux-based \s-1GNU\s0 system. + .IP "\fB\-mcall-netbsd\fR" 4 + .IX Item "-mcall-netbsd" + On System V.4 and embedded PowerPC systems compile code for the + NetBSD operating system. .IP "\fB\-mprototype\fR" 4 .IX Item "-mprototype" .PD 0 *************** to subtle defects. Supplying them in ca *** 8085,8090 **** --- 8089,8095 ---- is innocuous. .SH "SEE ALSO" .IX Header "SEE ALSO" + \&\fIgpl\fR\|(7), \fIgfdl\fR\|(7), \fIfsf-funding\fR\|(7), \&\fIcpp\fR\|(1), \fIgcov\fR\|(1), \fIg77\fR\|(1), \fIas\fR\|(1), \fIld\fR\|(1), \fIgdb\fR\|(1), \fIadb\fR\|(1), \fIdbx\fR\|(1), \fIsdb\fR\|(1) and the Info entries for \fIgcc\fR, \fIcpp\fR, \fIg77\fR, \fIas\fR, \&\fIld\fR, \fIbinutils\fR and \fIgdb\fR. *************** See the Info entry for \fIgcc\fR, or *** 8097,8113 **** Copyright (c) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. .PP ! Permission is granted to make and distribute verbatim copies of this ! manual provided the copyright notice and this permission notice are ! preserved on all copies. .PP ! Permission is granted to copy and distribute modified versions of this ! manual under the conditions for verbatim copying, provided also that the ! entire resulting derived work is distributed under the terms of a ! permission notice identical to this one. .PP ! Permission is granted to copy and distribute translations of this manual ! into another language, under the above conditions for modified versions, ! except that this permission notice may be included in translations ! approved by the Free Software Foundation instead of in the original ! English. --- 8102,8124 ---- Copyright (c) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. .PP ! Permission is granted to copy, distribute and/or modify this document ! under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.1 or ! any later version published by the Free Software Foundation; with the ! Invariant Sections being ``\s-1GNU\s0 General Public License'' and ``Funding ! Free Software'', the Front-Cover texts being (a) (see below), and with ! the Back-Cover Texts being (b) (see below). A copy of the license is ! included in the \fIgfdl\fR\|(7) man page. .PP ! (a) The \s-1FSF\s0's Front-Cover Text is: .PP ! .Vb 1 ! \& A GNU Manual ! .Ve ! (b) The \s-1FSF\s0's Back-Cover Text is: ! .PP ! .Vb 3 ! \& You have freedom to copy and modify this GNU Manual, like GNU ! \& software. Copies published by the Free Software Foundation raise ! \& funds for GNU development. ! .Ve diff -Nrc3pad gcc-3.0.2/gcc/doc/gcc.info gcc-3.0.3/gcc/doc/gcc.info *** gcc-3.0.2/gcc/doc/gcc.info Tue Oct 23 11:00:26 2001 --- gcc-3.0.3/gcc/doc/gcc.info Thu Dec 20 11:59:48 2001 *************** funds for GNU development. *** 38,80 ****  Indirect: gcc.info-1: 1239 ! gcc.info-2: 42106 ! gcc.info-3: 72696 ! gcc.info-4: 104877 ! gcc.info-5: 151171 ! gcc.info-6: 196514 ! gcc.info-7: 244071 ! gcc.info-8: 292862 ! gcc.info-9: 328088 ! gcc.info-10: 376478 ! gcc.info-11: 424908 ! gcc.info-12: 473283 ! gcc.info-13: 522565 ! gcc.info-14: 572050 ! gcc.info-15: 615270 ! gcc.info-16: 658606 ! gcc.info-17: 698828 ! gcc.info-18: 747832 ! gcc.info-19: 782569 ! gcc.info-20: 828524 ! gcc.info-21: 871818 ! gcc.info-22: 921750 ! gcc.info-23: 971719 ! gcc.info-24: 985350 ! gcc.info-25: 1029817 ! gcc.info-26: 1074211 ! gcc.info-27: 1107334 ! gcc.info-28: 1154724 ! gcc.info-29: 1201943 ! gcc.info-30: 1251618 ! gcc.info-31: 1295221 ! gcc.info-32: 1341493 ! gcc.info-33: 1390685 ! gcc.info-34: 1425372 ! gcc.info-35: 1473633 ! gcc.info-36: 1518044 ! gcc.info-37: 1534916 ! gcc.info-38: 1595103  Tag Table: (Indirect) --- 38,80 ----  Indirect: gcc.info-1: 1239 ! gcc.info-2: 42118 ! gcc.info-3: 72708 ! gcc.info-4: 104889 ! gcc.info-5: 151183 ! gcc.info-6: 196526 ! gcc.info-7: 244083 ! gcc.info-8: 292990 ! gcc.info-9: 328216 ! gcc.info-10: 376606 ! gcc.info-11: 425036 ! gcc.info-12: 473411 ! gcc.info-13: 522693 ! gcc.info-14: 572288 ! gcc.info-15: 615508 ! gcc.info-16: 658844 ! gcc.info-17: 699066 ! gcc.info-18: 748070 ! gcc.info-19: 782807 ! gcc.info-20: 828762 ! gcc.info-21: 872056 ! gcc.info-22: 921988 ! gcc.info-23: 971957 ! gcc.info-24: 985588 ! gcc.info-25: 1030055 ! gcc.info-26: 1074449 ! gcc.info-27: 1107572 ! gcc.info-28: 1154962 ! gcc.info-29: 1202181 ! gcc.info-30: 1251856 ! gcc.info-31: 1295459 ! gcc.info-32: 1341731 ! gcc.info-33: 1390923 ! gcc.info-34: 1425610 ! gcc.info-35: 1473871 ! gcc.info-36: 1518282 ! gcc.info-37: 1535154 ! gcc.info-38: 1595411  Tag Table: (Indirect) *************** Node: G++ and GCC3383 *** 83,391 **** Node: Standards5794 Node: Invoking GCC12244 Node: Option Summary15889 ! Node: Overall Options34540 ! Node: Invoking G++40660 ! Node: C Dialect Options42106 ! Node: C++ Dialect Options56329 ! Node: Objective-C Dialect Options69285 ! Node: Language Independent Options70908 ! Node: Warning Options72696 ! Node: Debugging Options104877 ! Node: Optimize Options126587 ! Node: Preprocessor Options151171 ! Node: Assembler Options161408 ! Node: Link Options161775 ! Ref: Link Options-Footnote-1169028 ! Node: Directory Options169364 ! Node: Spec Files173370 ! Node: Target Options190876 ! Node: Submodel Options194863 ! Node: M680x0 Options196514 ! Node: M68hc1x Options202521 ! Node: VAX Options203701 ! Node: SPARC Options204237 ! Node: Convex Options214121 ! Node: AMD29K Options216302 ! Node: ARM Options219698 ! Node: MN10200 Options232219 ! Node: MN10300 Options232741 ! Node: M32R/D Options233792 ! Node: M88K Options236141 ! Node: RS/6000 and PowerPC Options244071 ! Node: RT Options263503 ! Node: MIPS Options265206 ! Node: i386 Options275391 ! Node: HPPA Options285855 ! Node: Intel 960 Options289920 ! Node: DEC Alpha Options292862 ! Node: Clipper Options302256 ! Node: H8/300 Options302656 ! Node: SH Options303585 ! Node: System V Options305901 ! Node: TMS320C3x/C4x Options306719 ! Node: V850 Options312231 ! Node: ARC Options314240 ! Node: NS32K Options315441 ! Node: AVR Options319690 ! Node: MCore Options321401 ! Node: IA-64 Options322545 ! Node: D30V Options324933 ! Node: S/390 and zSeries Options326176 ! Node: Code Gen Options328088 ! Node: Environment Variables344918 ! Node: Running Protoize351256 ! Node: Installation357613 ! Node: Configuration Files361194 ! Node: Configurations362798 ! Node: Cross-Compiler367022 ! Node: Steps of Cross368781 ! Node: Configure Cross369899 ! Node: Tools and Libraries370536 ! Node: Cross Headers372975 ! Node: Build Cross374972 ! Node: VMS Install376478 ! Node: Collect2386411 ! Node: Header Dirs388976 ! Node: C Extensions390399 ! Node: Statement Exprs394221 ! Node: Local Labels397313 ! Node: Labels as Values399378 ! Ref: Labels as Values-Footnote-1401437 ! Node: Nested Functions401622 ! Node: Constructing Calls405461 ! Node: Naming Types407548 ! Node: Typeof408642 ! Node: Lvalues410518 ! Node: Conditionals412958 ! Node: Long Long413849 ! Node: Complex415348 ! Node: Hex Floats418016 ! Node: Zero Length419045 ! Node: Variable Length422146 ! Node: Variadic Macros424908 ! Node: Escaped Newlines427298 ! Node: Multi-line Strings428181 ! Node: Subscripting428785 ! Node: Pointer Arith429418 ! Node: Initializers429983 ! Node: Compound Literals430466 ! Node: Designated Inits432505 ! Node: Case Ranges436179 ! Node: Cast to Union436859 ! Node: Mixed Declarations437942 ! Node: Function Attributes438437 ! Node: Attribute Syntax459797 ! Node: Function Prototypes468608 ! Node: C++ Comments470404 ! Node: Dollar Signs470999 ! Node: Character Escapes471457 ! Node: Alignment471744 ! Node: Variable Attributes473283 ! Node: Type Attributes482916 ! Node: Inline492204 ! Node: Extended Asm496940 ! Node: Asm Labels513069 ! Node: Explicit Reg Vars514746 ! Node: Global Reg Vars516200 ! Node: Local Reg Vars520765 ! Node: Alternate Keywords522565 ! Node: Incomplete Enums524252 ! Node: Function Names525008 ! Node: Return Address527335 ! Node: Other Builtins529477 ! Node: C++ Extensions535548 ! Node: Min and Max537109 ! Node: Volatiles538515 ! Node: Restricted Pointers541885 ! Node: Vague Linkage543455 ! Node: C++ Interface547113 ! Ref: C++ Interface-Footnote-1552201 ! Node: Template Instantiation552340 ! Node: Bound member functions561170 ! Node: C++ Attributes562721 ! Node: Java Exceptions564325 ! Node: Deprecated Features565730 ! Node: Backwards Compatibility567494 ! Node: Objective C568842 ! Node: Executing code before main569412 ! Node: What you can and what you cannot do in +load572050 ! Node: Type encoding574216 ! Node: Garbage Collection577468 ! Node: Constant string objects580132 ! Node: compatibility_alias581766 ! Node: Gcov582645 ! Node: Gcov Intro583162 ! Node: Invoking Gcov585837 ! Node: Gcov and Optimization591575 ! Node: Gcov Data Files592992 ! Node: Trouble596557 ! Node: Actual Bugs598151 ! Node: Cross-Compiler Problems599059 ! Node: Interoperation600520 ! Node: External Bugs613778 ! Node: Incompatibilities615270 ! Node: Fixed Headers624878 ! Node: Standard Libraries627187 ! Node: Disappointments628557 ! Node: C++ Misunderstandings633095 ! Node: Static Definitions633821 ! Node: Temporaries634868 ! Node: Copy Assignment636845 ! Node: Protoize Caveats638663 ! Node: Non-bugs642618 ! Node: Warnings and Errors652510 ! Node: Bugs654270 ! Node: Bug Criteria655623 ! Node: Bug Lists658047 ! Node: Bug Reporting658606 ! Node: gccbug670709 ! Node: Service671529 ! Node: Contributing672275 ! Node: VMS672980 ! Node: Include Files and VMS673363 ! Node: Global Declarations677228 ! Node: VMS Misc681532 ! Node: Makefile685835 ! Node: Portability692494 ! Node: Interface694248 ! Node: Passes698828 ! Node: Trees721679 ! Node: Deficiencies724419 ! Node: Tree overview724649 ! Node: Macros and Functions728784 ! Node: Identifiers728918 ! Node: Containers730434 ! Node: Types731578 ! Node: Scopes743358 ! Node: Namespaces744114 ! Node: Classes747832 ! Node: Declarations752475 ! Node: Functions758529 ! Node: Function Basics761059 ! Node: Function Bodies767805 ! Node: Attributes781180 ! Node: Expression trees782569 ! Node: RTL805018 ! Node: RTL Objects807049 ! Node: RTL Classes810082 ! Node: Accessors814588 ! Node: Flags816968 ! Node: Machine Modes828524 ! Node: Constants836308 ! Node: Regs and Memory841489 ! Node: Arithmetic854129 ! Node: Comparisons860390 ! Node: Bit-Fields864510 ! Node: Vector Operations865928 ! Node: Conversions867702 ! Node: RTL Declarations871009 ! Node: Side Effects871818 ! Node: Incdec886668 ! Node: Assembler890221 ! Node: Insns891743 ! Node: Calls916191 ! Node: Sharing918785 ! Node: Reading RTL921750 ! Node: Machine Desc922693 ! Node: Overview924897 ! Node: Patterns926936 ! Node: Example930172 ! Node: RTL Template931300 ! Node: Output Template943765 ! Node: Output Statement947747 ! Node: Constraints951459 ! Node: Simple Constraints952390 ! Node: Multi-Alternative964346 ! Node: Class Preferences967181 ! Node: Modifiers968061 ! Node: Machine Constraints971719 ! Node: Standard Names985350 ! Node: Pattern Ordering1025775 ! Node: Dependent Patterns1027002 ! Node: Jump Patterns1029817 ! Node: Looping Patterns1035564 ! Node: Insn Canonicalizations1040157 ! Node: Expander Definitions1043655 ! Node: Insn Splitting1051787 ! Node: Peephole Definitions1060437 ! Node: define_peephole1061680 ! Node: define_peephole21068055 ! Node: Insn Attributes1071116 ! Node: Defining Attributes1072199 ! Node: Expressions1074211 ! Node: Tagging Insns1080800 ! Node: Attr Example1085162 ! Node: Insn Lengths1087538 ! Node: Constant Attributes1090831 ! Node: Delay Slots1091991 ! Node: Function Units1095202 ! Node: Conditional Execution1100872 ! Node: Constant Definitions1103728 ! Node: Target Macros1105306 ! Node: Driver1107334 ! Node: Run-time Target1125769 ! Node: Per-Function Data1132799 ! Node: Storage Layout1136060 ! Node: Type Layout1154724 ! Node: Registers1164570 ! Node: Register Basics1165485 ! Node: Allocation Order1170685 ! Node: Values in Registers1172098 ! Node: Leaf Functions1177215 ! Node: Stack Registers1179980 ! Node: Register Classes1180777 ! Node: Stack and Calling1201458 ! Node: Frame Layout1201943 ! Node: Stack Checking1211713 ! Node: Frame Registers1215245 ! Node: Elimination1219659 ! Node: Stack Arguments1223914 ! Node: Register Arguments1230887 ! Node: Scalar Return1242129 ! Node: Aggregate Return1246367 ! Node: Caller Saves1250081 ! Node: Function Entry1251618 ! Node: Profiling1262539 ! Node: Inlining1270777 ! Node: Tail Calling1271329 ! Node: Varargs1271918 ! Node: Trampolines1279593 ! Node: Library Calls1286798 ! Node: Addressing Modes1295221 ! Node: Condition Code1306495 ! Node: Costs1313352 ! Node: Sections1326266 ! Node: PIC1333581 ! Node: Assembler Format1336290 ! Node: File Framework1337357 ! Node: Data Output1341493 ! Node: Uninitialized Data1349267 ! Node: Label Output1354664 ! Node: Initialization1367837 ! Node: Macros for Initialization1373977 ! Node: Instruction Output1379234 ! Node: Dispatch Tables1388133 ! Node: Exception Region Output1390685 ! Node: Alignment Output1394184 ! Node: Debugging Info1397741 ! Node: All Debuggers1398350 ! Node: DBX Options1401159 ! Node: DBX Hooks1406531 ! Node: File Names and DBX1410177 ! Node: SDB and DWARF1412150 ! Node: Cross-compilation1415559 ! Node: Mode Switching1422135 ! Node: Misc1425372 ! Node: Config1457340 ! Node: Fragments1465024 ! Node: Target Fragment1465619 ! Node: Host Fragment1470532 ! Node: Funding1471134 ! Node: GNU/Linux1473633 ! Node: Copying1478948 ! Node: GNU Free Documentation License1498159 ! Node: Contributors1518044 ! Node: Option Index1534916 ! Node: Index1595103  End Tag Table --- 83,391 ---- Node: Standards5794 Node: Invoking GCC12244 Node: Option Summary15889 ! Node: Overall Options34552 ! Node: Invoking G++40672 ! Node: C Dialect Options42118 ! Node: C++ Dialect Options56341 ! Node: Objective-C Dialect Options69297 ! Node: Language Independent Options70920 ! Node: Warning Options72708 ! Node: Debugging Options104889 ! Node: Optimize Options126599 ! Node: Preprocessor Options151183 ! Node: Assembler Options161420 ! Node: Link Options161787 ! Ref: Link Options-Footnote-1169040 ! Node: Directory Options169376 ! Node: Spec Files173382 ! Node: Target Options190888 ! Node: Submodel Options194875 ! Node: M680x0 Options196526 ! Node: M68hc1x Options202533 ! Node: VAX Options203713 ! Node: SPARC Options204249 ! Node: Convex Options214133 ! Node: AMD29K Options216314 ! Node: ARM Options219710 ! Node: MN10200 Options232231 ! Node: MN10300 Options232753 ! Node: M32R/D Options233804 ! Node: M88K Options236153 ! Node: RS/6000 and PowerPC Options244083 ! Node: RT Options263631 ! Node: MIPS Options265334 ! Node: i386 Options275519 ! Node: HPPA Options285983 ! Node: Intel 960 Options290048 ! Node: DEC Alpha Options292990 ! Node: Clipper Options302384 ! Node: H8/300 Options302784 ! Node: SH Options303713 ! Node: System V Options306029 ! Node: TMS320C3x/C4x Options306847 ! Node: V850 Options312359 ! Node: ARC Options314368 ! Node: NS32K Options315569 ! Node: AVR Options319818 ! Node: MCore Options321529 ! Node: IA-64 Options322673 ! Node: D30V Options325061 ! Node: S/390 and zSeries Options326304 ! Node: Code Gen Options328216 ! Node: Environment Variables345046 ! Node: Running Protoize351384 ! Node: Installation357741 ! Node: Configuration Files361322 ! Node: Configurations362926 ! Node: Cross-Compiler367150 ! Node: Steps of Cross368909 ! Node: Configure Cross370027 ! Node: Tools and Libraries370664 ! Node: Cross Headers373103 ! Node: Build Cross375100 ! Node: VMS Install376606 ! Node: Collect2386539 ! Node: Header Dirs389104 ! Node: C Extensions390527 ! Node: Statement Exprs394349 ! Node: Local Labels397441 ! Node: Labels as Values399506 ! Ref: Labels as Values-Footnote-1401565 ! Node: Nested Functions401750 ! Node: Constructing Calls405589 ! Node: Naming Types407676 ! Node: Typeof408770 ! Node: Lvalues410646 ! Node: Conditionals413086 ! Node: Long Long413977 ! Node: Complex415476 ! Node: Hex Floats418144 ! Node: Zero Length419173 ! Node: Variable Length422274 ! Node: Variadic Macros425036 ! Node: Escaped Newlines427426 ! Node: Multi-line Strings428309 ! Node: Subscripting428913 ! Node: Pointer Arith429546 ! Node: Initializers430111 ! Node: Compound Literals430594 ! Node: Designated Inits432633 ! Node: Case Ranges436307 ! Node: Cast to Union436987 ! Node: Mixed Declarations438070 ! Node: Function Attributes438565 ! Node: Attribute Syntax459925 ! Node: Function Prototypes468736 ! Node: C++ Comments470532 ! Node: Dollar Signs471127 ! Node: Character Escapes471585 ! Node: Alignment471872 ! Node: Variable Attributes473411 ! Node: Type Attributes483044 ! Node: Inline492332 ! Node: Extended Asm497068 ! Node: Asm Labels513197 ! Node: Explicit Reg Vars514874 ! Node: Global Reg Vars516328 ! Node: Local Reg Vars520893 ! Node: Alternate Keywords522693 ! Node: Incomplete Enums524380 ! Node: Function Names525136 ! Node: Return Address527573 ! Node: Other Builtins529715 ! Node: C++ Extensions535786 ! Node: Min and Max537347 ! Node: Volatiles538753 ! Node: Restricted Pointers542123 ! Node: Vague Linkage543693 ! Node: C++ Interface547351 ! Ref: C++ Interface-Footnote-1552439 ! Node: Template Instantiation552578 ! Node: Bound member functions561408 ! Node: C++ Attributes562959 ! Node: Java Exceptions564563 ! Node: Deprecated Features565968 ! Node: Backwards Compatibility567732 ! Node: Objective C569080 ! Node: Executing code before main569650 ! Node: What you can and what you cannot do in +load572288 ! Node: Type encoding574454 ! Node: Garbage Collection577706 ! Node: Constant string objects580370 ! Node: compatibility_alias582004 ! Node: Gcov582883 ! Node: Gcov Intro583400 ! Node: Invoking Gcov586075 ! Node: Gcov and Optimization591813 ! Node: Gcov Data Files593230 ! Node: Trouble596795 ! Node: Actual Bugs598389 ! Node: Cross-Compiler Problems599297 ! Node: Interoperation600758 ! Node: External Bugs614016 ! Node: Incompatibilities615508 ! Node: Fixed Headers625116 ! Node: Standard Libraries627425 ! Node: Disappointments628795 ! Node: C++ Misunderstandings633333 ! Node: Static Definitions634059 ! Node: Temporaries635106 ! Node: Copy Assignment637083 ! Node: Protoize Caveats638901 ! Node: Non-bugs642856 ! Node: Warnings and Errors652748 ! Node: Bugs654508 ! Node: Bug Criteria655861 ! Node: Bug Lists658285 ! Node: Bug Reporting658844 ! Node: gccbug670947 ! Node: Service671767 ! Node: Contributing672513 ! Node: VMS673218 ! Node: Include Files and VMS673601 ! Node: Global Declarations677466 ! Node: VMS Misc681770 ! Node: Makefile686073 ! Node: Portability692732 ! Node: Interface694486 ! Node: Passes699066 ! Node: Trees721917 ! Node: Deficiencies724657 ! Node: Tree overview724887 ! Node: Macros and Functions729022 ! Node: Identifiers729156 ! Node: Containers730672 ! Node: Types731816 ! Node: Scopes743596 ! Node: Namespaces744352 ! Node: Classes748070 ! Node: Declarations752713 ! Node: Functions758767 ! Node: Function Basics761297 ! Node: Function Bodies768043 ! Node: Attributes781418 ! Node: Expression trees782807 ! Node: RTL805256 ! Node: RTL Objects807287 ! Node: RTL Classes810320 ! Node: Accessors814826 ! Node: Flags817206 ! Node: Machine Modes828762 ! Node: Constants836546 ! Node: Regs and Memory841727 ! Node: Arithmetic854367 ! Node: Comparisons860628 ! Node: Bit-Fields864748 ! Node: Vector Operations866166 ! Node: Conversions867940 ! Node: RTL Declarations871247 ! Node: Side Effects872056 ! Node: Incdec886906 ! Node: Assembler890459 ! Node: Insns891981 ! Node: Calls916429 ! Node: Sharing919023 ! Node: Reading RTL921988 ! Node: Machine Desc922931 ! Node: Overview925135 ! Node: Patterns927174 ! Node: Example930410 ! Node: RTL Template931538 ! Node: Output Template944003 ! Node: Output Statement947985 ! Node: Constraints951697 ! Node: Simple Constraints952628 ! Node: Multi-Alternative964584 ! Node: Class Preferences967419 ! Node: Modifiers968299 ! Node: Machine Constraints971957 ! Node: Standard Names985588 ! Node: Pattern Ordering1026013 ! Node: Dependent Patterns1027240 ! Node: Jump Patterns1030055 ! Node: Looping Patterns1035802 ! Node: Insn Canonicalizations1040395 ! Node: Expander Definitions1043893 ! Node: Insn Splitting1052025 ! Node: Peephole Definitions1060675 ! Node: define_peephole1061918 ! Node: define_peephole21068293 ! Node: Insn Attributes1071354 ! Node: Defining Attributes1072437 ! Node: Expressions1074449 ! Node: Tagging Insns1081038 ! Node: Attr Example1085400 ! Node: Insn Lengths1087776 ! Node: Constant Attributes1091069 ! Node: Delay Slots1092229 ! Node: Function Units1095440 ! Node: Conditional Execution1101110 ! Node: Constant Definitions1103966 ! Node: Target Macros1105544 ! Node: Driver1107572 ! Node: Run-time Target1126007 ! Node: Per-Function Data1133037 ! Node: Storage Layout1136298 ! Node: Type Layout1154962 ! Node: Registers1164808 ! Node: Register Basics1165723 ! Node: Allocation Order1170923 ! Node: Values in Registers1172336 ! Node: Leaf Functions1177453 ! Node: Stack Registers1180218 ! Node: Register Classes1181015 ! Node: Stack and Calling1201696 ! Node: Frame Layout1202181 ! Node: Stack Checking1211951 ! Node: Frame Registers1215483 ! Node: Elimination1219897 ! Node: Stack Arguments1224152 ! Node: Register Arguments1231125 ! Node: Scalar Return1242367 ! Node: Aggregate Return1246605 ! Node: Caller Saves1250319 ! Node: Function Entry1251856 ! Node: Profiling1262777 ! Node: Inlining1271015 ! Node: Tail Calling1271567 ! Node: Varargs1272156 ! Node: Trampolines1279831 ! Node: Library Calls1287036 ! Node: Addressing Modes1295459 ! Node: Condition Code1306733 ! Node: Costs1313590 ! Node: Sections1326504 ! Node: PIC1333819 ! Node: Assembler Format1336528 ! Node: File Framework1337595 ! Node: Data Output1341731 ! Node: Uninitialized Data1349505 ! Node: Label Output1354902 ! Node: Initialization1368075 ! Node: Macros for Initialization1374215 ! Node: Instruction Output1379472 ! Node: Dispatch Tables1388371 ! Node: Exception Region Output1390923 ! Node: Alignment Output1394422 ! Node: Debugging Info1397979 ! Node: All Debuggers1398588 ! Node: DBX Options1401397 ! Node: DBX Hooks1406769 ! Node: File Names and DBX1410415 ! Node: SDB and DWARF1412388 ! Node: Cross-compilation1415797 ! Node: Mode Switching1422373 ! Node: Misc1425610 ! Node: Config1457578 ! Node: Fragments1465262 ! Node: Target Fragment1465857 ! Node: Host Fragment1470770 ! Node: Funding1471372 ! Node: GNU/Linux1473871 ! Node: Copying1479186 ! Node: GNU Free Documentation License1498397 ! Node: Contributors1518282 ! Node: Option Index1535154 ! Node: Index1595411  End Tag Table diff -Nrc3pad gcc-3.0.2/gcc/doc/gcc.info-1 gcc-3.0.3/gcc/doc/gcc.info-1 *** gcc-3.0.2/gcc/doc/gcc.info-1 Tue Oct 23 11:00:26 2001 --- gcc-3.0.3/gcc/doc/gcc.info-1 Thu Dec 20 11:59:48 2001 *************** _Machine Dependent Options_ *** 594,600 **** -mstrict-align -mno-strict-align -mrelocatable -mno-relocatable -mrelocatable-lib -mno-relocatable-lib -mtoc -mno-toc -mlittle -mlittle-endian -mbig -mbig-endian ! -mcall-aix -mcall-sysv -mprototype -mno-prototype -msim -mmvme -mads -myellowknife -memb -msdata -msdata=OPT -mvxworks -G NUM --- 594,600 ---- -mstrict-align -mno-strict-align -mrelocatable -mno-relocatable -mrelocatable-lib -mno-relocatable-lib -mtoc -mno-toc -mlittle -mlittle-endian -mbig -mbig-endian ! -mcall-aix -mcall-sysv -mcall-netbsd -mprototype -mno-prototype -msim -mmvme -mads -myellowknife -memb -msdata -msdata=OPT -mvxworks -G NUM diff -Nrc3pad gcc-3.0.2/gcc/doc/gcc.info-10 gcc-3.0.3/gcc/doc/gcc.info-10 *** gcc-3.0.2/gcc/doc/gcc.info-10 Tue Oct 23 11:00:26 2001 --- gcc-3.0.3/gcc/doc/gcc.info-10 Thu Dec 20 11:59:48 2001 *************** object. For example: *** 1126,1135 **** struct foo { int x; int y[]; }; struct bar { struct foo z; }; ! struct foo a = { 1, { 2, 3, 4 } }; // Legal. ! struct bar b = { { 1, { 2, 3, 4 } } }; // Illegal. ! struct bar c = { { 1, { } } }; // Legal. ! struct foo d[1] = { { 1 { 2, 3, 4 } } }; // Illegal.  File: gcc.info, Node: Variable Length, Next: Variadic Macros, Prev: Zero Length, Up: C Extensions --- 1126,1135 ---- struct foo { int x; int y[]; }; struct bar { struct foo z; }; ! struct foo a = { 1, { 2, 3, 4 } }; // Valid. ! struct bar b = { { 1, { 2, 3, 4 } } }; // Invalid. ! struct bar c = { { 1, { } } }; // Valid. ! struct foo d[1] = { { 1 { 2, 3, 4 } } }; // Invalid.  File: gcc.info, Node: Variable Length, Next: Variadic Macros, Prev: Zero Length, Up: C Extensions diff -Nrc3pad gcc-3.0.2/gcc/doc/gcc.info-13 gcc-3.0.3/gcc/doc/gcc.info-13 *** gcc-3.0.2/gcc/doc/gcc.info-13 Tue Oct 23 11:00:26 2001 --- gcc-3.0.3/gcc/doc/gcc.info-13 Thu Dec 20 11:59:48 2001 *************** can be used to initialize char arrays. *** 145,152 **** meaning inside a function, since the preprocessor does not do anything special with the identifier `__FUNCTION__'. ! GCC also supports the magic word `__func__', defined by the ISO ! standard C99: The identifier `__func__' is implicitly declared by the translator as if, immediately following the opening brace of each function --- 145,153 ---- meaning inside a function, since the preprocessor does not do anything special with the identifier `__FUNCTION__'. ! Note that these semantics are deprecated, and that GCC 3.2 will ! handle `__FUNCTION__' and `__PRETTY_FUNCTION__' the same way as ! `__func__'. `__func__' is defined by the ISO standard C99: The identifier `__func__' is implicitly declared by the translator as if, immediately following the opening brace of each function diff -Nrc3pad gcc-3.0.2/gcc/doc/gcc.info-28 gcc-3.0.3/gcc/doc/gcc.info-28 *** gcc-3.0.2/gcc/doc/gcc.info-28 Tue Oct 23 11:00:26 2001 --- gcc-3.0.3/gcc/doc/gcc.info-28 Thu Dec 20 11:59:48 2001 *************** return. *** 996,1002 **** `CLASS_CANNOT_CHANGE_MODE_P(FROM, TO)' A C expression that is true if, for a register in ! `CLASS_CANNOT_CHANGE_MODE', the requested mode punning is illegal. For the example, loading 32-bit integer or floating-point objects into floating-point registers on the Alpha extends them to 64-bits. --- 996,1002 ---- `CLASS_CANNOT_CHANGE_MODE_P(FROM, TO)' A C expression that is true if, for a register in ! `CLASS_CANNOT_CHANGE_MODE', the requested mode punning is invalid. For the example, loading 32-bit integer or floating-point objects into floating-point registers on the Alpha extends them to 64-bits. diff -Nrc3pad gcc-3.0.2/gcc/doc/gcc.info-34 gcc-3.0.3/gcc/doc/gcc.info-34 *** gcc-3.0.2/gcc/doc/gcc.info-34 Tue Oct 23 11:00:26 2001 --- gcc-3.0.3/gcc/doc/gcc.info-34 Thu Dec 20 11:59:48 2001 *************** some macros that vary: *** 868,874 **** acts as a "bit bucket". If you do not define this macro, GCC will use `/dev/null' as the bit bucket. If the target does not support a bit bucket, this should be defined to the null string, or some ! other illegal filename. If the bit bucket is not writable, GCC will use a temporary file instead. `COLLECT_EXPORT_LIST' --- 868,874 ---- acts as a "bit bucket". If you do not define this macro, GCC will use `/dev/null' as the bit bucket. If the target does not support a bit bucket, this should be defined to the null string, or some ! other invalid filename. If the bit bucket is not writable, GCC will use a temporary file instead. `COLLECT_EXPORT_LIST' diff -Nrc3pad gcc-3.0.2/gcc/doc/gcc.info-37 gcc-3.0.3/gcc/doc/gcc.info-37 *** gcc-3.0.2/gcc/doc/gcc.info-37 Tue Oct 23 11:00:26 2001 --- gcc-3.0.3/gcc/doc/gcc.info-37 Thu Dec 20 11:59:48 2001 *************** look up both forms. *** 448,453 **** --- 448,454 ---- * mcall-aix: RS/6000 and PowerPC Options. * mcall-lib-mul: RT Options. * mcall-linux: RS/6000 and PowerPC Options. + * mcall-netbsd: RS/6000 and PowerPC Options. * mcall-prologues: AVR Options. * mcall-solaris: RS/6000 and PowerPC Options. * mcall-sysv: RS/6000 and PowerPC Options. diff -Nrc3pad gcc-3.0.2/gcc/doc/gcc.info-4 gcc-3.0.3/gcc/doc/gcc.info-4 *** gcc-3.0.2/gcc/doc/gcc.info-4 Tue Oct 23 11:00:26 2001 --- gcc-3.0.3/gcc/doc/gcc.info-4 Thu Dec 20 11:59:48 2001 *************** of optimizations to be performed is desi *** 1123,1129 **** required, the optimization will not be done. `max-pending-list-length' ! The maximum number of pending dependancies scheduling will allow before flushing the current state and starting over. Large functions with few branches or calls can create excessively large lists which needlessly consume memory and --- 1123,1129 ---- required, the optimization will not be done. `max-pending-list-length' ! The maximum number of pending dependencies scheduling will allow before flushing the current state and starting over. Large functions with few branches or calls can create excessively large lists which needlessly consume memory and diff -Nrc3pad gcc-3.0.2/gcc/doc/gcc.info-7 gcc-3.0.3/gcc/doc/gcc.info-7 *** gcc-3.0.2/gcc/doc/gcc.info-7 Tue Oct 23 11:00:26 2001 --- gcc-3.0.3/gcc/doc/gcc.info-7 Thu Dec 20 11:59:48 2001 *************** IBM RS/6000 and PowerPC Options *** 355,360 **** --- 355,364 ---- On System V.4 and embedded PowerPC systems compile code for the Linux-based GNU system. + `-mcall-netbsd' + On System V.4 and embedded PowerPC systems compile code for the + NetBSD operating system. + `-mprototype' `-mno-prototype' On System V.4 and embedded PowerPC systems assume that all calls to diff -Nrc3pad gcc-3.0.2/gcc/doc/gcc.texi gcc-3.0.3/gcc/doc/gcc.texi *** gcc-3.0.2/gcc/doc/gcc.texi Mon Oct 22 17:23:34 2001 --- gcc-3.0.3/gcc/doc/gcc.texi Wed Nov 7 06:56:45 2001 *************** *** 41,64 **** @c @c anything else? --mew 10feb93 - @c For consistency, use the following: - @c - "32-bit" rather than "32 bit" as an adjective. - @c - "back end" as a noun, "back-end" as an adjective. - @c - "bit-field" not "bitfield" or "bit field" (following the C and C++ - @c standards). - @c - "built-in" as an adjective ("built-in function"), or sometimes - @c "built in", not "builtin" (which isn't a word). - @c - "front end" as a noun, "front-end" as an adjective. - @c - "GCC" for the GNU Compiler Collection, both generally - @c and as the GNU C Compiler in the context of compiling C; - @c "G++" for the C++ compiler; "gcc" and "g++" (lowercase), - @c marked up with @command, for the commands for compilation when the - @c emphasis is on those; "GNU C" and "GNU C++" for language dialects; - @c and try to avoid the older term "GNU CC". - @c - "nonzero" rather than "non-zero". - @c - "@code{NULL}" rather than "NULL". - @c - "Objective-C" rather than "Objective C". - @macro gcctabopt{body} @code{\body\} @end macro --- 41,46 ---- *************** The name of a file or file-like object o *** 3919,3925 **** a ``bit bucket''. If you do not define this macro, GCC will use @samp{/dev/null} as the bit bucket. If the target does not support a bit bucket, this should be defined to the null string, or some other ! illegal filename. If the bit bucket is not writable, GCC will use a temporary file instead. @findex COLLECT_EXPORT_LIST --- 3901,3907 ---- a ``bit bucket''. If you do not define this macro, GCC will use @samp{/dev/null} as the bit bucket. If the target does not support a bit bucket, this should be defined to the null string, or some other ! invalid filename. If the bit bucket is not writable, GCC will use a temporary file instead. @findex COLLECT_EXPORT_LIST diff -Nrc3pad gcc-3.0.2/gcc/doc/gcov.1 gcc-3.0.3/gcc/doc/gcov.1 *** gcc-3.0.2/gcc/doc/gcov.1 Fri Oct 12 04:29:34 2001 --- gcc-3.0.3/gcc/doc/gcov.1 Wed Nov 14 14:33:39 2001 *************** *** 1,5 **** ! .\" Automatically generated by Pod::Man version 1.19 ! .\" Fri Oct 12 11:20:12 2001 .\" .\" Standard preamble: .\" ======================================================================== --- 1,5 ---- ! .\" Automatically generated by Pod::Man version 1.22 ! .\" Wed Nov 14 22:27:21 2001 .\" .\" Standard preamble: .\" ======================================================================== *************** *** 131,137 **** .\" ======================================================================== .\" .IX Title "GCOV 1" ! .TH GCOV 1 "gcc-3.0.2" "2001-10-12" "GNU" .UC .SH "NAME" gcov \- coverage testing tool --- 131,137 ---- .\" ======================================================================== .\" .IX Title "GCOV 1" ! .TH GCOV 1 "gcc-3.0.3" "2001-11-14" "GNU" .UC .SH "NAME" gcov \- coverage testing tool *************** the output does not indicate how many ti *** 378,399 **** many times the result was 1. .SH "SEE ALSO" .IX Header "SEE ALSO" ! \&\fIgcc\fR\|(1) and the Info entry for \fIgcc\fR. .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright (c) 1996, 1997, 1999, 2000 Free Software Foundation, Inc. .PP ! Permission is granted to make and distribute verbatim copies of this ! manual provided the copyright notice and this permission notice are ! preserved on all copies. .PP ! Permission is granted to copy and distribute modified versions of this ! manual under the conditions for verbatim copying, provided also that the ! entire resulting derived work is distributed under the terms of a ! permission notice identical to this one. .PP ! Permission is granted to copy and distribute translations of this manual ! into another language, under the above conditions for modified versions, ! except that this permission notice may be included in translations ! approved by the Free Software Foundation instead of in the original ! English. --- 378,405 ---- many times the result was 1. .SH "SEE ALSO" .IX Header "SEE ALSO" ! \&\fIgpl\fR\|(7), \fIgfdl\fR\|(7), \fIfsf-funding\fR\|(7), \fIgcc\fR\|(1) and the Info entry for \fIgcc\fR. .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright (c) 1996, 1997, 1999, 2000 Free Software Foundation, Inc. .PP ! Permission is granted to copy, distribute and/or modify this document ! under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.1 or ! any later version published by the Free Software Foundation; with the ! Invariant Sections being ``\s-1GNU\s0 General Public License'' and ``Funding ! Free Software'', the Front-Cover texts being (a) (see below), and with ! the Back-Cover Texts being (b) (see below). A copy of the license is ! included in the \fIgfdl\fR\|(7) man page. .PP ! (a) The \s-1FSF\s0's Front-Cover Text is: .PP ! .Vb 1 ! \& A GNU Manual ! .Ve ! (b) The \s-1FSF\s0's Back-Cover Text is: ! .PP ! .Vb 3 ! \& You have freedom to copy and modify this GNU Manual, like GNU ! \& software. Copies published by the Free Software Foundation raise ! \& funds for GNU development. ! .Ve diff -Nrc3pad gcc-3.0.2/gcc/doc/gcov.texi gcc-3.0.3/gcc/doc/gcov.texi *** gcc-3.0.2/gcc/doc/gcov.texi Wed Jun 27 08:08:24 2001 --- gcc-3.0.3/gcc/doc/gcov.texi Wed Nov 14 14:33:37 2001 *************** *** 6,25 **** @c man begin COPYRIGHT Copyright @copyright{} 1996, 1997, 1999, 2000 Free Software Foundation, Inc. ! Permission is granted to make and distribute verbatim copies of this ! manual provided the copyright notice and this permission notice are ! preserved on all copies. ! Permission is granted to copy and distribute modified versions of this ! manual under the conditions for verbatim copying, provided also that the ! entire resulting derived work is distributed under the terms of a ! permission notice identical to this one. ! Permission is granted to copy and distribute translations of this manual ! into another language, under the above conditions for modified versions, ! except that this permission notice may be included in translations ! approved by the Free Software Foundation instead of in the original ! English. @c man end @c Set file name and title for the man page. @setfilename gcov --- 6,28 ---- @c man begin COPYRIGHT Copyright @copyright{} 1996, 1997, 1999, 2000 Free Software Foundation, Inc. ! Permission is granted to copy, distribute and/or modify this document ! under the terms of the GNU Free Documentation License, Version 1.1 or ! any later version published by the Free Software Foundation; with the ! Invariant Sections being ``GNU General Public License'' and ``Funding ! Free Software'', the Front-Cover texts being (a) (see below), and with ! the Back-Cover Texts being (b) (see below). A copy of the license is ! included in the gfdl(7) man page. ! (a) The FSF's Front-Cover Text is: ! A GNU Manual ! ! (b) The FSF's Back-Cover Text is: ! ! You have freedom to copy and modify this GNU Manual, like GNU ! software. Copies published by the Free Software Foundation raise ! funds for GNU development. @c man end @c Set file name and title for the man page. @setfilename gcov *************** gcov [-b] [-c] [-v] [-n] [-l] [-f] [-o d *** 116,122 **** gcov [@option{-b}] [@option{-c}] [@option{-v}] [@option{-n}] [@option{-l}] [@option{-f}] [@option{-o} @var{directory}] @var{sourcefile} @c man end @c man begin SEEALSO ! gcc(1) and the Info entry for @file{gcc}. @c man end @end ignore --- 119,125 ---- gcov [@option{-b}] [@option{-c}] [@option{-v}] [@option{-n}] [@option{-l}] [@option{-f}] [@option{-o} @var{directory}] @var{sourcefile} @c man end @c man begin SEEALSO ! gpl(7), gfdl(7), fsf-funding(7), gcc(1) and the Info entry for @file{gcc}. @c man end @end ignore diff -Nrc3pad gcc-3.0.2/gcc/doc/gfdl.7 gcc-3.0.3/gcc/doc/gfdl.7 *** gcc-3.0.2/gcc/doc/gfdl.7 Wed Dec 31 16:00:00 1969 --- gcc-3.0.3/gcc/doc/gfdl.7 Thu Dec 20 11:55:55 2001 *************** *** 0 **** --- 1,516 ---- + .\" Automatically generated by Pod::Man version 1.22 + .\" Wed Nov 14 22:27:24 2001 + .\" + .\" Standard preamble: + .\" ======================================================================== + .de Sh \" Subsection heading + .br + .if t .Sp + .ne 5 + .PP + \fB\\$1\fR + .PP + .. + .de Sp \" Vertical space (when we can't use .PP) + .if t .sp .5v + .if n .sp + .. + .de Vb \" Begin verbatim text + .ft CW + .nf + .ne \\$1 + .. + .de Ve \" End verbatim text + .ft R + + .fi + .. + .\" Set up some character translations and predefined strings. \*(-- will + .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left + .\" double quote, and \*(R" will give a right double quote. | will give a + .\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to + .\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' + .\" expand to `' in nroff, nothing in troff, for use with C<>. + .tr \(*W-|\(bv\*(Tr + .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' + .ie n \{\ + . ds -- \(*W- + . ds PI pi + . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch + . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch + . ds L" "" + . ds R" "" + . ds C` "" + . ds C' "" + 'br\} + .el\{\ + . ds -- \|\(em\| + . ds PI \(*p + . ds L" `` + . ds R" '' + 'br\} + .\" + .\" If the F register is turned on, we'll generate index entries on stderr for + .\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index + .\" entries marked with X<> in POD. Of course, you'll have to process the + .\" output yourself in some meaningful fashion. + .if \nF \{\ + . de IX + . tm Index:\\$1\t\\n%\t"\\$2" + .. + . nr % 0 + . rr F + .\} + .\" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .hy 0 + .if n .na + .\" + .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). + .\" Fear. Run. Save yourself. No user-serviceable parts. + . \" fudge factors for nroff and troff + .if n \{\ + . ds #H 0 + . ds #V .8m + . ds #F .3m + . ds #[ \f1 + . ds #] \fP + .\} + .if t \{\ + . ds #H ((1u-(\\\\n(.fu%2u))*.13m) + . ds #V .6m + . ds #F 0 + . ds #[ \& + . ds #] \& + .\} + . \" simple accents for nroff and troff + .if n \{\ + . ds ' \& + . ds ` \& + . ds ^ \& + . ds , \& + . ds ~ ~ + . ds / + .\} + .if t \{\ + . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" + . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' + . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' + . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' + . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' + . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' + .\} + . \" troff and (daisy-wheel) nroff accents + .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' + .ds 8 \h'\*(#H'\(*b\h'-\*(#H' + .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] + .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' + .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' + .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] + .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] + .ds ae a\h'-(\w'a'u*4/10)'e + .ds Ae A\h'-(\w'A'u*4/10)'E + . \" corrections for vroff + .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' + .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' + . \" for low resolution devices (crt and lpr) + .if \n(.H>23 .if \n(.V>19 \ + \{\ + . ds : e + . ds 8 ss + . ds o a + . ds d- d\h'-1'\(ga + . ds D- D\h'-1'\(hy + . ds th \o'bp' + . ds Th \o'LP' + . ds ae ae + . ds Ae AE + .\} + .rm #[ #] #H #V #F C + .\" ======================================================================== + .\" + .IX Title "gfdl 7" + .TH gfdl 7 "gcc-3.0.3" "2001-11-14" "GNU" + .UC + .SH "NAME" + gfdl \- \s-1GNU\s0 Free Documentation License + .SH "DESCRIPTION" + .IX Header "DESCRIPTION" + .Sh "\s-1GNU\s0 Free Documentation License" + .IX Subsection "GNU Free Documentation License" + .Sh "Version 1.1, March 2000" + .IX Subsection "Version 1.1, March 2000" + .Vb 2 + \& Copyright (c) 2000 Free Software Foundation, Inc. + \& 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA + .Ve + .Vb 2 + \& Everyone is permitted to copy and distribute verbatim copies + \& of this license document, but changing it is not allowed. + .Ve + .IP "0." 4 + \&\s-1PREAMBLE\s0 + .Sp + The purpose of this License is to make a manual, textbook, or other + written document \fIfree\fR in the sense of freedom: to assure everyone + the effective freedom to copy and redistribute it, with or without + modifying it, either commercially or noncommercially. Secondarily, + this License preserves for the author and publisher a way to get + credit for their work, while not being considered responsible for + modifications made by others. + .Sp + This License is a kind of ``copyleft'', which means that derivative + works of the document must themselves be free in the same sense. It + complements the \s-1GNU\s0 General Public License, which is a copyleft + license designed for free software. + .Sp + We have designed this License in order to use it for manuals for free + software, because free software needs free documentation: a free + program should come with manuals providing the same freedoms that the + software does. But this License is not limited to software manuals; + it can be used for any textual work, regardless of subject matter or + whether it is published as a printed book. We recommend this License + principally for works whose purpose is instruction or reference. + .IP "1." 4 + \&\s-1APPLICABILITY\s0 \s-1AND\s0 \s-1DEFINITIONS\s0 + .Sp + This License applies to any manual or other work that contains a + notice placed by the copyright holder saying it can be distributed + under the terms of this License. The ``Document'', below, refers to any + such manual or work. Any member of the public is a licensee, and is + addressed as ``you''. + .Sp + A ``Modified Version'' of the Document means any work containing the + Document or a portion of it, either copied verbatim, or with + modifications and/or translated into another language. + .Sp + A ``Secondary Section'' is a named appendix or a front-matter section of + the Document that deals exclusively with the relationship of the + publishers or authors of the Document to the Document's overall subject + (or to related matters) and contains nothing that could fall directly + within that overall subject. (For example, if the Document is in part a + textbook of mathematics, a Secondary Section may not explain any + mathematics.) The relationship could be a matter of historical + connection with the subject or with related matters, or of legal, + commercial, philosophical, ethical or political position regarding + them. + .Sp + The ``Invariant Sections'' are certain Secondary Sections whose titles + are designated, as being those of Invariant Sections, in the notice + that says that the Document is released under this License. + .Sp + The ``Cover Texts'' are certain short passages of text that are listed, + as Front-Cover Texts or Back-Cover Texts, in the notice that says that + the Document is released under this License. + .Sp + A ``Transparent'' copy of the Document means a machine-readable copy, + represented in a format whose specification is available to the + general public, whose contents can be viewed and edited directly and + straightforwardly with generic text editors or (for images composed of + pixels) generic paint programs or (for drawings) some widely available + drawing editor, and that is suitable for input to text formatters or + for automatic translation to a variety of formats suitable for input + to text formatters. A copy made in an otherwise Transparent file + format whose markup has been designed to thwart or discourage + subsequent modification by readers is not Transparent. A copy that is + not ``Transparent'' is called ``Opaque''. + .Sp + Examples of suitable formats for Transparent copies include plain + \&\s-1ASCII\s0 without markup, Texinfo input format, LaTeX input format, + \&\f(CW@acronym\fR{\s-1SGML\s0} or \f(CW@acronym\fR{\s-1XML\s0} using a publicly available + \&\f(CW@acronym\fR{\s-1DTD\s0}, and standard-conforming simple \f(CW@acronym\fR{\s-1HTML\s0} designed + for human modification. Opaque formats include PostScript, + \&\f(CW@acronym\fR{\s-1PDF\s0}, proprietary formats that can be read and edited only by + proprietary word processors, \f(CW@acronym\fR{\s-1SGML\s0} or \f(CW@acronym\fR{\s-1XML\s0} for which + the \f(CW@acronym\fR{\s-1DTD\s0} and/or processing tools are not generally available, + and the machine-generated \f(CW@acronym\fR{\s-1HTML\s0} produced by some word + processors for output purposes only. + .Sp + The ``Title Page'' means, for a printed book, the title page itself, + plus such following pages as are needed to hold, legibly, the material + this License requires to appear in the title page. For works in + formats which do not have any title page as such, ``Title Page'' means + the text near the most prominent appearance of the work's title, + preceding the beginning of the body of the text. + .IP "2." 4 + \&\s-1VERBATIM\s0 \s-1COPYING\s0 + .Sp + You may copy and distribute the Document in any medium, either + commercially or noncommercially, provided that this License, the + copyright notices, and the license notice saying this License applies + to the Document are reproduced in all copies, and that you add no other + conditions whatsoever to those of this License. You may not use + technical measures to obstruct or control the reading or further + copying of the copies you make or distribute. However, you may accept + compensation in exchange for copies. If you distribute a large enough + number of copies you must also follow the conditions in section 3. + .Sp + You may also lend copies, under the same conditions stated above, and + you may publicly display copies. + .IP "3." 4 + \&\s-1COPYING\s0 \s-1IN\s0 \s-1QUANTITY\s0 + .Sp + If you publish printed copies of the Document numbering more than 100, + and the Document's license notice requires Cover Texts, you must enclose + the copies in covers that carry, clearly and legibly, all these Cover + Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on + the back cover. Both covers must also clearly and legibly identify + you as the publisher of these copies. The front cover must present + the full title with all words of the title equally prominent and + visible. You may add other material on the covers in addition. + Copying with changes limited to the covers, as long as they preserve + the title of the Document and satisfy these conditions, can be treated + as verbatim copying in other respects. + .Sp + If the required texts for either cover are too voluminous to fit + legibly, you should put the first ones listed (as many as fit + reasonably) on the actual cover, and continue the rest onto adjacent + pages. + .Sp + If you publish or distribute Opaque copies of the Document numbering + more than 100, you must either include a machine-readable Transparent + copy along with each Opaque copy, or state in or with each Opaque copy + a publicly-accessible computer-network location containing a complete + Transparent copy of the Document, free of added material, which the + general network-using public has access to download anonymously at no + charge using public-standard network protocols. If you use the latter + option, you must take reasonably prudent steps, when you begin + distribution of Opaque copies in quantity, to ensure that this + Transparent copy will remain thus accessible at the stated location + until at least one year after the last time you distribute an Opaque + copy (directly or through your agents or retailers) of that edition to + the public. + .Sp + It is requested, but not required, that you contact the authors of the + Document well before redistributing any large number of copies, to give + them a chance to provide you with an updated version of the Document. + .IP "4." 4 + \&\s-1MODIFICATIONS\s0 + .Sp + You may copy and distribute a Modified Version of the Document under + the conditions of sections 2 and 3 above, provided that you release + the Modified Version under precisely this License, with the Modified + Version filling the role of the Document, thus licensing distribution + and modification of the Modified Version to whoever possesses a copy + of it. In addition, you must do these things in the Modified Version: + .RS 4 + .IP "A." 4 + Use in the Title Page (and on the covers, if any) a title distinct + from that of the Document, and from those of previous versions + (which should, if there were any, be listed in the History section + of the Document). You may use the same title as a previous version + if the original publisher of that version gives permission. + .IP "B." 4 + List on the Title Page, as authors, one or more persons or entities + responsible for authorship of the modifications in the Modified + Version, together with at least five of the principal authors of the + Document (all of its principal authors, if it has less than five). + .IP "C." 4 + State on the Title page the name of the publisher of the + Modified Version, as the publisher. + .IP "D." 4 + Preserve all the copyright notices of the Document. + .IP "E." 4 + Add an appropriate copyright notice for your modifications + adjacent to the other copyright notices. + .IP "F." 4 + Include, immediately after the copyright notices, a license notice + giving the public permission to use the Modified Version under the + terms of this License, in the form shown in the Addendum below. + .IP "G." 4 + Preserve in that license notice the full lists of Invariant Sections + and required Cover Texts given in the Document's license notice. + .IP "H." 4 + Include an unaltered copy of this License. + .IP "I." 4 + Preserve the section entitled ``History'', and its title, and add to + it an item stating at least the title, year, new authors, and + publisher of the Modified Version as given on the Title Page. If + there is no section entitled ``History'' in the Document, create one + stating the title, year, authors, and publisher of the Document as + given on its Title Page, then add an item describing the Modified + Version as stated in the previous sentence. + .IP "J." 4 + Preserve the network location, if any, given in the Document for + public access to a Transparent copy of the Document, and likewise + the network locations given in the Document for previous versions + it was based on. These may be placed in the ``History'' section. + You may omit a network location for a work that was published at + least four years before the Document itself, or if the original + publisher of the version it refers to gives permission. + .IP "K." 4 + In any section entitled ``Acknowledgments'' or ``Dedications'', + preserve the section's title, and preserve in the section all the + substance and tone of each of the contributor acknowledgments + and/or dedications given therein. + .IP "L." 4 + Preserve all the Invariant Sections of the Document, + unaltered in their text and in their titles. Section numbers + or the equivalent are not considered part of the section titles. + .IP "M." 4 + Delete any section entitled ``Endorsements''. Such a section + may not be included in the Modified Version. + .IP "N." 4 + Do not retitle any existing section as ``Endorsements'' + or to conflict in title with any Invariant Section. + .RE + .RS 4 + .Sp + If the Modified Version includes new front-matter sections or + appendices that qualify as Secondary Sections and contain no material + copied from the Document, you may at your option designate some or all + of these sections as invariant. To do this, add their titles to the + list of Invariant Sections in the Modified Version's license notice. + These titles must be distinct from any other section titles. + .Sp + You may add a section entitled ``Endorsements'', provided it contains + nothing but endorsements of your Modified Version by various + parties\-\-\-for example, statements of peer review or that the text has + been approved by an organization as the authoritative definition of a + standard. + .Sp + You may add a passage of up to five words as a Front-Cover Text, and a + passage of up to 25 words as a Back-Cover Text, to the end of the list + of Cover Texts in the Modified Version. Only one passage of + Front-Cover Text and one of Back-Cover Text may be added by (or + through arrangements made by) any one entity. If the Document already + includes a cover text for the same cover, previously added by you or + by arrangement made by the same entity you are acting on behalf of, + you may not add another; but you may replace the old one, on explicit + permission from the previous publisher that added the old one. + .Sp + The author(s) and publisher(s) of the Document do not by this License + give permission to use their names for publicity for or to assert or + imply endorsement of any Modified Version. + .RE + .IP "5." 4 + \&\s-1COMBINING\s0 \s-1DOCUMENTS\s0 + .Sp + You may combine the Document with other documents released under this + License, under the terms defined in section 4 above for modified + versions, provided that you include in the combination all of the + Invariant Sections of all of the original documents, unmodified, and + list them all as Invariant Sections of your combined work in its + license notice. + .Sp + The combined work need only contain one copy of this License, and + multiple identical Invariant Sections may be replaced with a single + copy. If there are multiple Invariant Sections with the same name but + different contents, make the title of each such section unique by + adding at the end of it, in parentheses, the name of the original + author or publisher of that section if known, or else a unique number. + Make the same adjustment to the section titles in the list of + Invariant Sections in the license notice of the combined work. + .Sp + In the combination, you must combine any sections entitled ``History'' + in the various original documents, forming one section entitled + ``History''; likewise combine any sections entitled ``Acknowledgments'', + and any sections entitled ``Dedications''. You must delete all sections + entitled ``Endorsements.'' + .IP "6." 4 + \&\s-1COLLECTIONS\s0 \s-1OF\s0 \s-1DOCUMENTS\s0 + .Sp + You may make a collection consisting of the Document and other documents + released under this License, and replace the individual copies of this + License in the various documents with a single copy that is included in + the collection, provided that you follow the rules of this License for + verbatim copying of each of the documents in all other respects. + .Sp + You may extract a single document from such a collection, and distribute + it individually under this License, provided you insert a copy of this + License into the extracted document, and follow this License in all + other respects regarding verbatim copying of that document. + .IP "7." 4 + \&\s-1AGGREGATION\s0 \s-1WITH\s0 \s-1INDEPENDENT\s0 \s-1WORKS\s0 + .Sp + A compilation of the Document or its derivatives with other separate + and independent documents or works, in or on a volume of a storage or + distribution medium, does not as a whole count as a Modified Version + of the Document, provided no compilation copyright is claimed for the + compilation. Such a compilation is called an ``aggregate'', and this + License does not apply to the other self-contained works thus compiled + with the Document, on account of their being thus compiled, if they + are not themselves derivative works of the Document. + .Sp + If the Cover Text requirement of section 3 is applicable to these + copies of the Document, then if the Document is less than one quarter + of the entire aggregate, the Document's Cover Texts may be placed on + covers that surround only the Document within the aggregate. + Otherwise they must appear on covers around the whole aggregate. + .IP "8." 4 + \&\s-1TRANSLATION\s0 + .Sp + Translation is considered a kind of modification, so you may + distribute translations of the Document under the terms of section 4. + Replacing Invariant Sections with translations requires special + permission from their copyright holders, but you may include + translations of some or all Invariant Sections in addition to the + original versions of these Invariant Sections. You may include a + translation of this License provided that you also include the + original English version of this License. In case of a disagreement + between the translation and the original English version of this + License, the original English version will prevail. + .IP "9." 4 + \&\s-1TERMINATION\s0 + .Sp + You may not copy, modify, sublicense, or distribute the Document except + as expressly provided for under this License. Any other attempt to + copy, modify, sublicense or distribute the Document is void, and will + automatically terminate your rights under this License. However, + parties who have received copies, or rights, from you under this + License will not have their licenses terminated so long as such + parties remain in full compliance. + .IP "10." 4 + .IX Item "10." + \&\s-1FUTURE\s0 \s-1REVISIONS\s0 \s-1OF\s0 \s-1THIS\s0 \s-1LICENSE\s0 + .Sp + The Free Software Foundation may publish new, revised versions + of the \s-1GNU\s0 Free Documentation License from time to time. Such new + versions will be similar in spirit to the present version, but may + differ in detail to address new problems or concerns. See + <\fBhttp://www.gnu.org/copyleft/\fR>. + .Sp + Each version of the License is given a distinguishing version number. + If the Document specifies that a particular numbered version of this + License ``or any later version'' applies to it, you have the option of + following the terms and conditions either of that specified version or + of any later version that has been published (not as a draft) by the + Free Software Foundation. If the Document does not specify a version + number of this License, you may choose any version ever published (not + as a draft) by the Free Software Foundation. + .Sh "\s-1ADDENDUM:\s0 How to use this License for your documents" + .IX Subsection "ADDENDUM: How to use this License for your documents" + To use this License in a document you have written, include a copy of + the License in the document and put the following copyright and + license notices just after the title page: + .PP + .Vb 8 + \& Copyright (C) . + \& Permission is granted to copy, distribute and/or modify this document + \& under the terms of the GNU Free Documentation License, Version 1.1 + \& or any later version published by the Free Software Foundation; + \& with the Invariant Sections being , with the + \& Front-Cover Texts being , and with the Back-Cover Texts being . + \& A copy of the license is included in the section entitled ``GNU + \& Free Documentation License''. + .Ve + If you have no Invariant Sections, write ``with no Invariant Sections'' + instead of saying which ones are invariant. If you have no + Front-Cover Texts, write ``no Front-Cover Texts'' instead of + ``Front-Cover Texts being \fIlist\fR''; likewise for Back-Cover Texts. + .PP + If your document contains nontrivial examples of program code, we + recommend releasing these examples in parallel under your choice of + free software license, such as the \s-1GNU\s0 General Public License, + to permit their use in free software. + .SH "SEE ALSO" + .IX Header "SEE ALSO" + \&\fIgpl\fR\|(7), \fIfsf-funding\fR\|(7). + .SH "COPYRIGHT" + .IX Header "COPYRIGHT" + Copyright (c) 2000 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, \s-1MA\s0 02111\-1307, \s-1USA\s0 + .PP + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. diff -Nrc3pad gcc-3.0.2/gcc/doc/gpl.7 gcc-3.0.3/gcc/doc/gpl.7 *** gcc-3.0.2/gcc/doc/gpl.7 Wed Dec 31 16:00:00 1969 --- gcc-3.0.3/gcc/doc/gpl.7 Thu Dec 20 11:55:55 2001 *************** *** 0 **** --- 1,522 ---- + .\" Automatically generated by Pod::Man version 1.22 + .\" Wed Nov 14 22:27:25 2001 + .\" + .\" Standard preamble: + .\" ======================================================================== + .de Sh \" Subsection heading + .br + .if t .Sp + .ne 5 + .PP + \fB\\$1\fR + .PP + .. + .de Sp \" Vertical space (when we can't use .PP) + .if t .sp .5v + .if n .sp + .. + .de Vb \" Begin verbatim text + .ft CW + .nf + .ne \\$1 + .. + .de Ve \" End verbatim text + .ft R + + .fi + .. + .\" Set up some character translations and predefined strings. \*(-- will + .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left + .\" double quote, and \*(R" will give a right double quote. | will give a + .\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to + .\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' + .\" expand to `' in nroff, nothing in troff, for use with C<>. + .tr \(*W-|\(bv\*(Tr + .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' + .ie n \{\ + . ds -- \(*W- + . ds PI pi + . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch + . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch + . ds L" "" + . ds R" "" + . ds C` "" + . ds C' "" + 'br\} + .el\{\ + . ds -- \|\(em\| + . ds PI \(*p + . ds L" `` + . ds R" '' + 'br\} + .\" + .\" If the F register is turned on, we'll generate index entries on stderr for + .\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index + .\" entries marked with X<> in POD. Of course, you'll have to process the + .\" output yourself in some meaningful fashion. + .if \nF \{\ + . de IX + . tm Index:\\$1\t\\n%\t"\\$2" + .. + . nr % 0 + . rr F + .\} + .\" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .hy 0 + .if n .na + .\" + .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). + .\" Fear. Run. Save yourself. No user-serviceable parts. + . \" fudge factors for nroff and troff + .if n \{\ + . ds #H 0 + . ds #V .8m + . ds #F .3m + . ds #[ \f1 + . ds #] \fP + .\} + .if t \{\ + . ds #H ((1u-(\\\\n(.fu%2u))*.13m) + . ds #V .6m + . ds #F 0 + . ds #[ \& + . ds #] \& + .\} + . \" simple accents for nroff and troff + .if n \{\ + . ds ' \& + . ds ` \& + . ds ^ \& + . ds , \& + . ds ~ ~ + . ds / + .\} + .if t \{\ + . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" + . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' + . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' + . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' + . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' + . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' + .\} + . \" troff and (daisy-wheel) nroff accents + .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' + .ds 8 \h'\*(#H'\(*b\h'-\*(#H' + .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] + .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' + .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' + .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] + .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] + .ds ae a\h'-(\w'a'u*4/10)'e + .ds Ae A\h'-(\w'A'u*4/10)'E + . \" corrections for vroff + .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' + .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' + . \" for low resolution devices (crt and lpr) + .if \n(.H>23 .if \n(.V>19 \ + \{\ + . ds : e + . ds 8 ss + . ds o a + . ds d- d\h'-1'\(ga + . ds D- D\h'-1'\(hy + . ds th \o'bp' + . ds Th \o'LP' + . ds ae ae + . ds Ae AE + .\} + .rm #[ #] #H #V #F C + .\" ======================================================================== + .\" + .IX Title "gpl 7" + .TH gpl 7 "gcc-3.0.3" "2001-11-14" "GNU" + .UC + .SH "NAME" + gpl \- \s-1GNU\s0 General Public License + .SH "DESCRIPTION" + .IX Header "DESCRIPTION" + .Sh "\s-1GNU\s0 \s-1GENERAL\s0 \s-1PUBLIC\s0 \s-1LICENSE\s0" + .IX Subsection "GNU GENERAL PUBLIC LICENSE" + .Sh "Version 2, June 1991" + .IX Subsection "Version 2, June 1991" + .Vb 2 + \& Copyright (c) 1989, 1991 Free Software Foundation, Inc. + \& 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + .Ve + .Vb 2 + \& Everyone is permitted to copy and distribute verbatim copies + \& of this license document, but changing it is not allowed. + .Ve + .Sh "Preamble" + .IX Subsection "Preamble" + .Vb 9 + \& The licenses for most software are designed to take away your + \&freedom to share and change it. By contrast, the GNU General Public + \&License is intended to guarantee your freedom to share and change free + \&software---to make sure the software is free for all its users. This + \&General Public License applies to most of the Free Software + \&Foundation's software and to any other program whose authors commit to + \&using it. (Some other Free Software Foundation software is covered by + \&the GNU Library General Public License instead.) You can apply it to + \&your programs, too. + .Ve + .Vb 6 + \& When we speak of free software, we are referring to freedom, not + \&price. Our General Public Licenses are designed to make sure that you + \&have the freedom to distribute copies of free software (and charge for + \&this service if you wish), that you receive source code or can get it + \&if you want it, that you can change the software or use pieces of it + \&in new free programs; and that you know you can do these things. + .Ve + .Vb 4 + \& To protect your rights, we need to make restrictions that forbid + \&anyone to deny you these rights or to ask you to surrender the rights. + \&These restrictions translate to certain responsibilities for you if you + \&distribute copies of the software, or if you modify it. + .Ve + .Vb 5 + \& For example, if you distribute copies of such a program, whether + \&gratis or for a fee, you must give the recipients all the rights that + \&you have. You must make sure that they, too, receive or can get the + \&source code. And you must show them these terms so they know their + \&rights. + .Ve + .Vb 3 + \& We protect your rights with two steps: (1) copyright the software, and + \&(2) offer you this license which gives you legal permission to copy, + \&distribute and/or modify the software. + .Ve + .Vb 6 + \& Also, for each author's protection and ours, we want to make certain + \&that everyone understands that there is no warranty for this free + \&software. If the software is modified by someone else and passed on, we + \&want its recipients to know that what they have is not the original, so + \&that any problems introduced by others will not reflect on the original + \&authors' reputations. + .Ve + .Vb 5 + \& Finally, any free program is threatened constantly by software + \&patents. We wish to avoid the danger that redistributors of a free + \&program will individually obtain patent licenses, in effect making the + \&program proprietary. To prevent this, we have made it clear that any + \&patent must be licensed for everyone's free use or not licensed at all. + .Ve + .Vb 2 + \& The precise terms and conditions for copying, distribution and + \&modification follow. + .Ve + .Sh "\s-1TERMS\s0 \s-1AND\s0 \s-1CONDITIONS\s0 \s-1FOR\s0 \s-1COPYING\s0, \s-1DISTRIBUTION\s0 \s-1AND\s0 \s-1MODIFICATION\s0" + .IX Subsection "TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION" + .IP "0." 4 + This License applies to any program or other work which contains + a notice placed by the copyright holder saying it may be distributed + under the terms of this General Public License. The ``Program'', below, + refers to any such program or work, and a ``work based on the Program'' + means either the Program or any derivative work under copyright law: + that is to say, a work containing the Program or a portion of it, + either verbatim or with modifications and/or translated into another + language. (Hereinafter, translation is included without limitation in + the term ``modification''.) Each licensee is addressed as ``you''. + .Sp + Activities other than copying, distribution and modification are not + covered by this License; they are outside its scope. The act of + running the Program is not restricted, and the output from the Program + is covered only if its contents constitute a work based on the + Program (independent of having been made by running the Program). + Whether that is true depends on what the Program does. + .IP "1." 4 + You may copy and distribute verbatim copies of the Program's + source code as you receive it, in any medium, provided that you + conspicuously and appropriately publish on each copy an appropriate + copyright notice and disclaimer of warranty; keep intact all the + notices that refer to this License and to the absence of any warranty; + and give any other recipients of the Program a copy of this License + along with the Program. + .Sp + You may charge a fee for the physical act of transferring a copy, and + you may at your option offer warranty protection in exchange for a fee. + .IP "2." 4 + You may modify your copy or copies of the Program or any portion + of it, thus forming a work based on the Program, and copy and + distribute such modifications or work under the terms of Section 1 + above, provided that you also meet all of these conditions: + .RS 4 + .IP "a." 4 + You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + .IP "b." 4 + You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + .IP "c." 4 + If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + .RE + .RS 4 + .Sp + These requirements apply to the modified work as a whole. If + identifiable sections of that work are not derived from the Program, + and can be reasonably considered independent and separate works in + themselves, then this License, and its terms, do not apply to those + sections when you distribute them as separate works. But when you + distribute the same sections as part of a whole which is a work based + on the Program, the distribution of the whole must be on the terms of + this License, whose permissions for other licensees extend to the + entire whole, and thus to each and every part regardless of who wrote it. + .Sp + Thus, it is not the intent of this section to claim rights or contest + your rights to work written entirely by you; rather, the intent is to + exercise the right to control the distribution of derivative or + collective works based on the Program. + .Sp + In addition, mere aggregation of another work not based on the Program + with the Program (or with a work based on the Program) on a volume of + a storage or distribution medium does not bring the other work under + the scope of this License. + .RE + .IP "3." 4 + You may copy and distribute the Program (or a work based on it, + under Section 2) in object code or executable form under the terms of + Sections 1 and 2 above provided that you also do one of the following: + .RS 4 + .IP "a." 4 + Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + .IP "b." 4 + Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + .IP "c." 4 + Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + .RE + .RS 4 + .Sp + The source code for a work means the preferred form of the work for + making modifications to it. For an executable work, complete source + code means all the source code for all modules it contains, plus any + associated interface definition files, plus the scripts used to + control compilation and installation of the executable. However, as a + special exception, the source code distributed need not include + anything that is normally distributed (in either source or binary + form) with the major components (compiler, kernel, and so on) of the + operating system on which the executable runs, unless that component + itself accompanies the executable. + .Sp + If distribution of executable or object code is made by offering + access to copy from a designated place, then offering equivalent + access to copy the source code from the same place counts as + distribution of the source code, even though third parties are not + compelled to copy the source along with the object code. + .RE + .IP "4." 4 + You may not copy, modify, sublicense, or distribute the Program + except as expressly provided under this License. Any attempt + otherwise to copy, modify, sublicense or distribute the Program is + void, and will automatically terminate your rights under this License. + However, parties who have received copies, or rights, from you under + this License will not have their licenses terminated so long as such + parties remain in full compliance. + .IP "5." 4 + You are not required to accept this License, since you have not + signed it. However, nothing else grants you permission to modify or + distribute the Program or its derivative works. These actions are + prohibited by law if you do not accept this License. Therefore, by + modifying or distributing the Program (or any work based on the + Program), you indicate your acceptance of this License to do so, and + all its terms and conditions for copying, distributing or modifying + the Program or works based on it. + .IP "6." 4 + Each time you redistribute the Program (or any work based on the + Program), the recipient automatically receives a license from the + original licensor to copy, distribute or modify the Program subject to + these terms and conditions. You may not impose any further + restrictions on the recipients' exercise of the rights granted herein. + You are not responsible for enforcing compliance by third parties to + this License. + .IP "7." 4 + If, as a consequence of a court judgment or allegation of patent + infringement or for any other reason (not limited to patent issues), + conditions are imposed on you (whether by court order, agreement or + otherwise) that contradict the conditions of this License, they do not + excuse you from the conditions of this License. If you cannot + distribute so as to satisfy simultaneously your obligations under this + License and any other pertinent obligations, then as a consequence you + may not distribute the Program at all. For example, if a patent + license would not permit royalty-free redistribution of the Program by + all those who receive copies directly or indirectly through you, then + the only way you could satisfy both it and this License would be to + refrain entirely from distribution of the Program. + .Sp + If any portion of this section is held invalid or unenforceable under + any particular circumstance, the balance of the section is intended to + apply and the section as a whole is intended to apply in other + circumstances. + .Sp + It is not the purpose of this section to induce you to infringe any + patents or other property right claims or to contest validity of any + such claims; this section has the sole purpose of protecting the + integrity of the free software distribution system, which is + implemented by public license practices. Many people have made + generous contributions to the wide range of software distributed + through that system in reliance on consistent application of that + system; it is up to the author/donor to decide if he or she is willing + to distribute software through any other system and a licensee cannot + impose that choice. + .Sp + This section is intended to make thoroughly clear what is believed to + be a consequence of the rest of this License. + .IP "8." 4 + If the distribution and/or use of the Program is restricted in + certain countries either by patents or by copyrighted interfaces, the + original copyright holder who places the Program under this License + may add an explicit geographical distribution limitation excluding + those countries, so that distribution is permitted only in or among + countries not thus excluded. In such case, this License incorporates + the limitation as if written in the body of this License. + .IP "9." 4 + The Free Software Foundation may publish revised and/or new versions + of the General Public License from time to time. Such new versions will + be similar in spirit to the present version, but may differ in detail to + address new problems or concerns. + .Sp + Each version is given a distinguishing version number. If the Program + specifies a version number of this License which applies to it and ``any + later version'', you have the option of following the terms and conditions + either of that version or of any later version published by the Free + Software Foundation. If the Program does not specify a version number of + this License, you may choose any version ever published by the Free Software + Foundation. + .IP "10." 4 + .IX Item "10." + If you wish to incorporate parts of the Program into other free + programs whose distribution conditions are different, write to the author + to ask for permission. For software which is copyrighted by the Free + Software Foundation, write to the Free Software Foundation; we sometimes + make exceptions for this. Our decision will be guided by the two goals + of preserving the free status of all derivatives of our free software and + of promoting the sharing and reuse of software generally. + .Sh "\s-1NO\s0 \s-1WARRANTY\s0" + .IX Subsection "NO WARRANTY" + .IP "11." 4 + .IX Item "11." + \&\s-1BECAUSE\s0 \s-1THE\s0 \s-1PROGRAM\s0 \s-1IS\s0 \s-1LICENSED\s0 \s-1FREE\s0 \s-1OF\s0 \s-1CHARGE\s0, \s-1THERE\s0 \s-1IS\s0 \s-1NO\s0 \s-1WARRANTY\s0 + \&\s-1FOR\s0 \s-1THE\s0 \s-1PROGRAM\s0, \s-1TO\s0 \s-1THE\s0 \s-1EXTENT\s0 \s-1PERMITTED\s0 \s-1BY\s0 \s-1APPLICABLE\s0 \s-1LAW\s0. \s-1EXCEPT\s0 \s-1WHEN\s0 + \&\s-1OTHERWISE\s0 \s-1STATED\s0 \s-1IN\s0 \s-1WRITING\s0 \s-1THE\s0 \s-1COPYRIGHT\s0 \s-1HOLDERS\s0 \s-1AND/OR\s0 \s-1OTHER\s0 \s-1PARTIES\s0 + \&\s-1PROVIDE\s0 \s-1THE\s0 \s-1PROGRAM\s0 ``\s-1AS\s0 \s-1IS\s0'' \s-1WITHOUT\s0 \s-1WARRANTY\s0 \s-1OF\s0 \s-1ANY\s0 \s-1KIND\s0, \s-1EITHER\s0 \s-1EXPRESSED\s0 + \&\s-1OR\s0 \s-1IMPLIED\s0, \s-1INCLUDING\s0, \s-1BUT\s0 \s-1NOT\s0 \s-1LIMITED\s0 \s-1TO\s0, \s-1THE\s0 \s-1IMPLIED\s0 \s-1WARRANTIES\s0 \s-1OF\s0 + \&\s-1MERCHANTABILITY\s0 \s-1AND\s0 \s-1FITNESS\s0 \s-1FOR\s0 A \s-1PARTICULAR\s0 \s-1PURPOSE\s0. \s-1THE\s0 \s-1ENTIRE\s0 \s-1RISK\s0 \s-1AS\s0 + \&\s-1TO\s0 \s-1THE\s0 \s-1QUALITY\s0 \s-1AND\s0 \s-1PERFORMANCE\s0 \s-1OF\s0 \s-1THE\s0 \s-1PROGRAM\s0 \s-1IS\s0 \s-1WITH\s0 \s-1YOU\s0. \s-1SHOULD\s0 \s-1THE\s0 + \&\s-1PROGRAM\s0 \s-1PROVE\s0 \s-1DEFECTIVE\s0, \s-1YOU\s0 \s-1ASSUME\s0 \s-1THE\s0 \s-1COST\s0 \s-1OF\s0 \s-1ALL\s0 \s-1NECESSARY\s0 \s-1SERVICING\s0, + \&\s-1REPAIR\s0 \s-1OR\s0 \s-1CORRECTION\s0. + .IP "12." 4 + .IX Item "12." + \&\s-1IN\s0 \s-1NO\s0 \s-1EVENT\s0 \s-1UNLESS\s0 \s-1REQUIRED\s0 \s-1BY\s0 \s-1APPLICABLE\s0 \s-1LAW\s0 \s-1OR\s0 \s-1AGREED\s0 \s-1TO\s0 \s-1IN\s0 \s-1WRITING\s0 + \&\s-1WILL\s0 \s-1ANY\s0 \s-1COPYRIGHT\s0 \s-1HOLDER\s0, \s-1OR\s0 \s-1ANY\s0 \s-1OTHER\s0 \s-1PARTY\s0 \s-1WHO\s0 \s-1MAY\s0 \s-1MODIFY\s0 \s-1AND/OR\s0 + \&\s-1REDISTRIBUTE\s0 \s-1THE\s0 \s-1PROGRAM\s0 \s-1AS\s0 \s-1PERMITTED\s0 \s-1ABOVE\s0, \s-1BE\s0 \s-1LIABLE\s0 \s-1TO\s0 \s-1YOU\s0 \s-1FOR\s0 \s-1DAMAGES\s0, + \&\s-1INCLUDING\s0 \s-1ANY\s0 \s-1GENERAL\s0, \s-1SPECIAL\s0, \s-1INCIDENTAL\s0 \s-1OR\s0 \s-1CONSEQUENTIAL\s0 \s-1DAMAGES\s0 \s-1ARISING\s0 + \&\s-1OUT\s0 \s-1OF\s0 \s-1THE\s0 \s-1USE\s0 \s-1OR\s0 \s-1INABILITY\s0 \s-1TO\s0 \s-1USE\s0 \s-1THE\s0 \s-1PROGRAM\s0 (\s-1INCLUDING\s0 \s-1BUT\s0 \s-1NOT\s0 \s-1LIMITED\s0 + \&\s-1TO\s0 \s-1LOSS\s0 \s-1OF\s0 \s-1DATA\s0 \s-1OR\s0 \s-1DATA\s0 \s-1BEING\s0 \s-1RENDERED\s0 \s-1INACCURATE\s0 \s-1OR\s0 \s-1LOSSES\s0 \s-1SUSTAINED\s0 \s-1BY\s0 + \&\s-1YOU\s0 \s-1OR\s0 \s-1THIRD\s0 \s-1PARTIES\s0 \s-1OR\s0 A \s-1FAILURE\s0 \s-1OF\s0 \s-1THE\s0 \s-1PROGRAM\s0 \s-1TO\s0 \s-1OPERATE\s0 \s-1WITH\s0 \s-1ANY\s0 \s-1OTHER\s0 + \&\s-1PROGRAMS\s0), \s-1EVEN\s0 \s-1IF\s0 \s-1SUCH\s0 \s-1HOLDER\s0 \s-1OR\s0 \s-1OTHER\s0 \s-1PARTY\s0 \s-1HAS\s0 \s-1BEEN\s0 \s-1ADVISED\s0 \s-1OF\s0 \s-1THE\s0 + \&\s-1POSSIBILITY\s0 \s-1OF\s0 \s-1SUCH\s0 \s-1DAMAGES\s0. + .Sh "\s-1END\s0 \s-1OF\s0 \s-1TERMS\s0 \s-1AND\s0 \s-1CONDITIONS\s0" + .IX Subsection "END OF TERMS AND CONDITIONS" + .Sh "How to Apply These Terms to Your New Programs" + .IX Subsection "How to Apply These Terms to Your New Programs" + .Vb 3 + \& If you develop a new program, and you want it to be of the greatest + \&possible use to the public, the best way to achieve this is to make it + \&free software which everyone can redistribute and change under these terms. + .Ve + .Vb 4 + \& To do so, attach the following notices to the program. It is safest + \&to attach them to the start of each source file to most effectively + \&convey the exclusion of warranty; and each file should have at least + \&the ``copyright'' line and a pointer to where the full notice is found. + .Ve + .Vb 2 + \& + \& Copyright (C) + .Ve + .Vb 4 + \& This program is free software; you can redistribute it and/or modify + \& it under the terms of the GNU General Public License as published by + \& the Free Software Foundation; either version 2 of the License, or + \& (at your option) any later version. + .Ve + .Vb 4 + \& This program is distributed in the hope that it will be useful, + \& but WITHOUT ANY WARRANTY; without even the implied warranty of + \& MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + \& GNU General Public License for more details. + .Ve + .Vb 4 + \& You should have received a copy of the GNU General Public License + \& along with this program; if not, write to the Free Software + \& Foundation, Inc., 59 Temple Place - Suite 330, + \& Boston, MA 02111-1307, USA. + .Ve + Also add information on how to contact you by electronic and paper mail. + .PP + If the program is interactive, make it output a short notice like this + when it starts in an interactive mode: + .PP + .Vb 5 + \& Gnomovision version 69, Copyright (C) + \& Gnomovision comes with ABSOLUTELY NO WARRANTY; for details + \& type `show w'. + \& This is free software, and you are welcome to redistribute it + \& under certain conditions; type `show c' for details. + .Ve + The hypothetical commands \fBshow w\fR and \fBshow c\fR should show + the appropriate parts of the General Public License. Of course, the + commands you use may be called something other than \fBshow w\fR and + \&\fBshow c\fR; they could even be mouse-clicks or menu items\-\-\-whatever + suits your program. + .PP + You should also get your employer (if you work as a programmer) or your + school, if any, to sign a ``copyright disclaimer'' for the program, if + necessary. Here is a sample; alter the names: + .PP + .Vb 2 + \& Yoyodyne, Inc., hereby disclaims all copyright interest in the program + \& `Gnomovision' (which makes passes at compilers) written by James Hacker. + .Ve + .Vb 2 + \& , 1 April 1989 + \& Ty Coon, President of Vice + .Ve + This General Public License does not permit incorporating your program into + proprietary programs. If your program is a subroutine library, you may + consider it more useful to permit linking proprietary applications with the + library. If this is what you want to do, use the \s-1GNU\s0 Library General + Public License instead of this License. + .SH "SEE ALSO" + .IX Header "SEE ALSO" + \&\fIgfdl\fR\|(7), \fIfsf-funding\fR\|(7). + .SH "COPYRIGHT" + .IX Header "COPYRIGHT" + Copyright (c) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place \- Suite 330, Boston, \s-1MA\s0 02111\-1307, \s-1USA\s0 + .PP + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. diff -Nrc3pad gcc-3.0.2/gcc/doc/include/fdl.texi gcc-3.0.3/gcc/doc/include/fdl.texi *** gcc-3.0.2/gcc/doc/include/fdl.texi Wed Jul 4 09:23:07 2001 --- gcc-3.0.3/gcc/doc/include/fdl.texi Tue Dec 4 01:25:39 2001 *************** *** 1,6 **** --- 1,36 ---- + @ignore + @c Set file name and title for man page. + @setfilename gfdl + @settitle GNU Free Documentation License + @c man begin SEEALSO + gpl(7), fsf-funding(7). + @c man end + @c man begin COPYRIGHT + Copyright @copyright{} 2000 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + @c man end + @end ignore + @c Special handling for inclusion in the install manual. + @ifset gfdlhtml + @ifnothtml + @comment node-name, next, previous, up + @node GNU Free Documentation License, Concept Index, Specific, Top + @end ifnothtml + @html +

          Installing GCC: GNU Free Documentation License

          + @end html + @ifnothtml + @unnumbered GNU Free Documentation License + @end ifnothtml + @end ifset + @c man begin DESCRIPTION + @ifclear gfdlhtml @node GNU Free Documentation License @unnumbered GNU Free Documentation License + @end ifclear @cindex FDL, GNU Free Documentation License @center Version 1.1, March 2000 *************** to permit their use in free software. *** 401,403 **** --- 431,434 ---- @c ispell-local-pdict: "ispell-dict" @c End: + @c man end diff -Nrc3pad gcc-3.0.2/gcc/doc/include/funding.texi gcc-3.0.3/gcc/doc/include/funding.texi *** gcc-3.0.2/gcc/doc/include/funding.texi Wed Jul 4 09:23:07 2001 --- gcc-3.0.3/gcc/doc/include/funding.texi Wed Nov 14 14:33:40 2001 *************** *** 1,4 **** --- 1,13 ---- + @ignore + @c Set file name and title for man page. + @setfilename fsf-funding + @settitle Funding Free Software + @c man begin SEEALSO + gpl(7), gfdl(7). + @c man end + @end ignore @node Funding + @c man begin DESCRIPTION @unnumbered Funding Free Software If you want to have more free software a few years from now, it makes *************** major new features or packages contribut *** 40,48 **** By establishing the idea that supporting further development is ``the proper thing to do'' when distributing free software for a fee, we can assure a steady flow of resources into making more free software. @display ! Copyright (C) 1994 Free Software Foundation, Inc. Verbatim copying and redistribution of this section is permitted without royalty; alteration is not permitted. @end display --- 49,60 ---- By establishing the idea that supporting further development is ``the proper thing to do'' when distributing free software for a fee, we can assure a steady flow of resources into making more free software. + @c man end @display ! @c man begin COPYRIGHT ! Copyright @copyright{} 1994 Free Software Foundation, Inc. Verbatim copying and redistribution of this section is permitted without royalty; alteration is not permitted. + @c man end @end display diff -Nrc3pad gcc-3.0.2/gcc/doc/include/gpl.texi gcc-3.0.3/gcc/doc/include/gpl.texi *** gcc-3.0.2/gcc/doc/include/gpl.texi Wed Jul 4 09:23:07 2001 --- gcc-3.0.3/gcc/doc/include/gpl.texi Wed Nov 14 14:33:40 2001 *************** *** 1,4 **** --- 1,20 ---- + @ignore + @c Set file name and title for man page. + @setfilename gpl + @settitle GNU General Public License + @c man begin SEEALSO + gfdl(7), fsf-funding(7). + @c man end + @c man begin COPYRIGHT + Copyright @copyright{} 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + @c man end + @end ignore @node Copying + @c man begin DESCRIPTION @unnumbered GNU GENERAL PUBLIC LICENSE @center Version 2, June 1991 *************** proprietary programs. If your program i *** 390,392 **** --- 406,409 ---- consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. + @c man end diff -Nrc3pad gcc-3.0.2/gcc/doc/install.texi gcc-3.0.3/gcc/doc/install.texi *** gcc-3.0.2/gcc/doc/install.texi Wed Oct 17 02:06:43 2001 --- gcc-3.0.3/gcc/doc/install.texi Mon Dec 10 13:34:19 2001 *************** *** 32,39 **** @ifset binarieshtml @settitle Installing GCC: Binaries @end ifset ! @c Copyright (C) 2001 Free Software Foundation, Inc. @c *** Converted to texinfo by Dean Wakerley, dean@wakerley.com @c Include everything if we're not making html --- 32,43 ---- @ifset binarieshtml @settitle Installing GCC: Binaries @end ifset + @ifset gfdlhtml + @settitle Installing GCC: GNU Free Documentation License + @end ifset ! @c Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, ! @c 1999, 2000, 2001 Free Software Foundation, Inc. @c *** Converted to texinfo by Dean Wakerley, dean@wakerley.com @c Include everything if we're not making html *************** *** 46,57 **** @set testhtml @set finalinstallhtml @set binarieshtml @end ifnothtml @c Part 2 Summary Description and Copyright ! @ifinfo ! Copyright @copyright{} 2001 Free Software Foundation, Inc. @end ifinfo @c Part 3 Titlepage and Copyright --- 50,83 ---- @set testhtml @set finalinstallhtml @set binarieshtml + @set gfdlhtml @end ifnothtml @c Part 2 Summary Description and Copyright ! @macro copyrightnotice ! Copyright @copyright{} 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, ! 1999, 2000, 2001 Free Software Foundation, Inc. ! @sp 1 ! Permission is granted to copy, distribute and/or modify this document ! under the terms of the GNU Free Documentation License, Version 1.1 or ! any later version published by the Free Software Foundation; with no ! Invariant Sections, the Front-Cover texts being (a) (see below), and ! with the Back-Cover Texts being (b) (see below). A copy of the ! license is included in the section entitled ``@uref{./gfdl.html,,GNU ! Free Documentation License}''. ! (a) The FSF's Front-Cover Text is: ! ! A GNU Manual ! ! (b) The FSF's Back-Cover Text is: ! ! You have freedom to copy and modify this GNU Manual, like GNU ! software. Copies published by the Free Software Foundation raise ! funds for GNU development. ! @end macro ! @ifinfo ! @copyrightnotice{} @end ifinfo @c Part 3 Titlepage and Copyright *************** Copyright @copyright{} 2001 Free Softwar *** 63,69 **** @c The following two commands start the copyright page. @page @vskip 0pt plus 1filll ! Copyright @copyright{} 2001 Free Software Foundation, Inc. @end titlepage @c Part 4 Top node and Master Menu --- 89,95 ---- @c The following two commands start the copyright page. @page @vskip 0pt plus 1filll ! @copyrightnotice{} @end titlepage @c Part 4 Top node and Master Menu *************** Copyright @copyright{} 2001 Free Softwar *** 79,84 **** --- 105,111 ---- * Specific:: Host/target specific installation notes for GCC. * Binaries:: Where to get pre-compiled binaries. + * GNU Free Documentation License:: How you can copy and share this manual. * Concept Index:: This index has two entries. @end menu @end ifinfo *************** more binaries exist that use them. *** 161,166 **** --- 188,195 ---- @end html @ifhtml @uref{./index.html,,Return to the GCC Installation page} + + @copyrightnotice{} @end ifhtml @end ifset *************** implies that the host defaults to @var{t *** 307,313 **** @heading Options specification Use @var{options} to override several configure time options for ! GCC@. A partial list of supported @var{options}: @table @code @item --prefix=@var{dirname} --- 336,344 ---- @heading Options specification Use @var{options} to override several configure time options for ! GCC@. A list of supported @var{options} follows; @command{configure ! --help} may list other options, but those not listed below may not ! work and should not normally be used. @table @code @item --prefix=@var{dirname} *************** inferior @code{catgets} interface, the G *** 708,713 **** --- 739,748 ---- ignores @code{catgets} and instead uses GCC's copy of the GNU @code{gettext} library. The @option{--with-catgets} option causes the build procedure to use the host's @code{catgets} in this situation. + + @item --with-system-zlib + Use installed zlib rather than that included with GCC@. This option + only applies if the Java front end is being built. @end table Some options which only apply to building cross compilers: *************** as parts of GCC can only be built with G *** 884,890 **** To build a cross compiler, we first recommend building and installing a native compiler. You can then use the native GCC compiler to build the ! cross compiler. Assuming you have already installed a native copy of GCC and configured your cross compiler, issue the command @command{make}, which performs the --- 919,926 ---- To build a cross compiler, we first recommend building and installing a native compiler. You can then use the native GCC compiler to build the ! cross compiler. The installed native compiler needs to be GCC version ! 2.95 or later. Assuming you have already installed a native copy of GCC and configured your cross compiler, issue the command @command{make}, which performs the *************** behave on different platforms and compar *** 1067,1072 **** --- 1103,1115 ---- few failing testcases are possible even on released versions and you should look here first if you think your results are unreasonable. + @html +
          +

          + @end html + @ifhtml + @uref{./index.html,,Return to the GCC Installation page} + @end ifhtml @end ifset @c ***Final install*********************************************************** *************** info format in @file{@var{infodir}} (nor *** 1100,1117 **** If you don't mind, please quickly review the @uref{http://gcc.gnu.org/gcc-3.0/buildstat.html,,3.0 build status page}. ! If your system is not listed, send a note to @email{gcc@@gcc.gnu.org} indicating that you successfully built and installed GCC. ! Include the output from running @file{@var{srcdir}/config.guess}. (Do ! not send us the @file{config.guess} file itself, just the one-line output from ! running it!) Also specify which version you built. ! If the build was for GNU/Linux, also include the distribution name and version ! (e.g., Red Hat 7.1 or Debian 2.2.3, available from @file{/etc/issue}) ! and the version of glibc you used; for RPM-based systems like Red Hat, Mandrake, and SuSE type @samp{rpm -q glibc} to get the glibc version, and on systems like Debian and Progeny use @samp{dpkg -l libc6}. We'd also like to know if the @ifnothtml --- 1143,1188 ---- If you don't mind, please quickly review the @uref{http://gcc.gnu.org/gcc-3.0/buildstat.html,,3.0 build status page}. ! If your system is not listed for the version of GCC that you built, ! send a note to @email{gcc@@gcc.gnu.org} indicating that you successfully built and installed GCC. + Include the following information: ! @itemize @bullet ! @item ! Output from running @file{@var{srcdir}/config.guess}. Do not send us ! that file itself, just the one-line output from running it. ! ! @item ! The output of @samp{gcc -v} for your newly installed gcc. ! This tells us which version of GCC you built and the options you passed to ! configure. ! ! @item ! If the build was for GNU/Linux, also include: ! @itemize @bullet ! @item ! The distribution name and version (e.g., Red Hat 7.1 or Debian 2.2.3); ! this information should be available from @file{/etc/issue}. ! ! @item ! The version of the Linux kernel, available from @samp{uname --version} ! or @samp{uname -a}. ! ! @item ! The version of glibc you used; for RPM-based systems like Red Hat, Mandrake, and SuSE type @samp{rpm -q glibc} to get the glibc version, and on systems like Debian and Progeny use @samp{dpkg -l libc6}. + @end itemize + For other systems, you can include similar information if you think it is + relevant. + + @item + Any other information that you think would be useful to people building + GCC on the same configuration. The new entry in the build status list + will include a link to the archived copy of your message. + @end itemize We'd also like to know if the @ifnothtml *************** works. *** 1245,1251 **** @c ***Specific**************************************************************** @ifnothtml @comment node-name, next, previous, up ! @node Specific, Concept Index, Binaries, Top @end ifnothtml @ifset specifichtml @html --- 1316,1322 ---- @c ***Specific**************************************************************** @ifnothtml @comment node-name, next, previous, up ! @node Specific, GNU Free Documentation License, Binaries, Top @end ifnothtml @ifset specifichtml @html *************** as new information becomes available. *** 1415,1420 **** --- 1486,1493 ---- @item @uref{#powerpc-*-linux-gnu*,,powerpc-*-linux-gnu*} @item + @uref{#powerpc-*-netbsd*,,powerpc-*-netbsd*} + @item @uref{#powerpc-*-eabiaix,,powerpc-*-eabiaix} @item @uref{#powerpc-*-eabisim,,powerpc-*-eabisim} *************** as new information becomes available. *** 1447,1452 **** --- 1520,1527 ---- @item @uref{#sparc-unknown-linux-gnulibc1,,sparc-unknown-linux-gnulibc1} @item + @uref{#sparc-*-linux*,,sparc-*-linux*} + @item @uref{#sparc64-*-*,,sparc64-*-*} @item @uref{#*-*-sysv*,,*-*-sysv*} *************** if you initially built it with gcc-2.7.2 *** 2984,2989 **** --- 3059,3073 ----


          @end html + @heading @anchor{powerpc-*-netbsd*}powerpc-*-netbsd* + PowerPC system in big endian mode running NetBSD@. To build the + documentation you will need Texinfo version 4.0 (NetBSD 1.5.1 included + Texinfo version 3.12). + + @html +

          +
          + @end html @heading @anchor{powerpc-*-eabiaix}powerpc-*-eabiaix Embedded PowerPC system in big endian mode with @option{-mcall-aix} selected as the default. *************** newer: @command{g++} will complain that *** 3106,3112 **** that omitting the type means @code{int}; this assumption worked for C89 but is wrong for C++, and is now wrong for C99 also. ! @command{g++} accepts such (illegal) constructs with the option @option{-fpermissive}; it will assume that any missing type is @code{int} (as defined by C89). --- 3190,3196 ---- that omitting the type means @code{int}; this assumption worked for C89 but is wrong for C++, and is now wrong for C99 also. ! @command{g++} accepts such (invalid) constructs with the option @option{-fpermissive}; it will assume that any missing type is @code{int} (as defined by C89). *************** for this platform, too. *** 3233,3238 **** --- 3317,3333 ----


          @end html + @heading @anchor{sparc-*-linux*}sparc-*-linux* + + GCC versions 3.0 and higher require binutils 2.11.2 and glibc 2.2.4 + or newer on this platform. All earlier binutils and glibc + releases mishandled unaligned relocations on @code{sparc-*-*} targets. + + + @html +

          +
          + @end html @heading @anchor{sparc64-*-*}sparc64-*-* GCC version 2.95 is not able to compile code correctly for *************** automatically. *** 3415,3425 **** @end ifhtml @end ifset @c *************************************************************************** @c Part 6 The End of the Document @ifinfo @comment node-name, next, previous, up ! @node Concept Index, , Specific, Top @end ifinfo @ifinfo --- 3510,3533 ---- @end ifhtml @end ifset + @c ***GFDL******************************************************************** + @ifset gfdlhtml + @include fdl.texi + @html +

          +
          +

          + @end html + @ifhtml + @uref{./index.html,,Return to the GCC Installation page} + @end ifhtml + @end ifset + @c *************************************************************************** @c Part 6 The End of the Document @ifinfo @comment node-name, next, previous, up ! @node Concept Index, , GNU Free Documentation License, Top @end ifinfo @ifinfo diff -Nrc3pad gcc-3.0.2/gcc/doc/install.texi2html gcc-3.0.3/gcc/doc/install.texi2html *** gcc-3.0.2/gcc/doc/install.texi2html Fri Jun 8 00:21:49 2001 --- gcc-3.0.3/gcc/doc/install.texi2html Tue Dec 4 01:25:40 2001 *************** if [ ! -d $DESTDIR ]; then *** 22,30 **** fi for x in index.html specific.html download.html configure.html \ ! build.html test.html finalinstall.html binaries.html do define=`echo $x | sed -e 's/\.//g'` echo "define = $define" ! $MAKEINFO $SOURCEDIR/install.texi --html -D$define -o$DESTDIR/$x done --- 22,30 ---- fi for x in index.html specific.html download.html configure.html \ ! build.html test.html finalinstall.html binaries.html gfdl.html do define=`echo $x | sed -e 's/\.//g'` echo "define = $define" ! $MAKEINFO -I $SOURCEDIR/include $SOURCEDIR/install.texi --html --no-split -D$define -o$DESTDIR/$x done diff -Nrc3pad gcc-3.0.2/gcc/doc/invoke.texi gcc-3.0.3/gcc/doc/invoke.texi *** gcc-3.0.2/gcc/doc/invoke.texi Wed Oct 17 02:06:44 2001 --- gcc-3.0.3/gcc/doc/invoke.texi Wed Nov 14 14:33:37 2001 *************** *** 8,27 **** Copyright @copyright{} 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. ! Permission is granted to make and distribute verbatim copies of this ! manual provided the copyright notice and this permission notice are ! preserved on all copies. ! Permission is granted to copy and distribute modified versions of this ! manual under the conditions for verbatim copying, provided also that the ! entire resulting derived work is distributed under the terms of a ! permission notice identical to this one. ! Permission is granted to copy and distribute translations of this manual ! into another language, under the above conditions for modified versions, ! except that this permission notice may be included in translations ! approved by the Free Software Foundation instead of in the original ! English. @c man end @c Set file name and title for the man page. @setfilename gcc --- 8,30 ---- Copyright @copyright{} 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. ! Permission is granted to copy, distribute and/or modify this document ! under the terms of the GNU Free Documentation License, Version 1.1 or ! any later version published by the Free Software Foundation; with the ! Invariant Sections being ``GNU General Public License'' and ``Funding ! Free Software'', the Front-Cover texts being (a) (see below), and with ! the Back-Cover Texts being (b) (see below). A copy of the license is ! included in the gfdl(7) man page. ! (a) The FSF's Front-Cover Text is: ! A GNU Manual ! ! (b) The FSF's Back-Cover Text is: ! ! You have freedom to copy and modify this GNU Manual, like GNU ! software. Copies published by the Free Software Foundation raise ! funds for GNU development. @c man end @c Set file name and title for the man page. @setfilename gcc *************** Only the most useful options are listed *** 39,44 **** --- 42,48 ---- remainder. @samp{g++} accepts mostly the same options as @samp{gcc}. @c man end @c man begin SEEALSO + gpl(7), gfdl(7), fsf-funding(7), cpp(1), gcov(1), g77(1), as(1), ld(1), gdb(1), adb(1), dbx(1), sdb(1) and the Info entries for @file{gcc}, @file{cpp}, @file{g77}, @file{as}, @file{ld}, @file{binutils} and @file{gdb}. *************** in the following sections. *** 432,438 **** -mstrict-align -mno-strict-align -mrelocatable @gol -mno-relocatable -mrelocatable-lib -mno-relocatable-lib @gol -mtoc -mno-toc -mlittle -mlittle-endian -mbig -mbig-endian @gol ! -mcall-aix -mcall-sysv -mprototype -mno-prototype @gol -msim -mmvme -mads -myellowknife -memb -msdata @gol -msdata=@var{opt} -mvxworks -G @var{num}} --- 436,442 ---- -mstrict-align -mno-strict-align -mrelocatable @gol -mno-relocatable -mrelocatable-lib -mno-relocatable-lib @gol -mtoc -mno-toc -mlittle -mlittle-endian -mbig -mbig-endian @gol ! -mcall-aix -mcall-sysv -mcall-netbsd -mprototype -mno-prototype @gol -msim -mmvme -mads -myellowknife -memb -msdata @gol -msdata=@var{opt} -mvxworks -G @var{num}} *************** optimization. If more memory than speci *** 3720,3726 **** optimization will not be done. @item max-pending-list-length ! The maximum number of pending dependancies scheduling will allow before flushing the current state and starting over. Large functions with few branches or calls can create excessively large lists which needlessly consume memory and resources. --- 3724,3730 ---- optimization will not be done. @item max-pending-list-length ! The maximum number of pending dependencies scheduling will allow before flushing the current state and starting over. Large functions with few branches or calls can create excessively large lists which needlessly consume memory and resources. *************** operating system. *** 6732,6737 **** --- 6736,6746 ---- @opindex mcall-linux On System V.4 and embedded PowerPC systems compile code for the Linux-based GNU system. + + @item -mcall-netbsd + @opindex mcall-netbsd + On System V.4 and embedded PowerPC systems compile code for the + NetBSD operating system. @item -mprototype @itemx -mno-prototype diff -Nrc3pad gcc-3.0.2/gcc/doc/tm.texi gcc-3.0.3/gcc/doc/tm.texi *** gcc-3.0.2/gcc/doc/tm.texi Wed Oct 17 02:06:48 2001 --- gcc-3.0.3/gcc/doc/tm.texi Sat Nov 3 05:26:58 2001 *************** which the compiler may not change modes *** 2345,2351 **** @item CLASS_CANNOT_CHANGE_MODE_P(@var{from}, @var{to}) A C expression that is true if, for a register in ! @code{CLASS_CANNOT_CHANGE_MODE}, the requested mode punning is illegal. For the example, loading 32-bit integer or floating-point objects into floating-point registers on the Alpha extends them to 64-bits. --- 2345,2351 ---- @item CLASS_CANNOT_CHANGE_MODE_P(@var{from}, @var{to}) A C expression that is true if, for a register in ! @code{CLASS_CANNOT_CHANGE_MODE}, the requested mode punning is invalid. For the example, loading 32-bit integer or floating-point objects into floating-point registers on the Alpha extends them to 64-bits. diff -Nrc3pad gcc-3.0.2/gcc/doloop.c gcc-3.0.3/gcc/doloop.c *** gcc-3.0.2/gcc/doloop.c Sat May 12 13:32:26 2001 --- gcc-3.0.3/gcc/doloop.c Fri Nov 30 14:45:14 2001 *************** doloop_valid_p (loop, jump_insn) *** 352,374 **** && ((loop_info->comparison_code == LEU && INTVAL (loop_info->increment) > 0) || (loop_info->comparison_code == GEU ! && INTVAL (loop_info->increment) < 0))) { /* If the comparison is LEU and the comparison value is UINT_MAX then the loop will not terminate. Similarly, if the comparison code is GEU and the initial value is 0, the loop will not terminate. ! Note that with LE and GE, the loop behaviour can be ! implementation dependent if an overflow occurs, say between ! INT_MAX and INT_MAX + 1. We thus don't have to worry about ! these two cases. ??? We could compute these conditions at run-time and have a additional jump around the loop to ensure an infinite loop. However, it is very unlikely that this is the intended behaviour of the loop and checking for these rare boundary ! conditions would pessimize all other code. */ if (loop_dump_stream) fprintf (loop_dump_stream, "Doloop: Possible infinite iteration case ignored.\n"); --- 352,389 ---- && ((loop_info->comparison_code == LEU && INTVAL (loop_info->increment) > 0) || (loop_info->comparison_code == GEU ! && INTVAL (loop_info->increment) < 0) ! || (loop_info->comparison_code == LTU ! && INTVAL (loop_info->increment) > 1) ! || (loop_info->comparison_code == GTU ! && INTVAL (loop_info->increment) < -1))) { /* If the comparison is LEU and the comparison value is UINT_MAX then the loop will not terminate. Similarly, if the comparison code is GEU and the initial value is 0, the loop will not terminate. ! If the absolute increment is not 1, the loop can be infinite ! even with LTU/GTU, e.g. for (i = 3; i > 0; i -= 2) ! ! Note that with LE and GE, the loop behaviour is undefined ! (C++ standard section 5 clause 5) if an overflow occurs, say ! between INT_MAX and INT_MAX + 1. We thus don't have to worry ! about these two cases. ??? We could compute these conditions at run-time and have a additional jump around the loop to ensure an infinite loop. However, it is very unlikely that this is the intended behaviour of the loop and checking for these rare boundary ! conditions would pessimize all other code. ! ! If the loop is executed only a few times an extra check to ! restart the loop could use up most of the benefits of using a ! count register loop. Note however, that normally, this ! restart branch would never execute, so it could be predicted ! well by the CPU. We should generate the pessimistic code by ! default, and have an option, e.g. -funsafe-loops that would ! enable count-register loops in this case. */ if (loop_dump_stream) fprintf (loop_dump_stream, "Doloop: Possible infinite iteration case ignored.\n"); *************** doloop_modify_runtime (loop, iterations_ *** 568,582 **** /* The number of iterations (prior to any loop unrolling) is given by: (abs (final - initial) + abs_inc - 1) / abs_inc. - However, it is possible for the summation to overflow, and a - safer method is: - - abs (final - initial) / abs_inc + (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. The number of iterations of the loop body is simply: ! abs (final - initial) / (abs_inc * unroll_number). The division and modulo operations can be avoided by requiring that the increment is a power of 2 (precondition_loop_p enforces --- 583,592 ---- /* The number of iterations (prior to any loop unrolling) is given by: (abs (final - initial) + abs_inc - 1) / abs_inc. If the loop has been unrolled, then the loop body has been preconditioned to iterate a multiple of unroll_number times. The number of iterations of the loop body is simply: ! (abs (final - initial) + abs_inc - 1) / (abs_inc * unroll_number). 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_ *** 590,656 **** copy_rtx (neg_inc ? final_value : initial_value), NULL_RTX, unsigned_p, OPTAB_LIB_WIDEN); ! if (loop_info->unroll_number == 1) { ! if (abs_inc != 1) ! { ! int shift_count; ! rtx extra; ! rtx label; ! shift_count = exact_log2 (abs_inc); ! if (shift_count < 0) ! abort (); ! /* abs (final - initial) / abs_inc */ ! iterations = expand_binop (GET_MODE (diff), lshr_optab, ! diff, GEN_INT (shift_count), NULL_RTX, 1, OPTAB_LIB_WIDEN); ! ! /* abs (final - initial) % abs_inc */ ! extra = expand_binop (GET_MODE (iterations), and_optab, ! diff, GEN_INT (abs_inc - 1), ! NULL_RTX, 1, ! OPTAB_LIB_WIDEN); ! ! /* If (abs (final - initial) % abs_inc == 0) jump past ! following increment instruction. */ ! label = gen_label_rtx(); ! emit_cmp_and_jump_insns (extra, const0_rtx, EQ, NULL_RTX, ! GET_MODE (extra), 0, 0, label); ! JUMP_LABEL (get_last_insn ()) = label; ! LABEL_NUSES (label)++; ! ! /* Increment the iteration count by one. */ ! iterations = expand_binop (GET_MODE (iterations), add_optab, ! iterations, GEN_INT (1), iterations, 1, OPTAB_LIB_WIDEN); - - emit_label (label); } else ! iterations = diff; } else ! { ! int shift_count; ! ! /* precondition_loop_p has preconditioned the loop so that the ! iteration count of the loop body is always a power of 2. ! Since we won't get an overflow calculating the loop count, ! the code we emit is simpler. */ ! shift_count = exact_log2 (loop_info->unroll_number * abs_inc); ! if (shift_count < 0) ! abort (); ! ! iterations = expand_binop (GET_MODE (diff), lshr_optab, ! diff, GEN_INT (shift_count), ! NULL_RTX, 1, ! OPTAB_LIB_WIDEN); ! } ! /* 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 --- 600,639 ---- copy_rtx (neg_inc ? final_value : initial_value), NULL_RTX, unsigned_p, OPTAB_LIB_WIDEN); ! if (abs_inc * loop_info->unroll_number != 1) { ! int shift_count; ! shift_count = exact_log2 (abs_inc * loop_info->unroll_number); ! if (shift_count < 0) ! abort (); ! if (abs_inc != 1) ! { ! /* abs (final - initial + abs_inc - 1) / abs_inc / unroll_number ! If we get an overflow, the loop is infinite, and ! the loop count is set to zero. That is not really ! infinite but it will run UINT_MAX+1 times. */ ! iterations = expand_binop (GET_MODE (diff), add_optab, ! diff, GEN_INT (abs_inc - 1), NULL_RTX, 1, OPTAB_LIB_WIDEN); ! iterations = expand_binop (GET_MODE (iterations), lshr_optab, ! iterations, GEN_INT (shift_count), iterations, 1, OPTAB_LIB_WIDEN); } else ! { ! /* abs (final - initial) / abs_inc. */ ! iterations = expand_binop (GET_MODE (diff), lshr_optab, ! diff, GEN_INT (shift_count), ! NULL_RTX, 1, ! OPTAB_LIB_WIDEN); ! } } 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 *************** doloop_modify_runtime (loop, iterations_ *** 661,667 **** not executed before the start of the loop. We need to determine if the loop will terminate after the first pass and to limit the iteration count to one if necessary. */ ! if (! loop->vtop) { rtx label; --- 644,650 ---- not executed before the start of the loop. We need to determine if the loop will terminate after the first pass and to limit the iteration count to one if necessary. */ ! if (! loop->vtop && comparison_code != NE) { rtx label; *************** doloop_modify_runtime (loop, iterations_ *** 674,686 **** 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(); ! emit_cmp_and_jump_insns (copy_rtx (initial_value), copy_rtx (loop_info->comparison_value), ! comparison_code, NULL_RTX, mode, 0, 0, ! label); JUMP_LABEL (get_last_insn ()) = label; LABEL_NUSES (label)++; emit_move_insn (iterations, const1_rtx); --- 657,674 ---- is guaranteed to execute at least once. */ if (loop_info->unroll_number == 1) { + rtx incremented_initval; /* Emit insns to test if the loop will immediately terminate and to set the iteration count to 1 if true. */ label = gen_label_rtx(); ! incremented_initval = expand_binop (mode, add_optab, ! copy_rtx (initial_value), ! increment, NULL_RTX, 0, ! OPTAB_LIB_WIDEN); ! emit_cmp_and_jump_insns (incremented_initval, copy_rtx (loop_info->comparison_value), ! comparison_code, NULL_RTX, mode, ! unsigned_p, 0, label); JUMP_LABEL (get_last_insn ()) = label; LABEL_NUSES (label)++; emit_move_insn (iterations, const1_rtx); diff -Nrc3pad gcc-3.0.2/gcc/dwarf2out.c gcc-3.0.3/gcc/dwarf2out.c *** gcc-3.0.2/gcc/dwarf2out.c Fri Oct 5 11:02:02 2001 --- gcc-3.0.3/gcc/dwarf2out.c Sun Dec 2 18:38:44 2001 *************** is_c_family () *** 4574,4579 **** --- 4574,4586 ---- } static inline int + is_cxx () + { + return (get_AT_unsigned (comp_unit_die, DW_AT_language) + == DW_LANG_C_plus_plus); + } + + static inline int is_fortran () { register unsigned lang = get_AT_unsigned (comp_unit_die, DW_AT_language); *************** add_data_member_location_attribute (die, *** 7890,7917 **** register dw_die_ref die; register tree decl; { ! register unsigned long offset; ! register dw_loc_descr_ref loc_descr; ! register enum dwarf_location_atom op; if (TREE_CODE (decl) == TREE_VEC) ! offset = tree_low_cst (BINFO_OFFSET (decl), 0); else offset = field_byte_offset (decl); ! /* The DWARF2 standard says that we should assume that the structure address ! is already on the stack, so we can specify a structure field address ! by using DW_OP_plus_uconst. */ #ifdef MIPS_DEBUGGING_INFO ! /* ??? The SGI dwarf reader does not handle the DW_OP_plus_uconst operator ! correctly. It works only if we leave the offset on the stack. */ ! op = DW_OP_constu; #else ! op = DW_OP_plus_uconst; #endif ! loc_descr = new_loc_descr (op, offset, 0); add_AT_loc (die, DW_AT_data_member_location, loc_descr); } --- 7897,7966 ---- register dw_die_ref die; register tree decl; { ! long offset; ! dw_loc_descr_ref loc_descr = 0; if (TREE_CODE (decl) == TREE_VEC) ! { ! /* We're working on the TAG_inheritance for a base class. */ ! ! if (TREE_VIA_VIRTUAL (decl) && is_cxx ()) ! { ! /* For C++ virtual bases we can't just use BINFO_OFFSET, as they ! aren't at a fixed offset from all (sub)objects of the same ! type. We need to extract the appropriate offset from our ! vtable. The following dwarf expression means ! ! BaseAddr = ObAddr + *((*ObAddr) - Offset) ! ! This is specific to the V3 ABI, of course. */ ! ! dw_loc_descr_ref tmp; ! /* Make a copy of the object address. */ ! tmp = new_loc_descr (DW_OP_dup, 0, 0); ! add_loc_descr (&loc_descr, tmp); ! /* Extract the vtable address. */ ! tmp = new_loc_descr (DW_OP_deref, 0, 0); ! add_loc_descr (&loc_descr, tmp); ! /* Calculate the address of the offset. */ ! offset = tree_low_cst (BINFO_VPTR_FIELD (decl), 0); ! if (offset >= 0) ! abort (); ! tmp = int_loc_descriptor (-offset); ! add_loc_descr (&loc_descr, tmp); ! tmp = new_loc_descr (DW_OP_minus, 0, 0); ! add_loc_descr (&loc_descr, tmp); ! /* Extract the offset. */ ! tmp = new_loc_descr (DW_OP_deref, 0, 0); ! add_loc_descr (&loc_descr, tmp); ! /* Add it to the object address. */ ! tmp = new_loc_descr (DW_OP_plus, 0, 0); ! add_loc_descr (&loc_descr, tmp); ! } ! else ! offset = tree_low_cst (BINFO_OFFSET (decl), 0); ! } else offset = field_byte_offset (decl); ! if (! loc_descr) ! { ! enum dwarf_location_atom op; ! ! /* The DWARF2 standard says that we should assume that the structure address ! is already on the stack, so we can specify a structure field address ! by using DW_OP_plus_uconst. */ #ifdef MIPS_DEBUGGING_INFO ! /* ??? The SGI dwarf reader does not handle the DW_OP_plus_uconst operator ! correctly. It works only if we leave the offset on the stack. */ ! op = DW_OP_constu; #else ! op = DW_OP_plus_uconst; #endif ! loc_descr = new_loc_descr (op, offset, 0); ! } add_AT_loc (die, DW_AT_data_member_location, loc_descr); } diff -Nrc3pad gcc-3.0.2/gcc/except.c gcc-3.0.3/gcc/except.c *** gcc-3.0.2/gcc/except.c Mon Sep 17 16:12:47 2001 --- gcc-3.0.3/gcc/except.c Tue Dec 11 17:27:08 2001 *************** sjlj_find_directly_reachable_regions (lp *** 1948,1953 **** --- 1948,1954 ---- for (insn = get_insns (); insn ; insn = NEXT_INSN (insn)) { struct eh_region *region; + enum reachable_code rc; tree type_thrown; rtx note; *************** sjlj_find_directly_reachable_regions (lp *** 1969,1979 **** /* Find the first containing region that might handle the exception. That's the landing pad to which we will transfer control. */ for (; region; region = region->outer) ! if (reachable_next_level (region, type_thrown, 0) != RNL_NOT_CAUGHT) ! break; ! ! if (region) { lp_info[region->region_number].directly_reachable = 1; found_one = true; --- 1970,1983 ---- /* Find the first containing region that might handle the exception. That's the landing pad to which we will transfer control. */ + rc = RNL_NOT_CAUGHT; for (; region; region = region->outer) ! { ! rc = reachable_next_level (region, type_thrown, 0); ! if (rc != RNL_NOT_CAUGHT) ! break; ! } ! if (rc == RNL_MAYBE_CAUGHT || rc == RNL_CAUGHT) { lp_info[region->region_number].directly_reachable = 1; found_one = true; *************** sjlj_assign_call_site_values (dispatch_l *** 2020,2027 **** index = 0; for (i = cfun->eh->last_region_number; i > 0; --i) ! if (lp_info[i].directly_reachable ! && lp_info[i].action_index >= 0) lp_info[i].dispatch_index = index++; /* Finally: assign call-site values. If dwarf2 terms, this would be --- 2024,2030 ---- index = 0; for (i = cfun->eh->last_region_number; i > 0; --i) ! if (lp_info[i].directly_reachable) lp_info[i].dispatch_index = index++; /* Finally: assign call-site values. If dwarf2 terms, this would be *************** sjlj_emit_dispatch_table (dispatch_label *** 2302,2309 **** first_reachable = 0; for (i = cfun->eh->last_region_number; i > 0; --i) { ! if (! lp_info[i].directly_reachable ! || lp_info[i].action_index < 0) continue; if (! first_reachable) --- 2305,2311 ---- first_reachable = 0; for (i = cfun->eh->last_region_number; i > 0; --i) { ! if (! lp_info[i].directly_reachable) continue; if (! first_reachable) diff -Nrc3pad gcc-3.0.2/gcc/expr.c gcc-3.0.3/gcc/expr.c *** gcc-3.0.2/gcc/expr.c Fri Sep 21 18:33:19 2001 --- gcc-3.0.3/gcc/expr.c Fri Dec 7 16:36:51 2001 *************** store_constructor (exp, target, align, c *** 4574,4580 **** int need_to_clear; tree domain = TYPE_DOMAIN (type); tree elttype = TREE_TYPE (type); ! int const_bounds_p = (host_integerp (TYPE_MIN_VALUE (domain), 0) && host_integerp (TYPE_MAX_VALUE (domain), 0)); HOST_WIDE_INT minelt; HOST_WIDE_INT maxelt; --- 4574,4582 ---- int need_to_clear; tree domain = TYPE_DOMAIN (type); tree elttype = TREE_TYPE (type); ! int const_bounds_p = (TYPE_MIN_VALUE (domain) ! && TYPE_MAX_VALUE (domain) ! && host_integerp (TYPE_MIN_VALUE (domain), 0) && host_integerp (TYPE_MAX_VALUE (domain), 0)); HOST_WIDE_INT minelt; HOST_WIDE_INT maxelt; diff -Nrc3pad gcc-3.0.2/gcc/final.c gcc-3.0.3/gcc/final.c *** gcc-3.0.2/gcc/final.c Sat Jun 9 12:22:26 2001 --- gcc-3.0.3/gcc/final.c Sun Nov 25 16:48:08 2001 *************** dbr_sequence_length () *** 597,603 **** /* Arrays for insn lengths, and addresses. The latter is referenced by `insn_current_length'. */ ! static short *insn_lengths; #ifdef HAVE_ATTR_length varray_type insn_addresses_; --- 597,603 ---- /* Arrays for insn lengths, and addresses. The latter is referenced by `insn_current_length'. */ ! static int *insn_lengths; #ifdef HAVE_ATTR_length varray_type insn_addresses_; *************** shorten_branches (first) *** 1129,1135 **** #ifdef HAVE_ATTR_length /* Allocate the rest of the arrays. */ ! insn_lengths = (short *) xmalloc (max_uid * sizeof (short)); insn_lengths_max_uid = max_uid; /* Syntax errors can lead to labels being outside of the main insn stream. Initialize insn_addresses, so that we get reproducible results. */ --- 1129,1135 ---- #ifdef HAVE_ATTR_length /* Allocate the rest of the arrays. */ ! insn_lengths = (int *) xmalloc (max_uid * sizeof (*insn_lengths)); insn_lengths_max_uid = max_uid; /* Syntax errors can lead to labels being outside of the main insn stream. Initialize insn_addresses, so that we get reproducible results. */ diff -Nrc3pad gcc-3.0.2/gcc/fixinc/fixincl.c gcc-3.0.3/gcc/fixinc/fixincl.c *** gcc-3.0.2/gcc/fixinc/fixincl.c Fri Jul 20 21:19:53 2001 --- gcc-3.0.3/gcc/fixinc/fixincl.c Tue Dec 4 20:26:33 2001 *************** initialize ( argc, argv ) *** 225,231 **** #else "fixincl ERROR: %s environment variable not defined\n" "each of these must be defined:\n" ! # define _ENV_(v,m,n,t) "\t" n " - " t "\n" ENV_TABLE # undef _ENV_ #endif --- 225,231 ---- #else "fixincl ERROR: %s environment variable not defined\n" "each of these must be defined:\n" ! # define _ENV_(vv,mm,nn,tt) "\t" nn " - " tt "\n" ENV_TABLE # undef _ENV_ #endif diff -Nrc3pad gcc-3.0.2/gcc/fixinc/fixincl.x gcc-3.0.3/gcc/fixinc/fixincl.x *** gcc-3.0.2/gcc/fixinc/fixincl.x Wed Sep 12 19:38:30 2001 --- gcc-3.0.3/gcc/fixinc/fixincl.x Thu Dec 20 11:55:55 2001 *************** *** 5,11 **** * files which are fixed to work correctly with ANSI C and placed in a * directory that GNU C will search. * ! * This file contains 145 fixup descriptions. * * See README for more information. * --- 5,11 ---- * files which are fixed to work correctly with ANSI C and placed in a * directory that GNU C will search. * ! * This file contains 144 fixup descriptions. * * See README for more information. * *************** static const char* apzAaa_StandardsPatch *** 222,260 **** /* * * * * * * * * * * * * * * * * * * * * * * * * * * - * Description of Aaa_Time fix - */ - tSCC zAaa_TimeName[] = - "AAA_time"; - - /* - * File name selection pattern - */ - tSCC zAaa_TimeList[] = - "|sys/time.h|"; - /* - * Machine/OS name selection pattern - */ - #define apzAaa_TimeMachs (const char**)NULL - - /* - * content selection pattern - do fix if pattern found - */ - tSCC zAaa_TimeSelect0[] = - "11.0 and later representation of ki time"; - - #define AAA_TIME_TEST_CT 1 - static tTestDesc aAaa_TimeTests[] = { - { TT_EGREP, zAaa_TimeSelect0, (regex_t*)NULL }, }; - - /* - * Fix Command Arguments for Aaa_Time - */ - static const char* apzAaa_TimePatch[] = { - (char*)NULL }; - - /* * * * * * * * * * * * * * * * * * * * * * * * * * - * * Description of Aab_Dgux_Int_Varargs fix */ tSCC zAab_Dgux_Int_VarargsName[] = --- 222,227 ---- *************** tSCC zHpux11_Size_TName[] = *** 2081,2094 **** * Machine/OS name selection pattern */ tSCC* apzHpux11_Size_TMachs[] = { ! "*-hp-hpux*", (const char*)NULL }; /* * content selection pattern - do fix if pattern found */ tSCC zHpux11_Size_TSelect0[] = ! "^#define __size_t size_t"; #define HPUX11_SIZE_T_TEST_CT 1 static tTestDesc aHpux11_Size_TTests[] = { --- 2048,2061 ---- * Machine/OS name selection pattern */ tSCC* apzHpux11_Size_TMachs[] = { ! "*-hp-hpux11*", (const char*)NULL }; /* * content selection pattern - do fix if pattern found */ tSCC zHpux11_Size_TSelect0[] = ! "__size_t"; #define HPUX11_SIZE_T_TEST_CT 1 static tTestDesc aHpux11_Size_TTests[] = { *************** static tTestDesc aHpux11_Size_TTests[] = *** 2100,2106 **** static const char* apzHpux11_Size_TPatch[] = { "format", "_hpux_size_t", - "__size_t", (char*)NULL }; /* * * * * * * * * * * * * * * * * * * * * * * * * * --- 2067,2072 ---- *************** tSCC zHpux11_VsnprintfList[] = *** 2159,2165 **** * content selection pattern - do fix if pattern found */ tSCC zHpux11_VsnprintfSelect0[] = ! "extern int vsnprintf\\(char \\*, __size_t, const char \\*, __va__list\\);"; #define HPUX11_VSNPRINTF_TEST_CT 1 static tTestDesc aHpux11_VsnprintfTests[] = { --- 2125,2131 ---- * content selection pattern - do fix if pattern found */ tSCC zHpux11_VsnprintfSelect0[] = ! "(extern int vsnprintf\\(char \\*, _[hpux]*_size_t, const char \\*,) __va__list\\);"; #define HPUX11_VSNPRINTF_TEST_CT 1 static tTestDesc aHpux11_VsnprintfTests[] = { *************** static tTestDesc aHpux11_VsnprintfTests[ *** 2170,2176 **** */ static const char* apzHpux11_VsnprintfPatch[] = { "format", ! "extern int vsnprintf(char *, __size_t, const char *, __va_list);", (char*)NULL }; /* * * * * * * * * * * * * * * * * * * * * * * * * * --- 2136,2142 ---- */ static const char* apzHpux11_VsnprintfPatch[] = { "format", ! "%1 __va_list);", (char*)NULL }; /* * * * * * * * * * * * * * * * * * * * * * * * * * *************** static const char* apzStdio_Va_ListPatch *** 3954,3959 **** --- 3920,3926 ---- "-e", "s@ va_list @ __gnuc_va_list @\n\ s@ va_list)@ __gnuc_va_list)@\n\ s@ _VA_LIST_));@ __gnuc_va_list));@\n\ + s@ __VA_LIST__));@ __gnuc_va_list));@\n\ s@ va_list@ __not_va_list__@\n\ s@\\*va_list@*__not_va_list__@\n\ s@ __va_list)@ __gnuc_va_list)@\n\ *************** tSCC zStrict_Ansi_NotName[] = *** 3984,3990 **** * content selection pattern - do fix if pattern found */ tSCC zStrict_Ansi_NotSelect0[] = ! "^([ \t]*#[ \t]*if.*)(!__STDC__|__STDC__[ \t]*==[ \t]*0|__STDC__[ \t]*!=[ \t]*1|__STDC__[ \t]*-[ \t]*0[ \t]*==[ \t]*0)(.*)"; /* * perform the C function call test --- 3951,3957 ---- * content selection pattern - do fix if pattern found */ tSCC zStrict_Ansi_NotSelect0[] = ! "^([ \t]*#[ \t]*if.*)(!__STDC__|__STDC__[ \t]*==[ \t]*0|__STDC__[ \t]*!=[ \t]*1|__STDC__[ \t]*-[ \t]*0[ \t]*==[ \t]*0)"; /* * perform the C function call test *************** static tTestDesc aStrict_Ansi_NotTests[] *** 4001,4007 **** */ static const char* apzStrict_Ansi_NotPatch[] = { "format", ! "%1 !defined(__STRICT_ANSI__)%3", (char*)NULL }; /* * * * * * * * * * * * * * * * * * * * * * * * * * --- 3968,3974 ---- */ static const char* apzStrict_Ansi_NotPatch[] = { "format", ! "%1 !defined(__STRICT_ANSI__)", (char*)NULL }; /* * * * * * * * * * * * * * * * * * * * * * * * * * *************** tSCC zStrict_Ansi_Not_CtdName[] = *** 4015,4021 **** * File name selection pattern */ tSCC zStrict_Ansi_Not_CtdList[] = ! "|math.h|limits.h|stdio.h|signal.h|stdlib.h|time.h|"; /* * Machine/OS name selection pattern */ --- 3982,3988 ---- * File name selection pattern */ tSCC zStrict_Ansi_Not_CtdList[] = ! "|math.h|limits.h|stdio.h|signal.h|stdlib.h|sys/signal.h|time.h|"; /* * Machine/OS name selection pattern */ *************** tSCC zStrict_Ansi_Not_CtdList[] = *** 4025,4031 **** * content selection pattern - do fix if pattern found */ tSCC zStrict_Ansi_Not_CtdSelect0[] = ! "^([ \t]*[|&][|&][ \t(]*)(__STDC__[ \t]*-[ \t]*0[ \t]*==[ \t]*0)(.*)"; /* * perform the C function call test --- 3992,3998 ---- * content selection pattern - do fix if pattern found */ tSCC zStrict_Ansi_Not_CtdSelect0[] = ! "^([ \t]*(\\(|&&|\\|\\|)([ \t(]*!*[ \t]*defined\\([a-zA-Z_0-9]+\\)[ \t]*[|&][|&])*[ \t(]*)(__STDC__[ \t]*(|-[ \t]*0[ \t]*)==[ \t]*0)"; /* * perform the C function call test *************** static tTestDesc aStrict_Ansi_Not_CtdTes *** 4042,4048 **** */ static const char* apzStrict_Ansi_Not_CtdPatch[] = { "format", ! "%1 !defined(__STRICT_ANSI__)%3", (char*)NULL }; /* * * * * * * * * * * * * * * * * * * * * * * * * * --- 4009,4015 ---- */ static const char* apzStrict_Ansi_Not_CtdPatch[] = { "format", ! "%1 !defined(__STRICT_ANSI__)", (char*)NULL }; /* * * * * * * * * * * * * * * * * * * * * * * * * * *************** tSCC zStrict_Ansi_OnlyName[] = *** 4065,4071 **** * content selection pattern - do fix if pattern found */ tSCC zStrict_Ansi_OnlySelect0[] = ! "^([ \t]*#[ \t]*if.*)(__STDC__[ \t]*!=[ \t]*0|__STDC__[ \t]*==[ \t]*1|__STDC__[ \t]*-[ \t]*0[ \t]*==[ \t]*1|__STDC__[ \t]*-[ \t]*0[ \t]*!=[ \t]*0)(.*)"; /* * perform the C function call test --- 4032,4038 ---- * content selection pattern - do fix if pattern found */ tSCC zStrict_Ansi_OnlySelect0[] = ! "^([ \t]*#[ \t]*if.*)(__STDC__[ \t]*!=[ \t]*0|__STDC__[ \t]*==[ \t]*1|__STDC__[ \t]*-[ \t]*0[ \t]*==[ \t]*1|__STDC__[ \t]*-[ \t]*0[ \t]*!=[ \t]*0)"; /* * perform the C function call test *************** static tTestDesc aStrict_Ansi_OnlyTests[ *** 4082,4088 **** */ static const char* apzStrict_Ansi_OnlyPatch[] = { "format", ! "%1 defined(__STRICT_ANSI__)%3", (char*)NULL }; /* * * * * * * * * * * * * * * * * * * * * * * * * * --- 4049,4055 ---- */ static const char* apzStrict_Ansi_OnlyPatch[] = { "format", ! "%1 defined(__STRICT_ANSI__)", (char*)NULL }; /* * * * * * * * * * * * * * * * * * * * * * * * * * *************** static const char* apzX11_SprintfPatch[] *** 5651,5659 **** * * List of all fixes */ ! #define REGEX_COUNT 152 #define MACH_LIST_SIZE_LIMIT 279 ! #define FIX_COUNT 145 /* * Enumerate the fixes --- 5618,5626 ---- * * List of all fixes */ ! #define REGEX_COUNT 151 #define MACH_LIST_SIZE_LIMIT 279 ! #define FIX_COUNT 144 /* * Enumerate the fixes *************** typedef enum { *** 5665,5671 **** AAA_KI_DEFS_FIXIDX, AAA_KI_IFACE_FIXIDX, AAA_STANDARDS_FIXIDX, - AAA_TIME_FIXIDX, AAB_DGUX_INT_VARARGS_FIXIDX, AAB_FD_ZERO_ASM_POSIX_TYPES_H_FIXIDX, AAB_FD_ZERO_GNU_TYPES_H_FIXIDX, --- 5632,5637 ---- *************** tFixDesc fixDescList[ FIX_COUNT ] = { *** 5836,5846 **** apzAaa_StandardsMachs, AAA_STANDARDS_TEST_CT, FD_MACH_ONLY | FD_REPLACEMENT, aAaa_StandardsTests, apzAaa_StandardsPatch, 0 }, - - { zAaa_TimeName, zAaa_TimeList, - apzAaa_TimeMachs, - AAA_TIME_TEST_CT, FD_MACH_ONLY | FD_REPLACEMENT, - aAaa_TimeTests, apzAaa_TimePatch, 0 }, { zAab_Dgux_Int_VarargsName, zAab_Dgux_Int_VarargsList, apzAab_Dgux_Int_VarargsMachs, --- 5802,5807 ---- diff -Nrc3pad gcc-3.0.2/gcc/fixinc/inclhack.def gcc-3.0.3/gcc/fixinc/inclhack.def *** gcc-3.0.2/gcc/fixinc/inclhack.def Wed Sep 12 19:38:12 2001 --- gcc-3.0.3/gcc/fixinc/inclhack.def Wed Dec 12 18:20:27 2001 *************** fix = { *** 93,109 **** replace; /* empty replacement -> no fixing the file */ }; - - /* - * Purge some HP-UX 11 files that are only broken after they are "fixed". - */ - fix = { - hackname = AAA_time; - files = sys/time.h; - select = '11.0 and later representation of ki time'; - replace; /* empty replacement -> no fixing the file */ - }; - /* And now, the real fixes, replacement text fixes first: */ /* --- 93,98 ---- *************** fix = { *** 1222,1233 **** */ fix = { hackname = hpux11_size_t; ! mach = "*-hp-hpux*"; ! select = "^#define __size_t size_t"; c_fix = format; c_fix_arg = "_hpux_size_t"; - c_fix_arg = "__size_t"; test_text = "#define __size_t size_t\n" --- 1211,1221 ---- */ fix = { hackname = hpux11_size_t; ! mach = "*-hp-hpux11*"; ! select = "__size_t"; c_fix = format; c_fix_arg = "_hpux_size_t"; test_text = "#define __size_t size_t\n" *************** fix = { *** 1269,1282 **** fix = { hackname = hpux11_vsnprintf; files = stdio.h; ! select = 'extern int vsnprintf\(char \*, __size_t, const char \*,' ! ' __va__list\);'; ! c_fix = format; ! c_fix_arg = "extern int vsnprintf(char *, __size_t, const char *," ! " __va_list);"; ! test_text = 'extern int vsnprintf(char *, __size_t, const char *,' ' __va__list);'; }; --- 1257,1268 ---- fix = { hackname = hpux11_vsnprintf; files = stdio.h; ! select = '(extern int vsnprintf\(char \*, _[hpux]*_size_t, ' ! 'const char \*,) __va__list\);'; c_fix = format; ! c_fix_arg = "%1 __va_list);"; ! test_text = 'extern int vsnprintf(char *, _hpux_size_t, const char *,' ' __va__list);'; }; *************** fix = { *** 2223,2229 **** /* * Use __gnuc_va_list in arg types in place of va_list. ! * On 386BSD use __gnuc_va_list instead of _VA_LIST_. We're hoping the * trailing parentheses and semicolon save all other systems from this. * Define __not_va_list__ (something harmless and unused) * instead of va_list. --- 2209,2216 ---- /* * Use __gnuc_va_list in arg types in place of va_list. ! * On 386BSD use __gnuc_va_list instead of _VA_LIST_. On Tru64 UNIX V5.1A ! * use __gnuc_va_list instead of __VA_LIST__. We're hoping the * trailing parentheses and semicolon save all other systems from this. * Define __not_va_list__ (something harmless and unused) * instead of va_list. *************** fix = { *** 2232,2237 **** --- 2219,2225 ---- sed = "s@ va_list @ __gnuc_va_list @\n" "s@ va_list)@ __gnuc_va_list)@\n" "s@ _VA_LIST_));@ __gnuc_va_list));@\n" + "s@ __VA_LIST__));@ __gnuc_va_list));@\n" "s@ va_list@ __not_va_list__@\n" "s@\\*va_list@*__not_va_list__@\n" "s@ __va_list)@ __gnuc_va_list)@\n" *************** fix = { *** 2255,2266 **** "(!__STDC__" "|__STDC__[ \t]*==[ \t]*0" "|__STDC__[ \t]*!=[ \t]*1" ! "|__STDC__[ \t]*-[ \t]*0[ \t]*==[ \t]*0" ! ")(.*)"; c_test = stdc_0_in_system_headers; c_fix = format; ! c_fix_arg = "%1 !defined(__STRICT_ANSI__)%3"; test_text = "#if !__STDC__ \n" "#if __STDC__ == 0\n" --- 2243,2253 ---- "(!__STDC__" "|__STDC__[ \t]*==[ \t]*0" "|__STDC__[ \t]*!=[ \t]*1" ! "|__STDC__[ \t]*-[ \t]*0[ \t]*==[ \t]*0)"; c_test = stdc_0_in_system_headers; c_fix = format; ! c_fix_arg = "%1 !defined(__STRICT_ANSI__)"; test_text = "#if !__STDC__ \n" "#if __STDC__ == 0\n" *************** fix = { *** 2276,2294 **** */ fix = { hackname = strict_ansi_not_ctd; ! files = math.h, limits.h, stdio.h, signal.h, stdlib.h, time.h; ! select = "^([ \t]*[|&][|&][ \t(]*)" ! "(__STDC__[ \t]*-[ \t]*0[ \t]*==[ \t]*0" ! ")(.*)"; c_test = stdc_0_in_system_headers; c_fix = format; ! c_fix_arg = "%1 !defined(__STRICT_ANSI__)%3"; ! test_text = "#if 1\\\n" ! "|| __STDC__ - 0 == 0 /* not std C */\nint foo;\n#endif"; }; /* * "__STDC__!=0" or "__STDC__==1" or "__STDC__-0==1" * is "defined( __STRICT_ANSI__ )" --- 2263,2296 ---- */ fix = { hackname = strict_ansi_not_ctd; ! files = math.h, limits.h, stdio.h, signal.h, ! stdlib.h, sys/signal.h, time.h; ! /* ! * Starting at the beginning of a line, skip white space and ! * a leading "(" or "&&" or "||". One of those must be found. ! * Then, zero, one or more copies of a "defined(_FOO_BAR_) &&" ! * expression. If these are nested, then they must accumulate ! * because we won't match any closing parentheses. Finally, ! * after skipping over all that, we must then match our suspect ! * phrase: "__STDC__-0==0" with or without white space. ! */ ! select = "^([ \t]*" '(\(|&&|\|\|)' ! "([ \t(]*!*[ \t]*defined\\([a-zA-Z_0-9]+\\)[ \t]*[|&][|&])*" ! "[ \t(]*)" ! "(__STDC__[ \t]*(|-[ \t]*0[ \t]*)==[ \t]*0)"; c_test = stdc_0_in_system_headers; c_fix = format; ! c_fix_arg = "%1 !defined(__STRICT_ANSI__)"; ! test_text = "#if 1 && \\\\\n" ! "&& defined(mumbling) |& (__STDC__ - 0 == 0) \\\\\n" ! "( __STDC__ == 0 && !defined(_XOPEN_SOURCE) \\\\\n" ! "|| __STDC__ - 0 == 0 ) /* not std C */\n" ! "int foo;\n#endif"; }; + /* * "__STDC__!=0" or "__STDC__==1" or "__STDC__-0==1" * is "defined( __STRICT_ANSI__ )" *************** fix = { *** 2299,2310 **** "(__STDC__[ \t]*!=[ \t]*0" "|__STDC__[ \t]*==[ \t]*1" "|__STDC__[ \t]*-[ \t]*0[ \t]*==[ \t]*1" ! "|__STDC__[ \t]*-[ \t]*0[ \t]*!=[ \t]*0" ! ")(.*)"; c_test = stdc_0_in_system_headers; c_fix = format; ! c_fix_arg = "%1 defined(__STRICT_ANSI__)%3"; test_text = "#if __STDC__ == 1 /* is std C\n */\nint foo;\n#endif"; }; --- 2301,2311 ---- "(__STDC__[ \t]*!=[ \t]*0" "|__STDC__[ \t]*==[ \t]*1" "|__STDC__[ \t]*-[ \t]*0[ \t]*==[ \t]*1" ! "|__STDC__[ \t]*-[ \t]*0[ \t]*!=[ \t]*0)"; c_test = stdc_0_in_system_headers; c_fix = format; ! c_fix_arg = "%1 defined(__STRICT_ANSI__)"; test_text = "#if __STDC__ == 1 /* is std C\n */\nint foo;\n#endif"; }; diff -Nrc3pad gcc-3.0.2/gcc/fixinc/mkfixinc.sh gcc-3.0.3/gcc/fixinc/mkfixinc.sh *** gcc-3.0.2/gcc/fixinc/mkfixinc.sh Wed Feb 21 12:08:17 2001 --- gcc-3.0.3/gcc/fixinc/mkfixinc.sh Wed Dec 12 18:20:27 2001 *************** echo constructing ${target} for $machine *** 14,20 **** fixincludes="${machine}" # Choose one or two-process fix methodology. Systems that cannot handle ! # bi-directional pipes must use the twoprocess method. # case $build in i?86-*-msdosdjgpp* | \ --- 14,20 ---- fixincludes="${machine}" # Choose one or two-process fix methodology. Systems that cannot handle ! # bi-directional pipes must use the two process method. # case $build in i?86-*-msdosdjgpp* | \ *************** esac *** 35,89 **** # Check for special fix rules for particular targets case $machine in ! *-*-sysv4* ) ! fixincludes=fixinc.svr4 ! ;; ! i?86-*-interix* | \ ! alpha-*-interix*) ! fixincludes=fixinc.interix ! ;; ! i?86-*-openbsd*) ! fixincludes=fixinc.wrap ! ;; ! alpha*-*-winnt* | \ ! i?86-*-winnt3*) ! fixincludes=fixinc.winnt ! ;; ! i?86-sequent-ptx* | i?86-sequent-sysv[34]*) ! fixincludes=fixinc.ptx ! ;; ! alpha*-dec-vms* | \ ! arm-semi-aout | armel-semi-aout | \ ! arm-semi-aof | armel-semi-aof | \ ! c*-convex-* | \ ! hppa1.1-*-osf* | \ ! hppa1.0-*-osf* | \ ! hppa1.1-*-bsd* | \ ! hppa1.0-*-bsd* | \ ! hppa*-*-lites* | \ ! i?86-moss-msdos* | i?86-*-moss* | \ ! i?86-*-osf1* | \ ! i?86-*-win32 | \ ! i?86-*-pe | i?86-*-cygwin* | \ ! i?86-*-mingw32* | \ ! i?86-*-uwin* | \ ! mips-sgi-irix5cross64 | \ ! powerpc-*-eabiaix* | \ ! powerpc-*-eabisim* | \ ! powerpc-*-eabi* | \ ! powerpc-*-rtems* | \ ! powerpcle-*-eabisim* | \ ! powerpcle-*-eabi* | \ ! powerpcle-*-winnt* | \ ! powerpcle-*-pe | powerpcle-*-cygwin* | \ ! thumb-*-coff* | thumbel-*-coff* ) ! fixincludes= ! ;; esac # IF there is no include fixing, --- 35,100 ---- # Check for special fix rules for particular targets case $machine in ! i?86-*-sysv4.2uw2* ) ! ;; ! *-*-sysv4* ) ! fixincludes=fixinc.svr4 ! ;; ! i?86-*-interix* | \ ! alpha-*-interix*) ! fixincludes=fixinc.interix ! ;; ! i?86-*-openbsd*) ! fixincludes=fixinc.wrap ! ;; ! alpha*-*-winnt* | \ ! i?86-*-winnt3*) ! fixincludes=fixinc.winnt ! ;; ! i?86-sequent-ptx* | i?86-sequent-sysv[34]*) ! fixincludes=fixinc.ptx ! ;; ! ! alpha*-dec-vms* | \ ! arm-semi-aout | \ ! armel-semi-aout | \ ! arm-semi-aof | \ ! armel-semi-aof | \ ! c*-convex-* | \ ! hppa1.1-*-osf* | \ ! hppa1.0-*-osf* | \ ! hppa1.1-*-bsd* | \ ! hppa1.0-*-bsd* | \ ! hppa*-*-lites* | \ ! i?86-moss-msdos* | \ ! i?86-*-moss* | \ ! i?86-*-osf1* | \ ! i?86-*-win32 | \ ! i?86-*-pe | \ ! i?86-*-cygwin* | \ ! i?86-*-mingw32* | \ ! i?86-*-uwin* | \ ! mips-sgi-irix5cross64 | \ ! powerpc-*-eabiaix* | \ ! powerpc-*-eabisim* | \ ! powerpc-*-eabi* | \ ! powerpc-*-rtems* | \ ! powerpcle-*-eabisim* | \ ! powerpcle-*-eabi* | \ ! powerpcle-*-winnt* | \ ! powerpcle-*-pe | \ ! powerpcle-*-cygwin* | \ ! thumb-*-coff* | \ ! thumbel-*-coff* ) ! # Don't do any fixing. ! # ! fixincludes= ! ;; esac # IF there is no include fixing, diff -Nrc3pad gcc-3.0.2/gcc/fixinc/tests/base/math.h gcc-3.0.3/gcc/fixinc/tests/base/math.h *** gcc-3.0.2/gcc/fixinc/tests/base/math.h Thu Jul 19 20:39:03 2001 --- gcc-3.0.3/gcc/fixinc/tests/base/math.h Wed Dec 12 18:20:28 2001 *************** extern int class(); *** 105,111 **** #if defined( STRICT_ANSI_NOT_CTD_CHECK ) ! #if 1|| !defined(__STRICT_ANSI__) /* not std C */ int foo; #endif #endif /* STRICT_ANSI_NOT_CTD_CHECK */ --- 105,114 ---- #if defined( STRICT_ANSI_NOT_CTD_CHECK ) ! #if 1 && \ ! && defined(mumbling) |& ( !defined(__STRICT_ANSI__)) \ ! ( !defined(__STRICT_ANSI__) && !defined(_XOPEN_SOURCE) \ ! || !defined(__STRICT_ANSI__) ) /* not std C */ int foo; #endif #endif /* STRICT_ANSI_NOT_CTD_CHECK */ diff -Nrc3pad gcc-3.0.2/gcc/fixinc/tests/base/stdio.h gcc-3.0.3/gcc/fixinc/tests/base/stdio.h *** gcc-3.0.2/gcc/fixinc/tests/base/stdio.h Thu Jul 19 21:10:46 2001 --- gcc-3.0.3/gcc/fixinc/tests/base/stdio.h Thu Nov 29 21:23:41 2001 *************** extern int getopt(int, char *const[], co *** 20,26 **** #if defined( HPUX11_VSNPRINTF_CHECK ) ! extern int vsnprintf(char *, __size_t, const char *, __gnuc_va_list); #endif /* HPUX11_VSNPRINTF_CHECK */ --- 20,26 ---- #if defined( HPUX11_VSNPRINTF_CHECK ) ! extern int vsnprintf(char *, _hpux_size_t, const char *, __gnuc_va_list); #endif /* HPUX11_VSNPRINTF_CHECK */ *************** extern FILE *popen( const char *, const *** 74,78 **** --- 74,83 ---- extern char *tempnam( const char *, const char *); #endif /* ULTRIX_CONST2_CHECK */ + + + #if defined( UNICOSMK_RESTRICT_CHECK ) + void f (char * __restrict__ x); + #endif /* UNICOSMK_RESTRICT_CHECK */ #endif /* FIXINC_STDIO_STDARG_H_CHECK */ diff -Nrc3pad gcc-3.0.2/gcc/fixinc/tests/base/testing.h gcc-3.0.3/gcc/fixinc/tests/base/testing.h *** gcc-3.0.2/gcc/fixinc/tests/base/testing.h Sat May 26 11:56:14 2001 --- gcc-3.0.3/gcc/fixinc/tests/base/testing.h Thu Nov 29 21:23:41 2001 *************** extern __DJ_wint_t x; *** 36,41 **** --- 36,48 ---- #endif /* DJGPP_WCHAR_H_CHECK */ + #if defined( HPUX11_SIZE_T_CHECK ) + #define _hpux_size_t size_t + extern int getpwuid_r( char *, _hpux_size_t, struct passwd **); + + #endif /* HPUX11_SIZE_T_CHECK */ + + #if defined( IO_QUOTES_DEF_CHECK ) #define BSD43__IOWR(n, x) ((n<<8)+x) #define _IOWN(x,y,t) (_IOC_IN|(((t)&_IOCPARM_MASK)<<16)|(x<<8)|y) diff -Nrc3pad gcc-3.0.2/gcc/flow.c gcc-3.0.3/gcc/flow.c *** gcc-3.0.2/gcc/flow.c Fri Sep 7 16:28:52 2001 --- gcc-3.0.3/gcc/flow.c Tue Oct 30 10:01:10 2001 *************** merge_blocks (e, b, c) *** 2437,2449 **** edge e; basic_block b, c; { ! /* If C has a tail recursion label, do not merge. There is no ! edge recorded from the call_placeholder back to this label, as ! that would make optimize_sibling_and_tail_recursive_calls more ! complex for no gain. */ ! if (GET_CODE (c->head) == CODE_LABEL ! && tail_recursion_label_p (c->head)) ! return 0; /* If B has a fallthru edge to C, no need to move anything. */ if (e->flags & EDGE_FALLTHRU) --- 2437,2458 ---- edge e; basic_block b, c; { ! if (GET_CODE (c->head) == CODE_LABEL) ! { ! rtx x; ! ! /* If C has a tail recursion label, do not merge. There is no ! edge recorded from the call_placeholder back to this label, as ! that would make optimize_sibling_and_tail_recursive_calls more ! complex for no gain. */ ! if (tail_recursion_label_p (c->head)) ! return 0; ! ! /* If C has a nonlocal goto label, do not merge either. */ ! for (x = nonlocal_goto_handler_labels; x; x = XEXP (x, 1)) ! if (XEXP (x, 0) == c->head) ! return 0; ! } /* If B has a fallthru edge to C, no need to move anything. */ if (e->flags & EDGE_FALLTHRU) diff -Nrc3pad gcc-3.0.2/gcc/gcc.c gcc-3.0.3/gcc/gcc.c *** gcc-3.0.2/gcc/gcc.c Tue Oct 2 16:12:34 2001 --- gcc-3.0.3/gcc/gcc.c Tue Dec 4 23:19:34 2001 *************** static char dir_separator_str[] = { DIR_ *** 99,104 **** --- 99,107 ---- #define MIN_FATAL_STATUS 1 + /* Flag set by cppspec.c to 1. */ + int is_cpp_driver; + /* Flag saying to pass the greatest exit code returned by a sub-process to the calling program. */ static int pass_exit_codes; *************** static void clear_failure_queue PARAMS ( *** 243,248 **** --- 246,252 ---- static int check_live_switch PARAMS ((int, int)); static const char *handle_braces PARAMS ((const char *)); static char *save_string PARAMS ((const char *, int)); + static void set_collect_gcc_options PARAMS ((void)); static int do_spec_1 PARAMS ((const char *, int, const char *)); static const char *find_file PARAMS ((const char *)); static int is_directory PARAMS ((const char *, const char *, int)); *************** static void process_command PARAMS ((in *** 266,272 **** static int execute PARAMS ((void)); static void clear_args PARAMS ((void)); static void fatal_error PARAMS ((int)); - static void set_input PARAMS ((const char *)); static void init_gcc_specs PARAMS ((struct obstack *, const char *, const char *)); --- 270,275 ---- *************** process_command (argc, argv) *** 3216,3222 **** n_infiles++; n_switches++; ! add_preprocessor_option ("--help", 6); add_assembler_option ("--help", 6); add_linker_option ("--help", 6); } --- 3219,3227 ---- n_infiles++; n_switches++; ! /* CPP driver cannot obtain switch from cc1_options. */ ! if (is_cpp_driver) ! add_preprocessor_option ("--help", 6); add_assembler_option ("--help", 6); add_linker_option ("--help", 6); } *************** process_command (argc, argv) *** 3229,3235 **** n_infiles++; n_switches++; ! add_preprocessor_option ("--target-help", 13); add_assembler_option ("--target-help", 13); add_linker_option ("--target-help", 13); } --- 3234,3242 ---- n_infiles++; n_switches++; ! /* CPP driver cannot obtain switch from cc1_options. */ ! if (is_cpp_driver) ! add_preprocessor_option ("--target-help", 13); add_assembler_option ("--target-help", 13); add_linker_option ("--target-help", 13); } *************** process_command (argc, argv) *** 3673,3713 **** ; else if (! strcmp (argv[i], "-print-multi-directory")) ; ! else if (strcmp (argv[i], "-ftarget-help") == 0) ! { ! /* Create a dummy input file, so that we can pass --target-help on to ! the various sub-processes. */ ! infiles[n_infiles].language = "c"; ! infiles[n_infiles++].name = "target-dummy"; ! ! /* Preserve the --target-help switch so that it can be caught by ! the cc1 spec string. */ ! switches[n_switches].part1 = "--target-help"; ! switches[n_switches].args = 0; ! switches[n_switches].live_cond = SWITCH_OK; ! switches[n_switches].validated = 0; ! ! n_switches++; ! } ! else if (strcmp (argv[i], "-fhelp") == 0) ! { ! if (verbose_flag) ! { ! /* Create a dummy input file, so that we can pass --help on to ! the various sub-processes. */ ! infiles[n_infiles].language = "c"; ! infiles[n_infiles++].name = "help-dummy"; ! ! /* Preserve the --help switch so that it can be caught by the ! cc1 spec string. */ ! switches[n_switches].part1 = "--help"; ! switches[n_switches].args = 0; ! switches[n_switches].live_cond = SWITCH_OK; ! switches[n_switches].validated = 0; ! ! n_switches++; ! } ! } else if (argv[i][0] == '+' && argv[i][1] == 'e') { /* Compensate for the +e options to the C++ front-end; --- 3680,3689 ---- ; else if (! strcmp (argv[i], "-print-multi-directory")) ; ! else if (! strcmp (argv[i], "-ftarget-help")) ! ; ! else if (! strcmp (argv[i], "-fhelp")) ! ; else if (argv[i][0] == '+' && argv[i][1] == 'e') { /* Compensate for the +e options to the C++ front-end; *************** process_command (argc, argv) *** 3866,3874 **** --- 3842,3938 ---- if (n_infiles == last_language_n_infiles && spec_lang != 0) error ("Warning: `-x %s' after last input file has no effect", spec_lang); + /* Ensure we only invoke each subprocess once. */ + if (target_help_flag || print_help_list) + { + n_infiles = 1; + + /* Create a dummy input file, so that we can pass --target-help on to + the various sub-processes. */ + infiles[0].language = "c"; + infiles[0].name = "help-dummy"; + + if (target_help_flag) + { + switches[n_switches].part1 = "--target-help"; + switches[n_switches].args = 0; + switches[n_switches].live_cond = SWITCH_OK; + switches[n_switches].validated = 0; + + n_switches++; + } + + if (print_help_list) + { + switches[n_switches].part1 = "--help"; + switches[n_switches].args = 0; + switches[n_switches].live_cond = SWITCH_OK; + switches[n_switches].validated = 0; + + n_switches++; + } + } + switches[n_switches].part1 = 0; infiles[n_infiles].name = 0; } + + /* Store switches not filtered out by %{ 0 && !strcmp (argbuf[argbuf_index - 1], "|")) argbuf_index--; + set_collect_gcc_options (); + if (argbuf_index > 0) value = execute (); } *************** do_spec_1 (spec, inswitch, soft_matched_ *** 4012,4017 **** --- 4078,4085 ---- argbuf_index--; } + set_collect_gcc_options (); + if (argbuf_index > 0) { value = execute (); *************** is_directory (path1, path2, linker) *** 5395,5401 **** /* Set up the various global variables to indicate that we're processing the input file named FILENAME. */ ! static void set_input (filename) const char *filename; { --- 5463,5469 ---- /* Set up the various global variables to indicate that we're processing the input file named FILENAME. */ ! void set_input (filename) const char *filename; { *************** main (argc, argv) *** 5567,5618 **** Decode switches that are handled locally. */ process_command (argc, argv); - - { - int first_time; - - /* Build COLLECT_GCC_OPTIONS to have all of the options specified to - the compiler. */ - obstack_grow (&collect_obstack, "COLLECT_GCC_OPTIONS=", - sizeof ("COLLECT_GCC_OPTIONS=") - 1); - - first_time = TRUE; - for (i = 0; (int) i < n_switches; i++) - { - const char *const *args; - const char *p, *q; - if (!first_time) - obstack_grow (&collect_obstack, " ", 1); - - first_time = FALSE; - obstack_grow (&collect_obstack, "'-", 2); - q = switches[i].part1; - while ((p = strchr (q, '\''))) - { - obstack_grow (&collect_obstack, q, p - q); - obstack_grow (&collect_obstack, "'\\''", 4); - q = ++p; - } - obstack_grow (&collect_obstack, q, strlen (q)); - obstack_grow (&collect_obstack, "'", 1); - - for (args = switches[i].args; args && *args; args++) - { - obstack_grow (&collect_obstack, " '", 2); - q = *args; - while ((p = strchr (q, '\''))) - { - obstack_grow (&collect_obstack, q, p - q); - obstack_grow (&collect_obstack, "'\\''", 4); - q = ++p; - } - obstack_grow (&collect_obstack, q, strlen (q)); - obstack_grow (&collect_obstack, "'", 1); - } - } - obstack_grow (&collect_obstack, "\0", 1); - putenv (obstack_finish (&collect_obstack)); - } /* Initialize the vector of specs to just the default. This means one element containing 0s, as a terminator. */ --- 5635,5640 ---- diff -Nrc3pad gcc-3.0.2/gcc/gcc.h gcc-3.0.3/gcc/gcc.h *** gcc-3.0.2/gcc/gcc.h Sun Aug 12 13:22:18 2001 --- gcc-3.0.3/gcc/gcc.h Wed Nov 28 09:30:54 2001 *************** *** 1,5 **** /* Header file for modules that link with gcc.c ! Copyright (C) 1999 Free Software Foundation, Inc. This file is part of GNU CC. --- 1,5 ---- /* Header file for modules that link with gcc.c ! Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc. This file is part of GNU CC. *************** extern void fatal PARAMS ((const char *, *** 33,38 **** --- 33,39 ---- ATTRIBUTE_PRINTF_1 ATTRIBUTE_NORETURN; extern void error PARAMS ((const char *, ...)) ATTRIBUTE_PRINTF_1; extern void pfatal_with_name PARAMS ((const char *)) ATTRIBUTE_NORETURN; + extern void set_input PARAMS ((const char *)); /* Spec files linked with gcc.c must provide definitions for these. */ diff -Nrc3pad gcc-3.0.2/gcc/gccspec.c gcc-3.0.3/gcc/gccspec.c *** gcc-3.0.2/gcc/gccspec.c Wed Aug 2 13:21:25 2000 --- gcc-3.0.3/gcc/gccspec.c Mon Nov 5 11:10:33 2001 *************** *** 1,5 **** /* Specific flags and argument handling of the C front-end. ! Copyright (C) 1999 Free Software Foundation, Inc. This file is part of GNU CC. --- 1,5 ---- /* Specific flags and argument handling of the C front-end. ! Copyright (C) 1999, 2001 Free Software Foundation, Inc. This file is part of GNU CC. *************** lang_specific_driver (in_argc, in_argv, *** 29,35 **** const char *const **in_argv ATTRIBUTE_UNUSED; int *in_added_libraries ATTRIBUTE_UNUSED; { ! return; /* Not used for C. */ } /* Called before linking. Returns 0 on success and -1 on failure. */ --- 29,95 ---- const char *const **in_argv ATTRIBUTE_UNUSED; int *in_added_libraries ATTRIBUTE_UNUSED; { ! #ifdef ENABLE_SHARED_LIBGCC ! int i; ! ! /* The new argument list will be contained in this. */ ! const char **arglist; ! ! /* True if we should add -shared-libgcc to the command-line. */ ! int shared_libgcc = 0; ! ! /* The total number of arguments with the new stuff. */ ! int argc; ! ! /* The argument list. */ ! const char *const *argv; ! ! argc = *in_argc; ! argv = *in_argv; ! ! for (i = 1; i < argc; i++) ! { ! if (argv[i][0] == '-') ! { ! if (strcmp (argv[i], "-static-libgcc") == 0 ! || strcmp (argv[i], "-static") == 0) ! return; ! } ! else ! { ! int len; ! ! /* If the filename ends in .m or .mi, we are compiling ObjC ! and want to pass -shared-libgcc. */ ! len = strlen (argv[i]); ! if ((len > 2 && argv[i][len - 2] == '.' && argv[i][len - 1] == 'm') ! || (len > 3 && argv[i][len - 3] == '.' && argv[i][len - 2] == 'm' ! && argv[i][len - 1] == 'i')) ! shared_libgcc = 1; ! } ! } ! ! if (shared_libgcc) ! { ! /* Make sure to have room for the trailing NULL argument. */ ! arglist = (const char **) xmalloc ((argc+2) * sizeof (char *)); ! ! i = 0; ! do ! { ! arglist[i] = argv[i]; ! i++; ! } ! while (i < argc); ! ! arglist[i++] = "-shared-libgcc"; ! ! arglist[i] = NULL; ! ! *in_argc = i; ! *in_argv = arglist; ! } ! #endif } /* Called before linking. Returns 0 on success and -1 on failure. */ diff -Nrc3pad gcc-3.0.2/gcc/ginclude/ppc-asm.h gcc-3.0.3/gcc/ginclude/ppc-asm.h *** gcc-3.0.2/gcc/ginclude/ppc-asm.h Sat Feb 5 19:14:46 2000 --- gcc-3.0.3/gcc/ginclude/ppc-asm.h Sat Dec 1 05:29:22 2001 *************** *** 105,110 **** --- 105,111 ---- #if defined(_CALL_AIXDESC) #define FUNC_NAME(name) GLUE(.,name) + #define JUMP_TARGET(name) FUNC_NAME(name) #define FUNC_START(name) \ .section DESC_SECTION,"aw"; \ name: \ *************** GLUE(.L,name): \ *** 123,128 **** --- 124,130 ---- #elif defined(__WINNT__) #define FUNC_NAME(name) GLUE(..,name) + #define JUMP_TARGET(name) FUNC_NAME(name) #define FUNC_START(name) \ .pdata; \ .align 2; \ *************** GLUE(FE_MOT_RESVD..,name): *** 141,146 **** --- 143,149 ---- #elif defined(_CALL_NT) #define FUNC_NAME(name) GLUE(..,name) + #define JUMP_TARGET(name) FUNC_NAME(name) #define FUNC_START(name) \ .section DESC_SECTION,"aw"; \ name: \ *************** GLUE(.L,name): \ *** 158,163 **** --- 161,171 ---- #else #define FUNC_NAME(name) GLUE(__USER_LABEL_PREFIX__,name) + #if defined __PIC__ || defined __pic__ + #define JUMP_TARGET(name) FUNC_NAME(name@plt) + #else + #define JUMP_TARGET(name) FUNC_NAME(name) + #endif #define FUNC_START(name) \ .type FUNC_NAME(name),@function; \ .globl FUNC_NAME(name); \ diff -Nrc3pad gcc-3.0.2/gcc/gthr-win32.h gcc-3.0.3/gcc/gthr-win32.h *** gcc-3.0.2/gcc/gthr-win32.h Mon Jan 22 13:29:53 2001 --- gcc-3.0.3/gcc/gthr-win32.h Sun Nov 18 16:43:36 2001 *************** int *** 181,187 **** __gthread_objc_thread_exit(void) { /* exit the thread */ ! ExitThread(__gthread_objc_thread_exit_status); /* Failed if we reached here */ return -1; --- 181,187 ---- __gthread_objc_thread_exit(void) { /* exit the thread */ ! ExitThread(__objc_thread_exit_status); /* Failed if we reached here */ return -1; diff -Nrc3pad gcc-3.0.2/gcc/ifcvt.c gcc-3.0.3/gcc/ifcvt.c *** gcc-3.0.2/gcc/ifcvt.c Wed Jun 13 17:39:51 2001 --- gcc-3.0.3/gcc/ifcvt.c Thu Nov 29 15:29:35 2001 *************** noce_try_store_flag_constants (if_info) *** 641,646 **** --- 641,651 ---- itrue = INTVAL (if_info->b); diff = itrue - ifalse; + /* Make sure we can represent the difference between the two values. */ + if ((itrue - ifalse > 0) + != ((ifalse < 0) != (itrue < 0) ? ifalse < 0 : ifalse < itrue)) + return FALSE; + can_reverse = can_reverse_comparison_p (if_info->cond, if_info->jump); reversep = 0; diff -Nrc3pad gcc-3.0.2/gcc/intl/ChangeLog gcc-3.0.3/gcc/intl/ChangeLog *** gcc-3.0.2/gcc/intl/ChangeLog Tue Oct 23 10:19:46 2001 --- gcc-3.0.3/gcc/intl/ChangeLog Thu Dec 20 11:22:00 2001 *************** *** 1,3 **** --- 1,7 ---- + 2001-12-20 Release Manager + + * GCC 3.0.3 Released. + 2001-10-23 Release Manager * GCC 3.0.2 Released. diff -Nrc3pad gcc-3.0.2/gcc/loop.c gcc-3.0.3/gcc/loop.c *** gcc-3.0.2/gcc/loop.c Tue Sep 4 22:54:42 2001 --- gcc-3.0.3/gcc/loop.c Mon Nov 5 11:10:33 2001 *************** scan_loop (loop, flags) *** 772,777 **** --- 772,778 ---- && (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 diff -Nrc3pad gcc-3.0.2/gcc/mklibgcc.in gcc-3.0.3/gcc/mklibgcc.in *** gcc-3.0.2/gcc/mklibgcc.in Wed May 16 18:34:29 2001 --- gcc-3.0.3/gcc/mklibgcc.in Sun Nov 18 16:46:43 2001 *************** done *** 399,405 **** echo 'stmp-dirs: force' echo ' for d in '"$dirs"'; do \' ! echo ' if [ -d $$d ]; then true; else mkdir $$d; fi \' echo ' done' echo ' if [ -f stmp-dirs ]; then true; else touch stmp-dirs; fi' --- 399,405 ---- echo 'stmp-dirs: force' echo ' for d in '"$dirs"'; do \' ! echo ' if [ -d $$d ]; then true; else mkdir $$d; fi; \' echo ' done' echo ' if [ -f stmp-dirs ]; then true; else touch stmp-dirs; fi' diff -Nrc3pad gcc-3.0.2/gcc/po/ChangeLog gcc-3.0.3/gcc/po/ChangeLog *** gcc-3.0.2/gcc/po/ChangeLog Tue Oct 23 10:20:00 2001 --- gcc-3.0.3/gcc/po/ChangeLog Thu Dec 20 11:22:15 2001 *************** *** 1,3 **** --- 1,15 ---- + 2001-12-20 Release Manager + + * GCC 3.0.3 Released. + + 2001-11-05 Zack Weinberg + + * POTFILES.in: Add config/rs6000/freebsd.h and the s390 directory. + + 2001-11-03 David O'Brien + + * POTFILES.in: Add config/ia64/freebsd.h. + 2001-10-23 Release Manager * GCC 3.0.2 Released. diff -Nrc3pad gcc-3.0.2/gcc/po/POTFILES.in gcc-3.0.3/gcc/po/POTFILES.in *** gcc-3.0.2/gcc/po/POTFILES.in Tue Jun 12 17:45:34 2001 --- gcc-3.0.3/gcc/po/POTFILES.in Mon Nov 5 12:13:10 2001 *************** config/i960/vx960-coff.h *** 358,363 **** --- 358,364 ---- config/i960/vx960.h config/i960/xm-i960.h config/ia64/elf.h + config/ia64/freebsd.h config/ia64/fde-glibc.c config/ia64/hpux.h config/ia64/ia64-protos.h *************** config/rs6000/eabisim.h *** 640,645 **** --- 641,647 ---- config/rs6000/linux.h config/rs6000/lynx.h config/rs6000/mach.h + config/rs6000/netbsd.h config/rs6000/rs6000-protos.h config/rs6000/rs6000.c config/rs6000/rs6000.h *************** config/sh/sh-protos.h *** 665,670 **** --- 667,679 ---- config/sh/sh.c config/sh/sh.h config/sh/xm-sh.h + config/s390/linux.h + config/s390/linux64.h + config/s390/s390-protos.h + config/s390/s390.c + config/s390/s390.h + config/s390/xm-s390.h + config/s390/xm-s390x.h config/sparc/aout.h config/sparc/bsd.h config/sparc/chorus.h diff -Nrc3pad gcc-3.0.2/gcc/regmove.c gcc-3.0.3/gcc/regmove.c *** gcc-3.0.2/gcc/regmove.c Tue Sep 18 11:23:37 2001 --- gcc-3.0.3/gcc/regmove.c Mon Nov 5 11:10:33 2001 *************** regmove_optimize (f, nregs, regmove_dump *** 1243,1248 **** --- 1243,1251 ---- if (! regclass_compatible_p (src_class, dst_class)) continue; + if (GET_MODE (src) != GET_MODE (dst)) + continue; + if (fixup_match_1 (insn, set, src, src_subreg, dst, pass, op_no, match_no, regmove_dump_file)) diff -Nrc3pad gcc-3.0.2/gcc/reload1.c gcc-3.0.3/gcc/reload1.c *** gcc-3.0.2/gcc/reload1.c Sat Sep 29 14:51:19 2001 --- gcc-3.0.3/gcc/reload1.c Mon Nov 19 14:04:30 2001 *************** elimination_effects (x, mem_mode) *** 2714,2720 **** } else if (reg_renumber[regno] < 0 && reg_equiv_constant && reg_equiv_constant[regno] ! && ! CONSTANT_P (reg_equiv_constant[regno])) elimination_effects (reg_equiv_constant[regno], mem_mode); return; --- 2714,2720 ---- } else if (reg_renumber[regno] < 0 && reg_equiv_constant && reg_equiv_constant[regno] ! && ! function_invariant_p (reg_equiv_constant[regno])) elimination_effects (reg_equiv_constant[regno], mem_mode); return; diff -Nrc3pad gcc-3.0.2/gcc/stmt.c gcc-3.0.3/gcc/stmt.c *** gcc-3.0.2/gcc/stmt.c Wed Jul 25 06:34:58 2001 --- gcc-3.0.3/gcc/stmt.c Thu Dec 13 23:02:11 2001 *************** struct stmt_status *** 396,401 **** --- 396,403 ---- static int using_eh_for_cleanups_p = 0; static int n_occurrences PARAMS ((int, const char *)); + static bool parse_input_constraint PARAMS ((const char **, int, int, int, + int, tree, bool *, bool *)); static void expand_goto_internal PARAMS ((tree, rtx, rtx)); static int expand_fixup PARAMS ((tree, rtx, rtx)); static rtx expand_nl_handler_label PARAMS ((rtx, rtx)); *************** expand_asm (body) *** 1311,1323 **** Returns TRUE if all went well; FALSE if an error occurred. */ bool ! parse_output_constraint (constraint_p, ! operand_num, ! ninputs, ! noutputs, ! allows_mem, ! allows_reg, ! is_inout) const char **constraint_p; int operand_num; int ninputs; --- 1313,1320 ---- Returns TRUE if all went well; FALSE if an error occurred. */ bool ! parse_output_constraint (constraint_p, operand_num, ninputs, noutputs, ! allows_mem, allows_reg, is_inout) const char **constraint_p; int operand_num; int ninputs; *************** parse_output_constraint (constraint_p, *** 1455,1460 **** --- 1452,1579 ---- return true; } + /* Similar, but for input constraints. */ + + static bool + parse_input_constraint (constraint_p, input_num, ninputs, noutputs, ninout, + outputs, allows_mem, allows_reg) + const char **constraint_p; + int input_num; + int ninputs; + int noutputs; + int ninout; + tree outputs; + bool *allows_mem; + bool *allows_reg; + { + const char *constraint = *constraint_p; + const char *orig_constraint = constraint; + size_t c_len = strlen (constraint); + size_t j; + + /* Assume the constraint doesn't allow the use of either + a register or memory. */ + *allows_mem = false; + *allows_reg = false; + + /* Make sure constraint has neither `=', `+', nor '&'. */ + + for (j = 0; j < c_len; j++) + switch (constraint[j]) + { + case '+': case '=': case '&': + if (constraint == orig_constraint) + { + error ("input operand constraint contains `%c'", constraint[j]); + return false; + } + break; + + case '%': + if (constraint == orig_constraint + && input_num + 1 == ninputs - ninout) + { + error ("`%%' constraint used with last operand"); + return false; + } + break; + + case 'V': case 'm': case 'o': + *allows_mem = true; + break; + + case '<': case '>': + case '?': case '!': case '*': case '#': + case 'E': case 'F': case 'G': case 'H': + case 's': case 'i': case 'n': + case 'I': case 'J': case 'K': case 'L': case 'M': + case 'N': case 'O': case 'P': case ',': + break; + + /* Whether or not a numeric constraint allows a register is + decided by the matching constraint, and so there is no need + to do anything special with them. We must handle them in + the default case, so that we don't unnecessarily force + operands to memory. */ + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + if (constraint[j] >= '0' + noutputs) + { + error ("matching constraint references invalid operand number"); + return false; + } + + /* Try and find the real constraint for this dup. */ + if ((j == 0 && c_len == 1) + || (j == 1 && c_len == 2 && constraint[0] == '%')) + { + tree o = outputs; + + for (j = constraint[j] - '0'; j > 0; --j) + o = TREE_CHAIN (o); + + constraint = TREE_STRING_POINTER (TREE_PURPOSE (o)); + *constraint_p = constraint; + c_len = strlen (constraint); + j = 0; + break; + } + + /* Fall through. */ + + case 'p': case 'r': + *allows_reg = true; + break; + + case 'g': case 'X': + *allows_reg = true; + *allows_mem = true; + break; + + default: + if (! ISALPHA (constraint[j])) + { + error ("invalid punctuation `%c' in constraint", constraint[j]); + return false; + } + if (REG_CLASS_FROM_LETTER (constraint[j]) != NO_REGS) + *allows_reg = true; + #ifdef EXTRA_CONSTRAINT + else + { + /* Otherwise we can't assume anything about the nature of + the constraint except that it isn't purely registers. + Treat it like "g" and hope for the best. */ + *allows_reg = true; + *allows_mem = true; + } + #endif + break; + } + + return true; + } + /* Generate RTL for an asm statement with arguments. STRING is the instruction template. OUTPUTS is a list of output arguments (lvalues); INPUTS a list of inputs. *************** expand_asm_operands (string, outputs, in *** 1481,1487 **** rtx body; int ninputs = list_length (inputs); int noutputs = list_length (outputs); ! int ninout = 0; int nclobbers; tree tail; register int i; --- 1600,1606 ---- rtx body; int ninputs = list_length (inputs); int noutputs = list_length (outputs); ! int ninout; int nclobbers; tree tail; register int i; *************** expand_asm_operands (string, outputs, in *** 1569,1574 **** --- 1688,1697 ---- } } + /* First pass over inputs and outputs checks validity and sets + mark_addressable if needed. */ + + ninout = 0; for (i = 0, tail = outputs; tail; tail = TREE_CHAIN (tail), i++) { tree val = TREE_VALUE (tail); *************** expand_asm_operands (string, outputs, in *** 1582,1605 **** if (type == error_mark_node) return; ! /* Make sure constraint has `=' and does not have `+'. Also, see ! if it allows any register. Be liberal on the latter test, since ! the worst that happens if we get it wrong is we issue an error ! message. */ constraint = TREE_STRING_POINTER (TREE_PURPOSE (tail)); ! output_constraints[i] = constraint; ! /* Try to parse the output constraint. If that fails, there's ! no point in going further. */ ! if (!parse_output_constraint (&output_constraints[i], ! i, ! ninputs, ! noutputs, ! &allows_mem, ! &allows_reg, &is_inout)) ! return; /* If an output operand is not a decl or indirect ref and our constraint allows a register, make a temporary to act as an intermediate. --- 1705,1771 ---- if (type == error_mark_node) return; ! /* Try to parse the output constraint. If that fails, there's ! no point in going further. */ ! constraint = TREE_STRING_POINTER (TREE_PURPOSE (tail)); ! if (!parse_output_constraint (&constraint, i, ninputs, noutputs, ! &allows_mem, &allows_reg, &is_inout)) ! return; ! ! if (! allows_reg ! && (allows_mem ! || is_inout ! || (DECL_P (val) ! && GET_CODE (DECL_RTL (val)) == REG ! && GET_MODE (DECL_RTL (val)) != TYPE_MODE (type)))) ! mark_addressable (val); ! ! if (is_inout) ! ninout++; ! } ! ! ninputs += ninout; ! if (ninputs + noutputs > MAX_RECOG_OPERANDS) ! { ! error ("more than %d operands in `asm'", MAX_RECOG_OPERANDS); ! return; ! } ! ! for (i = 0, tail = inputs; tail; i++, tail = TREE_CHAIN (tail)) ! { ! bool allows_reg, allows_mem; ! const char *constraint; ! ! /* If there's an erroneous arg, emit no insn, because the ASM_INPUT ! would get VOIDmode and that could cause a crash in reload. */ ! if (TREE_TYPE (TREE_VALUE (tail)) == error_mark_node) ! return; constraint = TREE_STRING_POINTER (TREE_PURPOSE (tail)); ! if (! parse_input_constraint (&constraint, i, ninputs, noutputs, ninout, ! outputs, &allows_mem, &allows_reg)) ! return; ! if (! allows_reg && allows_mem) ! mark_addressable (TREE_VALUE (tail)); ! } ! ! /* Second pass evaluates arguments. */ ! ! ninout = 0; ! for (i = 0, tail = outputs; tail; tail = TREE_CHAIN (tail), i++) ! { ! tree val = TREE_VALUE (tail); ! tree type = TREE_TYPE (val); ! bool is_inout; ! bool allows_reg; ! bool allows_mem; ! ! output_constraints[i] = TREE_STRING_POINTER (TREE_PURPOSE (tail)); ! if (!parse_output_constraint (&output_constraints[i], i, ninputs, ! noutputs, &allows_mem, &allows_reg, &is_inout)) ! abort (); /* If an output operand is not a decl or indirect ref and our constraint allows a register, make a temporary to act as an intermediate. *************** expand_asm_operands (string, outputs, in *** 1618,1629 **** || ! allows_reg || is_inout) { - if (! allows_reg) - mark_addressable (TREE_VALUE (tail)); - output_rtx[i] ! = expand_expr (TREE_VALUE (tail), NULL_RTX, VOIDmode, ! EXPAND_MEMORY_USE_WO); if (! allows_reg && GET_CODE (output_rtx[i]) != MEM) error ("output number %d not directly addressable", i); --- 1784,1791 ---- || ! allows_reg || is_inout) { output_rtx[i] ! = expand_expr (val, NULL_RTX, VOIDmode, EXPAND_MEMORY_USE_WO); if (! allows_reg && GET_CODE (output_rtx[i]) != MEM) error ("output number %d not directly addressable", i); *************** expand_asm_operands (string, outputs, in *** 1646,1663 **** if (is_inout) { ! inout_mode[ninout] = TYPE_MODE (TREE_TYPE (TREE_VALUE (tail))); inout_opnum[ninout++] = i; } } - ninputs += ninout; - if (ninputs + noutputs > MAX_RECOG_OPERANDS) - { - error ("more than %d operands in `asm'", MAX_RECOG_OPERANDS); - return; - } - /* Make vectors for the expression-rtx and constraint strings. */ argvec = rtvec_alloc (ninputs); --- 1808,1818 ---- if (is_inout) { ! inout_mode[ninout] = TYPE_MODE (type); inout_opnum[ninout++] = i; } } /* Make vectors for the expression-rtx and constraint strings. */ argvec = rtvec_alloc (ninputs); *************** expand_asm_operands (string, outputs, in *** 1674,1827 **** /* Eval the inputs and put them into ARGVEC. Put their constraints into ASM_INPUTs and store in CONSTRAINTS. */ ! i = 0; ! for (tail = inputs; tail; tail = TREE_CHAIN (tail)) { ! int j; ! int allows_reg = 0, allows_mem = 0; ! const char *constraint, *orig_constraint; ! int c_len; rtx op; - /* If there's an erroneous arg, emit no insn, - because the ASM_INPUT would get VOIDmode - and that could cause a crash in reload. */ - if (TREE_TYPE (TREE_VALUE (tail)) == error_mark_node) - return; - - /* ??? Can this happen, and does the error message make any sense? */ - if (TREE_PURPOSE (tail) == NULL_TREE) - { - error ("hard register `%s' listed as input operand to `asm'", - TREE_STRING_POINTER (TREE_VALUE (tail)) ); - return; - } - constraint = TREE_STRING_POINTER (TREE_PURPOSE (tail)); ! c_len = strlen (constraint); ! orig_constraint = constraint; ! ! /* Make sure constraint has neither `=', `+', nor '&'. */ ! ! for (j = 0; j < c_len; j++) ! switch (constraint[j]) ! { ! case '+': case '=': case '&': ! if (constraint == orig_constraint) ! { ! error ("input operand constraint contains `%c'", ! constraint[j]); ! return; ! } ! break; ! ! case '%': ! if (constraint == orig_constraint ! && i + 1 == ninputs - ninout) ! { ! error ("`%%' constraint used with last operand"); ! return; ! } ! break; ! ! case 'V': case 'm': case 'o': ! allows_mem = 1; ! break; ! ! case '<': case '>': ! case '?': case '!': case '*': case '#': ! case 'E': case 'F': case 'G': case 'H': ! case 's': case 'i': case 'n': ! case 'I': case 'J': case 'K': case 'L': case 'M': ! case 'N': case 'O': case 'P': case ',': ! break; ! ! /* Whether or not a numeric constraint allows a register is ! decided by the matching constraint, and so there is no need ! to do anything special with them. We must handle them in ! the default case, so that we don't unnecessarily force ! operands to memory. */ ! case '0': case '1': case '2': case '3': case '4': ! case '5': case '6': case '7': case '8': case '9': ! if (constraint[j] >= '0' + noutputs) ! { ! error ! ("matching constraint references invalid operand number"); ! return; ! } ! ! /* Try and find the real constraint for this dup. */ ! if ((j == 0 && c_len == 1) ! || (j == 1 && c_len == 2 && constraint[0] == '%')) ! { ! tree o = outputs; ! ! for (j = constraint[j] - '0'; j > 0; --j) ! o = TREE_CHAIN (o); ! ! constraint = TREE_STRING_POINTER (TREE_PURPOSE (o)); ! c_len = strlen (constraint); ! j = 0; ! break; ! } ! ! /* Fall through. */ ! ! case 'p': case 'r': ! allows_reg = 1; ! break; ! ! case 'g': case 'X': ! allows_reg = 1; ! allows_mem = 1; ! break; ! ! default: ! if (! ISALPHA (constraint[j])) ! { ! error ("invalid punctuation `%c' in constraint", ! constraint[j]); ! return; ! } ! if (REG_CLASS_FROM_LETTER (constraint[j]) != NO_REGS) ! allows_reg = 1; ! #ifdef EXTRA_CONSTRAINT ! else ! { ! /* Otherwise we can't assume anything about the nature of ! the constraint except that it isn't purely registers. ! Treat it like "g" and hope for the best. */ ! allows_reg = 1; ! allows_mem = 1; ! } ! #endif ! break; ! } ! if (! allows_reg && allows_mem) ! mark_addressable (TREE_VALUE (tail)); ! op = expand_expr (TREE_VALUE (tail), NULL_RTX, VOIDmode, 0); /* Never pass a CONCAT to an ASM. */ - generating_concat_p = 0; if (GET_CODE (op) == CONCAT) op = force_reg (GET_MODE (op), op); if (asm_operand_ok (op, constraint) <= 0) { if (allows_reg) ! op = force_reg (TYPE_MODE (TREE_TYPE (TREE_VALUE (tail))), op); else if (!allows_mem) warning ("asm operand %d probably doesn't match constraints", i); else if (CONSTANT_P (op)) ! op = force_const_mem (TYPE_MODE (TREE_TYPE (TREE_VALUE (tail))), ! op); else if (GET_CODE (op) == REG || GET_CODE (op) == SUBREG || GET_CODE (op) == CONCAT) { - tree type = TREE_TYPE (TREE_VALUE (tail)); tree qual_type = build_qualified_type (type, (TYPE_QUALS (type) | TYPE_QUAL_CONST)); --- 1829,1868 ---- /* Eval the inputs and put them into ARGVEC. Put their constraints into ASM_INPUTs and store in CONSTRAINTS. */ ! for (i = 0, tail = inputs; tail; i++, tail = TREE_CHAIN (tail)) { ! bool allows_reg, allows_mem; ! const char *constraint; ! tree val, type; rtx op; constraint = TREE_STRING_POINTER (TREE_PURPOSE (tail)); ! if (! parse_input_constraint (&constraint, i, ninputs, noutputs, ninout, ! outputs, &allows_mem, &allows_reg)) ! abort (); ! generating_concat_p = 0; ! val = TREE_VALUE (tail); ! type = TREE_TYPE (val); ! op = expand_expr (val, NULL_RTX, VOIDmode, 0); /* Never pass a CONCAT to an ASM. */ if (GET_CODE (op) == CONCAT) op = force_reg (GET_MODE (op), op); if (asm_operand_ok (op, constraint) <= 0) { if (allows_reg) ! op = force_reg (TYPE_MODE (type), op); else if (!allows_mem) warning ("asm operand %d probably doesn't match constraints", i); else if (CONSTANT_P (op)) ! op = force_const_mem (TYPE_MODE (type), op); else if (GET_CODE (op) == REG || GET_CODE (op) == SUBREG || GET_CODE (op) == CONCAT) { tree qual_type = build_qualified_type (type, (TYPE_QUALS (type) | TYPE_QUAL_CONST)); *************** expand_asm_operands (string, outputs, in *** 1830,1840 **** emit_move_insn (memloc, op); op = memloc; } - else if (GET_CODE (op) == MEM && MEM_VOLATILE_P (op)) ! /* We won't recognize volatile memory as available a ! memory_operand at this point. Ignore it. */ ! ; else if (queued_subexp_p (op)) ; else --- 1871,1881 ---- emit_move_insn (memloc, op); op = memloc; } else if (GET_CODE (op) == MEM && MEM_VOLATILE_P (op)) ! { ! /* We won't recognize volatile memory as available a ! memory_operand at this point. Ignore it. */ ! } else if (queued_subexp_p (op)) ; else *************** expand_asm_operands (string, outputs, in *** 1843,1855 **** not satisfied. */ warning ("asm operand %d probably doesn't match constraints", i); } generating_concat_p = old_generating_concat_p; ASM_OPERANDS_INPUT (body, i) = op; ASM_OPERANDS_INPUT_CONSTRAINT_EXP (body, i) ! = gen_rtx_ASM_INPUT (TYPE_MODE (TREE_TYPE (TREE_VALUE (tail))), ! orig_constraint); ! i++; } /* Protect all the operands from the queue now that they have all been --- 1884,1896 ---- not satisfied. */ warning ("asm operand %d probably doesn't match constraints", i); } + generating_concat_p = old_generating_concat_p; ASM_OPERANDS_INPUT (body, i) = op; ASM_OPERANDS_INPUT_CONSTRAINT_EXP (body, i) ! = gen_rtx_ASM_INPUT (TYPE_MODE (type), ! TREE_STRING_POINTER (TREE_PURPOSE (tail))); } /* Protect all the operands from the queue now that they have all been diff -Nrc3pad gcc-3.0.2/gcc/stor-layout.c gcc-3.0.3/gcc/stor-layout.c *** gcc-3.0.2/gcc/stor-layout.c Tue Sep 4 22:54:42 2001 --- gcc-3.0.3/gcc/stor-layout.c Sun Dec 9 18:31:08 2001 *************** place_union_field (rli, field) *** 613,618 **** --- 613,622 ---- MIN (desired_align, (unsigned) BIGGEST_FIELD_ALIGNMENT); #endif + #ifdef ADJUST_FIELD_ALIGN + desired_align = ADJUST_FIELD_ALIGN (field, desired_align); + #endif + /* Union must be at least as aligned as any field requires. */ rli->record_align = MAX (rli->record_align, desired_align); diff -Nrc3pad gcc-3.0.2/gcc/tlink.c gcc-3.0.3/gcc/tlink.c *** gcc-3.0.2/gcc/tlink.c Fri May 4 07:45:09 2001 --- gcc-3.0.3/gcc/tlink.c Thu Nov 29 18:55:39 2001 *************** scan_linker_output (fname) *** 668,673 **** --- 668,674 ---- mistakenly use GNU ld's "In function `foo':" message. */ if (q && (strstr (oldq, "ndefined") || strstr (oldq, "nresolved") + || strstr (oldq, "nsatisfied") || strstr (oldq, "ultiple"))) { *q = 0; diff -Nrc3pad gcc-3.0.2/gcc/toplev.c gcc-3.0.3/gcc/toplev.c *** gcc-3.0.2/gcc/toplev.c Tue Jun 26 12:27:49 2001 --- gcc-3.0.3/gcc/toplev.c Sun Oct 28 12:11:11 2001 *************** lang_independent_options f_options[] = *** 1080,1086 **** {"fast-math", &flag_fast_math, 1, N_("Improve FP speed by violating ANSI & IEEE rules") }, {"common", &flag_no_common, 0, ! N_("Do not put unitialised globals in the common section") }, {"inhibit-size-directive", &flag_inhibit_size_directive, 1, N_("Do not generate .size directives") }, {"function-sections", &flag_function_sections, 1, --- 1080,1086 ---- {"fast-math", &flag_fast_math, 1, N_("Improve FP speed by violating ANSI & IEEE rules") }, {"common", &flag_no_common, 0, ! N_("Do not put uninitialized globals in the common section") }, {"inhibit-size-directive", &flag_inhibit_size_directive, 1, N_("Do not generate .size directives") }, {"function-sections", &flag_function_sections, 1, *************** lang_independent_options W_options[] = *** 1492,1498 **** {"unreachable-code", &warn_notreached, 1, N_("Warn about code that will never be executed") }, {"uninitialized", &warn_uninitialized, 1, ! N_("Warn about unitialized automatic variables") }, {"inline", &warn_inline, 1, N_("Warn when an inlined function cannot be inlined") }, {"packed", &warn_packed, 1, --- 1492,1498 ---- {"unreachable-code", &warn_notreached, 1, N_("Warn about code that will never be executed") }, {"uninitialized", &warn_uninitialized, 1, ! N_("Warn about uninitialized automatic variables") }, {"inline", &warn_inline, 1, N_("Warn when an inlined function cannot be inlined") }, {"packed", &warn_packed, 1, diff -Nrc3pad gcc-3.0.2/gcc/unroll.c gcc-3.0.3/gcc/unroll.c *** gcc-3.0.2/gcc/unroll.c Thu Oct 11 12:39:52 2001 --- gcc-3.0.3/gcc/unroll.c Sat Dec 1 05:28:57 2001 *************** unroll_loop (loop, insn_count, strength_ *** 900,905 **** --- 900,908 ---- register rtx diff; rtx *labels; int abs_inc, neg_inc; + enum rtx_code cc = loop_info->comparison_code; + int less_p = (cc == LE || cc == LEU || cc == LT || cc == LTU); + int unsigned_p = (cc == LEU || cc == GEU || cc == LTU || cc == GTU); map->reg_map = (rtx *) xmalloc (maxregnum * sizeof (rtx)); *************** unroll_loop (loop, insn_count, strength_ *** 932,942 **** a constant. We must copy the final and initial values here to avoid ! improperly shared rtl. */ ! diff = expand_binop (mode, sub_optab, copy_rtx (final_value), ! copy_rtx (initial_value), NULL_RTX, 0, ! OPTAB_LIB_WIDEN); /* Now calculate (diff % (unroll * abs (increment))) by using an and instruction. */ --- 935,959 ---- a constant. We must copy the final and initial values here to avoid ! improperly shared rtl. ! We have to deal with for (i = 0; --i < 6;) type loops. ! For such loops the real final value is the first time the ! loop variable overflows, so the diff we calculate is the ! distance from the overflow value. This is 0 or ~0 for ! unsigned loops depending on the direction, or INT_MAX, ! INT_MAX+1 for signed loops. We really do not need the ! exact value, since we are only interested in the diff ! modulo the increment, and the increment is a power of 2, ! so we can pretend that the overflow value is 0/~0. */ ! ! if (cc == NE || less_p != neg_inc) ! diff = expand_binop (mode, sub_optab, copy_rtx (final_value), ! copy_rtx (initial_value), NULL_RTX, 0, ! OPTAB_LIB_WIDEN); ! else ! diff = expand_unop (mode, neg_inc ? one_cmpl_optab : neg_optab, ! copy_rtx (initial_value), NULL_RTX, 0); /* Now calculate (diff % (unroll * abs (increment))) by using an and instruction. */ *************** unroll_loop (loop, insn_count, strength_ *** 957,967 **** case. This check does not apply if the loop has a NE comparison at the end. */ ! if (loop_info->comparison_code != NE) { ! emit_cmp_and_jump_insns (initial_value, final_value, ! neg_inc ? LE : GE, ! NULL_RTX, mode, 0, 0, labels[1]); JUMP_LABEL (get_last_insn ()) = labels[1]; LABEL_NUSES (labels[1])++; } --- 974,988 ---- case. This check does not apply if the loop has a NE comparison at the end. */ ! if (cc != NE) { ! rtx incremented_initval; ! incremented_initval = expand_binop (mode, add_optab, ! initial_value, increment, ! NULL_RTX,0, OPTAB_LIB_WIDEN); ! emit_cmp_and_jump_insns (incremented_initval, final_value, ! less_p ? GE : LE, NULL_RTX, ! mode, unsigned_p, 0, labels[1]); JUMP_LABEL (get_last_insn ()) = labels[1]; LABEL_NUSES (labels[1])++; } *************** loop_iterations (loop) *** 3506,3523 **** do { ! if (GET_CODE (temp) == JUMP_INSN ! /* Previous unrolling may have generated new insns not covered ! by the uid_luid array. */ ! && INSN_UID (JUMP_LABEL (temp)) < max_uid_for_loop ! /* Check if we jump back into the loop body. */ ! && INSN_LUID (JUMP_LABEL (temp)) > INSN_LUID (loop->top) ! && INSN_LUID (JUMP_LABEL (temp)) < INSN_LUID (loop->cont)) { ! if (loop_dump_stream) ! fprintf (loop_dump_stream, ! "Loop iterations: Loop has multiple back edges.\n"); ! return 0; } } while ((temp = PREV_INSN (temp)) != loop->cont); --- 3527,3557 ---- do { ! if (GET_CODE (temp) == JUMP_INSN) { ! /* There are some kinds of jumps we can't deal with easily. */ ! if (JUMP_LABEL (temp) == 0) ! { ! if (loop_dump_stream) ! fprintf ! (loop_dump_stream, ! "Loop iterations: Jump insn has null JUMP_LABEL.\n"); ! return 0; ! } ! ! if (/* Previous unrolling may have generated new insns not ! covered by the uid_luid array. */ ! INSN_UID (JUMP_LABEL (temp)) < max_uid_for_loop ! /* Check if we jump back into the loop body. */ ! && INSN_LUID (JUMP_LABEL (temp)) > INSN_LUID (loop->top) ! && INSN_LUID (JUMP_LABEL (temp)) < INSN_LUID (loop->cont)) ! { ! if (loop_dump_stream) ! fprintf ! (loop_dump_stream, ! "Loop iterations: Loop has multiple back edges.\n"); ! return 0; ! } } } while ((temp = PREV_INSN (temp)) != loop->cont); diff -Nrc3pad gcc-3.0.2/gcc/version.c gcc-3.0.3/gcc/version.c *** gcc-3.0.2/gcc/version.c Tue Oct 23 10:21:24 2001 --- gcc-3.0.3/gcc/version.c Thu Dec 20 11:23:21 2001 *************** *** 1,4 **** #include "gansidecl.h" #include "version.h" ! const char *const version_string = "3.0.2"; --- 1,4 ---- #include "gansidecl.h" #include "version.h" ! const char *const version_string = "3.0.3"; diff -Nrc3pad gcc-3.0.2/include/ChangeLog gcc-3.0.3/include/ChangeLog *** gcc-3.0.2/include/ChangeLog Tue Oct 23 10:20:18 2001 --- gcc-3.0.3/include/ChangeLog Thu Dec 20 11:22:31 2001 *************** *** 1,3 **** --- 1,7 ---- + 2001-12-20 Release Manager + + * GCC 3.0.3 Released. + 2001-10-23 Release Manager * GCC 3.0.2 Released. diff -Nrc3pad gcc-3.0.2/libiberty/ChangeLog gcc-3.0.3/libiberty/ChangeLog *** gcc-3.0.2/libiberty/ChangeLog Tue Oct 23 10:20:36 2001 --- gcc-3.0.3/libiberty/ChangeLog Thu Dec 20 11:22:43 2001 *************** *** 1,3 **** --- 1,20 ---- + 2001-12-20 Release Manager + + * GCC 3.0.3 Released. + + 2001-12-12 Craig Rodrigues + + PR other/2719 + * cplus-dem.c (consume_count): Treat negative count as an error. + * testsuite/demangle-expected: Added testcase. + + 2001-12-06 DJ Delorie + Daniel Jacobowitz + + * Makefile.in (stamp-h): Depend on Makefile for proper + serialization. + (*-subdir): Depend on config.h for proper serialization. + 2001-10-23 Release Manager * GCC 3.0.2 Released. diff -Nrc3pad gcc-3.0.2/libiberty/Makefile.in gcc-3.0.3/libiberty/Makefile.in *** gcc-3.0.2/libiberty/Makefile.in Sat Mar 24 13:53:39 2001 --- gcc-3.0.3/libiberty/Makefile.in Thu Dec 6 19:39:16 2001 *************** force: *** 238,255 **** Makefile: $(srcdir)/Makefile.in config.status CONFIG_FILES=Makefile CONFIG_HEADERS= $(SHELL) ./config.status config.h: stamp-h ; @true ! stamp-h: config.in config.status CONFIG_FILES= CONFIG_HEADERS=config.h:config.in $(SHELL) ./config.status config.status: $(srcdir)/configure $(srcdir)/config.table $(SHELL) ./config.status --recheck all-subdir check-subdir installcheck-subdir info-subdir \ install-info-subdir clean-info-subdir dvi-subdir install-subdir \ etags-subdir mostlyclean-subdir clean-subdir distclean-subdir \ ! maintainer-clean-subdir: @subdirs='$(SUBDIRS)'; \ target=`echo $@ | sed -e 's/-subdir//'`; \ for dir in $$subdirs ; do \ --- 238,260 ---- Makefile: $(srcdir)/Makefile.in config.status CONFIG_FILES=Makefile CONFIG_HEADERS= $(SHELL) ./config.status + # Depending on Makefile makes sure that config.status has been re-run + # if needed. This prevents problems with parallel builds. config.h: stamp-h ; @true ! stamp-h: config.in config.status Makefile CONFIG_FILES= CONFIG_HEADERS=config.h:config.in $(SHELL) ./config.status config.status: $(srcdir)/configure $(srcdir)/config.table $(SHELL) ./config.status --recheck + # Depending on config.h makes sure that config.status has been re-run + # if needed. This prevents problems with parallel builds, in case + # subdirectories need to run config.status also. all-subdir check-subdir installcheck-subdir info-subdir \ install-info-subdir clean-info-subdir dvi-subdir install-subdir \ etags-subdir mostlyclean-subdir clean-subdir distclean-subdir \ ! maintainer-clean-subdir: config.h @subdirs='$(SUBDIRS)'; \ target=`echo $@ | sed -e 's/-subdir//'`; \ for dir in $$subdirs ; do \ diff -Nrc3pad gcc-3.0.2/libiberty/cplus-dem.c gcc-3.0.3/libiberty/cplus-dem.c *** gcc-3.0.2/libiberty/cplus-dem.c Sun Mar 4 17:19:38 2001 --- gcc-3.0.3/libiberty/cplus-dem.c Wed Dec 12 19:22:04 2001 *************** consume_count (type) *** 568,573 **** --- 568,576 ---- (*type)++; } + if (count < 0) + count = -1; + return (count); } diff -Nrc3pad gcc-3.0.2/libiberty/testsuite/demangle-expected gcc-3.0.3/libiberty/testsuite/demangle-expected *** gcc-3.0.2/libiberty/testsuite/demangle-expected Thu Feb 1 16:27:39 2001 --- gcc-3.0.3/libiberty/testsuite/demangle-expected Wed Dec 12 19:22:05 2001 *************** JArray.t(JArray[]) *** 2586,2588 **** --- 2586,2592 ---- --format=java _ZN4Prim1iEibcdfwPN4java4lang6StringEsx Prim.i(int, boolean, byte, double, float, char, java.lang.String, short, long) + # + --format=hp + _Utf58_0_1__1_2147483647__2147483648 + _Utf58_0_1__1_2147483647__2147483648